Xs and Os Referee
井字游戏,有时也被称为“进攻和防守”,是一个两人玩家(X和O)轮流标志着3×3的网格的空间的连珠游戏。最先在任意一条直线(水平线,垂直线或对角线)上成功连接三个标记的一方获胜。
但我们不去玩这个游戏。你将是这个游戏的裁判。你被赋予游戏的结果,以及你必须判断游戏是平局还是有人胜出,以及谁将会成为最后的赢家。如果X玩家获胜,返回“X”。如果O玩家获胜,返回“O”。如果比赛是平局,返回“D”。
游戏的结果是作为字符串形式的列表,其中“X”和“O”是玩家的标志,“.”是空格。
输入: 游戏结果作为字符串形式的列表(Unicode)。
输出: “X”,“O”或“D”作为字符串形式。
解法一:
def checkio(game_result):# 横向 for i in game_result:if i.find('XXX') != -1:return 'X' elif i.find('OOO') != -1:return 'O' # 纵向 for j in range(0,3):list = []for i in range(0,3):list.append(game_result[i][j])if list[0] == list[1] == list[2] and list[0] != '.':return list[0]# 对角线 diagList = [game_result[i][i] for i in range(0,3)]if diagList[0] == diagList[1] == diagList[2] and diagList[0] != '.':return diagList[0]diagList = [game_result[abs(i-2)][i] for i in range(0,3)[::-1]]if diagList[0] == diagList[1] == diagList[2] and diagList[0] != '.':return diagList[0]return 'D'
if __name__ == '__main__':#These "asserts" using only for self-checking and not necessary for auto-testing assert checkio(["X.O","XX.","XOO"]) == "X", "Xs wins" assert checkio(["OO.","XOX","XOX"]) == "O", "Os wins" assert checkio(["OOX","XXO","OXX"]) == "D", "Draw" assert checkio(["O.X","XX.","XOO"]) == "X", "Xs wins again"
解法二:
def checkio(result):rows = resultcols = 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'
lines将所有的组合归到一起, 最后进行筛选。
Xs and Os Referee相关推荐
- 【Python CheckiO 题解】Xs and Os Referee
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- Python CheckiO 题解系列 丨 博客目录索引
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本题解系列主要记录自己在用 Python 闯关时的做 ...
- python3 os模块_python3 os模块
os模块就是对操作系统进行操作, 这个模块提供了一种使用操作系统相关功能的可移植方式. 1.系统信息 posix.uname_result(sysname='Linux', nodename='lia ...
- js计算器代码加减乘除_理不清亲戚关系,程序员直接写了一个亲戚关系计算器,来试试?...
Java识堂,一个高原创,高收藏,有干货的微信公众号,欢迎关注 春节到了,免不了要去七大姑八大姨家拜年,顺便接受长辈们的关怀.有时偶然遇到许久没见过的远房亲戚,叫不出合适的称谓就尴尬了:或者即便被家人 ...
- #54 partition a sequence
为什么80%的码农都做不了架构师?>>> (= (__ 3 (range 9)) '((0 1 2) (3 4 5) (6 7 8))) (= (__ 2 (range 8)) ...
- iOS Android 上传代码库+持续集成+单元测试
背景 本文将介绍如何把iOS & Android项目分别上传到CocoaPods和Jitpack,并用Travis CI做持续集成,codecov做代码单元测试覆盖率的报告展示. 上传代码 创 ...
- vue 井号_使用Vue 2制作井字游戏:第1部分
vue 井号 This tutorial assumes that you have a little prior knowledge of JavaScript and the Vue framew ...
- Reinforcement learning book 学习笔记 第一章
RL学习 写在前面: 本专栏是学习由Richard S. Sutton and Andrew G. Barto 所著 <Reinforcement learning>的学习笔记,如有指正请 ...
- 亲属计算规则算法--js实现(关键算法摘要)
在github上找个一个比较好的计算亲属关系的算法,核心代码如下: !function (root, factory) { if (typeof module === 'object' &&a ...
最新文章
- Linux 安装 Elasticsearch-rtf
- 共享库中的位置无关代码(PIC)
- C语言实例第3期:在控制台打印出著名的杨辉三角
- SVM 实现与代码(转)
- TensorFlow 教程——电影评论文本分类
- 产品经理,你该如何做好后台规划
- Python类的成员
- ImageIO 合并图片工具
- The Economist经济学人是如何使用Go语言构建内容平台微服务架构的?
- 美国《国家地理》:年度十大新闻
- Informatica批量导入、导出xml文件
- 音频格式转换Java代码,以mp3转amr为例
- Co-occurrence网络图绘制教程(附详细代码)
- 菜鸟教程css事件,【推荐】DIV+CSS入门菜鸟教程
- 王者转号仅显示可转移的服务器,王者荣耀转移账号是免费的吗 角色转移进度怎么查看...
- 浙大版《C语言程序设计实验与习题指导(第4版)》题目集-编程题-实验1-1-Hello World!
- datetimepicker 插件用法及参数说明
- RxSwift之路01-----简单的RxSwift使用
- CHK文件丢失怎么办?chk文件恢复技巧就看这一个!
- Zero-DCE++运行问题
热门文章
- 跟着Cell学作图|9.PPI分析(GeNets数据库)
- 3d空间中球体的动量守恒
- BZOJ4585: [Apio2016]烟火表演
- MySQL数据库——数据库逻辑结构设计阶段(非常重要)
- 如何撰写PRD(一)
- ON [PRIMARY]是表示....
- schrems ii对我们的科技创业公司意味着什么
- 嘉立创EDA原理图封装画错了怎么办
- 医院客户关系管理/医院随访/CRM/HCRM
- body软件 human_人体系统女性3D软件破下载|人体系统女性3d专业中文版下载v1.0(Human body female)-乐游网安卓下载...