Ruby 可以通过组合两个范围来创建嵌套数组吗?
我目前正在创建一个国际象棋游戏,我正在为每个棋子设置一个数组,其中包含它们的合法移动集。例如,主教只能沿对角线移动,因此移动集必须为以下内容才能沿左对角线向上移动Ruby 可以通过组合两个范围来创建嵌套数组吗?,ruby,Ruby,我目前正在创建一个国际象棋游戏,我正在为每个棋子设置一个数组,其中包含它们的合法移动集。例如,主教只能沿对角线移动,因此移动集必须为以下内容才能沿左对角线向上移动 [[-1, -1], [-2, -2] ...repeated... [-7, -7], [-8, -8]] 有没有一种方法可以创建一个具有两个范围的嵌套数组,而不是每个方向都有长长的代码行 例如: 合并两个枚举 (-8..-1).zip(-8..-1).reverse # => [[-1, -1], [-2, -2],
[[-1, -1], [-2, -2] ...repeated... [-7, -7], [-8, -8]]
有没有一种方法可以创建一个具有两个范围的嵌套数组,而不是每个方向都有长长的代码行
例如:
合并两个枚举
(-8..-1).zip(-8..-1).reverse
# => [[-1, -1], [-2, -2], [-3, -3], [-4, -4], [-5, -5], [-6, -6], [-7, -7], [-8, -8]]
也许是OT,但你可以用不同的方法获得相同的结果,这对其他棋子也有帮助 例如:
(1..8).map { |n| [-n, -n] }
#=> [[-1, -1], [-2, -2], [-3, -3], [-4, -4], [-5, -5], [-6, -6], [-7, -7], [-8, -8]]
或者:
8.times.map { |n| [-n-1, -n-1] }
#=> [[-1, -1], [-2, -2], [-3, -3], [-4, -4], [-5, -5], [-6, -6], [-7, -7], [-8, -8]]
你有没有考虑过下面这样的事情<代码>def bishop_移动(行、列);diff=列-行;(0..7).每个带有对象([])的对象都是do | r,a |;下一步,如果r==行;c=r+diff;例如,
bishop_moves(2,4)
和bishop_moves(4,2)
和bishop_moves(4,2)=>Cary Swoveland 6小时前删除
8.times.map { |n| [-n-1, -n-1] }
#=> [[-1, -1], [-2, -2], [-3, -3], [-4, -4], [-5, -5], [-6, -6], [-7, -7], [-8, -8]]