我需要在控制台上绘制一个大小为n的正方形网格。网格对水平单元格边界使用“-”,“ |”表示垂直单元格边界,“ +”表示每个单元格的角。例如,大小为3的网格应如下所示:
https://i.stack.imgur.com/KxQG5.png
我曾考虑使用double for循环,其中外循环遍历行,内循环遍历cols。内部循环的每次迭代都将处理单个单元。画“ |”字符似乎并不难,但是我不确定如何在单元格的上方和下方打印'-'字符。
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)
+-+-+-+-+
| | | | |
+-+-+-+-+
| | | | |
+-+-+-+-+
| | | | |
+-+-+-+-+
| | | | |
+-+-+-+-+