1902.py
Два игрока, Петя и Ваня, играют в следующую игру.
Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя.
За один ход игрок может:
убрать из кучи 3 камня
убрать из кучи 8 камней
уменьшить количество камней в куче в 3 раза
(количество камней, полученное при делении,
округляется до меньшего)
Например, из кучи в 20 камней
за один ход можно получить кучу
из 17, 12 или 6 камней.
Игра завершается,
когда количество камней в куче становится не более 16.
Победителем считается игрок, сделавший последний ход,
то есть первым получивший кучу из 16 или менее камней.
В начальный момент в куче было S камней, S≥17.
Будем говорить, что игрок имеет выигрышную стратегию,
если он может выиграть при любых ходах противника.
Задание 19:
Укажите минимальное значение S, при котором Петя
не может выиграть за один ход,
но при любом ходе Пети
Ваня может выиграть своим первым ходом.
Задание 20:
Найдите два наименьших значения S,
при которых у Пети есть выигрышная стратегия,
причём одновременно выполняются два условия:
- Петя не может выиграть за один ход
- Петя может выиграть своим вторым ходом
независимо от того, как будет ходить Ваня
Найденные значения запишите в ответе в порядке возрастания.
Задание 21:
Найдите минимальное значение S,
при котором одновременно выполняются два условия:
- у Вани есть выигрышная стратегия, позволяющая ему
выиграть первым или вторым ходом при любой игре Пети
- у Вани нет стратегии, которая позволит ему
гарантированно выиграть первым ходом
def g (s, hod, end):
if s <= 16:
return hod in end
if hod >= max(end):
return False
moves = [
g(s - 3, hod + 1, end),
g(s - 8, hod + 1, end),
g(s // 3, hod + 1, end)
]
return any(moves) if ((hod + 1) % 2) == (end[0] % 2) else all(moves)
print([
s for s in range(17, 400)
# if g(s, 0, end=[2])
# if g(s, 0, end=[3])
# if g(s, 0, end=[2, 4]) and not g(s, 0, end=[2])
])
"""
Два игрока, Петя и Ваня, играют в следующую игру.
Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя.
За один ход игрок может:
убрать из кучи 3 камня
убрать из кучи 8 камней
уменьшить количество камней в куче в 3 раза
(количество камней, полученное при делении,
округляется до меньшего)
Например, из кучи в 20 камней
за один ход можно получить кучу
из 17, 12 или 6 камней.
Игра завершается,
когда количество камней в куче становится не более 16.
Победителем считается игрок, сделавший последний ход,
то есть первым получивший кучу из 16 или менее камней.
В начальный момент в куче было S камней, S≥17.
Будем говорить, что игрок имеет выигрышную стратегию,
если он может выиграть при любых ходах противника.
Задание 19:
Укажите минимальное значение S, при котором Петя
не может выиграть за один ход,
но при любом ходе Пети
Ваня может выиграть своим первым ходом.
Задание 20:
Найдите два наименьших значения S,
при которых у Пети есть выигрышная стратегия,
причём одновременно выполняются два условия:
- Петя не может выиграть за один ход
- Петя может выиграть своим вторым ходом
независимо от того, как будет ходить Ваня
Найденные значения запишите в ответе в порядке возрастания.
Задание 21:
Найдите минимальное значение S,
при котором одновременно выполняются два условия:
- у Вани есть выигрышная стратегия, позволяющая ему
выиграть первым или вторым ходом при любой игре Пети
- у Вани нет стратегии, которая позволит ему
гарантированно выиграть первым ходом
"""def g (s, hod, end):
if s <= 16:
return hod in end
if hod >= max(end):
return False
moves = [
g(s - 3, hod + 1, end),
g(s - 8, hod + 1, end),
g(s // 3, hod + 1, end)
]
return any(moves) if ((hod + 1) % 2) == (end[0] % 2) else all(moves)
print([
s for s in range(17, 400)
# if g(s, 0, end=[2])
# if g(s, 0, end=[3])
# if g(s, 0, end=[2, 4]) and not g(s, 0, end=[2])
])
"""
Два игрока, Петя и Ваня, играют в следующую игру.
Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя.
За один ход игрок может:
убрать из кучи 3 камня
убрать из кучи 8 камней
уменьшить количество камней в куче в 3 раза
(количество камней, полученное при делении,
округляется до меньшего)
Например, из кучи в 20 камней
за один ход можно получить кучу
из 17, 12 или 6 камней.
Игра завершается,
когда количество камней в куче становится не более 16.
Победителем считается игрок, сделавший последний ход,
то есть первым получивший кучу из 16 или менее камней.
В начальный момент в куче было S камней, S≥17.
Будем говорить, что игрок имеет выигрышную стратегию,
если он может выиграть при любых ходах противника.
Задание 19:
Укажите минимальное значение S, при котором Петя
не может выиграть за один ход,
но при любом ходе Пети
Ваня может выиграть своим первым ходом.
Задание 20:
Найдите два наименьших значения S,
при которых у Пети есть выигрышная стратегия,
причём одновременно выполняются два условия:
- Петя не может выиграть за один ход
- Петя может выиграть своим вторым ходом
независимо от того, как будет ходить Ваня
Найденные значения запишите в ответе в порядке возрастания.
Задание 21:
Найдите минимальное значение S,
при котором одновременно выполняются два условия:
- у Вани есть выигрышная стратегия, позволяющая ему
выиграть первым или вторым ходом при любой игре Пети
- у Вани нет стратегии, которая позволит ему
гарантированно выиграть первым ходом
"""