如何在控制台上绘制大小为n的正方形网格

问题描述 投票:0回答:2

我需要在控制台上绘制一个大小为n的正方形网格。网格对水平单元格边界使用“-”,“ |”表示垂直单元格边界,“ +”表示每个单元格的角。例如,大小为3的网格应如下所示:

https://i.stack.imgur.com/KxQG5.png

我曾考虑使用double for循环,其中外循环遍历行,内循环遍历cols。内部循环的每次迭代都将处理单个单元。画“ |”字符似乎并不难,但是我不确定如何在单元格的上方和下方打印'-'字符。

ruby algorithm grid console-application drawing
2个回答
0
投票

您可以使用Integer#timesInteger#times

String#*

或者:

String#*

0
投票
def print_grid(n)
  n.times { print "+-"*n, "+\n", "| "*n, "|\n" }
  print "+-"*n, "+\n"
end

print_grid(3)
+-+-+-+
| | | |
+-+-+-+
| | | |
+-+-+-+
| | | |
+-+-+-+
=> nil

def print_grid(n)
  puts n.times.map{ "+-"*n + "+\n" + "| "*n + "|\n" }.join + "+-"*n + "+\n"
end

def pr_grid(n)
  odd_row  = '+-'*n << '+'
  even_row = odd_row.gsub(/./) { |s| s == '+' ? '|' : ' ' }
  n.times { puts odd_row, even_row }
  puts odd_row
end

如果pr_grid(3) +-+-+-+ | | | | +-+-+-+ | | | | +-+-+-+ | | | | +-+-+-+

pr_grid(4)
+-+-+-+-+
| | | | |
+-+-+-+-+
| | | | |
+-+-+-+-+
| | | | |
+-+-+-+-+
| | | | |
+-+-+-+-+
© www.soinside.com 2019 - 2024. All rights reserved.