我想在Ruby中创建一个数字网格,提供这样的输出(不完全,但接近):
0 1 2 3 4 5 6 7 8 9
------------------
1 |
2 |
3 |
4 |
5 |
6 |
其中空格(坐标点)用随机数填充。我还需要它可以操作(例如,我可以很容易地找到一个点的值,给定它的坐标并改变它)。我一直在尝试使用数组,但还没有找到一个很好的方法将它组合在一起。我怎样才能以高效的方式使用Ruby?
非常感谢你!
更新:我有一个这样的数组:
$array = [
# 0 1 2 3 4 5 6 7 8
['O', '-',' -','-', '-', '-', '-', '-', '-'], #0
['|', 'x','x','x', 'x', 'x', 'x', 'x', 'x'], #1
['|', 'x','x','x', 'x', 'x', 'x', 'x', 'x'], #2
['|', 'x','x','x', 'x', 'x', 'x', 'x', 'x'], #3
]
如何以友好的方式展示它?
答案 0 :(得分:1)
好的尝试一下(参见之前答案的编辑,但这个是我觉得最好的):
grid = [ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0],
[2, 3, 4, 5, 6, 7, 8, 9, 0, 1],
[3, 4, 5, 6, 7, 8, 9, 0, 1, 2],
[4, 5, 6, 7, 8, 9, 0, 1, 2, 3],
[5, 6, 7, 8, 9, 0, 1, 2, 3, 4],
[6, 7, 8, 9, 0, 1, 2, 3, 4 ,5] ]
#prints first row and dashed line
r1 = grid[0]
f1 = grid[0][0]
print f1
print " "
r1.shift
print r1.join(" ")
r1.unshift(f1)
puts ""
puts " ------------------"
#Prints all other rows
grid.shift
grid.each do |r|
f = r[0]
print f
print " | "
r.shift
print r.join(" ")
r.unshift(f)
puts
end
输出:
0 1 2 3 4 5 6 7 8 9
------------------
1 | 2 3 4 5 6 7 8 9 0
2 | 3 4 5 6 7 8 9 0 1
3 | 4 5 6 7 8 9 0 1 2
4 | 5 6 7 8 9 0 1 2 3
5 | 6 7 8 9 0 1 2 3 4
6 | 7 8 9 0 1 2 3 4 5