Chat:Ru/2020-03-26
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: ну у меня сейчас проблема в передвижении)
Alex.swift: лига откроется завтра в 6 по GMT+1?
Uljahn: угу, плюс-минус
the_timur: Ребзя, а в каком дивизионе появляются сонары, мины, сайленсы?
Alex.swift: в дереве 1 сонар и сайленс
tutubalin: "значит враг проходил рядом когда-то и поставил там мину где-то )"
он мог с тех пор уже всплыть
BorisZ: если хранишь все старые траектории - после взрыва часть из них отсеется может быть
BorisZ: это я не то что бы план действий - рассуждения вслух
BorisZ: как получить полбиты информации
BorisZ: раз уж ты в полубитах ее решил мерять )
BorisZ: возьмите атом водорода и разрежьте его острыми ножницами точно пополам )
MadKnight: в италии щас вообще весело
MadKnight: там выход на улицу только по карточкам
BorisZ: все там будем
wlesavo: MadKnight так у нас тоже чето говорили про бумажные разрешения на хождение по москве
MadKnight: а чел зовёт в крым на неделю
MadKnight: др отмечать
BorisZ: я бы не поехал хотя бы из соображений что можно туда уехать, а обратно не пустят, шанчы не нулевые
wlesavo: не, обратно точно пустят, но могут посадить на карантин
BorisZ: не говоря уже про моральные аспекты
the_timur: А размеры карты и количество участников в одной игре будет менятся с дивизионами?
Alex.swift: Написано в описании There won't be any additional rules.
Alex.swift: хех, 93 при том что прописал только логику торпеды. Куда можно уехать на одной торпеде)
wlesavo: ну пол бронзы это вуд боты, так что норм
wlesavo: тяжелая артелерия пока не сабмитила еще, ближе к золоту наверное проснутся
reksar: Alex.swift
reksar: это в бронзе?
reksar: а, вижу
Alex.swift: да. Но с учетом того, что у меня определение позиции врага по многим критериям дописано. Так что играет только торпеда с почти рандомным движением, но точность выстрелов неплохая
reksar: ну я в лесу живу) у меня определение врага только по его вектору движения, щас вот буду писать трекер пути)
DenShlk: https://www.codingame.com/replay/442543374 подскажите из за чего проиграл
Alex.swift: слишком долго высчитывал ход
DenShlk: в аутпуте только дебаг до считывания действий противника
DenShlk: то есть сообщение под input() пишет а после нет
Batya_S1: Можно ли записывать данные в файл?
Alex.swift: DenHhlk Response time per turn ≤ 50 ms привысил этот лимит
DenShlk: ок, спасибр
Uljahn: Batya_S1: код в песочнице запускается
Uljahn: т.е. создать вроде можно, но он резетнется по завершению матча
Batya_S1: а все же, можно ли хоть как-то сохранить данные?
mykeich: какие?
Alex.swift: на следующий матч?
Uljahn: значения переменных сохраняются в течение матча, если ты их как-то не перезаписываешь
Batya_S1: то есть нельзя их перезаписать
Uljahn: если ты про инпуты, то заведи отдельную переменную, и в неё сохраняй
Uljahn: ты какой-то пазл решаешь или в контесте участвуешь?
Uljahn: в пазл про тора решал? там есть помощь, где показана работа с переменными
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: главное хочу сегодня запустить оценку выдаваемой информации при действиях
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: чтоб с ними потом кандидаты не пересеклись
Alex.swift: а мину можно затригерить на том же ходе что и поставил?
BorisZ: то есть часть твоего пути старого я вижу
BorisZ: Alex.swift нет, там прямо сказано в правилах что нельзя
BorisZ: . You can't place and trigger a mine in the same turn.
Alex.swift: а, увидел. Не дочитал, спасибо
BorisZ: Вот блин сейчас сам задумался - это речь идет об одной и той же мине или разные тоже нельзя (
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: у меня общие, но с флагом всетаки чья команда пришла
Alex.swift: Uljahn а ты говорил у тебя флудфил быстро работает? Подскажешь по какому принципу ты его делал? У меня если карта пустая 5мс уходит, думаю как ускорить
Uljahn: на деке из collections с сетом для проверки посещённых
Alex.swift: спасибо, почитаю доку чтоб найти аналог
Uljahn: http://chat.codingame.com/pastebin/a718f2e3-7935-461b-a68f-ca2b81a40736
Uljahn: get_neighbors выдаёт список координат соседних клеток
Alex.swift: хм, у меня точно так же(
Alex.swift: а сколько у тебя обход по всей карте занимает?
Uljahn: ща затестирую
Uljahn: 0.6 - 1.5 мс в зависимости от заполненности карты
Uljahn: у меня карта в numpy массиве хранится, может из-за этого
Alex.swift: в 3 раза быстрее :disappointed:
Uljahn: ещё можно на первом ходу для каждой ячейки соседей найти заранее
Uljahn: можно избавиться от проверок на выход за границы с помощью окантовки массива одним рядом непроходимых клеток
Uljahn: только тогда индексы сместятся на [1, 1]
Uljahn: в общем, ускорений дофига, как в плейграунде про bfs на битбордах
Uljahn: не помню, тебя я кидал или кому-то другому https://www.codingame.com/playgrounds/38626/optimizing-breadth-first-search
Hamibar: сколько раз вы им пользуетесь, что его ускорять надо?
Alex.swift: ага, но потребует больших переделок
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: пасябки
Alex.swift: У меня карта сет из проходимых участков. Так что у соседних координат делается интерсекшн с сетом доступных
BorisZ: потом пересечение сетов на все - видимо это быстрее намного чем циклами
BorisZ: или вычитание
Alex.swift: ох, по нелепому до 0.4мс ускорил
Alex.swift: вместо интерсекшна с картой начал просто проверять содержит ли она такую точку
Uljahn: :)
amurushkin: решил в версию со взрывами встроить кое какие мины и отключить сонар )) дальше только баги фиксить походу либо забагованый код обратно сабмитить и идти на нем в золото
BorisZ: в серебро наверное
BorisZ: смысл в серебро попадать при открытии - куча времени впереди, успеешь еще
amurushkin: нет я про глобальную цель ))
amurushkin: не получилось у меня написать незабагованый код. а заново не хочу. в итоге скорее всего брошу
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: заработали минки и без учета взрывов