井字游戏,有时也被称为“进攻和防守”,是一个两人玩家(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相关推荐

  1. 【Python CheckiO 题解】Xs and Os Referee

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  2. Python CheckiO 题解系列 丨 博客目录索引

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本题解系列主要记录自己在用 Python 闯关时的做 ...

  3. python3 os模块_python3 os模块

    os模块就是对操作系统进行操作, 这个模块提供了一种使用操作系统相关功能的可移植方式. 1.系统信息 posix.uname_result(sysname='Linux', nodename='lia ...

  4. js计算器代码加减乘除_理不清亲戚关系,程序员直接写了一个亲戚关系计算器,来试试?...

    Java识堂,一个高原创,高收藏,有干货的微信公众号,欢迎关注 春节到了,免不了要去七大姑八大姨家拜年,顺便接受长辈们的关怀.有时偶然遇到许久没见过的远房亲戚,叫不出合适的称谓就尴尬了:或者即便被家人 ...

  5. #54 partition a sequence

    为什么80%的码农都做不了架构师?>>>    (= (__ 3 (range 9)) '((0 1 2) (3 4 5) (6 7 8))) (= (__ 2 (range 8)) ...

  6. iOS Android 上传代码库+持续集成+单元测试

    背景 本文将介绍如何把iOS & Android项目分别上传到CocoaPods和Jitpack,并用Travis CI做持续集成,codecov做代码单元测试覆盖率的报告展示. 上传代码 创 ...

  7. vue 井号_使用Vue 2制作井字游戏:第1部分

    vue 井号 This tutorial assumes that you have a little prior knowledge of JavaScript and the Vue framew ...

  8. Reinforcement learning book 学习笔记 第一章

    RL学习 写在前面: 本专栏是学习由Richard S. Sutton and Andrew G. Barto 所著 <Reinforcement learning>的学习笔记,如有指正请 ...

  9. 亲属计算规则算法--js实现(关键算法摘要)

    在github上找个一个比较好的计算亲属关系的算法,核心代码如下: !function (root, factory) { if (typeof module === 'object' &&a ...

最新文章

  1. Linux 安装 Elasticsearch-rtf
  2. 共享库中的位置无关代码(PIC)
  3. C语言实例第3期:在控制台打印出著名的杨辉三角
  4. SVM 实现与代码(转)
  5. TensorFlow 教程——电影评论文本分类
  6. 产品经理,你该如何做好后台规划
  7. Python类的成员
  8. ImageIO 合并图片工具
  9. The Economist经济学人是如何使用Go语言构建内容平台微服务架构的?
  10. 美国《国家地理》:年度十大新闻
  11. Informatica批量导入、导出xml文件
  12. 音频格式转换Java代码,以mp3转amr为例
  13. Co-occurrence网络图绘制教程(附详细代码)
  14. 菜鸟教程css事件,【推荐】DIV+CSS入门菜鸟教程
  15. 王者转号仅显示可转移的服务器,王者荣耀转移账号是免费的吗 角色转移进度怎么查看...
  16. 浙大版《C语言程序设计实验与习题指导(第4版)》题目集-编程题-实验1-1-Hello World!
  17. datetimepicker 插件用法及参数说明
  18. RxSwift之路01-----简单的RxSwift使用
  19. CHK文件丢失怎么办?chk文件恢复技巧就看这一个!
  20. Zero-DCE++运行问题

热门文章

  1. 跟着Cell学作图|9.PPI分析(GeNets数据库)
  2. 3d空间中球体的动量守恒
  3. BZOJ4585: [Apio2016]烟火表演
  4. MySQL数据库——数据库逻辑结构设计阶段(非常重要)
  5. 如何撰写PRD(一)
  6. ON [PRIMARY]是表示....
  7. schrems ii对我们的科技创业公司意味着什么
  8. 嘉立创EDA原理图封装画错了怎么办
  9. 医院客户关系管理/医院随访/CRM/HCRM
  10. body软件 human_人体系统女性3D软件破下载|人体系统女性3d专业中文版下载v1.0(Human body female)-乐游网安卓下载...