Kan*_*ath 9 ruby multidimensional-array
我正在尝试使用2D ruby数组时遇到一些问题,当我进行数组切片时,我的LOC减少了很多.所以,例如,
require "test/unit"
class LibraryTest < Test::Unit::TestCase
def test_box
array = [[1,2,3,4],[3,4,5,6], [5,6,7,8], [2,3,4,5]]
puts array[1][2..3] # 5, 6
puts array[1..2][1] # 5, 6, 7, 8
end
end
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法获得对角切片?让我们说我想从[0,0]开始并想要一个3的对角切片.然后我会得到[0,0],[1,1],[2,2]的元素,我会得到一个类似的数组[1,4,7]例如上面.是否有任何神奇的单行红宝石代码可以实现这一目标?3次做{某些神奇的东西?}
YOU*_*YOU 14
puts (0..2).collect { |i| array[i][i] }
Run Code Online (Sandbox Code Playgroud)
更好的可能是利用Matrix库的单线程:
require 'matrix'
Matrix.rows(array).each(:diagonal).to_a
Run Code Online (Sandbox Code Playgroud)