Вычтите значения 2 массивов и получите новый массив с вычтенными значениями - PullRequest
3 голосов
/ 29 апреля 2011

В основном, я хочу сделать это:

[1,2,3,4,5].some_method([1,5,8,7,8])
=> [0,-3,-5,-3,-3]

Какой лучший способ сделать это в Ruby?

Ответы [ 3 ]

10 голосов
/ 29 апреля 2011
[1,2,3,4,5].zip([1,5,8,7,8]).map { |a, b| a - b }
2 голосов
/ 29 апреля 2011
p [1,2,3,4,5].zip([1,5,8,7,8]).map{|el| el.first-el.last}
#=> [0, -3, -5, -3, -3]

.zip объединяет оба массива, например [[1, 1], [2, 5], [3, 8], [4, 7], [5, 8]].С .map для блока не осталось много работы - просто вычтите 2 значения.

0 голосов
/ 29 апреля 2011
[1,2,3,4,5].zip([1,5,8,7,8]).map{|x|x[0]-x[-1]}

или обычная итерация массива

0.upto(a.size-1).map{|x| a[x]-b[x] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...