function solution(board) {
const getCheckSheet = (len) => {
const [horizon, vertical, majorDiag, antiDiag] = [[], [], [], []];
for (let i = 0; i < len; i++) {
horizon.push(Array.from({length: len}, (_, idx) => i * len + idx))
vertical.push(Array.from({length: len}, (_, idx) => i + len * idx))
majorDiag.push(i * (len + 1));
antiDiag.push((i + 1) * (len - 1));
}
return [...horizon, ...vertical, majorDiag, antiDiag];
}
const winOrNot = (arr) => {
return checkSheet.some(answer => answer.every(el => arr.includes(el)));
}
const checkSheet = getCheckSheet(board.length);
const myBoard = board.flatMap(el => el.split(''));
const {O, X} = myBoard.reduce((obj, el, idx) => {
obj[el]?.push(idx);
return obj;
}, {O: [], X: []});
const diff = O.length - X.length;
if(diff == 0){
return winOrNot(O) ? 0 : 1;
}else if (diff == 1){
return winOrNot(X) ? 0 : 1;
}else{
return 0;
}
}