#python程序设计
井字游戏我们都玩过吧
现在用python设置程序,对一局井字游戏的胜利结果进行判定
输入样式为包含"x","O","."的字符串,其中"."代表空格
输出胜利结果"X","O",或"D"平局
sample:
assert checkio(["X.O", "XX.", "XOO"]) == "X"
assert checkio(["OO.", "XOX", "XOX"]) == "O"
assert checkio(["OOX", "XXO", "OXX"]) == "D"
assert checkio(["O.X", "XX.", "XOO"]) == "X"
def checkio(game_result: list[str]) -> str:
"""思路是先创建一组包含胜利情况的索引集,然后遍历输入的结果,得到字符的索引集,然后对交集进行 判断如果交集是胜利情况,就判断胜负方。
"""
victory_pos = [{0, 1, 2}, {3, 4, 5}, {6, 7, 8},
{0, 3, 6}, {1, 4, 7}, {2, 5, 8}, {0, 4, 8}, {2, 4, 6}]
result = "".join(game_result)
X_pos = set()
Y_pos = set()
X_pos |= {index if char == "X" else None for index,
char in enumerate(result)}
Y_pos |= {index if char == "O" else None for index,
char in enumerate(result)}
while victory_pos:
win = victory_pos.pop()
if X_pos & win != win and Y_pos & win == win:
return "O"
if X_pos & win == win and Y_pos & win != win:
return "X"
return "D"
checkio(["X.O", "XX.", "XOO"])