我正在解决一些练习题以提高我的 Ruby 技能,我正在解决我必须将二维数组旋转 90 度的问题。这是输入:
image = [
[1,2,3,4],
[5,6,7,8],
[9,0,1,2],
[3,4,5,6]
]
Run Code Online (Sandbox Code Playgroud)
预期的输出是:
image = [
[3,9,5,1],
[4,0,6,2],
[5,1,7,3],
[6,2,8,4]
]
Run Code Online (Sandbox Code Playgroud)
这是我编写的代码,它打印出不正确的输出:
def matrix(image)
y = image.length
for i in 0..y-1
for j in 0..y-1
image[i][j] = image[i][y-j-1]
end
end
image
end
Run Code Online (Sandbox Code Playgroud)
这是该代码的输出:
image = [
[4, 3, 3, 4],
[8, 7, 7, 8],
[2, 1, 1, 2],
[6, 5, 5, 6]
]
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释我做错了什么吗?
我会使用Array#transpose:
image = [
[1,2,3,4],
[5,6,7,8],
[9,0,1,2],
[3,4,5,6]
]
image.transpose.map(&:reverse)
# => [[3, 9, 5, 1], [4, 0, 6, 2], [5, 1, 7, 3], [6, 2, 8, 4]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
988 次 |
| 最近记录: |