如何在Ruby中执行向量添加?

nop*_*ole 11 ruby

如何在Ruby中执行向量添加

[100, 100] + [2, 3] 
Run Code Online (Sandbox Code Playgroud)

产量

[102, 103] 
Run Code Online (Sandbox Code Playgroud)

(而不是加入两个数组)?

或者它也可以是另一个运营商,例如

[100, 100] @ [2, 3] 
Run Code Online (Sandbox Code Playgroud)

要么

[100, 100] & [2, 3]
Run Code Online (Sandbox Code Playgroud)

Sin*_*nür 34

查看Vector类:

require "matrix"

x = Vector[100, 100]
y = Vector[2, 3]
print x + y

E:\Home> ruby t.rb
Vector[102, 103]
Run Code Online (Sandbox Code Playgroud)

有关向量的其他操作,请参阅vectorops:

......以下操作按预期工作

  v1 = Vector[1,1,1,0,0,0]
  v2 = Vector[1,1,1,1,1,1]

  v1[0..3]
  # -> Vector[1,1,1]

  v1 += v2
  # -> v1 == Vector[2,2,2,1,1,1]

  v1[0..3] += v2[0..3]
  # -> v1 == Vector[2,2,2,0,0,0]

  v1 + 2
  # -> Vector[3,3,3,1,1,1]
Run Code Online (Sandbox Code Playgroud)

另见vectorops.


Mar*_*ter 18

阵列#邮编:

$ irb
irb(main):001:0> [100,100].zip([2,3]).map { |e| e.first + e.last }
=> [102, 103]
Run Code Online (Sandbox Code Playgroud)

短:

irb(main):002:0> [100,100].zip([2,3]).map { |x,y| x + y }
=> [102, 103]
Run Code Online (Sandbox Code Playgroud)

使用#inject推广到> 2维:

irb(main):003:0> [100,100,100].zip([2,3,4]).map { |z| z.inject(&:+) }
=> [102, 103, 104]
Run Code Online (Sandbox Code Playgroud)