Главное меню

Как определить проигрышные позиции при игре со спичками?

Автор Hmat, Март 13, 2024, 23:21

« назад - далее »

Hmat

Два игрока играют в следующую игру. Перед ними лежит кучка из N спичек. Игроки ходят по очереди. В свой ход каждый игрок должен взять из кучки 1, 4 или 6 спички. Игрок, который взял из кучки последнюю спичку, проигрывает.
Назовем количество спичек в кучке выигрышной позицией, если при правильной игре первого игрока он гарантированно выигрывает. И проигрышной позицией, если при любом его первом ходе при правильной игре второго игрока первый игрок проигрывает.
Перечислите через запятую в порядке возрастания наименьшие три проигрышные позиции при N больше 15.

Tol

Попробуем составить таблицу по N ( от 1 до 15) для первого игрока:
1 спичка-минус( проигрыш первого)
2 спички- плюс(выигрыш)
3 спички-минус
4 спички- плюс-ходы(1-1-1-1)
5 спичек- плюс( ходы 4-1)
6 спичек- минус(4-1-1 или 1-4-1 )
7 спичек-плюс( ходы 6-1)
8 спичек-минус( 8-(1,4,6)=7,4,2-полу�чаются,что второму останутся выигрышные количества спичек)
9 спичек- плюс( берет 1 спичку- перед вторым проигрыш с 8 спичками)
10 спичек-плюс( берет 4 спички,перед вторым- 6 спичек с проигранным вариантом)
11 спичек-минус( 11-(1,4,6)=10,7,5- второй в плюсе)
12 спичек-плюс( 12-(1,4,6)=11,8,6- второй проигрывает)
13 спичек-минус( 13-(1,4,6)=12,9,7-вт�орой в плюсе)
14 спичек-плюс( берет 1 спичку,перед вторым проигрыш в 13 спичек)
15 спичек-плюс( берет 4 спички,перед вторым проигрыш,в 11 спичек)
16 спичек-минус(16-(1,4�,6)=15,12,10-второй в плюсе)
17 спичек-плюс(17-(1,4,�6)=16,13,11)-второй в минусе)
18 спичек- минус(18-(1,4,6)=17,�14,12- второй в плюсе
19 спичек-плюс( берет 1 спичку,перед вторым 18 спичек,второй проигрывпет)
20 спичек-плюс( берет 4 спички,перед вторым 16 спичек-второй проигрывает)
21 спичка-- минус(21-(1,4,6)=20,�17,15- второй в плюсе
Три первых проигранных позиции- N=16,18,21.
В том что не сделал ошибку,не уверен.Но методология вроде правильная.
                                                                              

Stham

Согласно теории игр позиция является выигрышной, если из неё можно попасть в проигрышную позицию за один ход. В любом другом случае позиция является проигрышной. Мы точно знаем, что позиция 1 - проигрышная. Воспользовавшись этой базой, давайте определим какими являются остальные позиции. Для этого мы от каждой позиции отнимем 1, 4 или 6, и, если одна из позиций окажется проигрышной, то мы стоим в выигрышном положении, иначе позиция проигрышная. Заметим, что мы идем по возрастанию позиций, а значит каждая из предыдущих, которой мы пользуемся для определения нашего текущего положения, уже посчитана корректно.
Все позиции:
1 - lose
2 - win (-1 -> lose)
3 - lose
4 - win (-1 -> lose)
5 - win (-4 -> lose)
6 - lose
7 - win (-1 -> lose)
8 - lose
9 - win (-1 -> lose)
10 - win (-4 -> lose)
11 - lose
12 - win (-1 -> lose)
13 - lose
14 - win (-1 -> lose)
15 - win (-4 -> lose)
Ну и можно так ещё долго продолжать. Можно даже запрограммировать.

Rakia

Проигрышные позиции для первого игрока можно определить так.
Остается 1 спичка, значит перед этим должно оставаться 2 спички. То есть второй игрок должен оставить 3 спички, первый берет 1, второй 1, первый берет последнюю и проигрывает.
Чтобы оставить 3 спички, нужно перед этим оставить 8 (6+1+1 или 4+1+1+1 или 1+6+1), тогда второй выигрывает. Значит перед этим нужно оставить 13 (6+6+1 или 4+1+8 или 1+4+8). Значит если спичек ровно 18, при правильном ходе первого игрока второй точно проиграет (1+4+13 или 6+4+8 или  4+1+13).