Посчитайте по двум массивам - PullRequest
0 голосов
/ 20 октября 2019

Мне нужно вычесть один массив из другого по индексу: a = [3,4,3,5] b = [1,2,2,1]

c = [2,2,1,4]

Ответы [ 3 ]

3 голосов
/ 20 октября 2019

Я бы использовал Array#zip, а затем Array#map:

 a = [3,4,3,5]
 b = [1,2,2,1]

 c = a.zip(b).map { |a, b| a - b }
 #=> [2, 2, 1, 4]
2 голосов
/ 20 октября 2019

Есть несколько способов сделать это в Ruby. Некоторые примеры:

  1. Самый простой подход:
a = [3.0, 4.0, 3.0, 5.0]

b = [1.0, 2.0, 2.0, 1.0]

length = 4

c = Array.new(length, 0.0) # Where 0.0 is default array value.

length.times do |i|
  c[i] = a[i] - b[i]
end
Использование Vector класса из стандартной библиотеки Ruby:
require 'matrix'

a = Vector[3.0, 4.0, 3.0, 5.0]

b = Vector[1.0, 2.0, 2.0, 1.0]

(a - b).to_a
0 голосов
/ 20 октября 2019

Использование Enumerable#inject.

a = [3, 4, 3, 5]
b = [1, 2, 2, 1]

с = a.zip(b).map { |i| i.inject(&:-) }
# => [2, 2, 1, 4]

Мне нравятся :-) символы там: -)

...