Форум » Теория игр » 3083 » Ответить

3083

mila08: Почему в 20 только один ответ - 33? Почему нельзя взять 17? Первый игрок умножает 17 на 2, получает 34, второй игрок не может сделать ход *2, *3 т.к. условие задачи не превышает 60, поэтому только +1, количество становится 35, первый игрок вторым ходом добавляет 1 камень и итог 36. Или я что-то упускаю?

Ответов - 1

Ж: Потому что первый игрок умен и помешает второму: он не сделает проигрышный ход, а сходит иначе: 17 --> 17+1 = 18 из позиции 18 второму игроку не выиграть никаким ходом. Вот код, который решает эти задачи: [pre2] def f(a): return (a+1),(a*2),(a*3) gp={c for c in range(61)} sp={c for c in range(1,36)} wp={c for c in range(36,61)} lp={c for c in range(61,200)} v={c for c in gp if any(t in wp for t in f(c))}; sp-=v; gp-=v; lp|=v; v={c for c in sp if all(t in lp for t in f(c))}; sp-=v; gp-=v; wp|=v;print(sorted(v)) v={c for c in gp if all(t in lp for t in f(c))}; sp-=v; gp-=v; wp|=v; v={c for c in sp if any(t in wp for t in f(c))}; sp-=v; gp-=v; lp|=v;print(sorted(v)) v={c for c in gp if any(t in wp for t in f(c))}; sp-=v; gp-=v; lp|=v; v={c for c in sp if all(t in lp for t in f(c))}; sp-=v; gp-=v; wp|=v; print(sorted(v))[/pre2]



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