博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
checkio-Xs and Os Referee
阅读量:4148 次
发布时间:2019-05-25

本文共 2284 字,大约阅读时间需要 7 分钟。

井字游戏,有时也被称为“进攻和防守”,是一个两人玩家(X和O)轮流标志着3×3的网格的空间的连珠游戏。最先在任意一条直线(水平线,垂直线或对角线)上成功连接三个标记的一方获胜。

但我们不去玩这个游戏。你将是这个游戏的裁判。你被赋予游戏的结果,以及你必须判断游戏是平局还是有人胜出,以及谁将会成为最后的赢家。如果X玩家获胜,返回“X”。如果O玩家获胜,返回“O”。如果比赛是平局,返回“D”。

游戏的结果是作为字符串形式的列表,其中“X”和“O”是玩家的标志,“.”是空格。

输入: 游戏结果作为字符串形式的列表(Unicode)。

输出: “X”,“O”或“D”作为字符串形式。

自己写的代码,繁琐。纯便利。。

def checkio(a):    k=0    for i in range(len(a)):        if a[0][i] == a[1][i] == a[2][i] == 'X'  :            return "X"        else: k+=1        if a[0][i] == a[1][i] == a[2][i] == 'O'  :            return "O"        else: k+=1        if a[i][0] == a[i][1] == a[i][2] == 'X'  :                return "X"        else: k+=1        if a[i][0] == a[i][1] == a[i][2] == 'O'  :                return "O"        else: k+=1    if a[0][0] == a[1][1] == a[2][2] == "X":        return "X"    else: k+=1    if a[0][0] == a[1][1] == a[2][2] == "O":        return "O"    else: k+=1    if a[0][2] == a[1][1] == a[2][0] == "X":        return "X"    else: k+=1    if a[0][2] == a[1][1] == a[2][0] == "O":        return "O"     else: k+=1    if k == 16 :        return "D"

by gyahun_dash

def checkio(result):    rows = result    cols = map(''.join, zip(*rows))    diags = map(''.join, zip(*[(r[i], r[2 - i]) for i, r in enumerate(rows)]))    lines = rows + list(cols) + list(diags)​    return 'X' if ('XXX' in lines) else 'O' if ('OOO' in lines) else 'D'

将横的一行,总共三行存在rows;

三列存在cols里;
斜的两组:(r是result中元素的遍历,比如分别取XXX,X.O ,XOO)
r[0] r[2]
r[1] r[1]
r[2] r[0]
经过zip函数变成两个元组(r[0],r[1],r[2])和(r[2],r[1],r[0])
然后转换成list在将行列斜的三组组合在一起,从中找有没有XXX或者000,如果都没有的话,返回D。
另外一种by DanielDou

def checkio(board):    # First we put everything together into a single string    x = "".join(board)    # Next we outline the 8 possible winning combinations.     combos = ["012", "345", "678", "036", "147", "258", "048", "246"]    # We go through all the winning combos 1 by 1 to see if there are any    # all Xs or all Os in the combos    for i in combos:        if x[int(i[0])] == x[int(i[1])] == x[int(i[2])] and x[int(i[0])] in "XO":            return x[int(i[0])]    return "D"

Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

join()方法语法:
str.join(sequence)

以下实例展示了join()的使用方法:

str = “-“;

seq = (“a”, “b”, “c”); # 字符串序列
print str.join( seq );

以上实例输出结果如下:

a-b-c

其中的思想是把list中的3个元素“”.join()转换成一个新的字符串。

然后列出可能的赢的组合。036 147 258……

转载地址:http://jjvti.baihongyu.com/

你可能感兴趣的文章
构造型模式
查看>>
svn out of date 无法更新到最新版本
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
删除weblogic 域
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>
日志框架学习2
查看>>
SVN-无法查看log,提示Want to go offline,时间显示1970问题,error主要是 url中 有一层的中文进行了2次encode
查看>>
NGINX
查看>>
Qt文件夹选择对话框
查看>>
DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)
查看>>
DeepLearning tutorial(6)易用的深度学习框架Keras简介
查看>>
DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
查看>>
流形学习-高维数据的降维与可视化
查看>>
Python-OpenCV人脸检测(代码)
查看>>
python+opencv之视频人脸识别
查看>>
人脸识别(OpenCV+Python)
查看>>
6个强大的AngularJS扩展应用
查看>>