arrays - Ruby:在散列中分配数组值

标签 arrays ruby hash

我想要以下哈希输出:

{ 0 => [0,1,2], 1 => [0,1,2], 2 => [0,1,2],
  3 => [3,4,5], 4 => [3,4,5], 5 => [3,4,5],
  6 => [6,7,8], 7 => [6,7,8], 8 => [6,7,8]
}

凭直觉我可以硬编码这些值,但我很难弄清楚如何动态地将每个散列键分配给适当的数组值。例如,也许创建一个 9.times 循环?

{ 0 => (0..2).to_a, 1 => (0..2).to_a, 2 => (0..2).to_a,
  3 => (3..5).to_a, 4 => (3..5).to_a, 5 => (3..5).to_a, 
  6 => (6..8).to_a, 7 => (6..8).to_a, 8 => (6..8).to_a 
}

感谢您的指导

最佳答案

动态上限:

count, split = 9, 3
0.upto(count - 1).map do |i|
  [i, [*(i / split * split)...(i / split) * split + split]]
end.to_h

关于arrays - Ruby:在散列中分配数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54751223/

相关文章:

hash - MD5是128位但为什么是32个字符?

c - 比较两个相同长度的 int 数组的最佳方法?

java - 如何将 Collection.reverse 存储回数组?

ruby - 检查 Ruby 类中是否已定义常量的正确方法

ruby - Ruby Sequeĺ 中的空间 where 子句

perl - 计算数组中的唯一值不起作用

arrays - 如何使用准备好的语句在代号 one db 中插入数据?

ruby - 多维数组中数字之间的百分比变化

ruby-on-rails - 如何在 Ruby on Rails 中将数字强制为小数点后 10 位?

ruby-on-rails - rails/ruby 合并两个具有相同键、不同值的散列