Ним и его родственники
Кучи камней и XOR. Плюс три варианта, которые встречаются чаще самого нима: ограничение на ход, мизерный, лестничный.
3 мин
В ниме лежит несколько куч камней. Ход — взять любое положительное число камней из одной кучи. Проигрывает тот, кто не может сходить, то есть тот, перед кем не осталось камней.
Значение Гранди кучи из камней равно : из неё достижимы кучи , и такого множества равен . По теореме о сумме позиция проигрышна ровно тогда, когда
Выигрышный ход
Пусть . Берём кучу, у которой установлен старший бит (такая обязательно есть), и уменьшаем её до :
for (int i = 0; i < k; i++)
if ((pile[i] ^ S) < pile[i]) {
std::cout << pile[i] << " " << (pile[i] ^ S); // из чего и во что
break;
}
Выигрышных ходов может быть несколько — столько, сколько куч содержат старший бит .
Ограничение на ход
Если из кучи разрешено брать не больше камней, значение Гранди становится : достижимы значения предыдущих остатков, и даёт следующий. Проверено перебором для всех и — расхождений нет.
Отсюда правило для одной кучи: проигрышны ровно позиции, кратные . Стратегия — каждым ходом дополнять взятое соперником до .
Мизерный ним
Здесь проигрывает тот, кто взял последний камень. Ответ отличается от обычного нима только в вырожденном случае:
- если есть хотя бы одна куча из двух и более камней — как в обычном ниме: выигрывает первый при ;
- если все кучи по одному камню — выигрывает первый ровно тогда, когда таких куч чётное число.
Второе правило — прямой перебор: игроки просто забирают по камню, и последний достаётся тому, у кого нечётный номер хода. Первое звучит подозрительно, но проверяется: на всех наборах до четырёх куч по четыре камня формула совпала с перебором по всем позициям.
Содержательная причина в том, что пока есть большая куча, ведущий может выбирать, оставить ли чётное число единиц, — и разница между обычной и мизерной игрой откладывается до самого конца.
Лестничный ним
Кучи стоят на ступеньках . Ход — переложить любое число камней со ступеньки на ступеньку ; со ступеньки 1 камни уходят на пол и в игре больше не участвуют.
Ответ: XOR куч на нечётных ступеньках. Камни на чётных ступеньках не считаются вовсе.
Идея: камни на нечётных ступеньках ведут себя как обычный ним, а всё, что соперник кладёт на чётную ступеньку, можно тут же переложить дальше — это ход-ответ, который восстанавливает положение. Формула сверена с перебором на всех наборах до четырёх ступенек с кучами до трёх камней.
Приём узнаётся по формулировке «двигаем к краю, у края объекты исчезают» — например, фишки на полосе, которые толкают влево.
Смежное
- Сумма игр;
- Игра Уайтхоффа — две кучи, но ходить можно и в обеих сразу.