【发布时间】:2018-03-23 15:14:22
【问题描述】:
我正在尝试以螺旋顺序(顺时针)打印一个数组,但我的代码没有正确打印。
我的数组是:
a = [
[2, 4, 6, 8],
[5, 9, 12, 16],
[2, 11, 5, 9],
[3, 2, 1, 8]
]
我的解决方案:
def print_circ(arr, row, col)
t = 0
b = row - 1
l = 0
r = col - 1
dir = 0
while t <= b and l <= r do
if dir == 0
for i in l..r
puts arr[t][i]
end
t += 1
end
if dir == 1
for i in t..b
puts arr[i][r]
end
r -= 1
end
if dir == 2
for i in r..l
puts arr[b][i]
end
b -= 1
end
if dir == 3
for i in b..t
puts arr[i][l]
end
l += 1
end
dir = (dir+1)%4
end
end
当我运行它时,它不会打印出底部或左侧边缘:
2
4
6
8
16
9
8
9
12
5
11
谁能帮我理解我的代码有什么问题?
【问题讨论】:
-
在 Ruby 中,您应该避免使用 C 或 Java 风格的
for循环,使用迭代器,这样您就不必担心数组限制了。我添加了一个更 Rubyesque 的解决方案。
标签: arrays ruby algorithm multidimensional-array