Chat:Ru/2020-04-05

From CG community
Jump to navigation Jump to search

metahom: блин, как достал этот дебаг трекинга...

mykeich: есть такое

metahom: мне сегодня что-то снилось про эту игру. какие-то проблемы с ходом были

Valdemar: У меня тоже были проблемы, пока архитектуру не наладил. Если пишешь с большим количеством говнокода, значит что-то не так и надо менять подход

Valdemar: А, ну и ассерты на все невалидное поведение, типа потерял противника, очень помогают

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

metahom: а насчет говнокода - каждый раз зарекаюсь, что следующий контест буду нормально писать )))

amurushkin: та же фигня. куча копипасты :)

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

BorisZ: архитектуру хрен продумаешь до начала

BorisZ: будет куча абстрауций где хватит одной функции и наоборот

BorisZ: куда будет пухнуть проект непонятно

BorisZ: распухать

Default avatar.png LightKeeper: Кто-нибудь знает, как запустить ту же самую игру? выбираю "replay in same conditions", карта таже, но игроки в других позициях возникают? явно сид для рандома не задаётся?

BorisZ: сид игроки сами либо задают либо не задают

BorisZ: у многих вобще нет рандома - полностью детерминированный бот

BorisZ: примерно у половины по ощущениям )

BorisZ: в смысле сид для своего бота, тот сид что в настройках он только для генерации карты

Valdemar: BorisZ насчет "сразу не продумаешь" согласен я не пренебрегаю копипастой, если нормальное решение не могу придумать, потом рефакторю

amurushkin: я некоторые моменты хорошо продумал. потом не пришлось менять даже. но от копипасты рассчета торпед до мува и после не удержался ))

wlesavo: как вы выбираете начальную позицию?

wlesavo: по расстоянию до островов?

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

BorisZ: я сдвигаю края доски и расширяю острова пока не получу пустое множество, на предыдущем шагу - самые лучшие позиции

BorisZ: на предпредыдущем вес пониже на 1 выходит

735487: я сделал как ульян делал

BorisZ: ульян показывал в самом начале

735487: да вот примерно как BorisZ описывает

BorisZ: да, у меня то же самое и иесть

735487: только я не до пустого сжимаю а прерываю когда меньше 3 точек остается

BorisZ: ну принцип главное, это детали

735487: хотя это одно и тоже наверное

BorisZ: это гарантирует что в озере не стратанешь по крайней мере )

BorisZ: хотя хз, можно наверное изголиться и нарисовать карту что в озере и получится если оно квадратное а океан - змейкой

735487: не гарантирует. там есть карта где 3 озера. мой на ней спавнится не в самом большом

BorisZ: я проверял ее, мой в большом

735487: а мой нет ))

BorisZ: https://www.codingame.com/share-replay/445741806

735487: там вроде они все сжимаются быстро до нулья

BorisZ: видимо три точки тебя и подвели )

wlesavo: такс, а чуть подробнее можно про сжатие?

735487: неа видать алгоритмы разные. все равно в верхний у меня лезет

BorisZ: берешь все точки у которых меньше 4 соседей - это берег

BorisZ: отбрасываешь их - получаешь новую уменьшенную карту

BorisZ: и так по циклу пока карта не будет пустой

735487: а я наоборот. острова расширяю

wlesavo: а понял

wlesavo: да, полезно будет

wlesavo: ух, так и в топ можно выйти

wlesavo: ща взвешу всех кандидатов по этому алгоритму

BorisZ: вряд ли это повлияет сильно, от силы на ход-два приемущества

BorisZ: да и то ве нивелируется быстро сайленсами и дальнейшим маршрутом

wlesavo: может повлиять

wlesavo: вес при сайленсе сохраняется

wlesavo: просто я ща уменьшил вес на сайленс 4, и внезапно это неплохо повлияло

wlesavo: думаю что что-то в этом может быть

wlesavo: так по капельке наберется весов

wlesavo: как раз в общаке обсуждают что так позицию выбирают

metahom: это вы берете саму дальнюю от островов точку? зачем?

wlesavo: ну ладно, не очень эффективно получилось, надо думать другой критерий взвешивания

Alex.swift: я по другому вообще делаю. Беру несколько комбинаций строк/столбиков и проверяю в какой после прохода буде больше возможных вариантов где я, а потом уже ориентируюсь на другие критерии

Alex.swift: а нет возможности для теста выключить таймауты на 1 игру? Для проверки точности чтоб знать надо ли оптимизировать этот вариант если он работает

Uljahn: только локально запускать

735487: либо вручную забабахать стейт на 1 ход и у тебя будет 1 сек :)

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

735487: Alex.swift: да так же было по началу до 400к доходило

Alex.swift: я так понял, вы удаляете те, которые привели в 1 точку? Просто это ж может привести к неточностям

Alex.swift: при дальнейшем сайленсе может или отсечь лишние варианты или наоборот недоотсекать

735487: так и есть. это приводит к неточностям. но приходится ужимать количество иногда. я не держу больше 20к путей. у кого то и того меньше. я так подозреваю что я когда начну пытаться делать перебор лучшего пути и порядка действий то может тоже прийдется еще меньше делать лимит

735487: я стараюсь не запускать сжатие пока это возможно

735487: но у меня ведется 2 списка. всех путей и отдельно список конечных точек

Alex.swift: ну у меня тоже список путей + возможные позиции головы

Valdemar: 20к? У меня граница в 5к, достигает очень редко, когда сайленс спамят каждые 6 ходов

mykeich: а почему вы говорите о путях?

Valdemar: потому что только конечной точки недостаточно

mykeich: согласен, конечная точка плюс грид с посещенными точками

Alex.swift: вот у меня тоже самое. До 5к доходит очень редко

Valdemar: mykeich да, как ты хранишь путь не важно, я битмаску использую

Alex.swift: но если доходит, тот все валится. Детект врага, потом детект меня и все

735487: Valdemar у меня 20к осталось еще с времен когда я хвост не трекал

Valdemar: Alex.swift так поставь фолбек

735487: и один раз я видел что он превысил это число. когда бот противника ничего не делал кроме сайленса

Valdemar: у меня на случай переполнения, обрубаются повторяющиеся состояния. Терем часть информации, но что поделать

Alex.swift: ну у меня они хешируются по путь+голова и хранятся в сете, так что дубликации отсекаются сразу

735487: ну вот у меня тоже если стало больше лимита запускается компрессия путей )) возможно стоит пересмотреть это дело и компрессировать не все а только часть

Valdemar: Alex.swift дубликаты, всмысле одинаковые конечные точки

Valdemar: пути не могут повторяться by design, так что сет не нужен

Valdemar: по крайней мере у меня

Valdemar: пытаюсь сделать перебор по движениям, какая-то ерунда получается. Увеличение глубины перебора снижает винрейт против прошлой версии)

mykeich: точки могут быть одинаковые а пройденный путь разный

Valdemar: Пока лучший результат - сайленс на 0 и перебор на 1 глубину. Винрейт 60%

Alex.swift: теоретически да, это скорее как мера предосторожности. Но без потери данных пока не знаю как о

Alex.swift: отсечение сделать

Valdemar: mykeich я про фолбек говорил. т.е. как сжимать если переполнилось, в этом случае оставляю только уникальные конечные точки

735487: Valdemar: я тоже когда пытался задать ему около 30 пресетов путей от 1 до 3 глубины, он всегда выбирал на 1 который ))

Valdemar: amurushkin значит с евалом намудрил)

Valdemar: у меня нормально выбирает но прошлую версию обыгрывает самый мелкий перебор, остальные хуже почему-то

mykeich: Valdemar, у меня уникальность по точкам, а грид сжимается

735487: ну просто в любом случае количество доступных клеток через 1 ход больше чем через 3 )) я забил пока и не стал пытаться отрегулировать

Valdemar: amurushkin так надо считать доступные клетки на каждой глубине и суммировать

Valdemar: иначе, конечно, он будет предпочитать не расширять дерево

amurushkin: или просто нужно было пути делать все одной длины

Alex.swift: amurushkin а отсечение по минам у тебя до сжатия, выходит, только работает?

metahom: мины можно складывать при мерже

735487: сейчас я учитываю только взрывы мин и все

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

metahom: wlesavo, почини

wlesavo: да устал искать, все равно идея оказалась не очень

wlesavo: во, чудеса, вчерашний код хорошо играет

wlesavo: после модификаций ни с какими параметрами даже в топ5 не залазил

Default avatar.png Tecarlo: Здравствуйте! А есть где-нибудь предыдущие 15 дней этого чата?

Alex.swift: А разбивать на треды есть смысл? Или все будет на 1 ядре работать?

BorisZ: на 1 ядре, нет смысла

BorisZ: Tecarlo надо спросить тех кто клиент для чата юзает - Uljahn amurushkin

BorisZ: но смысла вряд ли много будет от этого, лучше спрашивай, сейчас много народу онлайн, никто особо инфу не таит

BorisZ: читать срачи про политику - мало раюости )

Uljahn: https://cg.spdns.eu/wiki/Special:PrefixIndex?prefix=Ru%2F&namespace=3000

Uljahn: логи чатика

mykeich: надо же

mykeich: Uljahn в году пойдешь?

Uljahn: хз

Uljahn: надо бы, но лень

mykeich: все равно делать нечего же

mykeich: что то запчасти на машину не заказать. пришлось залить масло какйто блатной мобил в машину в место обычного лукойла, потому что ничего не купить

Default avatar.png Tecarlo: Uljahn, спасибо! Немного сложновато, правда, читать, там OceanOfCode вперемежку с массовой закупкой сигарет :)

Alex.swift: wlesavo а у тебя тоже есть какие-то урезания путей или все до конца трекаются?

wlesavo: у меня же мерджи, я не храню полные пути

Alex.swift: норм. Переделанный трекинг пути поднял с 100 до 50 места

735487: https://www.codingame.com/replay/445930734 у kove бот заглючил ))

ashelkov: подскажите плиз есть ли разница в порядке команд при выпуске торпеды? имею ввиду чо если первой командой мув - то торпеде надо учитывать этот мув

ashelkov: ?

StepanSmirnov: ага

ashelkov: и вопрос 2: если я затрекал противника и выпускаю по нему торпеду - она попадет в него или он уже сместится на 1 клетку пока торпеда долетит?

StepanSmirnov: попадет

ashelkov: спасибо)

amurushkin: не смог закодить автоподстройку стрельбы по угаданному сайленсу противника ) получилось не очень