Files

59 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: 5900f4991000cf542c50ffab
title: 'Завдання 301: Нім'
challengeType: 5
forumTopicId: 301955
dashedName: problem-301-nim
---
# --description--
Nim — це гра з купами каміння, де два гравці по черзі беруть певну кількість каменів із будь-якої купи до поки їх зовсім не залишиться.
Розглянемо звичайну версію Nim на три купки каміння, яка працює наступним чином:
- На початку гри є три купи каменів.
- Коли настає черга певного гравця, він забирає додатне число каменів з будь-якої обраної купи.
- Той, хто першим не зможе зробити хід (тому що не залишилося каменів), програє.
Якщо ($n_1$, $n_2$, $n_3$) вказує на позицію Німа, що складається з купок розміром $n_1$, $n_2$ та $n_3$, тоді з'являється проста функція $X(n_1,n_2,n_3)$, яку можна спробувати знайти або спробувати вирахувати самостійно, яка повертає:
- нуль, якщо гравець, з ідеальною стратегією, що збирається ходити, зрештою програє; чи
- нуль, якщо гравець, з ідеальною стратегією, що збирається ходити, зрештою переможе.
Наприклад, $X(1, 2, 3) = 0$ тому, що дії конкретного гравця неважливі, його опонент може відповісти ходом, відповідно до якого дві купи залишатимуться однакового розміру, адже цей гравець віддзеркалюватиме ходи до поки жодного каменя не залишитися, а тому він програє. Для унаочення:
- поточний гравець ходить (1,2,1)
- опонент ходить (1,0,1)
- поточний гравець ходить (0,0,1)
- хід суперника — (0,0,0), а отже він стає переможцем.
Для скількох додатніх цілих чисел $n ≤ 2^{30}$ відповідає $X(n, 2n, 3n) = 0$?
# --hints--
`nim()` має повернути `2178309`.
```js
assert.strictEqual(nim(), 2178309);
```
# --seed--
## --seed-contents--
```js
function nim() {
return true;
}
nim();
```
# --solutions--
```js
// solution required
```