ОК, я должен сделать nim игру и попытаться найти стратегию, чтобы всегда выигрывать в следующей игре nim:
21 матчах, каждый игрок 1 и 2 берет 1, 2, 3, 4,или 5 матчей каждый ход, и никто не может взять то же количество матчей, что и предыдущий игрок.Игрок выигрывает, если / когда он берет последний матч.
Мне нужно что-то запрограммировать для этого, но я даже не понимаю, с чего начать.Как я могу найти выигрышную стратегию с этим типом игры NIM?
РЕДАКТИРОВАТЬ:
Так что я решил, что вы всегда выиграете, когда вы получите 7 матчей, которые все еще в середине.Другой может занять 2-5, а вы можете добавить до 7, забрав последний.когда другой берет 1, вы берете 3 (другой тоже не может взять 3) и должен выбрать 1 или 2, в этом случае вы получите первый и выиграете.
Однако переход с 21 на 7 - это загадка для меня, я не могу понять, как вы всегда можете быть человеком, добирающимся до 7.
РЕДАКТИРОВАТЬ 2: хорошо, так что без правила, которое вы можетеНе так же, как и у предыдущего игрока, я думаю, что это довольно просто.
Вы бы сделали k = 5 + 1 = 6. Затем вы должны сделать первый ход так, чтобы совпадения остались, затем% 6 =.0. Таким образом, в этом случае сначала возьмите 3, а затем пополните ход другого игрока до 6. Однако в этом случае это не сработает, потому что другой игрок может взять 3, после чего вы не можете взять 3, чтобы заполнитьдо 6. Так что есть моя проблема.Есть идеи?
РЕДАКТИРОВАТЬ3:
хорошо, так что вы говорите, я могу заставить 7 матчей.Однако предположим, что я придерживаюсь того же подхода к этапу 14-7 матчей.(затем очередь другого)
тогда есть два сценария: 1: он берет 2-5, и я заполняю его до семи, которые дают 7, и я выигрываю.2: он берет 1, поэтому осталось 13.Когда я беру 3, как я делаю в (7-0) -шаге, он становится 10. Затем он берет 5, а я больше не могу взять 5, чтобы закончить, и я проиграю.
Здесь кроется проблема, где сценарий 2 не является проблемой в (7-0) -шаге, которым он является сейчас.Как мне это решить?
ДА, РЕШЕНИЕ:
кстати, спелер 1 означает: после хода игрока 1 и т. Д. (Я голландец).
Хорошо, поэтому я попробовал кое-что, и я думаю, что у меня есть решение.Вы должны взять 1 матч в качестве первого игрока первым.Тогда другие ребята могут принять 2-5 матчей.Вы соответствуете (каламбур) его сумме до 7, так что у вас будет (21-1-7 =) 13 матчей, оставшихся в середине всегда.Затем снова ход игрока 2, и есть два сценария: игрок 2 берет 1,2,4 или 5 матчей, и в этом случае вы берете столько матчей, сколько будет 7 слева.(как было сказано ранее, когда вы принимаете матчи, в которых осталось 7, вы всегда выиграете)Второй сценарий состоит в том, что игрок 2 берет 3 матча, в этом случае 10 находятся в середине, когда наступает ваш ход.Вы не можете взять 3, чтобы получить 7, потому что вы не можете взять 2 раза одну и ту же сумму.Итак, вы берете 5, так что осталось 5.Игрок 2 не может взять 5, чтобы выиграть, и ему нужно выбрать 1-4, после чего вы можете взять оставшиеся и выиграть.
Это решение, я думаю.Я каким-то образом пришел к этому, потому что я заметил это:
Обычная игра Nim с модулем и т. Д .:
P2 1 2 3 4 5
P1 5 4 3 2 1
------------------
6 6 6 6 6
Но вы не можете сделать 3,3 здесь, поэтому это выглядит так:
p2 1 2 3 4 5
p1 5 4 3 2 1
---------------------
7 7 7 7
Таким образом, вы можете сделать 7 каждый раз, а 1 - особый случай.Я не знаю почему, но я интуитивно взял 1 в качестве отправной точки, так как кажется, что вам нужно проявить инициативу, чтобы иметь возможность контролировать движения другого.(один не может сделать два раза 1, поэтому другой должен взять 2-5, что дает вам контроль)
В любом случае, СПАСИБО большое за всю помощь.Также для всей программы, которая была написана.Я не мог использовать это, потому что это не скомпилировалось бы как недостаток хороших навыков Java :), и я также хотел решить это сам.
Во всяком случае, я видел, что это вики, удачи для людей вБудущее пытается решить эту проблему!