Chat:Ru/2020-03-26

From CG community
Revision as of 11:19, 15 June 2021 by Chat Log (talk | contribs) (Created page with "<img src=/a/25714480415254> tutubalin: BorisZ если была неопределённость из 100 вариантов, а потом 50 из них отсеклись....")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

tutubalin: BorisZ если была неопределённость из 100 вариантов, а потом 50 из них отсеклись. стало вдвое меньше, энтропия уменьшалась на 1 бит.

а если было 100 вариантов, отсеклись 30, осталось 70 - энтропия уменьшилась на полбита

Uljahn: wlesavo: у сливания траекторий кажется есть побочный эффект - когда захочешь ретроспективно предсказать расположение мин

wlesavo: да, тоже думал об этом

wlesavo: но это общая проблема, не самого сливания

wlesavo: потому что у тебя может быть много траекторий приводящих в одну точку

Uljahn: но при сливании ты теряшь некоторые?

wlesavo: ну в таком виде как я храню ретроспектива не оч получается впринципе, нужна координата от времени

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

wlesavo: ато было глупо, прыгает и потом серфейсится

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

wlesavo: выглядит не очень сложно, но зато эффективно

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

wlesavo: ну вот да, если их не понерфят как обещали

wlesavo: и то даже с нерфом принципиально не факт что поменяется

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

Uljahn: тогда на минах палиться будешь на раз

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

wlesavo: ну просто иначе у тебя одна мина в теории покрывает целый сектор

wlesavo: ну чуть меньше чем сектор, но всетаки

Uljahn: угу

wlesavo: даже если ты точно знаешь точку в которой поставили

Uljahn: ну, можно по детонации уточнять тракеторию, координаты мины даются же?

wlesavo: ну это скорее всего даст очень мало информации

Uljahn: чё-т я не уверен на счёт голды уже :(

wlesavo: потому что после сайленса эта инфа бесполезна считай уже

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

dabino: всем привет. без мин вполне пока можно жить. я не очень понимаю, когда их ставить, мне пока на них "маны" не хватает

Hamibar: я ставлю как раз если хватает. А они в самом конце приоритета.

Hamibar: Кстати добавил обсчет мин взрывов мин соперника, но это совсем не дало прибавки. Немного странно

wlesavo: dabino если не слишком часто пользовать сайленс то много на мины остается

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

Hamibar: значит это фичи!

BorisZ: dabino о минах - https://www.codingame.com/replay/442405275

BorisZ: минами больше урона можно нанести даже теоретически - ими бьешь на все поле, а торпедами только вблизи

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

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

Hamibar: можно ведь получить туже инфу как от любого взрыва.

Hamibar: Если враг взорвал мину и не получил урона - значит его в этой области нет

BorisZ: это да, себя то вряд ли кто-то будет взрывать (

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

BorisZ: где-то )

Hamibar: ааа, ну это как-то сложно смотрится.

BorisZ: угу

Hamibar: я вот думаю если я вычислил точно соперника - могу ли я вычислить точно его траекторию?

BorisZ: я вычисляю - до предыдущего сайленса

Uljahn: именно

Uljahn: после двух сайленсов траектории могут приводить в одну точку, придётся их отдельно рассматривать, т.е. хранить

Uljahn: очень накладно, наверное

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

BorisZ: один раз

BorisZ: и так и останутся занятыми

Uljahn: мы наверное про ретроспективу

Hamibar: ну если точно знаешь его конечную позицию, то наверное не очень накладно.

Uljahn: т.е. до предыдущего сайленса вполне реально вычислять

Hamibar: до предыдущего сайленса по идее легко.

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

Uljahn: коллапс волновой траектории

Uljahn: кстати, точное определение одного куска между сайленсами может сколлапсировать другие куски полного пути за счёт проверки на самопересечение

wlesavo: BorisZ не совсем, два сайленса приводящие к одной конечной точке дат тебе вариацию траетории, то есть ты не можешь знать траекторию точно, если не успел между сайленсами отсеять одну из них

wlesavo: и это достаточно частый случай

Uljahn: но если потом ты определил противника, и продлил траекторию до предыдущего сайленса, и она заехала на одну из вариаций - она отсекается

Uljahn: в смысле, вариация в далёком прошлом

BorisZ: wlesavo если на текущий ход (без сайленса) ты знаешь точную позицию то можешь вычислить все пройденные точки до предыдущего сайленса

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

wlesavo: ну так я и говорю, если ты успел отсечь вариацию предыдущего сайленса

wlesavo: а если не успел

Uljahn: если отсечь достаточно вариаций таким образом, может отстаться только одна реальная

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

wlesavo: если не успел то у тебя есть разные пути приводящие в одну точку

BorisZ: но если эта точка точно известна, то уже не правда

BorisZ: парадокс )

wlesavo: нет,даже если точно известна точка после сайленса

wlesavo: тебе нужно знать точно до

BorisZ: так как вторую, последню часть мы можем точно восстановить

BorisZ: ладно я запутался в своих силлогизмах

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

BorisZ: зачем их хранить, если ими никак нельзя воспользоваться

BorisZ: а если позиция осталось одна, то взад легко путь вычислить

Uljahn: например, мины предсказывать, если их было немного в самом начале

Uljahn: до последнего сайленса

BorisZ: я думаю что это стоит записать в тасклист, но думать об этом пока не надо - все мутновато

BorisZ: есть простые фичи которые можно пилить прям сейчас

Hamibar: сейчас сделал, чтобы при сайленсе просчитывал путь назад до пред сайленса и отсекал ненужные лучи. Посмотрим что получится.

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

BorisZ: вангую ворвешься в топ )

BorisZ: Uljahn на каком ходу?

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

Uljahn: 342+

BorisZ: после последнего сайленса 10 позиций получилось, нет точной

BorisZ: просто мины то я взрываю на потенциальные тоже

Uljahn: ага, исключение потенциальных позиций

wlesavo: я мины начинаю взрывать от 10 кандидатов гдето

BorisZ: я с половины

BorisZ: всегда если сомневаешься - дели пополам )

wlesavo: с половины как то слишком растратно

BorisZ: бинарный поиск, все дела

wlesavo: проще сонаром чекнуть

BorisZ: не запиливал еще сонар

wlesavo: а ну тогда да, имеет смысл

DenShlk: BorisZ, а ты идешь в клетку, ближайшую к старту или как?

DenShlk: вроде похоже а вроде нет)))

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

wlesavo: мне очень хороший прирост дал сайленс нормальный и селфтрекинг

wlesavo: ну и баги вычищенные в куче мест

BorisZ: DenShlk да, у меня движение вобще не связано с остальными действиями - просто вакруг центра круги нарезаю, как в вуд2 сделал так и висит

Hamibar: ну у меня сейчас проблема в передвижении)

Default avatar.png Alex.swift: лига откроется завтра в 6 по GMT+1?

Uljahn: угу, плюс-минус

Default avatar.png the_timur: Ребзя, а в каком дивизионе появляются сонары, мины, сайленсы?

Default avatar.png Alex.swift: в дереве 1 сонар и сайленс

Default avatar.png Alex.swift: в бронзе мины

Default avatar.png the_timur: Thx

tutubalin: "значит враг проходил рядом когда-то и поставил там мину где-то )"

он мог с тех пор уже всплыть

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

BorisZ: это я не то что бы план действий - рассуждения вслух

BorisZ: как получить полбиты информации

BorisZ: раз уж ты в полубитах ее решил мерять )

BorisZ: возьмите атом водорода и разрежьте его острыми ножницами точно пополам )

MadKnight: в италии щас вообще весело

MadKnight: там выход на улицу только по карточкам

BorisZ: все там будем

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

MadKnight: а чел зовёт в крым на неделю

MadKnight: др отмечать

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

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

BorisZ: не говоря уже про моральные аспекты

Default avatar.png the_timur: А размеры карты и количество участников в одной игре будет менятся с дивизионами?

Default avatar.png Alex.swift: Написано в описании There won't be any additional rules.

Default avatar.png Alex.swift: хех, 93 при том что прописал только логику торпеды. Куда можно уехать на одной торпеде)

wlesavo: ну пол бронзы это вуд боты, так что норм

wlesavo: тяжелая артелерия пока не сабмитила еще, ближе к золоту наверное проснутся

reksar: Alex.swift

reksar: это в бронзе?

reksar: а, вижу

Default avatar.png Alex.swift: да. Но с учетом того, что у меня определение позиции врага по многим критериям дописано. Так что играет только торпеда с почти рандомным движением, но точность выстрелов неплохая

reksar: ну я в лесу живу) у меня определение врага только по его вектору движения, щас вот буду писать трекер пути)

DenShlk: https://www.codingame.com/replay/442543374 подскажите из за чего проиграл

Default avatar.png Alex.swift: слишком долго высчитывал ход

DenShlk: в аутпуте только дебаг до считывания действий противника

DenShlk: то есть сообщение под input() пишет а после нет

Default avatar.png Batya_S1: Можно ли записывать данные в файл?

Default avatar.png Alex.swift: DenHhlk Response time per turn ≤ 50 ms привысил этот лимит

DenShlk: ок, спасибр

Uljahn: Batya_S1: код в песочнице запускается

Uljahn: т.е. создать вроде можно, но он резетнется по завершению матча

Default avatar.png Batya_S1: ааа бан

Default avatar.png Batya_S1: а все же, можно ли хоть как-то сохранить данные?

mykeich: какие?

Default avatar.png Batya_S1: значение переменных

Default avatar.png Alex.swift: на следующий матч?

Uljahn: значения переменных сохраняются в течение матча, если ты их как-то не перезаписываешь

Default avatar.png Batya_S1: то есть нельзя их перезаписать

Uljahn: если ты про инпуты, то заведи отдельную переменную, и в неё сохраняй

Uljahn: ты какой-то пазл решаешь или в контесте участвуешь?

Default avatar.png Batya_S1: Coders Strike Back

Uljahn: в пазл про тора решал? там есть помощь, где показана работа с переменными

Default avatar.png Batya_S1: спасибо

Uljahn: https://www.codingame.com/training/easy/power-of-thor-episode-1 как в IDE зайдёшь - слева кнопка Hints

Uljahn: только язык сначала выбери, какой тебе надо

wlesavo: Uljahn чето у тебя крашится бот https://www.codingame.com/share-replay/442539765

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

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

wlesavo: а у меня уже 850 строчек, точно самое крупное что писал

wlesavo: из ботов

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

Default avatar.png the_timur: У меня пока 370, Но это только трекер

mykeich: BorisZ, а почему после моего silence твой бот видит всего 5 вариантов моего положения?

BorisZ: магия

BorisZ: хоть ссылку дай

mykeich: https://www.codingame.com/share-replay/442556685

BorisZ: а ход?

mykeich: сек

mykeich: да не суть, все ходы проверяешь или упрощенно? я все и у меня как будто больше вариантов получается

BorisZ: не знаю может у меня ошибка

BorisZ: но вроде с этим вариантом трекинга в 0 кандидаты не уходили не разу - я решил что это признак что все более-менее

mykeich: похоже а то

BorisZ: если позиция точная хот раз стала известна то я отмечаю пройденные ячейки назад по времени

BorisZ: чтоб с ними потом кандидаты не пересеклись

Default avatar.png Alex.swift: а мину можно затригерить на том же ходе что и поставил?

BorisZ: то есть часть твоего пути старого я вижу

BorisZ: Alex.swift нет, там прямо сказано в правилах что нельзя

BorisZ: . You can't place and trigger a mine in the same turn.

Default avatar.png Alex.swift: а, увидел. Не дочитал, спасибо

BorisZ: Вот блин сейчас сам задумался - это речь идет об одной и той же мине или разные тоже нельзя (

Default avatar.png Alex.swift: я думал о том, чтоб кидать мину на игрока, улетать на сайленсе и тригерить ее)

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

BorisZ: у меня вот может в один ход поставить одну мину и триггернуть другую - хз теперь это просто не попадалось или вправду можно

DenShlk: можно, кажется у меня где то так было в реплее

DenShlk: https://www.codingame.com/replay/442552446

DenShlk: как же идеально совпадают трекеры))

DenShlk: хотя сразу после silence у тебя меньше (302-315)

BorisZ: DenShlk действительно, 212 ход у тебя - и ставишь мину и триггеришь другую, все переваривается

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

DenShlk: ты ведь на питоне пишешь? сколько у тебя на тик уходит?

DenShlk: у меня общие функции, просто по 2 раза вызываю)

BorisZ: почти нисколько не уходит, нет пока никаких переборов

BorisZ: elapsed: 0, max: 1

DenShlk: как ты так пути пересчитываешь?

DenShlk: без переборов всм

BorisZ: один раз нахожу connected components, шагаю туда где площадь больше

DenShlk: круто, а у меня в каждом тике это))

BorisZ: я тоже раз в ход считаю - меняется граф проходимости

Uljahn: общие функции - моя мечта

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

Default avatar.png Alex.swift: Uljahn а ты говорил у тебя флудфил быстро работает? Подскажешь по какому принципу ты его делал? У меня если карта пустая 5мс уходит, думаю как ускорить

Uljahn: на деке из collections с сетом для проверки посещённых

Default avatar.png Alex.swift: спасибо, почитаю доку чтоб найти аналог

Uljahn: http://chat.codingame.com/pastebin/a718f2e3-7935-461b-a68f-ca2b81a40736

Uljahn: get_neighbors выдаёт список координат соседних клеток

Default avatar.png Alex.swift: хм, у меня точно так же(

Default avatar.png Alex.swift: а сколько у тебя обход по всей карте занимает?

Uljahn: ща затестирую

Uljahn: 0.6 - 1.5 мс в зависимости от заполненности карты

Uljahn: у меня карта в numpy массиве хранится, может из-за этого

Default avatar.png Alex.swift: в 3 раза быстрее :disappointed:

Uljahn: ещё можно на первом ходу для каждой ячейки соседей найти заранее

Uljahn: можно избавиться от проверок на выход за границы с помощью окантовки массива одним рядом непроходимых клеток

Uljahn: только тогда индексы сместятся на [1, 1]

Uljahn: в общем, ускорений дофига, как в плейграунде про bfs на битбордах

Uljahn: не помню, тебя я кидал или кому-то другому https://www.codingame.com/playgrounds/38626/optimizing-breadth-first-search

Hamibar: сколько раз вы им пользуетесь, что его ускорять надо?

Default avatar.png Alex.swift: ага, но потребует больших переделок

Default avatar.png Alex.swift: Hamibar 3 раза, но 13.5 мс дает меньше времени на другие операции

Hamibar: ааа, у вас язык такой)

Uljahn: значит, неэффективно соседей вычисляешь

Uljahn: Alex.swift: у тебя карта в списке списков что ли?

Uljahn: http://chat.codingame.com/pastebin/aa0cf05b-46ca-4524-877f-6511c7e402ab

Uljahn: этот код не проверял, у меня немного другой

BorisZ: у меня карта - словарь грубо говоря {point: {nbrs}}

Uljahn: предрасчёт?

BorisZ: дольше 2мс на раунд не было

BorisZ: тоже питон

Uljahn: у меня довольно универсальный код, можно разные препятствия задавать

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

Uljahn: ого

BorisZ: по словарю на все

Uljahn: вот это тема

Uljahn: пасябки

Default avatar.png Alex.swift: У меня карта сет из проходимых участков. Так что у соседних координат делается интерсекшн с сетом доступных

BorisZ: потом пересечение сетов на все - видимо это быстрее намного чем циклами

BorisZ: или вычитание

Default avatar.png Alex.swift: ох, по нелепому до 0.4мс ускорил

Default avatar.png Alex.swift: вместо интерсекшна с картой начал просто проверять содержит ли она такую точку

Uljahn: :)

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

BorisZ: в серебро наверное

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

amurushkin: нет я про глобальную цель ))

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

Default avatar.png Alex.swift: страшно подумать какие тактики у людей будут если все что приходит в голову самое реализуемое топы уже сделали

BorisZ: amurushkin не бросай нас )

BorisZ: Alex.swift нужно найти, что можно перебирать, свои ходы, вражеские ходы, минимакс на 1 ход вперед + что-то еще хз = заявка на победу

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

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

BorisZ: тогда всякие тактические штуки будут рулить, интереснее

BorisZ: amurushkin лучше больше мин и реже стрелять

BorisZ: я пытался стрельбу прикрутить поактивнее - хуже становится

amurushkin: он еще умудряется двойные мины ставить :)

amurushkin: хотя блин написал проверку

BorisZ: попробую вобще не стрелять если 5-6 жизней у врага )

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

wlesavo: amurushkin еще и на входе надо проаверить координаты сначала

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

wlesavo: аа

amurushkin: вроде другое дело пошло. теперь у меня 3-4 версии на проверку. с багом без багов, с сонаром или без. со взрывами или без ))

wlesavo: у меня убирались нормально, но были дубликаты

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

wlesavo: я допилил предсказание раскрытия информации, но пока только на движение

wlesavo: но движение вроде реально улучшилось

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

wlesavo: опаааа топ 6!

amurushkin: молодец

amurushkin: у меня вот тоже типа есть предсказание как меня соперник видит. и от этого ход выбираю. но похоже что то где то не то :)

tutubalin: wlesavo круто!

tutubalin: а свою игру никто не хочет запилить за 3 дня? )

tutubalin: https://www.staysafejam.org/rules

wlesavo: ну я все жду когда задроты засабмитят

privatestatic: http://chat.codingame.com/pastebin/f6ee2e2d-45c9-45a6-9b15-e562b9996c1b

privatestatic: у меня какие то странные ошибки если мой ход не первый то часто вылетает по таймауту на первом моем ходу.

privatestatic: при этом если жму "send to ide" то все нормально и я заметил что если добавить пару диагностических логов, то работает лучше.

privatestatic: одна стратегия - без логов на 160м месте, с лгами примерно 100:sweat_smile:

privatestatic: одна стратегия - без логов на 150м месте, с лгами примерно 100:sweat_smile:

Uljahn: время замеряешь, которое тратишь на ход?

Uljahn: выводи в MSG

amurushkin: о зашел на 30 ))

amurushkin: заработали минки и без учета взрывов