Chat:Ru/2022-06-10
AntonBlockchain: @YurkovAS а что кто-то покупает исходников игровых ботов? зачем?
AntonBlockchain: платный быстрый тест - преимущество при сабмите. что тебя тестят быстро за счет других. вот за это люди готовы заплатить. за увеличение пула виртуальных серверов. заплатил -считается сразу блоками по 20-30-50 игр. не заплатил - в худшем слуячае тебя обсчитывают потому что ты второй игрок у платящих. или по 1 игре поток.
YurkovAS: @AntonBlockchain про факт покупки не знаю. Во время контеста помню просили у некоторых продать
YurkovAS: я бы конечно хотел посмотреть исходники некоторых ботов
AntonBlockchain: и сколько в принципе может стоить бот игровой? порядок цены?
tomatoes: да эт дети какие-нибудь
tomatoes: или индусы, они странноватые иногда
YurkovAS: да, они скорее всего хотели обмануть
YurkovAS: tomatoes за сколько бы ты продал исходники своего uttt?
YurkovAS: на 1-5к руб я бы свой uttt точно не продал бы, т.к. много усилий вложено
AntonBlockchain: он же у тебя остается. а он сам по себе учебный. в реальной жизни не применим
YurkovAS: @tomatoes я тебя кстати догнал в uttt http://cgstats.magusgeek.com/app/multi-tic-tac-toe/YurkovAS он уже не всегда тебе проигрывает
tomatoes: да я б и бесплатно отдал, с гарантией что меня потом стебать не будут в контексте ну и ужас ты понаписал :grinning:
tomatoes: я недавно наоборот задумывался до какой степени стоит подсказки раздавать
tomatoes: с одной стороны вроде не жалко, с другой стороны кто-то новенький приходит в уттт, ему сразу так, так и вот так сделай, топ легенды будешь
tomatoes: и вроде и топ легенды, но как-то неинтересно же
YurkovAS: видимо я просто жмот :) мне жалко потраченных месяцев
tomatoes: в уттт думал как-то количество решеных веток в оценку добавить, но руки так и не дошли попробовать
tomatoes: боюсь снова увязнуть :sweat_smile:
wlesavo: мне в целом тложе не жалко, тоже скорее не хочется портить людям экспириенс, но некоторые вещи архитектурные конечно очень хочется посмотреть, детали вообще не интересно
AntonBlockchain: ultimate tic toc toe сам написал. совершенно тупым методом. но вот например в исходниках есть https://github.com/ar-nowaczynski/utttai
YurkovAS: tomatoes какой у тебя поиск в smash-the-code?
tomatoes: по-моему смитси
YurkovAS: ого, вглянь, плиз, точно
tomatoes: ой нет, это в покере
YurkovAS: супер нестандартная игра
tomatoes: смаш это тетрис цветной?
YurkovAS: да
YurkovAS: https://www.codingame.com/ide/puzzle/smash-the-code
tomatoes: там приорити куеуе
tomatoes: и попытки ручных эвристик
YurkovAS: это что-то типа чокудая получается?
YurkovAS: не бфс: т.е. он и вглубь быстро уходит
tomatoes: там бфс с коефициентом получается
tomatoes: который 0.8^depth, забыл как принято назыывать его
YurkovAS: но очередь одна?
tomatoes: чокудай знакомое название, но не помню что из себя представляет
tomatoes: одна
wlesavo: блин ща понял что скорее всего не получится нормально в контесте поучаствовать, может потом таки в stc начну, звучит интересно
YurkovAS: понял, спасибо!
YurkovAS: tomatoes а у тебя там по максимому скорость: битборды спец алгоритм fast connected components?
wlesavo: tomatoes по сути dfs beam search, но детали реализации не знаю конечно, все думаю как-нибудь попробовать
tomatoes: сама доска максимально в лоб без хитростей и битов
tomatoes: один из самых первых написанных ботов помоему был :thinking:
YurkovAS: значит у тебя без этого https://www.codingame.com/playgrounds/58038/fast-connected-components-for-6x12-bitboard
tomatoes: она по-моему puyo puyo называется вне кодингейма
YurkovAS: да, она
tomatoes: всяких тактик и пдф куча тоже написано
YurkovAS: да я просто не понимаю, почему плохо играет ускорил почти максимально закостылил как смог
aangairbender: tomatoes а ты на расте в одном файле пишешь?
aangairbender: а то тут на плюсах меня уже приучили в одном писать
aangairbender: :joy:
tomatoes: в разных, с гитхаба какой-то прикол стащил
aangairbender: есть какие-то вещи в расте которые мешают часто? или все нравится?
tomatoes: https://github.com/slava-sh/rust-bundler это по-моему
tomatoes: а мне кажется тут на кодингейме не столь принципиально на чем писать
tomatoes: потоков нет, асинхронности нет, если даже падает что-то, то тоже не уволят
tomatoes: изредка бывает что компилятор не понимает что ничего в этом лупе не сломается, и упорно не хочет собирать, приходится немного раскорячиваться
Uljahn: Automaton2000: just use the unsafe keyword :smirk:
Automaton2000: а то что я не понимаю что ты хочешь
wlesavo: решил посчитать расстояния на питоне, одна итерация поиска 2мс, я конечно не заморачивался особо, но блин, тут доска 7 на 10
YurkovAS: в поворятах?
YurkovAS: там можно все предрасчитать на первом ходу
wlesavo: хм, ну вообще да
wlesavo: надо сделать будет
YurkovAS: так у тебя там есть поиск? мс?
wlesavo: не, поиска нет, но хочу попробовать расстояния честные сделать, и оптимальный путь для рецепта искать, в целом я уже что-то такое сделал, но изза того что медленно работает там плохой перебор получается
YurkovAS: на с++ предрасчитывал все, преблем небыло [opPos][myPos]
wlesavo: да, я так и хочу, но все-равно придется видимо заморочиться чтобы уложиться в секунду))
Uljahn: предрасчёт - это хорошо, но как учесть вмешательство напарника
wlesavo: Uljahn для всех пар предрассчет
Uljahn: идёшь-идёшь по кратчайшему, а он в последний момент тебе дорогу загораживает
wlesavo: там ~900 пар получается
Uljahn: а потом отойти не хочет, и оказывается, что надо было идти в обход
wlesavo: you win some you lose some :smiley:
wlesavo: на самом деле даже глупый учет оппонента в бфсе лучше чем ничего
wlesavo: 780 из 870 успевает посчитать xD
YurkovAS: позиции int?
wlesavo: ага, да там оч неоптимально сделано, чтонибудь исправлю
Uljahn: я тупо захардкодил словарь с позициями и множествами соседних столов, наверное так и расстояния можно в офлайне посчитать и захардкодить :)
gybson_samara: на питоне словарь с ходами из каждой возможной клетки делается довольно мгновенно, для игр типа пакмана или ктулху
wlesavo: gybson_samara это полный бфс для всех возможных пар
wlesavo: то что на плюсах делается 1кк итераций по щелчку пальцев, тут не получается сделать даже 1000
gybson_samara: wlesavo а что за игра и задача?
wlesavo: поворята, нужны расстояния до всех столов
gybson_samara: а там стол меняется от лиги к лиге?
wlesavo: нет
gybson_samara: ну тогда конечно проще поступить неспортивно и захардкодить =)
gybson_samara: А так-то надо попробовать сколько займет посчитать все пути в графе graph = {(y, x): [] for y in range(height) for x in range(width) if f[y,x]!=STATE_WALL}
gybson_samara: из каждой клетки два направления всего
wlesavo: у меня даже иногда укладывается, но с магией нумпайной разной итп, но иногда всеравно падает
gybson_samara: хотя расстояние до столов по периметру можно просто функцией от координат получить наверное
wlesavo: в итоге сделал чтобы по таймеру предрасчет останавливался и потом что нужно уже досчитываю, так и не уложился в секунду, потому что производительность иногда раза в 2 скачет от процессора к процессору
gybson_samara: кстати, я на пэкмане столкнулся с тем, что дико падает производительность нампи на интах, а на дефолтном типе норм
Uljahn: я стараюсь нампишные инты использовать с подходящей разрядностью, но там выравнивание начинает играть, кэши, оптимизации нижележащих библиотек линала и проца
Uljahn: локально для интеловского проца можно и MKL поставить, а тут openBLAS какой-нить
Uljahn: угу, openBLAS, можно посмотреть с помощью np.__config__.show()
gybson_samara: я просто прифигел от того, что сразу словил тайм-аут, а тип обратно вернул и все нормально
kolyaNikolay: А как отсортировать решённые контрибушионы?
kolyaNikolay: ой contribution'ы
wlesavo: если именно на вкладке community то боюсь что никак
wlesavo: в итоге сделал для рецептов полный перебор с достаточно умной минимизацией расстояния которая учитывает следующий пункт для корректировки шага, для питона прямо сильно, но если бы не предрассчет ничего бы конечно не получилось
wlesavo: если бы я был еще в бронзе примерно в этот момент я бы начал переписывать на плюсы))