【发布时间】:2013-02-26 22:34:31
【问题描述】:
最初的问题:对于给定的 3x3 井字棋棋盘,检查是否有玩家获胜。
到目前为止,我提出的最简单的解决方案是旋转矩阵并对每一行求和:
board
[[0, 1, 2], [3, 4, 5], [6, 7, 8]]
pr(board)
0 1 2
3 4 5
6 7 8
pr(zip(*board))
0 3 6
1 4 7
2 5 8
上面的0..9数字只是为了显示棋盘上的位置,通常他们会为玩家1填充1,为玩家2填充-1,为未填充位置填充0。逐行进行,如果总和为 3 或 -3,则为获胜块。
但是,不检查对角线。有没有办法以优雅+高性能的方式从这样的矩阵中提取对角线?我的意思不是“手动”使用琐碎的索引 (0, 1, 2),而是获取 n x n 矩阵的对角线。
附: pr 只是打印二维列表的辅助函数:
def pr(x):
for row in x:
print ' '.join(map(str, row))
【问题讨论】:
-
pr函数是什么? -
辅助函数,见 P.S.在我现在编辑之后