Найти тему

Задание 19-21: две кучи камней, решаем с помощью Python

Теория игр: две кучи камней
Теория игр: две кучи камней

Решение с помощью Python для одной кучи камней рассмотрено в статье

Для двух куч, если решать руками, сложность поиска холмов и ям существенно увеличится. На бумаге нужно будет отобразить числовую ось (oX) для одной кучи камней и числовую ось (oY) для другой кучи. И на плоскости, при фиксированном количестве в одной из куч, искать холмы и ямы для другой кучи.

На экзамене, конечно же, лучше воспользоваться кодом на Python. Тем более, что код, в сравнении с задачей на одну кучу, изменится совсем немного, а главное логичным и предсказуемым способом (даже количество строк кода останется прежним).

Для примера рассмотрим следующую задачу:

Задание 19-21 на две кучи камней
Задание 19-21 на две кучи камней

Первое, на что следует обратить внимание в задании на 2 кучи, то что в 19 задании Петя делает неудачный ход. А значит яма1 для Пети это любой ход, который приведет Ваню на холм1. И вместо функции all(), следует использовать any(), чтобы потом из предложенных вариантов выбрать минимальный.

Решение 19 задания для 2 куч камней
Решение 19 задания для 2 куч камней

Решая задания 20, 21 нужно учесть, что теперь яма1, это количество камней, которое ведет соперника на холм1, при условии, что игроки играют рационально. Другими словами, надо заменить функцию any() в строке 12, на all(), т.к. уже подразумевается, что у Пети есть выигрышная стратегия и он ходит удачно.

Код для решения задания №20
Код для решения задания №20

Для решения задания 21 допишем код, при котором первый игрок сидит в яме2, что обеспечивает сопернику выигрыш либо первым, либо вторым ходом:

Код для решения задания №21
Код для решения задания №21

Итак, если вы хорошо разбираетесь как решать задания на теорию игр для одной кучи камней, то и для двух куч, с помощью Python, вы легко получите правильные ответы.

Наука
7 млн интересуются