Chat:Ru/2020-03-24
Uljahn: а ты только точно в цель стреляешь или рядом тоже?
tutubalin: amurushkin такая же беда. пока не понял, где ошибка
tutubalin: а по поводу манхеттена. возможно, вариант с манхеттеном иногда отправляет ошибочные команды выстрела, поэтому стреляет реже
Uljahn: либо наоборот стреляет там, где бфс бы не стал и попадает по врагу в соседней клетке (при нескольких возможных предсказанных позициях)
Uljahn: а, бфс чтобы через острова не стрелять
735487: Uljahn: рядом стреляю только если цель одна и не достреливает то проверяю соседние клетки
735487: tutubalin: это да. редко бывает что промахивается. но из за этого он у меня может цель потерять. потому что думает что промазал
735487: Uljahn: либо наоборот стреляет там, где бфс бы не стал и попадает по врагу в соседней клетке (при нескольких возможных предсказанных позициях) так нельзя вроде. манхеттен не может стрельнуть где бфс не стал бы потому что невалидный выстрел получается
735487: пока получается что реже стрелять надо )))
735487: я у себя наверное нашел. помоему у меня бфс не правильно работает
735487: вот это я забаговал функцию проверки на границы поля ))
735487: вместо 15 написал 5
SqueeCoder: Чтобы выйти с первой лиги, надо именно босса победить? Т.Е. бот должен обладать фиксированной сноровкой, не зависимо от силы других игроков в лиге?
Uljahn: зависимо
Uljahn: чтобы до босса дойти, надо и других побеждать
SqueeCoder: Но они-то пройдут в следующую лигу? И на следующий день их не будет...
Uljahn: достаточно побеждать других и босса чаще, чем они тебя
Uljahn: если игроки не будут улучшать ботов и сабмитить, то так и останутся ниже босса торчать
Uljahn: если кто-то им не поможет перейти в другую лигу
Uljahn: когда ты против них играешь и проигрываешь, у них растёт рейтинг
Uljahn: если ты у босса выигрываешь больше, чем у топа игроков, то в какой-то момент босс упадёт ниже топов, которые перейдут в следующую лигу
SqueeCoder: но тот кто сильнее босса, тот и выходит в лигу повыше. А сила у босса фиксированная? Или копирует сильного игрока какого-нибудь, он же сильнее не становится?
Uljahn: боссы фиксированные как правило, но иногда их фиксят, если они слишком сложные оказались
SqueeCoder: Спасибо, разобрался.
Uljahn: в дальнейшем боссов бронзы, серебра и голды будут выбирать среди ботов игроков
Uljahn: но сила у них будет также фиксированная
735487: урок который вынес. даже если ты скопировал код из другого контеста и чуток подправил не факт что он работает как ты думаешь :)
tutubalin: надо писать переносимый код!
735487: он был переносимый )) я только размеры границ подправил. ну подумаешь в одном месте вместо 15 написал 5 )))
wlesavo: вот что бывает когда харддкодишь ширину))
wlesavo: лол, за ночь не опустился а поднялся на 10 мест
735487: бывает :) рандом на самом деле
735487: чем выше к топу тем меньше шансов подыматься за ночь. другие топы сабмитят и спускают знатно зачастую
tutubalin: придумал злую страту
tutubalin: если противник выстрелил и попал в тебя на 1, но надо самому стрельнуть и попасть в себя на 1
tutubalin: многим это сломает систему
Hamibar: я кстати сейчас стараюсь это прочекать)
Hamibar: но не думаю, что эта страта хорошая. Терять торпеду, выдавать позицию и терять хп, за то, что по идее можно посчитать.
wlesavo: tutubalin я пока не учитываю точность попадания
wlesavo: Hamibar это стоит того если у противника в пуле не останется валидных координат
wlesavo: я вот думаю что надо с хотьбой чтото поменять но пока не знаю в какую сторону
Hamibar: Ну я сейчас пишу как раз код, чтобы учитывать эту ситуацию
Hamibar: Вроде ничего сложного нет. Правда я еще не знаю как это работает
[lazy]Opera: а я написал систему учитывающую 0, 1, 2, 3, 4 урона при выстреле торпедой, мины пока не сделал
Hamibar: Еще 0 нада
[lazy]Opera: удобно множествами считать
Hamibar: а сори не увидел
735487: во у меня с бфс на 27 заскочил
[lazy]Opera: а вы бфс используете для поиска пути или куда стреляет торпеда?
[lazy]Opera: можно прекальк сделать
Hamibar: и для того и для того можно.
Hamibar: Я если вижу цель бегу к ней бфсом
Hamibar: иначе пытаюсь найти какую-то длинную цепочку дфсом)
735487: я попытался прекалк сделать. у меня почему то затаймилось :) надо еще раз попробовать
[lazy]Opera: а я смитсимакс попробую приделать, непонятно только как противника симулировать
Hamibar: но это надо исправлять
735487: да смитмакс тут тяжело. про противника же мало знаешь
735487: ну и ходы же не одновременные. уже тогда просто mcts
Hamibar: а можно поподробнее что такое смитмакс, а то гугл говорит что это боец мма
Uljahn: Hamibar: а против себя детект применяешь? а то пока бежишь к противнику, он может тебя вычислить
mykeich: сомнительно тут прикручивать стандартные алгоритмы
Uljahn: смитсимакс - это локальный CG мем
Uljahn: https://www.codingame.com/playgrounds/36476/smitsimax
Hamibar: Uljahn да, но на движении он никак не учитывается
Hamibar: только для сайленса пока
mykeich: в бронзу закинуло случайно
735487: я пытаюсь учитывать как я сам себя бы детектил
[lazy]Opera: mykeich: а как предлагаешь ходить, если не каким нибудь mcts?
wlesavo: mykeich вуд 1 босс слишком слабый, его чет все проскакивают
Uljahn: это вуд2 слишком крутой потому что
Uljahn: а может и понерфили вуд1
Hamibar: интересно, что если нажимаешь replay in same conditions получаются разные результаты)
Uljahn: бывает, если боты юзают рандом
Uljahn: без захардкоженного сида
Hamibar: это человек)
Hamibar: но видимо тоже с рандомом
Hamibar: ааа так это же я с рандомом xD
Uljahn: хд
Uljahn: mykeich: в патчноутах пишут "Wood bosses are slightly nerfed", видимо перестарались
wlesavo: Uljahn ну наверное да, проскакивают потому что вуд 2 сильный был, сейчас не знаю че там после нерфа
mykeich: я сконцентрировался на предсказании и вполне работает, надо остальное подтягивать
Uljahn: и с сайленсом тоже?
735487: уже было такое с какой то игрой. что все кто выходил из вуд проходили в серебро сразу :)
Uljahn: ага, тогда ещё предлагали wood переименовать в iron
735487: прикручиваю понимание что меня миной нашли :)
wlesavo: Uljahn какой самый эффективный способ в нумпай создать копию массива, именно не вью а копию с базой none
wlesavo: блин, сейчас только понял что у меня режим погони забагован
735487: ухты 10 из 10 сабмит :)
735487: wlesavo: да тут у всех баг на баге
735487: у меня до сих пор цель терять может
Hamibar: только сейчас заметил, что составные команды в логе занимают больще чем один ход) а я думаю как после 89го 91й сразу наступает
wlesavo: ну я почемуто думал что оно работает, это кусок кода который одним из первых был написан
735487: да вчера поменяли
735487: я думал у меня бфс работает пока не стал дебажить )))
735487: ухты 18 место до 10% сабмита
735487: а не брешу. 25% уже
735487: пошла серия проигрышей ))
735487: может зацеплюсь за топ 20
735487: надо путь искать чуть дальше чем на 1 глубину ))
wlesavo: блин, у меня в эту функцию даже не заходило оказывается, там еще внутри куча багов
Uljahn: wlesavo: что за база None?
Uljahn: empty_like посмотри
wlesavo: ну .base()
Uljahn: а, тебе значения скопировать?
wlesavo: да
Uljahn: так просто .copy() не?
wlesavo: ну я пока вообще плюсую к нулевому
Uljahn: читал, что копирование очень быстрое на самом деле под капотом
Uljahn: это тебе не deepcopy
wlesavo: ага, спс, тогда просто копить буду
Uljahn: тут тупо memcpy вроде
Uljahn: хм, при сайленсе 0 можно повернуться в нужную сторону...
Uljahn: тогда 15 вариантов получается :/
mykeich: во время сонара ход пропускается?
735487: по идее поворот при сайленсе 0 ни на что не влияет. следующий move будет с направлением
735487: mykeich: да
Uljahn: почему не влияет?
wlesavo: всмысле поворот
Uljahn: ты же направление указываешь в сайленсе
Uljahn: ща буду тестить
Hamibar: так при 0 оно ни на что не влияет. Ты же после silence все равно не можешь пойти назад.
Uljahn: хм.. ну да
735487: больше всего вариантов при surface + silence
wlesavo: фуф, пофиксил
wlesavo: аж вспотел
735487: https://www.codingame.com/share-replay/441908421 глядите какой у меня баг. в конце. аж офигел
735487: я с ним до 18 добегал )))
Uljahn: лол, норм суициднулся
735487: потерял противника и оценил что ходить никуда не надо )))
735487: пойду на ресабмит ))
735487: где то с сайленсом надо баги искать. теряю иногда противника
Hamibar: Ты не поверишь) у меня такой же был. При surface отчищал посещенные клетки.
735487: не у меня в другом немного в чем то
Hamibar: я имею ввиду поведение было точно таким же
735487: надо включать режим дебага и трекать все точки как он отсекает опять )))
Hamibar: а можно ли весь инпут игры скачать? чтобы локально отдебажить?
735487: блин он у меня при сайленсе почему то сейчас только одну сторону предсказывает. а 3 другие нет ))))
735487: можно
735487: выводи в дебаг и копируй в файл
735487: а локально из файла читай
Hamibar: нее ну 600 ходов ручками копировать это конечно сильно.
735487: Ctrl+A Ctrl+C
Hamibar: не понял. Куда выводить то. В стандартный поток ошибок?
735487: да
tutubalin: ага
tutubalin: а ещё можно скачать рефери
Hamibar: ну у меня там много другой инфы) так-то понятно, что можно оттуда.
Abrik: Всем привет. Прохожу задачки. Такие интересные. Появился вопрос в реализации на c# Задача https://www.codingame.com/ide/puzzle/mime-type
Abrik: http://chat.codingame.com/pastebin/19afb2dd-4173-46d5-9f60-06a7a47e83a6
Abrik: Во второй ссылке вопрос
Uljahn: а, может расширение пустая строка?
Abrik: If it is not possible to find the MIME type corresponding to a file, or if the file doesn’t have an extension, print UNKNOWN.
Abrik: написано что указывать UNKNOWN
Uljahn: у тебя не на этом валится, потому что Found: applicat
Uljahn: не то печатаешь, что ожидается
Uljahn: я же говорил - включи экспертный режим и посмотри тесткейсы с ответами
tutubalin: какой тест?
Abrik: Settings-> Mode-> expert Ничего не изменилось
Uljahn: нашёл ответы?
Uljahn: смотри тесткейс, который валится, сравни ответы построчно с тем, что выводишь
Uljahn: Abrik
wlesavo: не пойму, измеряю время во время хода и у меня некоторые ходы больше 50 ms но зашкала нет, не пойму как так
Abrik: Ошибка найдена. Спасибо
Uljahn: wlesavo: таймаут возникает, если два хода подряд вышел за границы, вроде бы, или вышел слишком сильно
Uljahn: либо измеряешь неправильно
wlesavo: Uljahn то есть небольшой таймаут могут простить?
Uljahn: не уверен, но вроде бы да
Uljahn: было много жалоб на таймауты во время MeanMax
wlesavo: ну вроде проверил, тяжело ошибиться в измерении, в начале хода измеряю дефолт таймер и после функции еще раз
Uljahn: в начале - после первого инпута?
Uljahn: ход начинается, когда заканчивается чтение первого инпута
wlesavo: нет, раншье
wlesavo: мож в этом проблема
Uljahn: угу
wlesavo: а, спс
wlesavo: о, другие цифры совсем, я уж думал надо чето сильно оптимизировать
Uljahn: ну да, неочевидная штука
Uljahn: я так понимаю, после твоего вывода команды рефери приостанавливает исполнение перед первым инпутом, исполняется бот противника, вычисляются инпуты, противник замораживается, размораживается твой бот, подаются инпуты
Uljahn: я щас замеряю время от вывода команды до первого инпута - по сути это должно быть время исполнения бота оппонента
Uljahn: не до, а сразу после инпута
Uljahn: цифры в районе 15 - 80мс получаются
Uljahn: т.е. там ещё рефери парсит, обсчитывает
wlesavo: интересно
Uljahn: т.е. оппонент + рефери*2
Uljahn: в картишках этот фокус позволял узнать, каким номером ты играешь: первым или вторым игроком
Uljahn: ещё есть городская легенда, что оба бота исполняются на одном ядре, а исполнение регулируется приоритетом процесса
Uljahn: правда, как быть с инвалидациями кэша в этом случае - не понятно
Hamibar: что-то не нравиться мне мой код. Надо переписать пока не поздно.
mykeich: рекомендую переписывать небольшими кусками
Uljahn: хорошая идея
tutubalin: и тест и коммит после каждого значимого изменения
metahom: а что, в бронзе можно свои ходы скрывать?
Uljahn: в вуд1 вроде тоже можно
Uljahn: 6 зарядов стоит silence
metahom: теперь ты знаешь в какой я лиге :)
metahom: ясно, спасибо
SqueeCoder: на 1 ход можно скрывать? Тоже понятно в какой я лиге :)
Uljahn: ну, это не полное скрытие, но количество вариантов увеличивает в несколько раз
Uljahn: как amurushkin говорил - наибольшее число вариантов у сайленса после surface, далее я прикинул, что surface в том же направлении, что и предыдущий ход, либо на расстояние 0
735487: ну что зайдем без мин в голду?
Uljahn: если вбок поворачивать, то есть шанс значительно уменьшить число вариантов следующим мувом
735487: все эти вещи по хорошему надо рассчитывать. а у меня рассчет на 1 глубину всего и то только для мува ))
735487: надо научить чтоли ходить змейкой
Uljahn: я ещё тупики не прикрутил, там по идее надо копить на сайленс, чтобы как раз после surface заюзать
metahom: как раз на месяц задачка )))
SqueeCoder: Игра, конечно огоно, спасибо, что подсказали. А я уже зарёкся геймерить...
Uljahn: настолку закодили с кастомными правилами, Automaton2000
Automaton2000: а что с ним не так?
Uljahn: на форуме настольщик один жаловался, что торпеды должны взрывать мины)
metahom: опять цепные взрывы? ахах
Uljahn: не, не будет слава богу
SqueeCoder: За сколько времени примерно вычисляется противник?
SqueeCoder: местоположение.
Uljahn: зависит от карты и его траектории
735487: зависит от его действий еще
735487: чем чаще он стреляет тем быстрее
Uljahn: и от твоего сонара
SqueeCoder: простенький на вуд 2
metahom: главное зависит от твоего алгоритма
Uljahn: а, вуд2))
735487: на вуд 2 быстро вычисляется
Uljahn: старайся плават подальше от берегов и грантцы карты
Uljahn: *плавать
735487: лучше сразу нормальный алгоритм определения делать. тогда будет проще в бронзу
SqueeCoder: Ну мне результат не важен, в языке надо разобраться сначала.
Uljahn: с этой точки зрения контесты суперполезные - есть мотивация
Uljahn: и ограничение по времени
tutubalin: а когда голду откроют?
wlesavo: ааа такой баг нашел
wlesavo: как я с ним вообще из вуд 2 вышел
wlesavo: отсеивал угловые клетки при выстреле, ппц
Uljahn: ещё серебро же не открыли
Uljahn: голду через неделю после серебра, наверное
Uljahn: 27-го марта серебро, 3 апреля голда
Uljahn: пора написать первый класс, Automaton2000
Automaton2000: у меня в другом немного в чем то
gybson_samara: private static final int GRID_ORIGIN_Y = (int) Math.round(1080 / 2 - CELL_WIDTH * GRID_SIZE / 2);
gybson_samara: эээээээээээххх
gybson_samara: нет чтоб все в константы пихнуть или все сразу посчитать
wlesavo: надо сохранить реплей в котором я рояля побеждаю, чтобы потом когда он будет в топе легенды пересматривать
735487: :)
735487: мочи мсмита пока можешь :)))))
wlesavo: это тоже, да)
wlesavo: баг с сайленс 69 конечно топ
735487: а так это босс походу так отмачивает
wlesavo: нет, это абуз
wlesavo: проигрывает соперник
wlesavo: там цвета инвертируются в реплее
735487: ааа. время занимать 1 место?
wlesavo: у меня не воспроизводится только
wlesavo: я сам проигрываю почемуто
Httpsx: Какого числа Ocean of Code стартанул?
Uljahn: 20-го?
Uljahn: антикоронавирусный марафон, вливайся, ещё 26 дней с половиной
735487: блин попробовал для движения искать разные траектории на 1,2 и 3 глубину. стало в разы хуже чем просто 4 стороны проверять
735487: походу осталось добавить мины только ))
wlesavo: я сделал убегание от противника если я на лоу хп, ща тож мины добавлю, ато убегать без мин не так эффективно
Uljahn: такое ощущение, что многие сильные игроки пока прячут ботов, либо неспеша запиливают топовые переборы на дне бронзы :/
wlesavo: я видел что у иллидана бот даунгрейднулся до сайленс спамера
Uljahn: надо от сайленс 0 куда-то деваться
wlesavo: может тестил чтото
Uljahn: палят на раз уже
Uljahn: топы сабмитят тестовых ботов, ишь
wlesavo: охренеть, допилил сайленс нормальный вместо сайленс 0 и сразу качественный скачок
ДжБМ: у меня скоро стрим, https://www.twitch.tv/cg_jbm/
wlesavo: о, амура догнал аж
Uljahn: ого, красава
wlesavo: теперь надо фильтр по дамагу и можно будет уже и селфтракинг
Uljahn: время остаётся?
wlesavo: в ходу? да, я несколько милисекунд пока только трачу
wlesavo: я просто когда неправильно мерил думал что много трачу
Uljahn: эх, кажется зря я ресабмитнул, прощай серебро
wlesavo: поправь сайленс просто и норм
Uljahn: вот и поправил назад на единичку
wlesavo: я еще косяк у себя нашел что координату после сайленса не менял, даже с этим 36ой был, ща ресабмитну глянем
wlesavo: у меня ща полуслучайный
wlesavo: но что то такое ощущение что у многих плохо фильтр на сайленс работает
Uljahn: так там комбинаторный взрыв, а 5к вариантов даже джява с трудом осиливает
YurkovAS: а что там с сайленс 0? лучше, чем сайленс 1? я просто иногда вместо мува делаю сайленс 1
Uljahn: сайленс 0 - это очевидно слишком, первым делом проверяют, что у тебя хардкод, а потом добивают :(
wlesavo: не, у меня норм обход взрыва, и почти не страдает поиск
Uljahn: обход взрыва?
wlesavo: ну комбинаторного
Uljahn: а, а то я уж подумал, ты предполагаешь, куда предполагаемый противник стрелять будет, чтобы проверить сайленс 0))
Uljahn: и обходишь это место стороной
wlesavo: не, у меня ща показатель того что меня задетектировали это потеря хп xD
Uljahn: и чё делать тогда? всплывать и убегать в стелсе?
wlesavo: не, просто стелс без всплытия, в одном из более менее хороших направлений
wlesavo: на случайное расстояние
Uljahn: по идее, всплытие сильно увеличивает варианты стелса
wlesavo: ну вообще да, но хп жалко
wlesavo: особенно если у тебя 1 жизнь осталась
wlesavo: короче я пока оставлю так, все равно потом этот момент улучшать после селфтрекинга
wlesavo: столько багов сегодня нашел конечно, прям доволен