Skip to content

Instantly share code, notes, and snippets.

@denchistyakov
Created December 14, 2018 12:16
Show Gist options
  • Save denchistyakov/3d40b8b886d977c35269e32f2cf64593 to your computer and use it in GitHub Desktop.
Save denchistyakov/3d40b8b886d977c35269e32f2cf64593 to your computer and use it in GitHub Desktop.
/**
* @param {array} input Игровое поле для крестиков-ноликов 3×3
* @return {number}
*/
function ticTacToe(input) {
let result = -1;
let map = {
// Сумма каждой строки
0: 0,
1: 0,
2: 0,
// Сумма каждого столбца
3: 0,
4: 0,
5: 0,
// Суммы диагоналей
6: 0,
7: 0,
};
for (let i = 0; i < input.length; i++) {
const rows = input[i];
for (let j = 0; j < rows.length; j++) {
const cell = rows[j];
// Считаем сумму по горизонталям
map[i] += cell;
// Считаем сумму по вертикалям
map[3 + j] += cell;
}
}
map[6] = input[0][0] + input[1][1] + input[2][2];
map[7] = input[2][0] + input[1][1] + input[0][2];
const keys = Object.keys(map);
for (let i = 0; i < keys.length; i++) {
const item = map[keys[i]];
if (item === 0) {
result = 0;
break;
} else if (item === 3) {
result = 1;
break;
}
}
return result;
}
console.log(
ticTacToe([[0, 0, 0], [1, 0, 1], [1, 1, 0]]), // 0
ticTacToe([[1, 0, 0], [0, 1, 1], [0, 0, 1]]), // 1
ticTacToe([[1, 0, 1], [0, 1, 1], [0, 1, 0]]) // -1
);
console.log(
ticTacToe([[0, 0, 0], [1, 0, 1], [1, 0, 1]]) === 0,
ticTacToe([[1, 0, 0], [0, 1, 1], [0, 0, 1]]) === 1,
ticTacToe([[1, 0, 1], [0, 1, 1], [0, 1, 0]]) === -1
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment