''' P-02 (демо-2023). +1 *2 Win: s >= 129 1 ≤ S ≤ 128 c № хода 1 P,I 2 V,I 19 3 P,II 20 4 V,II 21 условие1 or условие2 or условие3 any(список с условиями) ''' def f(s, c): # Ветка победы if s >= 129: # !!! return c % 2 == 0 # Ветка окончания игры без победы if c == 0: return False # Игра t = [f(s+1, c-1), f(s*2, c-1)] # !!! return any(t) if c % 2 != 0 else all(t) mn = 1 # 1 ≤ S ≤ 128 mx = 128 # 1 ≤ S ≤ 128 ''' Задание 19. Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом. c 1 P,I 2 V,I !!! Win 3 P,II 4 V,II ''' print('s, при любом ходе') for s in range(mn, mx+1): if f(s, 2): print('19:', s) ''' Задание 20. Найдите два таких значения S, при которых у Пети есть выигрышная стратегия, причём одновременно вы qполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания. c 1 P,I !!! No 2 V,I 3 P,II !!! Win 4 V,II ''' print('2 s, up') for s in range(mn, mx+1): if f(s, 3): if not f(s, 1): print('20:', s) ''' Задание 21. Найдите значение S, при котором одновременно выполняются два условия: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно(!) выиграть первым ходом. c 1 P,I 2 V,I !!! Win !!! No 3 P,II 4 V,II !!! Win ''' print('s') for s in range(mn, mx+1): if f(s, 2) or f(s, 4): if not f(s, 2): print('21:', s) ''' ok 19: 64 20: 32 63 21: 62 s, при любом ходе 19: 64 2 s, up 20: 32 20: 63 s 21: 62 '''