Chat:Ru/2020-11-06

From CG community
Jump to navigation Jump to search

wlesavo: ееее, полностью восстановил поведение приведений, 100% точность предсказаний на всех тестах

Uljahn: :scream_cat:

YurkovAS: :yes:в нее не просто начать. думал ABCDE для движения UDLR(W), но не похоже. надо еще раз попытаться, на листочке карту порисовать...

Uljahn: да вроде для движения, просто порядок немного другой

Uljahn: насколько помню

YurkovAS: Uljahn <https://www.codingame.com/profile/2e4448c30d32bb44ca3ba3fa28756763885094> как твой 2048, больше не улучшается? до топ1 питона всего 1млн

Uljahn: пилю ещё

Uljahn: решил пойти по пути оффлайна

Uljahn: щас LUT профилирую, 65к комбинаций за полсекунды генерится

wlesavo: YurkovAS да там нюансов очень много

YurkovAS: могу подсказать хорошую фичу, возможно у тебя ее нет

Uljahn: у меня только антифичи и антипаттерны)

YurkovAS: глянул, нет LUT-ов, просто бим серч стандартный над двумя массивами

YurkovAS: в ней 2 фичи: одна оценка змейкой и есть еще одна нестандартная, которую хотел сообщить (ну для меня уж точно), которые заметно улучшают скор

Uljahn: а что за два массива?

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

Uljahn: ясно

Uljahn: а какой порядок размера массивов, чтобы выделение памяти играло роль?

YurkovAS: ну если каждые состояния хранить в новом массиве, то будет точно заметна просадна на выделение памяти. а если переиспользуешь 2шт, то предвыделяешь заранее и лишних аллокаций не будет. тут еще смотря как делать: некоторые в массив все новые состояния добавляют, потом сортируют и оставляют топ-N

Uljahn: в массиве состояния в страктах хранятся?

wlesavo: блин YurkovAS заинтриговал

YurkovAS: тоже смотря как делать, большой стракт будет долго сортироваться

Uljahn: wlesavo предлагал хэшировать скором

Uljahn: я запилил себе такое, сортирует быстро

YurkovAS: у меня в массиве хранится только topN и указатели - для быстрой пересортировки

wlesavo: не, это не моя идея была а магити вроде, но у меня тоже так, нейман и амуршкин сказали у них такой хеш плохо работает и много коллизий

Uljahn: в плюсах есть std::nth_element, можно без полной сортировки голову отбирать

YurkovAS: у меня сейчас тоже хеш только от скора double

wlesavo: блин теперь придется наверное нормальный поиск прикручивать какой-то к пакману, а то че зря чтоли делал идеальный предсказатель

Uljahn: а скор научился предсказывать?

MaksymSkorchenko: ууууу, перешел в пакмане в серебро.... а тут жопа, в хвосте )))

Uljahn: и ещё вопрос по 2048 - как хранить хистори)

wlesavo: Uljahn цель не ставил, но подозреваю что могу предсказать, там просто надо так и так зачищать уровень

Uljahn: в стейтах хранить жирно, надо как-то отдельно в дереве что ли

YurkovAS: Uljahn хистори - это же ходы? прямо в стейтах храню в видет массива байтов. изначально всю память предвыделяю и потом больше нет новых аллокаций. новый стейт делается во временной переменной, оценивается и если он лучший, тогда копируем из него в массив лучших

YurkovAS: навелосипедил как всегда

Uljahn: а, сразу навыделять памяти под максимальное число ходов?

Uljahn: но копировать же много придётся ближе к концу

YurkovAS: да, сразу под все выделяем: стейты, история ходов, временный стейт

Uljahn: фронт работ понятен, через пару месяцев отпишусь ))

YurkovAS: да там наверное и без этих велосипедов будет норм, просто так интереснее

Uljahn: угу, я пишу по 4 варианта каждой фичи и профилирую, мне так интереснее

YurkovAS: Uljahn после бимпоиска у тебя еще что-то есть?

Uljahn: нет

YurkovAS: понял, значит нет этой фичи

Uljahn: бимпоиск-то две строчки у меня

Uljahn: код-франкенштейн - ООП+ФП+numpy

Uljahn: даже в офлайне тормозит)

YurkovAS: давай добавим фичу одну?

Uljahn: я думал на глубину 1 потомков анализировать

Uljahn: и ещё графы прикрутить как в статье на хабре

Uljahn: но это в следующей жизни

Uljahn: YurkovAS: рассказывай, что за фича, wlesavo вон тоже вроде заинтриговался

YurkovAS: после бим поиска возвращать на 5-10 ходов меньше, всегда

wlesavo: а ну это понятно, у меня без этого впринципе не работало

Uljahn: это как?

Uljahn: чем это отличается от поиска с шириной луча - 5?

Uljahn: или я в этапах поиска не секу

Uljahn: ааааа

wlesavo: имеется ввиду что не весь найденый луч используется

Uljahn: историю возвращать меньше

Uljahn: магаити про бэктрекинг что-то упоминал, это что0то похожее

Uljahn: проблема в том, что в онлайне у меня питон находит 4-5 ходов ))

YurkovAS: и это число поподбирай, даже 1 заметно прибавляет

YurkovAS: всего 5 ходов) у меня порядка 100, на первом 1к+

Uljahn: вот я и думаю LUT впилить, должно стать пошустрее

Uljahn: ещё в офлайне с numba хочу попробовать профильнуть, да статью на форум накатать

YurkovAS: от ширины луча еще зависит, не думаю что у тебя там 500+

Uljahn: 50-

YurkovAS: да, заметная разница в скорости.

Uljahn: ну, код у меня сыроват, скорее пруф ов концепт, слепленный на коленке за выходные, зато ускорять интересно, мотивирует

Uljahn: ого, реально стало лучше с укороченной историей

YurkovAS: :yes:

wlesavo: top4 :scream:

Uljahn: поиск прикрутил?

wlesavo: не, костыль просто

YurkovAS: из пиджина смайлик не сработал, тут не показывается картинка

YurkovAS: так у него же был поиск МС, на бимсерч если только его поменять. по ПМ-ам к пакману он лучше

Uljahn: в 2048 постоянно таймят 1-2 валидатора, пока лимиты не зарежешь почти в нулину :(

735487: это у всех так. надо сабмитить до тех пор пока не повезет

Uljahn: хм, надо попробовать лимиты привязать к модели процессора, есть подозрение, что подсовывают глючные инстансы на 3ГГц с 16Мб кэша

YurkovAS: юзаю тайминги 750мс (1-ый ход) и 35мс (2+ ход)

YurkovAS: первый можно увеличить, а вот 2-ой тайминг уже редко с 40мс срабатывает

735487: и это не есть хорошо. я думаю что виноват сборщик мусора в рефери

YurkovAS: и в search race похожие тайминги

YurkovAS: и ксб часто таймит

735487: вот если в контесте будет тоже самое будет попадос

wlesavo: ого, у меня с 99мс работает

wlesavo: правда у меня и скор сильно ниже

735487: это в какой игре?

735487: время точно правильно замеряешь?

wlesavo: в 2048, да правильно, но у меня маленькая ширина и глубина достатончно

wlesavo: и в последнюю милисекунду я исключительно печатаю

wlesavo: ой, 99 я перепутал наверно, там же 49

wlesavo: в смысле одна милисекунда остается, чет с пакманом перепутал

735487: а ну тогда реально