Вычислить производную ([i] - [i - 1]) в Ruby
-
06-07-2019 - |
Вопрос
Тривиально с использованием цикла for или each_with_index, просто интересно, есть ли лучший способ сделать это с использованием синтаксиса Ruby.
Мне нужно создать новый массив, который является производным от исходного массива, например:
for(int i = 1; i < oldArray.length; i++)
{
newArray[i] = oldArray[i] - oldArray[i-1]
}
Решение
old_array.each_cons(2).map{|x, y| y - x}
Enumerable # each_cons
, вызываемый с размером порции 2, но без блока, возвращает перечислитель, который будет перебирать каждую пару последовательных элементов в old_array
. Затем мы просто используем map
для выполнения вычитания каждой пары.
Другие советы
last=0
new = old.map{|v|x=v-last;last=v;x}[1..-1]
Не связан с StackOverflow