打印出二维数组 [英] Print out 2D array

查看:198
本文介绍了打印出二维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  =阵列Array.new(10){Array.new(10,0)}array.each {| X |打印X}

打印出的一个单输入10 [0,0,0,0,0,0,0,0,0,0]

如果我要改变打印看跌,然后我得到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)}

然后

 提出arr.map {| X | x.join('')}
1 9 6 7 15 19 18 3 12 0
13 20 18 15 0 3 19 14 1 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 2 18 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
把arr.map {| A | a.map {| I | i.to_s.rjust(宽度)}。加入}
   1 9 6 7 15 19 18 3 12 0
  13 20 18 15 0 3 19 14 1 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 2 18 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

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

 提出arr.map {| A | a.map {| I | i.to_s.rjust(宽度)} .join.tinyfy}

  1 9 6 7 15 19 18 3 12 0
   13 20 18 15 0 3 19 14 1 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 2 18 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

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

array.each { |x| print x }

Prints out one single line of ten [0, 0, 0, 0, 0, 0, 0, 0, 0, 0].

If I were to change print to puts, I then get 100 0 down the page.

How do I print out each array on a separate line without the "[]" and ","?

Something like:

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

解决方案

Suppose:

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

Then

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

is not very, er, attractive. For something more pleasing, you could quite easily do something like this:

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

If you have too many columns to display on the screen you can do this:

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

这篇关于打印出二维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆