OpenFIPI 2.0

20

6

3AC768

Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:

 Петя не может выиграть за один ход;

 Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.

Найденные значения запишите в ответе в порядке возрастания.

10 19

from functools import lru_cache

def m(x, y):
    return (x + 1, y), (x * 3, y), (x, y + 1), (x, y * 3)

@lru_cache(None)
def g(x, y):
    if x + y >= 65:
        return 'W'
    if any(g(a, b) == 'W' for a, b in m(x, y)):
        return 'W1'
    if all(g(a, b) == 'W1' for a, b in m(x, y)):
        return 'L1'
    if any(g(a, b) == 'L1' for a, b in m(x, y)):
        return 'W2'
    if all(g(a, b) in ('W1', 'W2') for a, b in m(x, y)):
        return 'L2'

for s in range(1, 59):
    if g(6, s) == 'W2':
        print('W2', s)
    if g(6, s) == 'L2':
        print('L2', s)

Просмотреть отправленные ответы 3AC768