Используйте # each_cons , чтобы построить подмассив последовательных пар, затем отобразите его:
array = [7,12,1,2,3]
array.each_cons(2).map{ |e| e.last - e.first }
# => [5, -11, 1, 1]
Небольшая альтернатива:
array.each_cons(2).map{ |a, b| b - a }
Конечно, вы можете изменить на a - b
или что вам нужно.
Первая часть делает это:
array.each_cons(2).each {|e| p e}
# => [7, 12]
# => [12, 1]
# => [1, 2]
# => [2, 3]