CodinGame: прорыв в серебряную лигу
Пара дней активного кодинга и отладки, и вот результат: я прорвался в серебряную лигу в Legends of Code and Magic!
Причем получилось весьма своеобразно: сначала я обнаружил в программе один баг: неправильно считалась оставшаяся мана. Исправил его, и внезапно получил существенное ухудшение результатов игры, хотя с точки зрения логики и здравого смысла результат должен быть обратный: в неправильном варианте просчитывается куча лишних вариантов, которые на самом деле сыграть не могут, и поэтому шансов найти хороший вариант игры существенно ниже.
Стал разбираться, в чем дело, и понял, что у меня слишком неэффективная функция оценки игрового состояния. Переделал ее, и даже с исправленной версией программы стал подниматься в бронзовой лиге до примерно 200-ого места. Поэкспериментировал с еще парой мелочей, и удалось в отдельные моменты подняться до сотых позиций, а вот дальше — никак.
И тут вдруг я обнаружил, что мой алгоритм на этапе выбора карт всегда берет нулевую карту, и никогда никакую другую. Оказалось, что когда я в последний раз переписывал алгоритм, я не учел одной особенности этапа раздачи карт: на нем идентификаторы всегда карт равны -1. В результате в функцию выбора карты передавалось их не три штуки, как должно было быть, а только одна, самая первая.
Как только я это исправил, сразу же легко поднялся в серебряную лигу. В отличие от прошлого конкурса, Code of Ctulu, когда прорыв состоялся в последние часы конкурса, когда я уже ни на что не наделся, на этот раз таких зашкаливающих эмоций, когда я был готов орать на весь поселок от радости, не было. А была просто удовлетворенность от достигнутого результата. Кстати, в серебряной лиге старт тоже оказался неплохим: сразу же поднялся на 350 место из 500, после того, как чуть поправил функцию оценки — до 310.
А впереди еще 7 дней конкурса, так что игра продолжается!
Причем получилось весьма своеобразно: сначала я обнаружил в программе один баг: неправильно считалась оставшаяся мана. Исправил его, и внезапно получил существенное ухудшение результатов игры, хотя с точки зрения логики и здравого смысла результат должен быть обратный: в неправильном варианте просчитывается куча лишних вариантов, которые на самом деле сыграть не могут, и поэтому шансов найти хороший вариант игры существенно ниже.
Стал разбираться, в чем дело, и понял, что у меня слишком неэффективная функция оценки игрового состояния. Переделал ее, и даже с исправленной версией программы стал подниматься в бронзовой лиге до примерно 200-ого места. Поэкспериментировал с еще парой мелочей, и удалось в отдельные моменты подняться до сотых позиций, а вот дальше — никак.
И тут вдруг я обнаружил, что мой алгоритм на этапе выбора карт всегда берет нулевую карту, и никогда никакую другую. Оказалось, что когда я в последний раз переписывал алгоритм, я не учел одной особенности этапа раздачи карт: на нем идентификаторы всегда карт равны -1. В результате в функцию выбора карты передавалось их не три штуки, как должно было быть, а только одна, самая первая.
Как только я это исправил, сразу же легко поднялся в серебряную лигу. В отличие от прошлого конкурса, Code of Ctulu, когда прорыв состоялся в последние часы конкурса, когда я уже ни на что не наделся, на этот раз таких зашкаливающих эмоций, когда я был готов орать на весь поселок от радости, не было. А была просто удовлетворенность от достигнутого результата. Кстати, в серебряной лиге старт тоже оказался неплохим: сразу же поднялся на 350 место из 500, после того, как чуть поправил функцию оценки — до 310.
А впереди еще 7 дней конкурса, так что игра продолжается!