classTicTacToe{public:TicTacToe(intn):n(n),rows(n),cols(n){}/** * Player {player} makes a move at ({row}, {col}). * * @param row The row of the board. * @param col The column of the board. * @param player The player, can be either 1 or 2. * @return The current winning condition, can be either: * 0: No one wins. * 1: Player 1 wins. * 2: Player 2 wins. */intmove(introw,intcol,intplayer){constinttoAdd=player==1?1:-1;constinttarget=player==1?n:-n;if(row==col){diag+=toAdd;if(diag==target)returnplayer;}if(row+col==n-1){antiDiag+=toAdd;if(antiDiag==target)returnplayer;}rows[row]+=toAdd;if(rows[row]==target)returnplayer;cols[col]+=toAdd;if(cols[col]==target)returnplayer;return0;}private:constintn;// Record count('X') - count('O')vector<int>rows;vector<int>cols;intdiag=0;intantiDiag=0;};
classTicTacToe{publicTicTacToe(intn){this.n=n;rows=newint[n];cols=newint[n];}/** * Player {player} makes a move at ({row}, {col}). * * @param row The row of the board. * @param col The column of the board. * @param player The player, can be either 1 or 2. * @return The current winning condition, can be either: * 0: No one wins. * 1: Player 1 wins. * 2: Player 2 wins. */publicintmove(introw,intcol,intplayer){finalinttoAdd=player==1?1:-1;finalinttarget=player==1?n:-n;if(row==col){diag+=toAdd;if(diag==target)returnplayer;}if(row+col==n-1){antiDiag+=toAdd;if(antiDiag==target)returnplayer;}rows[row]+=toAdd;if(rows[row]==target)returnplayer;cols[col]+=toAdd;if(cols[col]==target)returnplayer;return0;}privatefinalintn;// Record count('X') - count('O')privateint[]rows;privateint[]cols;privateintdiag=0;privateintantiDiag=0;}
classTicTacToe:def__init__(self,n:int):self.n=n# Record count('X') - count('O')self.rows=[0]*nself.cols=[0]*nself.diag=0self.antiDiag=0""" Player {player} makes a move at ({row}, {col}). @param row The row of the board. @param col The column of the board. @param player The player, can be either 1 or 2. @return The current winning condition, can be either: 0: No one wins. 1: Player 1 wins. 2: Player 2 wins. """defmove(self,row:int,col:int,player:int)->int:toAdd=1ifplayer==1else-1target=self.nifplayer==1else-self.nifrow==col:self.diag+=toAddifself.diag==target:returnplayerifrow+col==self.n-1:self.antiDiag+=toAddifself.antiDiag==target:returnplayerself.rows[row]+=toAddifself.rows[row]==target:returnplayerself.cols[col]+=toAddifself.cols[col]==target:returnplayerreturn0