如何在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)
......以下操作按预期工作
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)