forked from AnasImloul/Leetcode-Solutions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathValid Tic-Tac-Toe State.js
40 lines (37 loc) · 1.24 KB
/
Valid Tic-Tac-Toe State.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
var validTicTacToe = function(board) {
let playerX = 0 , playerO = 0;
let horizontal = [0,0,0];
let vertical = [0,0,0];
let diagnol = [0, 0];
const transformConfig=(row,col,val)=>{
horizontal[row] +=val;
vertical[col]+=val;
if(row ===col ){
diagnol[0]+=val;
if(row+col == board.length-1){
diagnol[1]+=val;
}
}else if(row+col == board.length-1){
diagnol[1]+=val;
}
}
board.forEach((data,row)=>{
data.split("").forEach((turn,col)=>{
if(turn == 'X'){
playerX++
transformConfig(row,col,1)
}else if(turn == 'O'){
playerO++;
transformConfig(row,col,-1);
}
});
});
if(playerX<playerO ||playerX-playerO>1 ) return false;
if(horizontal.includes(3)&&playerX<= playerO)return false;
if(vertical.includes(3)&&playerX <= playerO)return false;
if(diagnol.includes(3)&&playerX <=playerO)return false;
if(horizontal.includes(-3)&&playerX> playerO)return false;
if(vertical.includes(-3)&&playerX> playerO)return false;
if(diagnol.includes(-3)&&playerX>playerO)return false;
return true;
};