ruby - 打印出二维数组

标签 ruby arrays printing puts

array = Array.new(10) { Array.new(10 , 0)}

array.each { |x| print x }

打印一行十个 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

如果我将 print 更改为 puts,那么我会在页面下方得到 100 0

如何在没有“[]”和“,”的情况下在单独的行上打印出每个数组?

类似于:

0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

最佳答案

假设:

arr = Array.new(10) { (0..20).to_a.sample(10) }

然后

puts arr.map { |x| x.join(' ') }
1 9 6 15 7 19 18 3 0 12
13 20 18 15 0 3 19 1 14 16
7 16 5 3 12 19 4 9 20 10
6 10 9 1 18 17 7 19 5 15
12 3 8 16 10 5 2 18 20 6
12 9 0 18 2 11 16 8 7 15
8 9 14 19 3 16 6 20 13 17
7 19 16 14 13 6 9 2 3 5
10 17 8 15 11 2 13 14 16 7
14 9 20 17 15 3 4 2 11 19

不是很,呃,有吸引力。对于更令人愉悦的事情,您可以很容易地做这样的事情:

width = arr.flatten.max.to_s.size+2
  #=> 4
puts arr.map { |a| a.map { |i| i.to_s.rjust(width) }.join }
   1   9   6  15   7  19  18   3   0  12
  13  20  18  15   0   3  19   1  14  16
   7  16   5   3  12  19   4   9  20  10
   6  10   9   1  18  17   7  19   5  15
  12   3   8  16  10   5   2  18  20   6
  12   9   0  18   2  11  16   8   7  15
   8   9  14  19   3  16   6  20  13  17
   7  19  16  14  13   6   9   2   3   5
  10  17   8  15  11   2  13  14  16   7
  14   9  20  17  15   3   4   2  11  19

如果要在屏幕上显示的列太多,您可以这样做:

puts arr.map { |a| a.map { |i| i.to_s.rjust(width) }.join.tinyfy }
    1   9   6  15   7  19  18   3   0  12
   13  20  18  15   0   3  19   1  14  16
    7  16   5   3  12  19   4   9  20  10
    6  10   9   1  18  17   7  19   5  15
   12   3   8  16  10   5   2  18  20   6
   12   9   0  18   2  11  16   8   7  15
    8   9  14  19   3  16   6  20  13  17
    7  19  16  14  13   6   9   2   3   5
   10  17   8  15  11   2  13  14  16   7
   14   9  20  17  15   3   4   2  11  19

关于ruby - 打印出二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27317023/

相关文章:

java - 创建对象数组会出现语法错误

c# - WebBrowser 类 - 如何打印没有页眉/页脚的文档?

html - 如何在缩小页面进行打印时避免出现空白页?

ruby-on-rails - Rspec should_receive 在一个没有行为的实例上

html - 在 haml 中应用多个过滤器(或包装 :markdown filter's content with a CDATA tag)

ruby-on-rails - 用斜杠将 Ruby 数组拆分为子数组

arrays - 在 bash 中解析数组时出现奇怪的结果

java - 无法以正确的分辨率打印

ruby-on-rails - Rails 回合制游戏管理器

python - 在 Base64.encode64 输出中加号?