转置 5x5 数组时出现索引错误
Index Error while transposing a 5x5 array
给定以下 "bingo board" 数组:
board = [[47, 44, "X", 8, 88],
[22, 69, "X", 65, 73],
[83, 85, "X", 89, 57],
[25, 31, "X", 68, 51],
[75, 70, "X", 80, 83]]
和运行看我有没有宾果的方法如下:
def bingo(board)
if board.each_index {|e| board[e].uniq!} .any? {|row| row == ["X"]} == true
p "BINGO!"
elsif
board = board.transpose
board.each_index {|e| board[e].uniq!} .any? {|row| row == ["X"]} == true
p "BINGO!"
elsif (board[0][0] && board[1][1] && board[2][2] && board[3][3] && board[4][4]) == "X"
p "BINGO!"
elsif board[0][4] && board[1][3] && board[2][2] && board[3][1] && board[4][0] == "X"
p "BINGO!"
else
p "no bingo"
end
end
我 运行 遇到以下错误:
`transpose': element size differs (5 should be 4) (IndexError)
什么给了?为什么它认为 5 是 4?
我相信你的第二行,运行 board[e].uniq!
破坏性地改变了嵌套在原始 board
数组中的每个数组...因此,每个数组中不再有五个对象线.
给定以下 "bingo board" 数组:
board = [[47, 44, "X", 8, 88],
[22, 69, "X", 65, 73],
[83, 85, "X", 89, 57],
[25, 31, "X", 68, 51],
[75, 70, "X", 80, 83]]
和运行看我有没有宾果的方法如下:
def bingo(board)
if board.each_index {|e| board[e].uniq!} .any? {|row| row == ["X"]} == true
p "BINGO!"
elsif
board = board.transpose
board.each_index {|e| board[e].uniq!} .any? {|row| row == ["X"]} == true
p "BINGO!"
elsif (board[0][0] && board[1][1] && board[2][2] && board[3][3] && board[4][4]) == "X"
p "BINGO!"
elsif board[0][4] && board[1][3] && board[2][2] && board[3][1] && board[4][0] == "X"
p "BINGO!"
else
p "no bingo"
end
end
我 运行 遇到以下错误:
`transpose': element size differs (5 should be 4) (IndexError)
什么给了?为什么它认为 5 是 4?
我相信你的第二行,运行 board[e].uniq!
破坏性地改变了嵌套在原始 board
数组中的每个数组...因此,每个数组中不再有五个对象线.