问题描述

设计一个算法,判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" "代表一个空位。

以下是井字游戏的规则:

玩家轮流将字符放入空位(" ")中。

第一个玩家总是放字符"O",且第二个玩家总是放字符"X"。

"X"和"O"只允许放置在空位中,不允许对已放有字符的位置进行填充。

当有N个相同(且非空)的字符填充任何行、列或对角线时,游戏结束,对应该字符的玩家获胜。

当所有位置非空时,也算为游戏结束。

如果游戏结束,玩家不允许再放置字符。

如果游戏存在获胜者,就返回该游戏的获胜者使用的字符("X"或"O");如果游戏以平局结束,则返回 "Draw";如果仍会有行动(游戏未结束),则返回 "Pending"。

例子

image.png

思路:

这个井字游戏相信大家都玩过,那如何去判别某个状态的输赢呢,其实很简单,就是将所有的行、列、对角线的字母组成字符串,然后与“O”x n 和“X” x n进行对比。

class Solution:

def tictactoe(self, board: List[str]) -> str:

re=[] #存储所有情况的列表

n=len(board)

t='' #对角

u=''

for i in range(n):

re.append(board[i]) #所有的行

t+=board[i][i]

u+=board[n-i-1][i]

re.append(t)

re.append(u)

for j in range(n):

g=''

for i in range(len(board)):

g=g+board[i][j]

re.append(g) #所有的列

if 'X'*n in re:

return "X"

if 'O'*n in re:

return "O"

if ' ' in ''.join(board):

return "Pending"

else:

return "Draw"

python如何打印井号_井字游戏(python)相关推荐

  1. python 批量打印文档_使用python将Excel数据填充Word模板并生成Word

    [项目需求] Excel中有一万多条学生学平险数据,需要给每位学生打印购买回执单,回执单包括学生姓名,身份证号,学校等信息,目前只能从Excel拷贝数据到Word模板中,然后打印,效率及其低下,寻求帮 ...

  2. python怎么打印列表长度_关于python:生成器输出的长度

    本问题已经有最佳答案,请猛点这里访问. Python提供了一种很好的方法来获取渴望的可迭代len(x)的长度. 但是对于以生成器理解和函数表示的惰性可迭代对象,我找不到类似的东西. 当然,写这样的东西 ...

  3. python爬取公众号_基于Python采集爬取微信公众号历史数据

    鲲之鹏的技术人员将在本文介绍一种通过模拟操作微信App的方式采集指定公众号的所有历史数据的方法. 通过我们抓包分析发现,微信公众号的历史数据是通过HTTP协议加载的,对应的API接口如下图所示,其中有 ...

  4. python 怎么输入单引号_在python中如何输入单引号

    在Python中'...'和"..."是完全一样的,但不能出现'..."和"...'这种情况. 而将其混合使用会有很多意想不到的效果: 具体规则如下: 若字符串 ...

  5. python自动发送微信公众号_使用python一步一步搭建微信公众平台(四)----将小黄鸡引入微信自动回复...

    通过前三篇的教程,相信大家基本上了解了微信开发的基本流程,先判断用户传入数据的类型MsgType,然后再获取用户输入的内容content,再对content进行处理,再返回给用户 现在我们来加点料,在 ...

  6. python返回文件行号_用python比较两个文件中内容的不同之处, 并输出行号和内容....

    '''cmpfile.py - 比对两个文件, 如果有不同之处, 打印内容和行号''' import os class cmpFile: def __init__(self, file1, file2 ...

  7. python如何打印txt文件_在Python中的.txt文件中打印特定行?

    I have got a .txt file that contains a lot of lines. I would like my program to ask me what line I w ...

  8. python模拟app抢号_使用python编程自动玩手游

    我们在玩手游的时候,会发现手游中有些步骤总是需要重复玩,每天都要重复,比如重复做日常任务啥的,一直肝个不停,但是其实很多东西都是固定玩法了,但是就是需要你机械的重复,我就没见过什么手游是不肝的,就算自 ...

  9. python名片打印程序代码_基于Python的名片识别接口调用代码实例

    #!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib from urllib import urlencode #-------- ...

最新文章

  1. 对冒泡和二分法,特别是二分法有了更深的理解
  2. File类与FileInfo类的区别
  3. 随机森林-集成学习方法(分类)
  4. CGCKD2021大会报告整理(1)--宽度学习
  5. metinfo mysql_Metinfo 5.3.17 前台SQL注入漏洞
  6. 小程序开发(2)-之app.js、app.wxss、project.config.json说明
  7. 在linux下进行嵌入式系统设计,一种应用于测控系统的基于Linux的嵌入式系统的设计...
  8. 非递归中序,后序,先序遍历二叉树完整代码(用链式栈实现)
  9. 密码学研究-加密解密
  10. Android学习--10-数据存储
  11. 利用openpyxl来读取Excel数据
  12. Struts2→MCV、环境搭建第一个样例、工作原理、核心文件、XML中常用元素、通配符、action后缀、action接收参数、result、标签
  13. OpenGL基础54:点光源阴影
  14. mybatis入门截图四(订单商品数据模型-懒加载-缓存)
  15. TableViewCell分割线消失的问题
  16. Atitit 常见聚合运算与算法 目录 1.1. 单行函数,vs 那就是聚合函数 1 1.2. 聚合分类 哈希聚合 标量聚合 流聚合 1 1.3. 常见聚合函数 mysql oracle等 1 r
  17. Atitit rpc之道 attilax著 艾龙 著 1. 远程过程调用协议 1 2. 历史 2 2.1. RPC的早期发展 3 3. RPC这种编程范式存在的三大问题以及这些问题 5 3.1.
  18. 最好用的Mac任务规划软件【滴答清单】
  19. BZOJ 1260 paint
  20. 科技护肤品,买还是不买

热门文章

  1. C++之RVO返回值优化
  2. 浏览器缓存分类及区别
  3. 【Aurora】在word中插入算法伪代码、表格和公式
  4. 远程命令执行/命令注入 之 命令连接符
  5. 无刷无霍尔电机驱动准备工作(一)
  6. 一加还原Android10,曾经安卓最佳第三方ROM回归,基于安卓10,支持小米、一加等机型...
  7. 第二课第二周第1-5节-基于树的模型用于医学预后
  8. 2 The Vuri FAQ - Vrui问答
  9. Linux设备与内存单位-扇区、块、段、页(sector、block、segment、page)
  10. 【多个IP地址用逗号分割开】vue简单实现,textarea文本域输入多个ip地址用逗号分隔开,根据空格分割