HH_Knight 2020-03-29 19:40 采纳率: 0%
浏览 57

新手求帮助,感谢各位大佬。

你已经两个月没有出门了,无聊到自己和自己玩“一键三连”的游戏。这个游戏很简单,你制作了规格为4×4的棋盘,一开始棋盘中所有格子都是空的,全为‘.’,紧接着你一人分饰两角,一个画‘x’填到一个为空的格子里,另一个画‘o’填到另一个为空的格子,这个过程交替进行。如果一方先使横的、竖的或斜的有连续的三个格子都是属于自己的标记,那么就赢了。

你刚刚看完一个视频,现在准备开始玩“一键三连”,于是你拿出了很久之前的棋盘,它可能下过,也可能没有(即全部填‘.’),但保证此时没有达到画‘o’的胜局。你选择在一个为空的格子里画‘x’后马上停止,看看是否能构成画‘x’的胜局。

输入格式:
输入共四行四列,表示由“.”(表示空的),“x”(小写字母x)或“o”(小写字母o)组成棋盘。

输出格式:
如果你一键三连了,输出“YES”,否则输出“NO”。

输入样例1:
xx..
.oo.
x...
oox.

输出样例1:
YES

输入样例2:
x.ox
ox..
x.o.
oo.x

输出样例2:
NO

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-07-25 16:44
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    ```python

    读取输入

    board = [] for _ in range(4): board.append(input())

    检查是否构成"一键三连"

    def check_win(board, player): # 检查横向 for i in range(4): if board[i].count(player) == 3: return True # 检查纵向 for j in range(4): if [board[i][j] for i in range(4)].count(player) == 3: return True # 检查斜向 if board[0][0] == player and board[1][1] == player and board[2][2] == player: return True if board[0][3] == player and board[1][2] == player and board[2][1] == player: return True return False

    检查一键三连

    def check_one_line(board): for i in range(4): for j in range(4): if board[i][j] == '.': new_board = [list(row) for row in board] new_board[i][j] = 'x' if check_win(new_board, 'x'): return "YES" return "NO"

    输出结果

    print(check_one_line(board))

    输入样例1:
    xx..
    .oo.
    x...
    oox.
    输出样例1:
    YES
    输入样例2:
    x.ox
    ox..
    x.o.
    oo.x
    输出样例2:
    NO
    
    评论

报告相同问题?