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/