Chat:Ru/2020-03-22
tutubalin: я не трекаю всю траекторию. только те клетки, где он может находиться в данный момент
tutubalin: это как квантовое состояние. противник находится сразу в нескольких клетках, но мы его можем обнаружить там с какой-то вероятностью
Uljahn: в вуд2 нет сайленса, только всплытие
Uljahn: всё, я придумал как делать, решение пришло во сне
735487: тут хотя бы без сайленса сделать :)
[lazy]Opera: написал уже 350 строк, а до сих пор бот не умеет стрелять(
Uljahn: уметь стрелять - это одна строчка, уметь попадать куда надо - это ещё +300 строчек :)
Uljahn: Automaton2000: жми submit
Automaton2000: я хз как это все работает
Uljahn: Automaton2000: release the cat!
Automaton2000: a.exe из С или С++ у меня оба собираются
SqueeCoder: Не подскажите нубу, что вы здесь обсуждаете постоянно? Какой-то режим с ботами?
Uljahn: ага, сейчас контест идёт - онлайн соревнование, ещё 28 дней будет идти
Uljahn: в гоночки не играл ещё? Coders strike back в разделе multiplayer, там есть туториал для новичков
Uljahn: в мультиплеерах собраны прошедшие контесты, они без ограничений по времени и без призов, поэтому не так интересны
735487: на главной там нельзя не заметить контест. жми туда и вперед будешь вместе с нами обсуждать :)
Uljahn: если совсем нуб, то сначала наверное в чего попроще попробовать, чтобы разобраться
Uljahn: но можно и сразу в контест, ничем не рискуешь
735487: гоночки я думаю многих новичков еще физикой отпугивают
735487: как я пришел. смотрю гоночки. только что в раике не смог закодить другие гоночки. имел симу на питоне но не хватало времени перебирать траектории. и я сразу на них забил :)
735487: и пошел в клеши
Uljahn: да там не нужна физика, главное подсказки почитать, кнопки понять, попробовать что-то запилить простенькое
735487: кнопки понажимать есть onboarding
Uljahn: в мультах немного другие кнопки
735487: а вообще пора делать мульти месяца ))
SqueeCoder: Спасибо :) Хорошо, когда комьюнити отзывчивое.
Uljahn: ох, нифига се сабмит какой
Uljahn: amurushkin: я в бронзу собрался)
Uljahn: 2 поражения за весь сабмит, хехе
735487: не обольщайся впереди еще вуд 1 ))
735487: я все никак не соберусь написать что то еще
Uljahn: какой вуд-1? я уже в топ-30 бронзы
Uljahn: в вуд-1 я ещё утром вышел
735487: а ну молодец тогда. это без сайленса?
tutubalin: Uljahn поздравляю!
tutubalin: amurushkin в бронзу можно без сайленса. главное - не крашиться, когда его использует противник
735487: буду щас рефакторить прошлый код и начинать писать предсказани
Uljahn: сайленс запилил как у босса - юзаю вместо мува
tutubalin: на первом месте питонщик
735487: да я вот тут тоже сижу размышляю и на питоне намного все удобнее ))
Uljahn: ну это пока, потом все начнут переборы писать на плюсах
input.txt: всплываю с предпоследнего места в топ30
input.txt: вот что сайленс животворящий делает
735487: а я учусь сплит строки делать на плюсах ))))))
735487: я фигею что такой функции нет в языке
input.txt: stringstream
input.txt: strtok для любителей указателей
735487: ага но как то блин не по человечески )) то ли дело в питоне и пхп
metahom: блин, тут контест уже идет :(
metahom: всем привет
inoryy: hi
Hamibar: Так он на месяц же. Страшно представить какие монстры будут под конец.
Uljahn: уже же был месячный контест в прошлом году летом
Hamibar: и как? лидеров можно было догнать?
Uljahn: конечно
Uljahn: у лидеров столько же времени, что и у всех
Uljahn: я-то конечно не пробовал догонять - у меня лапки
inoryy: если не в топ3 метить то хоть за пару дней до конца можно догнать
Uljahn: в топ-6 смотрю попал один из россии - kindanoob, 15 левел, в других контестах даже в сотню не входил
inoryy: ну сейчас рановато смотреть
Hamibar: Если лапки - то догнать за 3 дня не получится)
Uljahn: нутк с лапками и аппетиты не такие огромные
Uljahn: в топ 10% попасть уже норм
Hamibar: Нужно же улучшать результат. Следующую ачивку взять.
Uljahn: результат сам улучшается, если интересно то, чем занимаешься, а то можно перегореть
Uljahn: имхо главное - фан от процесса, а не ачивки
Hamibar: Ну цель должна же быть какая-то. И след ачивка хороший вариант. А фан будет даже если в бронзе бегать.
Uljahn: мне в бронзу попасть было не так интересно, как заставить работать все трюки, что я в боте реализовал
Hamibar: Да я про это и говорю. Что фан не зависит от результата) ну или почти не зависит.
Uljahn: ну это да - две стороны одной медали
Uljahn: и правило 10к часов
input.txt: Надо придумать чем контрить сало, а то в половине игр все просто 200 ходов кругами плавают
input.txt: https://www.codingame.com/share-replay/441325349
input.txt: может мины?
Hamibar: можно выманить его огнем по пустоте)
input.txt: бей своих чтоб чужие боялись
tutubalin: сало контрится сонаром
tutubalin: или как-то предсказывать, куда он мог уйти
tutubalin: кстааааати!!!
tutubalin: он же может уйти только в 3 направления, а не в 4
input.txt: так и знал, что рано или поздно придется прикручивать траектории
input.txt: а, не
input.txt: есть же последний ход
input.txt: хм....
tutubalin: вотвот!
735487: а есть красивый способ по сектору набор клеток обойти?
input.txt: есть некрасивый спопоб!
input.txt: http://chat.codingame.com/pastebin/e14fa25d-3924-49f3-8e06-e005a50a47a5
tutubalin: for i in range(25):
x = i % 5 y = i // 5
735487: ок спасибо за некрасивый )) тоже пойдет
StepanSmirnov: есть и покрассивее
StepanSmirnov: y, x = divmod(where - 1, 3)
StepanSmirnov: ну и это в цикл само сабой
input.txt: не у всех тут языки со стековой моделью вычисления(
input.txt: хотя в с++ можно вернуть pair<>
735487: угу спасибо всем
Uljahn: это в случае, если всплытие было? или зачем сектор обходить?
735487: ну да всплытие и на будущее сонар наверное
[lazy]Opera: битмаски битмасками битмаски битмаксили)
[lazy]Opera: уже 400 строк битмасок
[lazy]Opera: и всё ещё не умеет стрелять
735487: ахаха у меня бот после вражеского всплытия считает что его больше нет нигде ))))
[lazy]Opera: я вот так парсю командыsize_t found2 = opponentOrders.find("MOVE");
if (found2 != string::npos) { char ch = opponentOrders[found2 + 5]; cerr << ch << endl;
735487: я команды распарсил уже. теперь ловить баги в поиске противника ))
input.txt: я тоже так делал
735487: а так приятно было видеть как количество точек уменьшается. но вот не факт что правильно
input.txt: но порядок важен же
[lazy]Opera: а есть игра где сначала ходит, а потом ранится торпедой уже на новом месте?
735487: да запросто я думаю
[lazy]Opera: так? https://www.codingame.com/share-replay/441356363
[lazy]Opera: стрелка из новой позиции
735487: во уже без учета сайленса и проверок стрельбы неплохо жахает :)
Uljahn: когда в бронзу?
Uljahn: моего тупенького костыльного бота уже в топ-20 затолкали
735487: щас чуток прикручу поиск по стрельбе
735487: выстрел по диагонали тоже цепляет?
Uljahn: да
Uljahn: сплэш дамаг в окресности Мура
Uljahn: но там единичка
Uljahn: хм, мины выглядят интересно, надо пилить будет по-любому
inoryy: мины имба
Uljahn: создатели контеста вышли в топ)
735487: где то куча багов. не всегда правильно трекает противника
MadKnight: какие у вас алго, посоны?
735487: найти и уничтожить ))
xoposhiy: жадный на 1 ход вперед :)
xoposhiy: ну там треккинг позиций соперника как в WW. И bfs в оценочной, как в WW
xoposhiy: Подскажите ещё какие-нибудь фишки
735487: у меня куча ифов на то кто стрелял и у кого хп отбавилось. но блин где то багует потому что не всегда правильно определяет
xoposhiy: Выкинь, станет лучше! :)
xoposhiy: я запилил стопочку if-ов вокруг торпед и количества жизней и посчитал количество раз, которое оно срабатывает за игру. Получается в среднем меньше единицы раз за игру.
xoposhiy: Скажите, как мины использовать? В смысле зачем?
wlesavo: ну ты не светишься когда ставишь
735487: у меня лучше было когда я забивал на сайленс ))
xoposhiy: забивал, в смысле не использовал?
735487: да
735487: я его итак не использую. я всмысле игнорил его использование соперником
735487: был на 15 месте в вуде. сейчас внизу ))
735487: оказалось был баг. он у меня не учитывал что после стрельбы противник еще передвинуться может
xoposhiy: Кстати, мой бот удивительно часто выбирает SILENCE 0. Типа, у него есть возможность улететь черте куда, он решает постоять на месте :( Пока не разбирался почему так
xoposhiy: Поэтому если кто-то игнорит silence противником, то он отлично меня побеждает :)
Uljahn: я игнорю сайленс (счтаю как раз за мув 0), пока траектория имеет смысл
Uljahn: бот вуд1 использовал сайленс 1, т.е. даже с неточной траекторией можно зацепить сплэшем
Uljahn: *босс
735487: походу собираюсь выйти в бронзу без стелса
inoryy: протип: сохраняйте историю действий и пересчитывайте с новой инфой типа взрыва мин
Uljahn: угу, думал как раз про историю
Uljahn: всё равно переписывать всё надо
wlesavo: да, история имеет смысл
Uljahn: мины ещё дают возможность стоять на месте, когда их детонируешь
Uljahn: вроде бы
735487: мсмита обыграть это круто?
Uljahn: хз, он битборды ещё пилит
Uljahn: вот допилит, тогда да
inoryy: сейчас никого не круто ))
Uljahn: а, ты в бронзе
735487: у меня движения сейчас очень примитивные
735487: но уже иногда угадывает точно соперника
inoryy: через неделю начнется фан когда всякие мцтс и экспектимаксы повылезают
Uljahn: ну да, ближе к серебру жара пойдёт
Uljahn: у меня даже хп противника и торпеды не трекаются, как в топ-20-то залез
Uljahn: Automaton2000: желудей и палок положить в бутыль, трясти пока не соберётся топовый бот
Automaton2000: лол. напиши сам makefile и будет make сразу работать
735487: а что у тебя там вообще? сам сайленс юзаешь?
inoryy: а кстати чем закончилась эпопея с никей?
Uljahn: забанили его
Uljahn: мэд устал бомбить
MadKnight: весь чат просил
inoryy: лол
Uljahn: я шучу
Uljahn: ну он правда уже тупизной утомил всех
MadKnight: про бомбить - это была отсылка
Uljahn: угу
Uljahn: amurushkin: юзаю сайленс вместо мув))
Uljahn: гиперкостыль
Uljahn: т.е. сайленс 1 в ту же сторону, что и мув бы пошёл
Uljahn: при этом стараюсь не заплывать близко к берегу и границам карты, вот и весь бот почти
Uljahn: примерно 200 LoC
735487: надо добавить себе и сравнить что получится
alex.swift: Uljahn как эти битборды работают? Битовое представление поля, а логика как обрабатывается? Вряд ли же там ифы по цифрам?
735487: надо запиливать более нормальное плавание. а то сейчас заплывает в тупики
735487: alex.swift: у него будет поиск на каком нибудь алгоритме. а за счет битбордов по идее сможет больше и глубже просчитать. теоретически как то так
alex.swift: т. е. просто представление данных упрощается для перфоманса каким-то процессингом?
wlesavo: у меня кстати первый бот с нормальным использованием numpy
735487: да простое впиливание silence вместо мува уже позволяет выше подняться
Uljahn: Alex.swift: https://www.codingame.com/playgrounds/38626/optimizing-breadth-first-search
wlesavo: просто к вуд 1 добавил трекинг сайленса и уже бронза, хм
wlesavo: без использования самого сайленса
Uljahn: wlesavo: круто, а мне удалось заюзать stride_tricks и rolling window
Uljahn: давно хотелось чего-то эдакого
wlesavo: правда где то косяк и иногда в пуле 0 остается, надо отловить его и вообще нормально будет
Uljahn: 0 уменя получается, когда соперник в сайленс уходит, тогда трекинг сбивается
wlesavo: в этом смысле сайленс даже помогает, накидывает в пул и бот тупит
735487: да у меня та же фигня была да и есть наверное. иногда 0 получается ))
StepanSmirnov: c numpy rolling window легко сделать можно
Uljahn: угу
wlesavo: не, я когда в сайленс уъодит сделал накидывание в пул на все координаты возможные, для всех возможных положений
Uljahn: оверкил
wlesavo: просто к моменту активации сайленса там уже достатончно отфильтьровано
StepanSmirnov: там можно заюзать BFS
wlesavo: и получается нормально, дальше тоже быстро фильтруется
Uljahn: хм
StepanSmirnov: только вместо начальной точки будет сразу массив
StepanSmirnov: из граничных точек
735487: wlesavo: я так же делаю
735487: только теперь еще и сонар походу нужен или стрелять чаще. у меня сейчас стреляет только если возможных положений не больше 4
wlesavo: ну я вообще просто фильруя и стреляя в бронзу въехал, ща надо будет уже думать
Uljahn: у меня 2 и меньше, причём стреляет на расстояние 5 (с учётом сплэша)
735487: щас захакаю предполагать что противник на сайленсе уходит на 1 клетку только
Uljahn: )))
wlesavo: у меня пока стрелял просто если в пуле находил координату
735487: во сразу побеждать ульяна стал ))
wlesavo: но это конечно не оч оптимально
wlesavo: лол
wlesavo: антиульян бот
Uljahn: зря спалил я свой секрет :crying_cat_face:
wlesavo: раскрывай после этого свои страты в чатике
735487: ахаха у меня баг. иногда ходит SILENCE S 1 TORPEDO ))))
inoryy: стрелять лучше реже, выдаёшь себя же
inoryy: мины лучше поэтому
MadKnight: шикарно, теперь наконец-то я могу покодить
MadKnight: я запилил скрипт, который кидает все репозитории в папку облака, фильтруя все файлы, которые не Staged
MadKnight: больше никаких толстых .vs или bin/ в облаке
Uljahn: на 12-е место запушили :scream_cat:
MadKnight: или учитывать и unstaged, чтобы отфильтровывались все из .gitignore ?
Uljahn: давно я так высоко не забирался
MadKnight: топ-12 кот
Alex.swift: вчера топ 8 был) день не сабмитился до 35 унесло
735487: обычное дело
Hamibar: cпустя 700 строк кода мой бот начал стрелять.
wlesavo: у меня 400 и он только стреляет
Hamibar: а зачем нужно что-то еще)
735487: у меня на 500 в бронзу вошел ))
tutubalin: amurushkin "у меня куча ифов на то кто стрелял и у кого хп отбавилось"
tutubalin: у меня там баг был - я в неправильный момент трекал
input.txt: что и мины поддерживает?
input.txt: я пока забил на этот комбинаторный взрыв
tutubalin: мой выстрел попадает до движения противника, а выстрел противника может попасть в него самого и после его движения
tutubalin: поэтому пришлось ифы в разные места поставить
tutubalin: когда всё было в одном месте, противник иногда "пропадал с радара"
735487: у меня кейс когда оба стреляли и попали не учитывается
input.txt: ну если оба на 2 можно и учесть
input.txt: такое бывает раз в 1000 лет только
input.txt: блин, они что вообще ничего не тестировали?
input.txt: когда ты справа, от сообщения MSG видны только первые две буквы, а остальное за экраном
MadKnight: input.txt так за несколько дней запилили же
MadKnight: они же написали
input.txt: за три дня написать контест, который длится 30 дней :thinking:
MadKnight: так они будут его фиксить в процессе
MadKnight: так что можешь просто сообщить об этом баге
MadKnight: и норм
input.txt: там уже кто-то сообщил
MadKnight: ну и норм
MadKnight: видишь? всё само собой пофиксится
input.txt: да, так я решаю проблемы - жду пока само пофиксится
Hamibar: Ну что погнали. Наконец засамбитил
Uljahn: из вуд2 сразу в бронзу?
Uljahn: чутка не хватило
Hamibar: нее, у меня команд нет новых. Любая из них таймаут вызывает)
Hamibar: Надо просто добавить
Hamibar: Интересно, а соперник может увидеть в реплее то что я в std::cerr пишу?
Uljahn: у меня обрабатывались только известные, ничего не таймаутилось, уже видать приучился к изменению правил)
Uljahn: не может
Hamibar: Ага спасибо. Ну я и рассчитывал на таймаут. Просто в вуд1 большинство людей не использует эти фичи.
Hamibar: Наверное тоже только вышли
Hamibar: зачем нужна команда MSG?
Uljahn: её как раз видно в реплее под аватаркой, в этом сообщении можно отладочную инфу выводить - сколько времени занял ход или сколько вариантов обсчитано
Uljahn: длина 13 символов обычно
735487: она не влияет на игровой процесс
Hamibar: Приветы передавать можно.
Uljahn: всё выше и выше заносит :smiley: скриншот на память, Automaton2000
Automaton2000: не то что ты скинул
Uljahn: столько уже багов нафиксил, а сабмитить страшно теперь
Hamibar: а ты проверь на тех, кому проигрываешь.
tutubalin: Uljahn молодец!
tutubalin: а меня уже на 48 место выкинуло с 11
tutubalin: вот что значит за целый день ни одной новой фичи не приделать
alex.swift: аналогичная ситуация. Решил не сабмитить пока работу не закончу и застрял)
Hamibar: Ну в бронзе конечно без сала и сонара не вариант играть)
735487: там еще и мины добавились. тут еще с сонаром не справился ))
[lazy]Opera: у nmahoude wallhack? Как он попал точно в противника в начале? https://www.codingame.com/share-replay/441450397
Uljahn: начал стрелять по возможным ближайшим точкам и попал на рандоме?
Hamibar: Он ведь часто стреляет совсем не туда
Hamibar: так что все норм
[lazy]Opera: просто посмотрел первую игру топов, и тут такой прикол)
Uljahn: nmahoude на 76 месте - явно на рандоме
735487: я тех кто часто стреляет фармлю на раз
Hamibar: Это как перестрелка снайперов, кто первый спалил свою позицию - проиграл.
[lazy]Opera: можно немного улучшить своё положение: стрелять всегда с одним смещением, чтобы накладывался один и тот же трафарет, и сайленсом размазывать
[lazy]Opera: но те, кто стреляет рандомом - самоубийцы)
735487: ухты я топ 2 на сабмите обыграл ))
Hamibar: значит ты топ 1?)
735487: почти )))
BorisZ: ну зверские конечно боссы нынче, не помню чтоб столько времени убивалось только чтоб из дерева выйти
BorisZ: сообщение пропадает правда справа когда - я добавил несколько символов в конце просто, сейчас все влазит
BorisZ: можно снова в стелс уйти ценой одного очка - всплыть и потом прыгнуть куда хочешь
BorisZ: ну или без всплытия если есть куда
Uljahn: стелс заряжать 6 ходов надо
Uljahn: или ты про что?
BorisZ: беречь видимо нужно
BorisZ: считать себя за врага, юзать сайленс только если сузились варианты
BorisZ: раз врага уже все считают, почему сябя не посчитать так же
Uljahn: думаю, некоторые уже так делают, мне просто выносливости не хватает пилить все идеи
Uljahn: на коленке собрал MVP, теперь рефакторить две недели
BorisZ: Mega Victorious Project? )
Uljahn: minimum viable product же
Uljahn: пруф ов концепт или типа того, всё прибито гвоздями, расширять - боль
BorisZ: звучит солидно и загадочно, но я удержусь от соблазна загуглить
Uljahn: я с того и начал, что замутил мапы с увеличением границ с шагом 1, чтобы найти равноудалённые области, где спавниться безопаснее
Uljahn: http://chat.codingame.com/pastebin/02231358-5fd2-432f-aed3-41405ea4f02c
Uljahn: кидал уже эти карты
Uljahn: по ним и навигацию можно делать безопасную
Uljahn: благо, что в нумпи в джве строчки всё делается
Uljahn: не навигация, конечно, а сами мапы
BorisZ: годная идея, оценил, хорошо придумал
BorisZ: то есть ты отдаляешь момент когда тебя вычислят
Uljahn: угу, но ещё нужен хороший поиск пути, генетика или dfs
BorisZ: но телепорт это приемущество нивилирует быстро (
Uljahn: не силён я в этих алгоритмах, флудфил - мой потолок)
735487: дфс тот же флудфил почти что
BorisZ: бфс скорее
Uljahn: у нас задача - поиск длиннейшего неуникального пути
Uljahn: чтобы накопить заряды хотя бы
BorisZ: я пока не заморачивался - хожу кругами вокруг центра
MadKnight: типа когда торпеду выпускаешь, тебя вычисляют?
BorisZ: потом наверняка будут другие тактические соображения, и этот поиск длиннейшего пути не актуален будет
Uljahn: я штрафую за приближение к суше и границам, так быстрее сужаешь свою детекцию
Uljahn: ну, это очевидные вещи
BorisZ: типа подбежать, шмальнуть торпедой и убежать пока у врага кулдаун
Uljahn: похоже, тут аналог UTG будет с минами
BorisZ: ну или с минами чего-то там, не читал еще про мины даже )
Uljahn: мины не выдают положения
Uljahn: торпеда выдаёт область, из которой мог быть сделан выстрел
Uljahn: чем больше играешь в контесты - тем меньше фана, как и с просмотром аниме :/
Uljahn: одни и те же идеи повсюду
BorisZ: ну по такой логике от порно все должны уставать за пару десятков просмотров
Uljahn: справедливо
Uljahn: Automaton2000: нужен ли ботам отдых?
Automaton2000: да я так и не смог
735487: я сонар прикручиваю мои ожидания велики )
Uljahn: я сайленс на единичку юзаю нонстоп и всё
Uljahn: торпеды только наверняка
735487: у меня еще на еденичку бывает себя хоронит вместе с врагом
735487: https://www.codingame.com/share-replay/441527141 вот как тут
Uljahn: так приделай нормальную стрельбу
Uljahn: чтобы себя не зацепляло
Uljahn: в общаке тоже речь зашла о строках кода, вот если все используемые нумпи функции из исходников подтянуть, это может легко и 10к строк получиться :)
Uljahn: там же такая жесть творится
735487: у меня такое ощущение что версия с сонаром которая реже юзает сайленс играет хуже ))
Uljahn: такс, топы говорят, что анализируют около 5к путей
Uljahn: на джяве
735487: то чувство когда ты анализируешь 4 )))))
Uljahn: то чувство, когда не анализируешь вообще..
BorisZ: я вобще уже не укладываюсь в 50 мс при вычислении позиции врага
BorisZ: каждый сайленс дает кучу вариантов
735487: я просто добавляю их все
BorisZ: запилил через рекурсию, показалось проще
Uljahn: у меня 2мс на ход и на первый даже :)
Uljahn: уже на 30-е место выдавили :scream_cat:
Uljahn: пипец там зарубы
BorisZ: всегда не доверял рекурсиям этим
Uljahn: рекурсии сложно дебажить и контролировать
735487: кумарит когда при ничьей тебе проигрыш ставят
BorisZ: да перемудрил я - каждый ход все дерево возможных ходов перевычисляю от начала
BorisZ: понял уже как проще
735487: я вот с минами не пойму как их ставить. типа ставим и потом ждем что противник там будет проплывать?
Uljahn: да
Uljahn: можно предсказать, когда противник будет знать твоё положение, и поставить мин на подходе
Uljahn: или наоборот, заминировать место, куда противник скорее всего плывёт ныкаться
Uljahn: в конце матча можно стоять на одном месте и взрывать
Uljahn: mind games как в UTG