Вычислить производную ([i] - [i - 1]) в Ruby - PullRequest
4 голосов
/ 01 августа 2009

Тривиально с использованием цикла for или each_with_index, просто интересно, есть ли лучший способ сделать это с использованием синтаксиса Ruby.

Мне нужно создать новый массив, который является производной от исходного массива, например:

for(int i = 1; i < oldArray.length; i++)
{
    newArray[i] = oldArray[i] - oldArray[i-1]
}

Ответы [ 2 ]

8 голосов
/ 01 августа 2009
old_array.each_cons(2).map{|x, y| y - x}

Enumerable#each_cons, вызываемый с размером порции 2, но без блока, возвращает перечислитель, который будет перебирать каждую пару последовательных элементов в old_array. Затем мы просто используем map для вычитания каждой пары.

1 голос
/ 01 августа 2009
last=0
new = old.map{|v|x=v-last;last=v;x}[1..-1]
...