题目描述
给定一个已完成的井字游戏的 3x3 矩阵,创建一个函数,该函数返回游戏是 “X” ,“O” 还是 “Draw” ,其中 "X" 和 "O" 表示它们在矩形中,"E" 表示一个空白点。如果返回 "X" 或 "O" ,则表示 "X" 胜利 或 "O" 胜利。 输入格式 输入一个数组,表示一个已完成的井字游戏的 3x3 矩阵; 输出格式 输出一个字符串,表示 O 获胜, X 胜利 ,或者平局。
输入输出样例1
输入
[ ["X", "O", "X"], ["O", "X", "O"], ["O", "X", "X"] ]
输出
X
输入输出样例2
输入
[ ["X", "X", "O"], ["O", "O", "X"], ["X", "X", "O"] ]
输出
Draw
说明提示
确保如果 O 获胜,则返回字母 "O" 而不是整数 0 (零),如果是平局,请确保返回大写的单词 "Draw" 。如果您返回 "X" or "O" ,请确保它们也大写。
思路:
判断井字棋的胜利,我们只需判断八条线上的元素是否一致即可:三行,三列和两个对角线。
board = input()
board = eval(board)
def tic_tac_toe(b):
#********** Begin **************
# 先将八条线上的元素归纳到一个列表中。
lists = [b[0], b[1], b[2],
[b[0][0], b[1][0], b[2][0]],
[b[0][1], b[1][1], b[2][1]],
[b[0][2], b[1][2], b[2][2]],
[b[0][0], b[1][1], b[2][2]],
[b[0][2], b[1][1], b[2][0]]]
for i in lists: # 循环列表中的元素
if len(set(i)) == 1: # 判断八条线上的元素是否一致。如果有一致的,则返回该条线上的第一个元素。
return i[0]
# 否则返回 Draw 。
return "Draw"
#********** End ************
print(tic_tac_toe(board))
|