Ruby-добавление / вычитание элементов из одного массива другим массивом


Я делаю это:

a = [1,2,3,4]  
b = [2,3,4,5]  
c = b - a  
put c 

Я понимаю это. ответ -> [1]
Я хочу этот ответ - > [1,1,1,1] (например, сложение/вычитание матрицы)

Я попробовал это:

c.each {|e| c[e] = b[e] - a[e]}  
Но я получаю такой ответ: [1,0,0,0] Может ли кто-нибудь дать мне правильный способ сделать это? Большое спасибо!
2 6

2 ответа:

Можно использовать zip:

a.zip(b).map { |x, y| y - x }
# => [1, 1, 1, 1]

Существует также Матрица класс:

require "matrix"

a = Matrix[[1, 2, 3, 4]]
b = Matrix[[2, 3, 4, 5]]
c = b - a
# => Matrix[[1, 1, 1, 1]]

Вы можете использовать each_with_index и map.

 c = b.each_with_index.map { |n,i| n - a[i] }
 # => [1, 1, 1, 1]