Решение игры Ним
Ефим Хлебный

Решил попробовать свои силы на одном известном сайте. И столкнулся с проблемой. Задача: надо найти победителя в игре Ним, основываясь на исходных данных. Ссылка на задание

Написал скрип, он работатет на небольших объемах кучек см переменную Input строки 4-7. Но при большом количестве кучек (61) выдает неверный ответ. При решини испльзовал теорему Чарлз Бутон (Charles L. Bouton): "Текущий игрок имеет выигрышную стратегию тогда и только тогда, когда XOR-сумма размеров кучек отлична от нуля" ().

Сопсно вопрос, что не так в скрипте?
Тест который не прошел мой скрипт:
входные данные:
выходные данные:
``
let input =
3
61
1 1 0 0 3 3 3 0 1 0 2 1 3 1 0 1 1 1 3 2 3 1 0 2 0 2 1 3 1 2 2 2 3 2 2 3 1 1 3 2 1 1 3 1 3 0 2 0 1 1 2 0 2 2 2 2 0 3 1 1 2 3 3 1 1 1 0 2 3 3 0 0 1 3 1 0 3 3 0 0 0 2 0 2 1 2 0 1 2 1 3 0 0 2 1 1
2
1 1
3
2 1 4`;

let numbers = [];
let tableRow = 0;
let i = 0;

while (i < input.length + 1) {
let numberPosition = input.indexOf('\n', i);
if (numberPosition > 0) {
numbers[tableRow] = input.slice(i, numberPosition);
i = i + numbers[tableRow].length + 1;
if (input.indexOf('\n', i + numbers[tableRow].length + 1) < 0) {
numbers[tableRow + 1] = input.slice(numberPosition + 1);
}
tableRow++;
} else {
i++;
}
}

for (let i=1; i < (numbers.length); i=i+2 ) {
let nimName = numbers[i];

let nimNumbers = numbers[i+1].split(' ').map((string) => parseInt(string));
let xorSumm = 0;
for (let x=1; x < nimNumbers.length; x++) {
xorSumm = nimNumbers[x-1] ^ nimNumbers[x]

}

if (xorSumm > 0) {
console.log('Frist');
} else {
console.log('Second');
}

}
```

Ефим Хлебный около 1 месяца назадСпасибо 0
1 чел.