https://leetcode.com/problems/find-winner-on-a-tic-tac-toe-game/
请找出圈圈叉叉的赢家,题目会给你一个阵列moves
,代表两个玩家游玩画下记号的过程,请回传现在的游戏状况,如果先手的玩家胜利就回传'A'、後手的玩家胜利就回传'B'、平手就回传'Draw'、还在进行中就回传'Pending'。
圈圈叉叉的胜利条件是3个符号的连线,而连出来的线有8种: 3个行方向的线、3个列方向的线、1个对角线、1个反对角线,所以我们只要观察这6条线有没有达到胜利条件就好
再来是如何标记是哪位选手的记号,我们在九宫格标记1代表先手玩家、以-1代表後手玩家,这样出现胜利条件就是任一条线的积为3或-3
class Solution:
def tictactoe(self, moves: List[List[int]]) -> str:
rows, cols = [0] * 3, [0] * 3
diag1 ,diag2 = 0, 0
player = 1
for i, j in moves:
rows[i] += player
cols[j] += player
if i == j:
if i == 1:
diag1 += player
diag2 += player
else:
diag1 += player
if abs(i-j) == 2:
diag2 += player
if rows[i] == 3 or cols[j] == 3 or diag1 == 3 or diag2 == 3:
return 'A'
if rows[i] == -3 or cols[j] == -3 or diag1 == -3 or diag2 == -3:
return 'B'
player *= -1
return 'Pending' if len(moves) < 9 else 'Draw'
今天是简单难度的题目,写完之後就可以自己做个小游戏了
<<: Chapter3 - 动感DJ续篇 进一步操作阵列,让音乐嗨起来
GitHub Repo https://github.com/b2etw/Spring-Kotlin...
什麽是git git是一种分散式的版本控制系统,主要用来用来备份与管理程序码 版本控制 可以把它想像...
上一篇我们的基因体时代-AI, Data和生物资讯 Day06-蛋白质结构和机器学习01我们继续分享...
影像中的杂讯真的让人看了很不顺眼!好想把上面那些小白点、小黑点拿掉! 这时候滤波器就派上用场了~~~...
前言 终於要开始进入JavaScript重头戏Callback。 Callback就是函式呼叫函式 ...