Chat:Ru/2020-03-22

From CG community
Jump to navigation Jump to search

tutubalin: я не трекаю всю траекторию. только те клетки, где он может находиться в данный момент

tutubalin: это как квантовое состояние. противник находится сразу в нескольких клетках, но мы его можем обнаружить там с какой-то вероятностью

Uljahn: в вуд2 нет сайленса, только всплытие

Uljahn: всё, я придумал как делать, решение пришло во сне

735487: тут хотя бы без сайленса сделать :)

Default avatar.png [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: ну да всплытие и на будущее сонар наверное

Default avatar.png [lazy]Opera: битмаски битмасками битмаски битмаксили)

Default avatar.png [lazy]Opera: это про мой код

Default avatar.png [lazy]Opera: уже 400 строк битмасок

Default avatar.png [lazy]Opera: и всё ещё не умеет стрелять

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

Default avatar.png [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: но порядок важен же

Default avatar.png [lazy]Opera: а есть игра где сначала ходит, а потом ранится торпедой уже на новом месте?

735487: да запросто я думаю

Default avatar.png [lazy]Opera: так? https://www.codingame.com/share-replay/441356363

Default avatar.png [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: надо добавить себе и сравнить что получится

Default avatar.png alex.swift: Uljahn как эти битборды работают? Битовое представление поля, а логика как обрабатывается? Вряд ли же там ифы по цифрам?

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

735487: alex.swift: у него будет поиск на каком нибудь алгоритме. а за счет битбордов по идее сможет больше и глубже просчитать. теоретически как то так

Default avatar.png alex.swift: т. е. просто представление данных упрощается для перфоманса каким-то процессингом?

wlesavo: у меня кстати первый бот с нормальным использованием numpy

735487: да простое впиливание silence вместо мува уже позволяет выше подняться

Uljahn: Alex.swift: https://www.codingame.com/playgrounds/38626/optimizing-breadth-first-search

Default avatar.png Alex.swift: спасибо

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 кот

Default avatar.png 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: вот что значит за целый день ни одной новой фичи не приделать

Default avatar.png alex.swift: аналогичная ситуация. Решил не сабмитить пока работу не закончу и застрял)

Hamibar: Ну в бронзе конечно без сала и сонара не вариант играть)

735487: там еще и мины добавились. тут еще с сонаром не справился ))

Default avatar.png [lazy]Opera: у nmahoude wallhack? Как он попал точно в противника в начале? https://www.codingame.com/share-replay/441450397

Uljahn: начал стрелять по возможным ближайшим точкам и попал на рандоме?

Hamibar: Он ведь часто стреляет совсем не туда

Hamibar: так что все норм

Default avatar.png [lazy]Opera: просто посмотрел первую игру топов, и тут такой прикол)

Uljahn: nmahoude на 76 месте - явно на рандоме

735487: я тех кто часто стреляет фармлю на раз

Hamibar: Это как перестрелка снайперов, кто первый спалил свою позицию - проиграл.

Default avatar.png [lazy]Opera: можно немного улучшить своё положение: стрелять всегда с одним смещением, чтобы накладывался один и тот же трафарет, и сайленсом размазывать

Default avatar.png [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