Форум » Теория игр » Задача №6103 (А. Богданов) » Ответить

Задача №6103 (А. Богданов)

Amo: Добрый вечер, решала задачу, но получаются лишние ответы в 21 задаче. Правильные ответы в этой задаче: 7 и 19. А у меня получаются ответы: 5, 7, 19, 21. (№ 6103) (А. Богданов) Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в меньшую кучу один или три камня. Изменять количество камней в большей куче не разрешается. Игра завершается, когда количество камней в кучах становится равным Победителем считается игрок, сделавший последний ход, то есть первым сравнявшим количество камней в двух кучах. Игроки играют рационально, т. е. без ошибок. В начальный момент в первой куче было 13 камней,а во второй – S камней, 1 ≤ S ≤ 23. Ответьте на следующие вопросы: Вопрос 3. Найдите два значения S, при которых одновременно выполняются три условия: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом; – Петя может выбирать, каким ходом выиграет Ваня. Найденные значения запишите в ответе в порядке возрастания. Помогите, пожалуйста, понять почему. [pre2]... def f(s1, s2, step, win_steps): if s1 == s2: return step in win_steps if step == max(win_steps): return 0 if s1 < s2: wins_pos = [f(s1 + 1, s2, step + 1, win_steps), f(s1 + 3, s2, step + 1, win_steps)] else: wins_pos = [f(s1, s2 + 1, step + 1, win_steps), f(s1, s2 + 3, step + 1, win_steps)] if step % 2 != max(win_steps) % 2: # ходит тот игрок, чья победа нужна return any(wins_pos) else: return all(wins_pos) s1 = 13 print('* * * Задача 21 * * *') for s2 in range(1, 23 + 1): if f(s1, s2, 0, [2]) == 0 and f(s1, s2, 0, [2, 4]) == 1 and f(s1, s2, 0, [1, 3]) == 0: print(s2) [/pre2]

Ответов - 1

Ж: Петя может выбирать, каким ходом выиграет Ваня. Это значит, что при неудачном ходе Пети, Ваня выиграет первым ходом. это позиции (13, 7), (13, 9), (13, 11), (13, 13), (13, 15), (13, 17), (13, 19) Значит, выбирать надо из них. А тут только 7 и 19 подходят из ваших (5, 7, 19, 21.)



полная версия страницы