Решил я посмотреть, насколько Claude Code умнее Курсора. Дал ему ту же задачку: выработать стратегию игрока Хамурапи. Получилось существенно лучше. Вот бот, то есть скрипт на Питоне, выполняющий один сеанс игры: one_game.py. А вот описание стратегии:
Цели
Пройти все 10 лет, не допустив «национальной катастрофы» (массового голода или нехватки земли), и удерживать средний уровень голода ниже 3% в год — в игре это считается «великолепным» результатом.Как работает ежегодный цикл игры
После того как вы решаете, сколько земли купить или продать, сколько зерна выделить на питание и сколько акров засеять, игра выполняет расчёты в следующем порядке:
- Урожай — каждый засеянный акр даёт от 1 до 5 бушелей случайным образом.
- Крысы — с вероятностью 40% они съедают от четверти до половины запасённого зерна.
- Иммиграция — новые жители прибывают в зависимости от благосостояния города (чем больше земли и зерна, тем больше приток).
- Чума — примерно раз в 7 лет умирает половина населения.
- Голод — каждый, кто не получил 20 бушелей пищи, умирает. Если за один год умирает более 45%, вас немедленно смещают с должности.
- Конец игры — если в среднем более 33% населения умирает от голода в год или в конце остаётся менее 7 акров на человека, вы также проигрываете.
Что делает бот каждый год
Держит запас зерна. После кормления всех жителей бот всегда старается оставить часть зерна в резерве как защиту от неурожая и нашествий крыс. Без запаса один неудачный год может уничтожить город.
Засевает как можно больше. Каждый засеянный акр — это инвестиция: даже при худшем урожае (1 бушель с акра) больше посевов означает больше зерна в следующем году. Резерв держится достаточно небольшим, чтобы не мешать посеву.
Покупает землю только при избытке. Бот покупает землю лишь тогда, когда есть значительный избыток зерна — достаточно, чтобы оплатить покупку и при этом прокормить всех в плохой год. Слишком активные покупки оставляют город без пищи при неурожае.
Продаёт землю в чрезвычайных ситуациях, но осторожно. Когда зерна не хватает, бот продаёт землю, чтобы получить еду. Сначала продаётся только излишек сверх 8 акров на человека (комфортный запас прочности). Если этого недостаточно, чтобы не превысить порог в 45% смертности, продаётся больше — но процесс останавливается, как только риск смещения исчезает.
Прекращает продажу, как только риск смещения устранён. Это самое важное и контринтуитивное правило. Продавать ещё больше земли, чтобы спасти всех в плохой год, кажется гуманным, но это оборачивается проблемами: выживших нужно кормить и в будущем, и если следующий год снова окажется неурожайным, появится больше ртов при меньшем количестве земли. В итоге голод просто переносится на более поздний год, а не уменьшается. Остановка на минимально безопасном уровне позволяет удерживать население в пределах, которые может прокормить имеющаяся земля.Почему сложно добиться меньше 3% голода
Случайность в игре довольно жёсткая. Урожай распределяется случайно от 1 до 5 бушелей с акра, и примерно в 60% игр за 10 лет происходит два или более подряд плохих урожая. В таких случаях запасы зерна истощаются быстрее, чем их можно восполнить продажей земли, и некоторый голод неизбежен при любой стратегии.
В играх без неурожайных лет или с одним таким годом (около 40% случаев) бот обычно достигает 0% голода или лишь одного слабого эпизода — значительно ниже цели в 3%. В остальных случаях он удерживает смертность чуть ниже порога смещения (45%), сохраняя при этом достаточно земли, чтобы завершить игру.Чего ожидать
- Вероятность успеха: 100% — город всегда переживает все 10 лет.
- Средний уровень голода: около 4–5% при случайных условиях; примерно 35–40% игр укладываются в менее чем 3%.
- Итоговая земля: обычно 10–12 акров на человека, значительно выше минимального порога в 7 акров.
