🎯 До ЕГЭ по информатике:
--дней
:
--часов
:
--минут
:
--секунд
Главная Шаблоны Задания Тренажёр Домашки Разборы
19-21

Теория игр — №19–21 (все вместе)

1 куча, 2 кучи. any() для текущего, all() для противника. all→any только если вопрос про «неудачный ход».

Python
# 1 куча: +3 +6 *3
def f(s,m):
    if s >= 132: return m % 2 == 0
    if m == 0: return 0
    h = [f(s+3,m-1), f(s+6,m-1), f(s*3,m-1)]
    return any(h) if m % 2 != 0 else all(h)
    # для 19 номера all может меняться на any если вопрос звучит "НЕУДАЧНЫЙ ХОД"

print('#19', [s for s in range(1,132) if f(s,2)])
print('#20', [s for s in range(1,132) if f(s,3) and not(f(s,1))])
print('#21', [s for s in range(1,132) if f(s,4) and not(f(s,2))])
Способ 2
# 2 кучи: +3 *3 в любую из куч
def f(x,y,m):
    if (x+y) >= 77: return m % 2 == 0
    if m == 0: return 0
    h = [f(x+3,y,m-1), f(x*3,y,m-1), f(x,y+3,m-1), f(x,y*3,m-1)]
    return any(h) if m % 2 != 0 else all(h)
    # все, что менял в 19 номере, верни обратно для 20 и 21

print('#19', [s for s in range(1,65) if f(12,s,2)])
print('#20', [s for s in range(1,65) if f(12,s,3) and not(f(12,s,1))])
print('#21', [s for s in range(1,65) if f(12,s,4) and not(f(12,s,2))])

📚 Теория

Теория игр: any() — текущий игрок выбирает лучший ход, all() — противник играет оптимально. all→any только в 19 номере если вопрос про «неудачный ход».