Ruby - добавление / вычитание элементов из одного массива с другим массивом - PullRequest
6 голосов
/ 10 апреля 2011

Я делаю это:

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 ]

16 голосов
/ 10 апреля 2011

Вы можете использовать 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]]
2 голосов
/ 10 апреля 2011

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

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