ОК, я должен сделать Nim игру и попытаться найти стратегию, чтобы всегда выиграть следующую игру Nim:Nim игра вопрос
21 матчей, игрока 1 и 2 каждый дубль 1, 2, 3, 4 , или 5 совпадений в каждом повороте, и нельзя брать столько же совпадений, сколько и предыдущий игрок. Победитель выигрывает, если/когда они берут последний матч.
Мне нужно что-то программировать, но я даже не понимаю, что нужно начинать. Как я могу найти выигрышную стратегию с этим типом игры?
EDIT:
Так я понял, что вы всегда будете выигрывать, когда вы дойдете до 7 матчей еще в середине. Другой может принимать 2-5, и вы можете добавить до 7, взяв последний. когда другой принимает 1, вы принимаете 3 (другой не может принимать 3, а затем) и должен выбрать 1 или 2, и в этом случае вы получите второй и выиграете.
Однако, идя от 21 до 7 загадка для меня, я не могу понять, как вы можете всегда быть человеком добраться до 7.
EDIT 2: ИТАК без правила, что вы не можете взять так же, как и предыдущий игрок, это довольно просто, я думаю.
Вы должны сделать k = 5 + 1 = 6. тогда вы должны сделать первый ход таким образом, чтобы совпадения оставались тогда% 6 = 0. Итак, в этом случае сначала возьмите 3, а затем залейте ход другому игроку до 6. Однако в этом случае это не сработает, потому что другой игрок может забрать 3, после чего вы не сможете взять 3, чтобы заполнить до 6. Таким образом, есть моя проблема. Есть идеи?
EDIT3:
нормально, так что вы сказать, что я могу заставить 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 :), и я также хотел решить его сам.
В любом случае, я видел, что это вики, удача для людей в будущем, пытаясь решить это!
Это не сразу поражает меня как вопрос программирования. Получение выигрышной стратегии для этой игры не имеет ничего общего с Java, * per se *. Если, я полагаю, вы хотели бы сделать какое-то статистическое моделирование и попытаться выработать стратегию по результатам случайных игр. Но вы можете сделать это логически, без использования компьютеров. –
Кроме того, вы сказали, что вам «нужно что-то программировать для этого». Что это такое? Почему ** ** есть программа? Если это для задания, скорее всего, у вас было гораздо более конкретное сообщение, чем «что-то программировать», поэтому, возможно, осмотр приведет вас к правильным трекам. Если это ваш личный выбор для проекта, я боюсь, что вы выбрали неподходящий проект. –
У меня есть решение, лучшая стратегия, которая будет побеждать. И я не мог понять, что это за часы мышления и Google, поэтому теперь я хочу попробовать что-то, что решает его в java. Однако, если у вас есть какие-либо советы о том, как найти его или причину к нему без java, я тоже буду очень рад! – Javaaaa