Chat:Ru/2020-03-27
aaafgcfg: https://www.codingame.com/replay/442745840
aaafgcfg: что здесь произошло?
Alex.swift: Ctp. Levine сделал ход NaN) Unknown exception: For input string: "NaN"
wlesavo: ну что, есть идеи как мины предсказывать?
Alex.swift: запоминать в каких местах враг их ставит относительно своего пути и если количество вариантов где он сократится до 1 поставить их на настоящие координаты
BorisZ: мину то можно в 4 точки поставить, даже если точно известно откуда он ее кинул
Alex.swift: помечать все 4 как подозрительные :thinking:
BorisZ: ну может и получится что-то выцарапать, надо пробовать
wlesavo: Alex.swift в случае без дедупликации ты поти никогда не сможешь свести кандидатов к одному
Alex.swift: Тогда все минное поле становится подозрительным. Но если вариантов куда дальше плыть нет может выгодней сделать серфейс чем заплывать в минное поле. С wala детектится его позиция ходу к 60-70 и +- понятно где поле
wlesavo: а с дедупликацией ты не можешь точно восстановить путь
Alex.swift: теоретически можно и путь попробовать восстановить после сайленса если сохдавать столько копий поля с путями сколько вариантов у него есть уплыть и удалять те, что зашли в тупик. Но будет затратно по перфомансу
wlesavo: я пока склоняюсь к отмечанию мин которые точно можно восстановить, и забивать на те которые нельзя
wlesavo: примерно так как я с путем делаю
wlesavo: да, наверное это реализую, вопрос только как потом учитывать это при движении, надо какаие то штрафы выписывать
Alex.swift: так точно ты же все равно не узнаешь, будет 4 подозрения
wlesavo: ну это понятно
wlesavo: в худшем случае 4
wlesavo: рядом с островами меньше
wlesavo: отмечать все как опасные, других вариантов нет
wlesavo: ладно, надо запиливать историю полноценную и мины, вроде пока на ход больше 5ms не уходит, так что можно
Uljahn: 5ms :scream_cat:
wlesavo: о, кажись придумал, нужно просто запоминать для кандидатов положения в момент времени поставки мины, тупо по id мины, полная история реально не нужна
wlesavo: Uljahn я кстати не понял как вы говорили флудфил так долго работает, я его на глубину 1 использую, то есть раз по 20 за ход бывает, если сайленс и мув в один ход
Uljahn: на глубину 1? :)
Uljahn: мы про всю карту говорили
wlesavo: ну всмысле заполняю всю карту, но для разных вариаций движения
wlesavo: на глубину 1 от текущего хода
wlesavo: то есть где то 9 заполнений для оценки мува
amurushkin: wlesavo: вот вроде по описаниям выглядит почти все как и у меня. но блин видать у меня багов больше ))
wlesavo: я вчера кстати переделал стрельбу и взрывы во что-то ближе к тому о чем Hamibar говорил, по отношению дамага по всем кандидатам к полному числу кандидатов
wlesavo: ну и вчера запустил оценку выдаваемой информации при движении и ее минимизирую если это не сильно сокращает возможные ходы
amurushkin: я оцениваю свои ходы по направлениям и выбираю то где у меня больше ходов плюс для соперника больше моих положений. давно уже так сделал. но то ли где то криво у меня то ли хз
wlesavo: хм
amurushkin: а идею хранить взрывы и обсчитывать я сделал вроде оно работает но на практике получается на 100 мест почти разница
amurushkin: наверное баги
wlesavo: ну у меня на глубину 1 тоже считает, то есть берет максимум понаправлениям для следующего хода
wlesavo: amurushkin а противника не теряешь при этом?
amurushkin: единственное что у меня сайленс на ифах сделан
wlesavo: выглядит как лишнее отсеивание
wlesavo: у меня сайленс оценивает конечную позицию после прыжка, так же как при движении, и если это тупик то туда не прыгает
amurushkin: wlesavo: да иногда теряю бывает. вот хз брать код который сейчас выше и дальше развивать или брать версию со взрывами фиксить :)
wlesavo: пофикси взрывы
wlesavo: может время сдвинуто как нибудь случайно?
amurushkin: да либо сделал криво ))
amurushkin: он так вроде определяет все верно. но работает почему то в разы хуже. возможно дело в движении
amurushkin: еще отключил сонар вообще. вроде так лучше стало
wlesavo: не пробовал отключать чтото, но может разведка минами дествительно лучше чем сонаром
amurushkin: у меня просто с сонаром на мины маны маловато :)
wlesavo: я его пользую только когда точно инормацию получаю, и когда мин на карте больше 4
wlesavo: если мин меньше то их заряжаю сначала
amurushkin: вот смотри это версия со взрывами https://www.codingame.com/share-replay/442758187 а вот с детектами на ифах https://www.codingame.com/share-replay/442758512
amurushkin: не терял противника ни там ни там
amurushkin: на одном и том же сиде
wlesavo: хм, даж хз
Uljahn: мину-то в угол зачем ставить?
amurushkin: это уже другой вопрос ))
amurushkin: я их сейчас ставлю только на оценке от положения других мин
amurushkin: сейчас попробую подальше от краев ставить
wlesavo: я ставлю просто где площадь максимальную покрывает
Uljahn: или даже не ставить мину в текущий ход, а зарядить другую систему, например
wlesavo: ну и где нет другой моей мины))
Uljahn: wlesavo: а у тебя и детект миной, и потом сонар в тот же сектор
Uljahn: в реплее 442758512 на 90-м ходу
wlesavo: сонар пользую просто если он дает информацию, видимо там даже после взрыва больше кандидтов осталось
wlesavo: хотя может и нет
wlesavo: фильтрация кандидатов в конце хода
wlesavo: до того как сонар определяется
Uljahn: amurushkin: сайленс нормальный не прикрутил что ли ещё?
wlesavo: может вообще отключу сонар и правда
wlesavo: он все равно очень редко пользуется, часто вообще до 2-3 заряжается и ни разу не используется
wlesavo: только сначала мины допилю нормально
Uljahn: можно же какую-то кластеризацию запилить, где более вероятны вражеские тракетории, когда он мины ставит, и постараться туда не заплывать
wlesavo: ну я чтото такое и думаю
wlesavo: сначала трекинг по триггера сделаю
Uljahn: мне кажется, лучше sufrace сделать, чем тебя минами задетектят и потом гг
amurushkin: Uljahn: сайленс у меня сейчас если я считаю что меня начинают вычислять или когда попали по мне
wlesavo: у меня так же
amurushkin: прикол уже 3 игры подряд у wlesavo выигрываю в ide )) где мой топ 10 )))))
Uljahn: плюсы начинают доминировать :(
wlesavo: ну так я не топ 10 уже)))
amurushkin: сейчас засабмичу изменения по минам. по идее не будет ставить рядом с островами и краями
wlesavo: но вообще было что я в иде у топ 2 три игры подряд выйграл
Uljahn: а почему вы торпеды заряжаете первым делом в начале?
wlesavo: потом засабмитил в топ 30
wlesavo: просто чтобы была когда понадобится
wlesavo: потом все равно заряжать
Uljahn: для чего понадобится?
Uljahn: через 200 ходов добивать?
wlesavo: я просто не делал сложную логику, торпеда всегда в приоритете
Uljahn: можно же мину поставить, которую трудно будет задетектить
amurushkin: надо же нашелся реплей где мой не понимает что ходов не осталось и надо всплывать
amurushkin: Uljahn: когда оно на ифах проще торпеду первой заряжать ))))
Uljahn: го запилите мину в приоритет))
wlesavo: Uljahn не понятно критерий когда нужно начинать заряжать торпеду тогда, часто за ход может отсечься много вариантов
amurushkin: |TRIGGER 14 11SURFACE | MOVE E хехехехех
wlesavo: так ты тогда кроме мин ничего ставить не будешь
Uljahn: когда мин уже дофига наставил и определил стратегию противника
wlesavo: и ракету с сайленсом зарядил и готовый к бою плаваешь
Uljahn: мне кажется, в начале лучше держаться подальше от соперника
Uljahn: т.е. торпеда не нужна
Uljahn: потом минами детектишь его и добиваешь торпедой
Uljahn: вот тогда и понадобится
wlesavo: ну можно попробовать
wlesavo: но не думаю что будет лучше
amurushkin: я вот думаю может наифать если ты выигрываешь то не рыпаться а просто на сьебки ))
Uljahn: логично
wlesavo: у меня было похожее
wlesavo: работало плохо
Uljahn: надо не просто на съёбки, но и кислород перекрывать сопернику при этом не налетая на его мины
wlesavo: вообще надо мины нормально допилить и тогда можно думать уже
wlesavo: если ты не знаешь мины это рандом
wlesavo: зашел в поле минное проиграл
wlesavo: не зашел выйрал
wlesavo: часто за несколько ходов просто умираешь на минном поле
amurushkin: идея возникла. если подрываешь на мине включаешь surface и идешь по тому же пути в обратную сторону ))
wlesavo: сомнительно конечно)
wlesavo: я бы просто попытался развернуться
wlesavo: как раз если развернулся можешь зайти в тупик, а там уже и серфейс включится
amurushkin: разворот это 3 хода а со всплытием сразу. но и во время разворота еще мин можно нахватать
wlesavo: серфейс выглядит очень сильным конечно, но так бы абузить я не стал всетаки
wlesavo: разница в 1хп часто критическая
Uljahn: зависит от стратегии противника, очевидно, т.е. если он постоянно мины ставит, то одним хп не отделаешься, если миной задетектили
wlesavo: я думаю штрафовать за потенциальные мины с весом в число кандидатов, если больше порога то метить точку на карте как запрещенную, и если что серфейситься
wlesavo: ну с обратным весом
amurushkin: попробую идею ульяна. заряжать торпеду только когда мин уже наставил
wlesavo: расскажи потом, интересно
wlesavo: на бумаге выглядит неплохо, но я вижу тут подводные
amurushkin: сделал просто условие если мин больше 3
wlesavo: прикрутил обнаружение по триггерам
wlesavo: блин, таки с косяком прикрутил, себя теряю
amurushkin: либо также либо хуже
amurushkin: у меня стало я имею ввиду
amurushkin: а я по триггерам тоже прикрутил и себе и противнику. но хз сколько там багов ))
amurushkin: а вот себя я тоже теряю порой бывает чаще чем соперника
wlesavo: лооол, индекс мины и итератора одинаково обозвал
wlesavo: вроде работает, но теперь чтото я не заметил чтобы оно чето фильтровало
amurushkin: я вчера вообще находил мину какую надо триггернуть. удалял ее а потом вывод делал )))
amurushkin: а из за удаления по этому индексу уже другие корды. и получалось не соответствие мин
wlesavo: ну вот теперь можно пытаться учитывать мины при движении
wlesavo: проверю только вернусь ли обратно
wlesavo: но вроде победы нормальные
metahom: а когда серебро открывают?
wlesavo: вечером
wlesavo: в 6 чтоли
amurushkin: больше шансов на 19-20 часов
metahom: еще есть время )))
amurushkin: да не обязательно что то успевать к этому времени на саом деле
metahom: ну как-то стыдно в серебро сразу не попасть
amurushkin: да ничего стыдного
Alex.swift: а сколько топ позиций попадет сразу?
amurushkin: много. примерно половина я думаю. ну или треть
amurushkin: 10 из 10 пошло пока. запилил всплытие после подрыва на мине
wlesavo: ну в первых 10 важна только одна игра с человеком из топа\
the_timur: А в ход, когда мы используем silence, мы можем заряжать какой-то другой снаряд?
wlesavo: если отдельно используешь мув то да
wlesavo: ты можешь даже заряядить сайленс и в этот же ход им воспользоваться
the_timur: Можно использовать сайленс и мув в один ход?
Uljahn: да
Uljahn: можно все команды использовать по разу в любой комбинации
amurushkin: вобщем хуже рейтинг от этого не стал. :)
wlesavo: я думаю обобщить эту методику, на предсказательной основе
wlesavo: то есть если вероятность слишком большая то всплывать или разворачиваться
wlesavo: пока только не знаю как учитывать взорвавшиеcz
Alex.swift: хм, кодингейм перестал компилить бота вообще(
dabino: +!
wlesavo: я тут понял, что серфейсом заменял мув, но после него же можно еще двинуться
amurushkin: можно. но вот нужно ли ))
mykeich: чет play сломался
wlesavo: у всех, да
wlesavo: amurushkin в случае с минами да, у меня оценка опасности неплохо заработала, думаю делать всплытие если вокруг опасно, и чтобы на следующий ход избежать повторного всплытия лучше уйти в обратку
MadKnight: Alex.swift пофиксилось?
MadKnight: чё у вас там сломалось?)
Uljahn: в общаке тоже жалуются
Alex.swift: не, до сих пор ide не работает
amurushkin: все сломалось код не компилится ))
Uljahn: отлично, шансы на сильвер повышаются))
Uljahn: думаю, топ 130-150 сразу пройдёт
Uljahn: контест-то длинный
MadKnight: а чё пишет?
MadKnight: amurushkin
amurushkin: у всех одно и тоже пишет :)
Alex.swift: An error occurred (#73): "Only 1 executor running at the same time for a test session".
amurushkin: научить бы еще не сразу мину взрывать а подождать когда поближе подойдет
BorisZ: блин пока ты спишь - враг качается, пока работаешь - враг тоже качается. Когда же он спит и работает???
WwW: привет! кто в курсе, какая здесь версия питона?
smirok: А в чем смысл этого сайта? Что-то есть интереснее, чем просто решение паззлов?
BorisZ: WwW 3.7 как минимум
amurushkin: хотите забавный лог покажу?
MadKnight: go
amurushkin: found exact opp place after my shooting 9 4 I found his place after trigger in radius 1 from 8 5 reduce opp places after shooting in radius 4 from 7 2 possible places = 0 | 10 4
MadKnight: ничё не понял
amurushkin: теряю противника после того как точно обнаружил ))
wlesavo: amurushkin я оцениваю потенциальный дамаг, если он выше порога взрываю
Alex.swift: smirok турнир между 1к+ ботами разных людей?
MadKnight: лол
MadKnight: логи - это всё же хорошо
MadKnight: https://www.codingame.com/ide/puzzle/coders-strike-back smirok
amurushkin: wlesavo: со взрывами да. тут у меня ситуация такая. я в него попал торпедой. точно определил где он. а потом по отсечениям взрыва моей мины которая тоже попала. и с учетом его выстрела торпедой я умудрился отсечь как то его положение. сейчас если будет повторяться то подебажу
wlesavo: ну ты считаешь весь урон на карте для кандидата с учетом его передвижения?
amurushkin: нет сейчас там ифы всякие
amurushkin: считать урон на карте почему то дает у меня плохие результаты
wlesavo: а, ну тогда понятно
wlesavo: в таком случае как раз можно отсечь при аддитивном уроне
BorisZ: уже коллектвным разумом решили что сонар сосет ?
BorisZ: я только его собрался запиливать
wlesavo: я еще не отключил, но использкю мало
amurushkin: блядство игра не повторяется с этим противником точь в точь. лови теперь этот момент
wlesavo: вот не люблю когда сабмитят без сида
MadKnight: воспроизведи на локалке
wlesavo: обычно ищу противника с сидом и против него дебажу
amurushkin: оказывается я против топ 1 еще неплохо сражаюсь ))))
dabino: мины то в мете еще? я их добавил, предыдущую версию рвет, но это потому, что оба бота начинают в одном месте и по одному пути идут..
Uljahn: мины имба
amurushkin: почему мой дебаг видно только когда я 1 игрок?
Uljahn: кто-нибудь пилил уворот от сонара сником или мувом, если рядом с границей секторов?
amurushkin: Uljahn: в этом смысла нет
wlesavo: ну что, ваши ставки, заработает аварийное всплытие или нет
Uljahn: amurushkin: почему?
Uljahn: если сонар угадал, число возможных позиций сокращается же, не?
MadKnight: wlesavo: ну, учитывая, что это кодил wlesavo....
wlesavo: вот я тоже так думаю
wlesavo: пока не очень работает, всмысле работает но эффект отрицательный
Uljahn: Automaton2000: декомпрессия при аварийном всплытии
Automaton2000: По крайней мере в варике можно было мапы строить(до сих пор) и много очень игр вышло по этим кастомкам
amurushkin: wlesavo: заработает. у меня же заработало ))
amurushkin: Uljahn: смотри сонар угадал. у него 25 позиций о тебе. ты делаешь мув он знает в какую сторону эти 25 позиций сдвинулись
wlesavo: amurushkin у меня предсказательное же всплытие, но по факту дамага
wlesavo: не*
MadKnight: smirok как успехи?
Uljahn: amurushkin: а если не угадал?
amurushkin: ну а если не угадал то у него -25 положений ))
Uljahn: ааааа
Uljahn: я тупанул
smirok: Чутка не понятен смысл
MadKnight: smirok в какой игре? в гоночках?
smirok: Вот те, кто уже прошли все пазлы, что тут делают?
MadKnight: в гоночки и кораблики
MadKnight: соревнования же
MadKnight: боты друг с другом сражаются на арене
smirok: У меня там пока только AI боссы
MadKnight: твой бот против бота amurushkin'a
MadKnight: да у тебя пока учебная лига
MadKnight: именно
MadKnight: когда победишь учебного бота
smirok: А еще, тут у меня углы и дистанции добавились, я сам должен их рассчитывать или их тут дергать можно откуда-нибудь?
MadKnight: всмысле
MadKnight: зачем тебе их рассчитывать если они тебе уже даны?
MadKnight: просто используй
MadKnight: сделай иф, проверяющий угол
MadKnight: например если машинка смотрит вообще не на чек, то не ускоряться
wlesavo: вроде реально минки обходит, в районе 160 хода забавный момент https://www.codingame.com/share-replay/442818935
MadKnight: smirok получается?
wlesavo: опа, апдейт с показыванием действий
wlesavo: а я уже так привык только к урону
wlesavo: эх, заново перепривыкать
amurushkin: ага резко поменялось ))
amurushkin: впринципе lost life можно было 3 цветом сделать
amurushkin: решил скрестить 2 системы. после моих ифов еще взрывы проверить сверху ))
amurushkin: несколько багов пофиксил. надеюсь не будет терять больше
wlesavo: amurushkin там помоему проблематично другим цветом сделать, в тултип передается игрок как параметр, и его цвет уже используется
amurushkin: апи несовершенно :)
amurushkin: я уже перестроился а тут опять ))) самое интересное что я опять недоволен )))))
SqueeCoder: В c#, на практике ссылочный тип string ведёт себя как и тип значений? Подскажите, если кто в курсе. А то не могу на практике придумать пример :cry:
metahom: да, ведет себя как значение
metahom: при изменении стринги создается новый экземпляр и ссылка переносится на него. соответсвенно осальные ссылки на предыдущий экземпляр не меняются
SqueeCoder: Спасибо, а то я уже не первый день бьюсь, возвращаясь к это теме. С мыслю - "То ли лыжи не едут, то ли месяц май":grin:
metahom: странно. гугл должен знать
Uljahn: наверное, все иммутабельные типы так себя ведут
SqueeCoder: Ну может он и знает, но чтобы задать этот вопрос, надо практически до этого допереть. А я вчитывался в docs.mycrosoft и никак не мог найти подвоха.
metahom: ты учишь только? на ulearn хороший курс лекций по шарпу
SqueeCoder: Спасибо большое, лишним не будет.
wlesavo: amurushkin отключил всплытие, оказалось его очень тяжело отбалансить, просто выбираю самый безопасный путь
amurushkin: а я решил переписать поиск начальной точки. теперь его тянет в углы почему то ))
Hamibar: ооо, апдейт. Вроде как получше стало.
Hamibar: я еще как-то не сильно упал за день)
wlesavo: ок, вроде с минами не крашнулось и вернулся в топ10
wlesavo: пожалуй хватит пока
wlesavo: о, топ 7 даже
amurushkin: как я и говорил половину взяли примерно
tutubalin: неделю ничего не делал - попал в серебро )
amurushkin: ну ничего удивительного ))
amurushkin: в золото уже будет сложнее
Uljahn: за неделю ещё половина оставшейся бронзы в серебро перейдёт
Alex.swift: Ого, аж 200 взяли. Думал хоть 50 перейдет
privatestatic: http://chat.codingame.com/pastebin/9e054ee6-3ff6-465b-9ba3-bfe6f55bdbe9
tutubalin: да, одна секунда
privatestatic: спасибо
tutubalin: прорва времени чтобы успеть предрассчитать всё необходимое и закупиться гречкой
Hamibar: хехе на 200м месте человек с отрицательным счетом.
Hamibar: Думал не бывает такого
wlesavo: Hamibar скорре всего там сломанный бот, который после апдейта не ресабмитился
privatestatic: по моим замерам считать 3 строки на каждом ходу занимает 30 милисикунд(
privatestatic: что то не то
tutubalin: считывание не учитывается
tutubalin: уж не знаю, как они это сделали
Hamibar: wlesavo ну да так и есть. каждый бой ошибка
Dspashkov: вопроси: вы для АИ хардкодите логику или предощущаете где-то?
wlesavo: privatestatic ход начинается после первого инпута
wlesavo: Dspashkov кто как, но чистым хардкодом далеко не уйдешь, нужны оценки какие-то
Hamibar: tutubalin это как? а если я буду считать что-то большое между приемом инпута?
wlesavo: Hamibar если ты поставишь счетчик после первого инпута время будет на 30-50мс меньше, сам недавно узнал
Hamibar: wlesavo выглядит как баг
privatestatic: в общем мои замеры какие то странные:sweat_smile:
privatestatic: но самое медленное сместо я нашелб так что есть что улучшать
Hamibar: хорошо, что я пишу на плюсах и там точно не нужно думать о времени) по крайней мере пока
privatestatic: у меня уже пригорает от timeout, который не воспроизводится
wlesavo: Hamibar не, это ожидаемое поведение как раз, твой код же с окружением взаимодействует, нельзя повесить таймер где угодно и ожидать что он будет работать как хочется
Uljahn: +
Uljahn: кстати, от вывода команды до следующего первого инпута время тоже учитывается в суммарное время ходы
Uljahn: хода
Uljahn: если отдельно замерить первый инпут, то эта строчка выполняется от 20 мс, за это время рефери парсит твой аутпут, пересчитывает состояние игрового мира, передаёт инпут боту противника, выполняет один game loop его бота, считывает его аутпут, парсит, пересчитывает мир и передаёт уже инпут тебе (но это не точно)
amurushkin: нашел тут случайно что карты оказывается продолжают жить https://jakubkowalski.tech/Projects/LOCM/ новые соревнования по ним идут даже
Hamibar: wlesavo ааа, не правильно понял просто)
wlesavo: допилил минки, придумал как лучше учитывать взорвавшиеся, вроде неплохо пока идет сабмит
wlesavo: ух ты, топ 5, так я еще не забирался
Hamibar: а чем взрыв мины от выстрела торпеды отличается? вроде точно также должно быть
wlesavo: не, я слежу за историей, раньше убирал просто по координате, теперь убираю еще и те которые отсекаются изза этого взрыва, там не тривиально изза дубликатов, но я еще и дубликаты потом повторно фильтрую когда информация добавилась