Chat:Ru/2020-05-15
 BorisZ: Начинаю все переписывать в четвертый раз. 
 BorisZ: если не взлетит то сдаюсь
 BorisZ: поеду на дачу
 BorisZ: в деревню, в глушь в саратов
 BorisZ: надо уметь отступать
 BorisZ: маньяки долго не живут )
 mykeich: BorisZ ужас
 gybson_samara: Programming language colorization is up to 3 times faster
 gybson_samara: MS нас балует =)
 Hamibar: BorisZ живут не долго, но зато ярко!
 metahom: тяжело вообще в голду попать?
 Uljahn: смотря откуда лапки :disappointed:
 metahom: ))
 metahom: ну предположим лапки посередине между
 Hamibar: если посередине тогда легко. 
 dbf: не очень тяжело, а вот потом кажется человек у 200 почти одинаковые боты и непонятно чего делать :)
 dbf: т.е. понятно, что трекер врага, но непонятно как
 metahom: ясно, спасибо. мож тогда на выходных запинаю себя
 wlesavo: я тут кстати подумал про разные чатиковые идеи, надо все таки реализовать, tutubalin таки прав, просто концепцию нападений изза угла нужно обобщить на нападения когда тебя противник не видит а ты его видишь
 Hamibar: странный контест. Почему-то не особо выбивают из топ 50.  Хотя казалось бы уже давно должны были 
 Hamibar: может действительно уже почти не чего улучшать
 Borrow: а запирание в тупиках уже многие реализовали?
 gybson_samara: а как ты запрешь? тебя сожрут
 Borrow: видишь жертва зашла в тупик - заходишь за ней следом
 Hamibar: я у многих топов видел
 Borrow: если она свитчается, свитчуешься сам и съедаешь
 Hamibar: ну у некоторых точно
 Borrow: если не свитчается, съедаешь так
 Hamibar: на самом деле это риск
 Hamibar: нападать когда кулдаун 0
 gybson_samara: а главное зачем?
 Hamibar: ну вот ты меня зажал. У меня есть выбор свичнуться или нет. Если нападешь, а я свичнусь, то погибнет твой пак
 gybson_samara: зачем этим заниматься то?
 Borrow: я должен нападать на тебя, но не 100%
 Hamibar: ну и получается небольшая угадайка
 Borrow: но если ты в оборонных целях свитчнешься раньше чем я напал, ты съеден
 Hamibar: но думаю все равно более менее выгодно
 Borrow: фактически тебе надо угадать момент когда я напал в точности
 Hamibar: gybson_samara у тебя становиться на 1 пака больше, чем у врага)
 Borrow: так что если я например жду random(1,5) ходов перед нападением, у тебя шанс 20% выжить.
 Hamibar: и на самом деле, если твоего пака съели  на ранних ходах, то почти нет вариантов выиграть
 Hamibar: ну да, по идее нападающий в более выигрышной ситуации
 gybson_samara: нападающий в проигрышной, так как во время его хода обороняющийся просто свитчится
 gybson_samara: а еще и догнать надо
 gybson_samara: Uljahn вот есть nonzero, а как нулевые то элементы искать?
 Borrow: не надо догонять если жертва в тупике
 Hamibar: Borrow правильно написал, обороняющемуся нужно угадать точны момент нападения. А атакующий может подождать
 gybson_samara: если он ждет, то он уже какой-то совсем и не нападающий
 Hamibar: подождать пару ходов, а потом получать профит остальные 50-100 звучит как хороший размен.
 Hamibar: Но действительно не уверен, что это даст большой прирост рейтинга.
 Borrow: потом, жертва же тоже ждёт
 Borrow: так что это даже не потеря времени
 Borrow: кароче по-моему любому у кого хватает сил закодить это поведение, нужно закодить
 Uljahn: gybson_samara: numpy.nonzero(arr == 0) или np.where использовать, зависит от ситуации
 gybson_samara: Uljahn dtype = np.int8 уводит в ТА, она с float больше дружит?
 Uljahn: нет
 Uljahn: что-то не так делаешь
 wlesavo: gybson_samara время померь, уверен что именно таймит? или локально потести
 Uljahn: мне кажется, это из-за того, что у тебя нумпай с питонячьими структурами данных смешан
 wlesavo: nonzero конечно нетривиальный вывод дает на первый взгляд
 Uljahn: желательно что-то одно использовать преимущественно, иначе оверхед на преобразование типов сожрёт весь профит
 Uljahn: nonzero и where выдают результаты для использования при индексировании, перевести в 2D массив индексов можно так: np.array(np.where(arr == 0)).T
 Uljahn: если arr двухмерный, конечно
 wlesavo: Uljahn как применить операцию хитрую для каждой точки без лупа по массиву? есть какиенибудь интересные методы?
 wlesavo: типа заполнить соседние точки для этой если они меньше какогото значения
 wlesavo: я видел в книге нумпайной такое, но не разобрался с реализацией
 wlesavo: я скорее не понял как они к этому массив готовят
 wlesavo: ну и сам луп тоже несовсем
 Uljahn: есть метод применения функции к элементу массива в зависимости от окружающих элементов, типа свёртки
 Uljahn: https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.generic_filter.html
 Uljahn: я в пазле minesweeper применял его
 Uljahn: типа найти количество мин в окрестности клетки
 Uljahn: там небольшая масочка пробегает по всем элементам, выделяет область вокруг, и передаёт в функцию, потом результат записывается в элемент
 wlesavo: хм
 wlesavo: посмотрел, да похоже
 wlesavo: но вроде это не оч быстро
 Uljahn: ну, должно быть быстрее, чем на чистом питоне
 Uljahn: да и кода писать меньше, плюс грамотно скомпилированные библиотеки могут получать буст от возможностей проца, есть это intel, то рекомендую посмотреть на MKL и ironpython
 Uljahn: ой, intelpython конечно
 Uljahn: у них свой канал в конде
 vrabosh: в золоте играют люди которые перебором ищат пути?
 735487: а вообще в золото реально пройти без переборов путей?
 vrabosh: я через граф сделал
 Uljahn: эйлер что-то про глубину 4 говорил
 vrabosh: типа волну пускаю, и он мне показывает где ближайшая точка.. ну и там небольшие манипуляции с весами
 vrabosh: что за глубина 4?
 wlesavo: amurushkin генерация путей это 30 строчек кода, не ленись :slight_smile:
 735487: типа взять перебрать все пути недалекоие и там оценить количество коллизий и сколько сьем? и наверное еще надо тогда учитывать и ближайшее расстояние до следующей пелетки? я пытался заполнить всю карту ими. и потом те что вижу вес восстанавливаю а остальным каждй ход уменьшаю. и идти в место скопления веса. но я хз почему оно не работает хорошо совсем
 735487: wlesavo да у меня просто на работе завал. сроки уже давно закончились ))
 mykeich: amurushkin раз сроки провалил решил поиграть?:)
 wlesavo: я пытался сделать диаграммы вороного и по сумме диаграммы со скидкой определять направление, заработало в разы хуже чем рандомные пути, даже просто учет этого в оценке очень плохо работал
 BorisZ: у меня почти без перебора версия старая - нашел для одного пака лучший путь бфсом, потом для второго лучший, если пересекся с первым то следующий пока не утрясутся все  
 wlesavo: ну с произведением диаграммы на пелетки разумеется сумма
 BorisZ: с вороным интересно но сложновато в реализации - они же жрут друг друга (
 BorisZ: то есть твоя территория не факт что твоя если тебя опп может съесть
 BorisZ: между своими может только - чтоб у всех поровну было?
 735487: Uljahn: ты телеграмой пользуешься?
 dbf: "потом для второго лучший, если пересекся с первым" - у тебя длинные пути? просто непонятно стоит ли выкидывать путь, если вдали пересекается, все же может поменяться
 735487: mykeich:  нет я решил контест не кодить )) так для проформы спросил может получиться пару ифов дописать и в золото хотя бы пройти ))
 BorisZ: до ближайшей точки пути только, но этого недостаточно явно
 735487: wlesavo: я пробовал вороным разделить типа области чтобы свои друг другу не мешали. тоже почему то плохо зашло
 BorisZ: я уже списал в утиль эту версию
 Uljahn: amurushkin: не очень
 BorisZ: там какие-то зубодробильные оценки - дно короче
 wlesavo: BorisZ ну там да, деталей много и можно все очень по разному делать, у меня не получилось объективную оценку на этом запилить
 vrabosh: BorisZ , я с пересекающимися путями легко решил пробл.. просто пускаешь волну отовсех и у них появляются границы куда они не могут заходить чтоб не пересечься
 735487: Uljahn: там просто на канале русского CG комьюнити про тебя спрашивали ))
 vrabosh: и в приделах своего поля уже показывает ближайшую жирную точку куда идти
 BorisZ: vrabosh скорость то разная
 735487: vrabosh это у тебя похоже на вороного как раз
 BorisZ: или бфс с учетом скорости?
 Uljahn: amurushkin: угу, вижу)
 vrabosh: скорость тут не сильно и повлияет
 Uljahn: спроси, чего ему надо)
 vrabosh: всеравно они к границам не приближаются
 BorisZ: ну фиг знает, на первом то ходу точно повлияет, дальше меньше наверное, можно будет перестроится
 vrabosh: но бфс не выбирает идеальные пути.. точнее я нашел способ как даже хорошие пути выбирать. но столкнулся с проблемой когда на след ход он хочет назад вернутся
 BorisZ: хотя идея запустить бфс с учетом скорости каждого пака не выглядит шибко сложной, можно подумат)
 vrabosh: да не как не влияет.. они же к границам не идут. а чтобы с учетом скоростей гдето подошли к границам и еще и встретились. это  1 из миллион ситуац
 vrabosh: точно со скоростью можно не парится
 BorisZ: ты имеешь ввиду границы карты?
 BorisZ: вроде они тут не при чем, мы же с графом работаем, у него нет границ
 vrabosh: но с бфс яж говорю.. как искать идеальный путь? он то находит хорошо ближ лижайшие точки.. ну токам можно веса раставить. типа перекресткам больше вес дать..
 vrabosh: не карты границы.. а границы где юниты пересикаются.
 Uljahn: типа вороного для каждого своего юнита?
 Uljahn: а, amurushkin уже это подметил
 vrabosh: да
 vrabosh: я правда не зна кто такой вороного
 S0L0: это плохо работает , у меня так типа вороного
 Uljahn: так один юнит не может свою область захватить быстро
 vrabosh: во щаз как раз посмотрел.. а вороного
 vrabosh: зато они не пересикаются.. и каждый в своей области крутится.. ну и каждый ход же ситуация меняется
 S0L0: ну да свои не пересекаются
 Uljahn: а, ну если каждый ход перестраивать, то да
 S0L0: зато область построения  ограничена , порой она с 10 клеток
 vrabosh: на нампи оч быстро все это делается.. я даже не парюсь с таблицами.. когда надо для эксперемента новые создаю и забываю даже их отключать)
 S0L0: ему негде просто путь искать
 vrabosh: честно сказать, они у меня могут заходить за область.. только там веса маленькие
 vrabosh: т.е. когда у себя нету поинтов , то он уже ищет у чужего ближ лежащего
 vrabosh: если у себя поинта нет, он к союзнику заходит берет то, что ближе
 MelnikovIgor: Кто нибудь из топов юзает MCTS или что-то подобное с симуляцией
 MelnikovIgor: ?
 vrabosh: как симуляции делать? я хочу научится
 Uljahn: узнаем в постмортемах)
 vrabosh: вообще через волны хорошо они ищат поинты ближайшие и не мешают друг другу.. но пути выбирают не идеальные, не логичные точнее
 vrabosh: вот сейчас простенький беребор сделал.. где учитываю ход союзника.. мне кажется лучше пути ищет.. они могут даже рядом ходить но, при этом хорошо собирают и не пересикаюстя
 ashelkov: я вообще в шоке от того что вы тут пишете/ вороного, симуляции и прочее/ слышал конечно но хз что такое
==========
что типа bfs - нахожу пути (c запретом возврата назад при поиске) потом по всем путям считаю score ( тут пару коеф которые можно регулировать - unseen coef / distance) потом выбираю лучший путь и вперед
 Uljahn: так это по сути всё одно и то же
 Uljahn: флудфил ещё
 vrabosh: ashelkov , два bfc одновременно это и есть вороного
 Uljahn: кто как называет
 vrabosh: ashelkov, тоже столкнулся с проблемой что туда сюда ходят если запрет не делать?
 ashelkov: ну не ходят ибо score учитывает пройденные клетки 
 ashelkov: но тем не менее отсекаю их / зачем перенапрягать алгоритм
 ashelkov: depth 15 изи считает
 vrabosh: у меня бфс всю карту оч быстро считает..
 vrabosh: я разные вариации пробовал... порой было по 20 просчетов .. на каждого юнита, как своего так и противника делал.
 vrabosh: потом есть еще хитрасть, если пустить обратную волну от жирных точек и просумировать, то он найдет хорошие ходы на ближ лежайшие точки.
 ashelkov: противников даж не считаю / просто отсекаю поиск путей там где есть блокеры
 vrabosh: вот эта тема мне кажтся хорошо бы заработала в предыдущем конкурсе
 vrabosh: я рад, что попробовал решить задачу через бфс, я до этого контеста даж не слышал не разу, что такое графы
 vrabosh: просто тут задача для новичка по графам сложноватая.. надо разобраться с алгоритмом когда он может на одну и туже точку по несколько раз ходить.. 
 ilt: vrabosh >>как симуляции делать? я хочу научится
 ilt: в рефери есть game.java
 ilt: там public void performGameUpdate()
 ilt: делает симуляцию одного хода
 ilt: перепиши под свой язык и бота
 ilt: на входе варианты ходов
 ilt: на выходе состояние после хода
 vrabosh: впринципе при моей текущем алгоритме, если еще понижать приоритеты точке там где возможно прошелся противник.. то можно и в топ200 попробовать войти
 vrabosh: еще и тупиковым ветвям надо приоритет понижать.. 
 vrabosh: тут можно правилами два акаунта делать?
 zuko3d: вряд ли
 vrabosh: хочу прараллельно через перебор попробовать.. с нуля.. 
 Uljahn: нет, но многие делают
 Uljahn: например, некоторые стриммеры стримят со второго акка
 vrabosh: повод для бана, пускай даже малейший давать не хочется
 Uljahn: попробуешь в мульти
 vrabosh: щаз уже наверно допишу за сегодня все тонкости на текущий алгоритм.. и может завтра попробую
 gybson_samara: ^^$^%&^&$!!!!!!!!!!!! Забодай меня пчела
self.simfield[y][x] == STATE_PACK
 AntonT: сравнение вместо присваивания?
 Uljahn: классика
 Uljahn: а у меня команды для съеденных паков выводятся
 vrabosh: а зачем они сделали dead?
 Uljahn: чтобы знать, что ты съел противника, когда не видел его
 Uljahn: из-за угла например
 MelnikovIgor: А там и свои и противники помечаются как DEAD?
 MelnikovIgor: до конца игры?
 vrabosh: чтобы когда проходишь эту точку, можно былобы сообщения какие нить писать скорбящие)
 gybson_samara: притом это одно из самых важных присваиваний в игре
 735487: лол решил еще раз взглянуть на код где пытался считать скопления пеллетов. а там я к y прибавляю x )))
 vrabosh: Akarchuadra, общается тут?
 vrabosh: как он в топы входит?
 wlesavo: на скиле
 Uljahn: +на опыте
 wlesavo: + у него не лапки
 Uljahn: справедливо :/
 vrabosh: что за лапки?)
 MadKnight: он же кот
 vrabosh: wlesavo , а ты как топишь?)
 MadKnight: https://sun9-7.userapi.com/c628230/v628230735/49ced/Sn8AMqmVXcs.jpg
 MadKnight: вот этот кот
 wlesavo: vrabosh так я не топлю, 100 максимум при удачном сабмите
 MelnikovIgor: Как правильно считать тайм лимит? У меня разброс большой слишком
 wlesavo: ща вот хочу прикрутить пару вещей, может даст чето, но скорее всего нет
 Uljahn: начинай засекать после первого инпута
 MadKnight: "слишком" это сколько MelnikovIgor ?
 Uljahn: и GC отключай по возможности
 MelnikovIgor: Разброс большой от 50 до 200 мс
 MelnikovIgor: до падения
 MadKnight: тогда делай как Uljahn говорит
 vrabosh: MelnikovIgor, после интупта ставить
 MelnikovIgor: это не первый ход
 MadKnight: после первого инпута
 MadKnight: первого за ход
 Uljahn: после первого инпута в цикле
 MelnikovIgor: Иногда почему то 200 мс проходит
 vrabosh: не после последних?
 MelnikovIgor: После 1го ставлю, разброс офигенно большой
 MadKnight: покажи
 vrabosh: я после последних поставил.. у стало меньше 10мс.. так под 100 было
 dbf: > Иногда почему то 200 мс проходит
 MelnikovIgor: MadKnight ну у меня нет простого примера
 dbf: может это первый ход?
 MelnikovIgor: Нет, 1+
 Uljahn: иногда проходит чуть больше, но на следующий ход если опять превышение, то точно таймацт
 MadKnight: а до чего 200мс проходит? как проверяешь и узнаёшь?
 Uljahn: таймаут
 vrabosh: потомучто, я сделал ход. потом жду пока противник сделает ход.. и потом мне в инпут результат кидают
 vrabosh: после всех инпутов полюбому надо делать
 MelnikovIgor: MadKinight, симуляции, на каждые 20 симуляций вывожу  прошедшее время
 MelnikovIgor: В Error
 Uljahn: ну так ты и засекаешь после первого инпута и до вывода команды, vrabosh
 MadKnight: покажи строчку после которой время засекаешь
 MelnikovIgor: Прошедшее время считает StopWatch после 1го инпута
 MelnikovIgor:                 inputs = Console.ReadLine().Split(' ');
GlobalData.TickSw.Restart();
 MelnikovIgor:         public static Stopwatch TickSw = new Stopwatch();
 Uljahn: язык какой? может таймер неточный
 MadKnight: шарп же
 MelnikovIgor: C#
 MadKnight: да в шарпах же норм таймер
 Uljahn: может GC тогда
 MadKnight: а чё это за строка инпутов?
 MelnikovIgor: Угу, в других контестах проблем не было
 MelnikovIgor: Самай первая на ход (после 0 тика
 MelnikovIgor: Из примера
 Uljahn: наверное, кучу объектов создаёшь, потом сборка мусора тупит
 MadKnight: да он бы таймаутнулся просто
 vrabosh: да можно после первого интупа.. тазницы нету..
 MelnikovIgor: Но это не обьясняет почему 200 мс иногда влезает
 MadKnight: и не вывел уже ничего
 MelnikovIgor: именно
 vrabosh: среднее время отклика 5мс, мне можно еще развернуться
 MelnikovIgor: MadKnight давай попробую минимизировать пример, там посомтрю
 MadKnight: го
 Uljahn: "иногда проходит чуть больше, но на следующий ход если опять превышение, то точно таймаут", т.е. это вопрос к админам
 Uljahn: что они там накрутили
 Uljahn: го в дискорд
 MelnikovIgor: у когдингейма есть гист?
 MelnikovIgor: куски кода кидать
 MadKnight: ага
 MadKnight: они автоматические
 MadKnight: когда сообщение больше 4 строк
 MelnikovIgor: Минимальный пример довольно точно считает, проблема на моей стороне видимо.
 MelnikovIgor: Кому интересно код
 MelnikovIgor: http://chat.codingame.com/pastebin/5b7fa301-8f07-4b1c-afbc-8c547d36db38
 Uljahn: в шарпе же GC? нельзя его отключить как-нить? либо попробовать переиспользовать объекты, а не создавать новые
 MelnikovIgor: GC встрено в рантайм, не отключаетяс
 MelnikovIgor: Можешь сам неуправляемо аллоцировать в обход ГЦ и почти как на gk.cf[ gbcfnm
 MelnikovIgor: как на плюсах*
 MelnikovIgor: Пулинг обьектов норм тема, но это оптимизация, до неё еще не дошел
 Akarachudra: Привет. Тут скидывали ссылку на брутер - чтобы бились твои два бота. Может кто повторно скинуть?
 MelnikovIgor: О, еще один шарпист, расскажи секрет, юзаешь симы?)
 dbf: Akarachudra есть такое, но я не следил насколько это актуальная арена https://github.com/dreignier/cg-brutaltester/
 qbit86: Uljahn Например, в .NET Core есть ArrayPool<T>.Shared
 qbit86: ArrayPool<T>.Shared.Rent(minimumLength)
 MelnikovIgor: Но сам массив и обьекты в нем будут трекаться GC и пиниться в куче
 MelnikovIgor: Что все равно лучше чем каждый раз пересоздавать
 MelnikovIgor: Да и если глобально смотреть, видимо проблема в алгоритмах, а не в языке
 MelnikovIgor: Я особо нигде в язык не упирался, кроме крестиков
 qbit86: Пакманы — экземпляры ссылочного типа, они пересоздаются. Но их всего штук пять за ход (нет смысла заморачиваться с пулингом). А все остальные сущности в игре — или значимые типы, или пулятся (все коллекции, например).
 MelnikovIgor: Юзаю SmitsiMax получилось очень неочень
 MelnikovIgor: Я думал лучше зайдет
 MelnikovIgor: Рандомный перебор кажется лучше зашел бы)
 ashelkov: ну с богом/ сабмит пошел!
 gybson_samara: ААААААААААААААА!!!!
self.simfield[pac.y,pac.x] == STATE_FLOOR
В двух местах, собака такая
 gybson_samara: уже почти всех победил, когда заметил, что в какой-то момент у меня пропала информация о пелетках на карте ...
 ashelkov: ну очень неплохо! в топ 7 засабмитило!
 gybson_samara: грац
 ashelkov: а уже 8
 ashelkov: сенк)
 MelnikovIgor: ashelkov генетика, мктс?
 ashelkov: ни то ни другое/ обычный код )
 ashelkov: по факту пасфайндер с оценкой весов каждой клетки
 Uljahn: в легу на эвристиках :smiley:
 wlesavo: лол https://www.codingame.com/share-replay/464428810
 ashelkov: другой вопрос веса подорать верные
 ashelkov: тут то конечно неплохо бы генетику прикрутить но я не умею
 wlesavo: немая сцена просто в конце
 ashelkov: )) прикол
 S0L0: так тут задача только на эвристиках и есть , оптимального алгоритма нет как я понял (или не нашел)
 MelnikovIgor: ashelkov как борешься с тем что твой оптимальный путь может закрыть другой союзный под?
 Uljahn: убирать союзника с дороги?
 ashelkov: в оценке пути клеки которые входят в роуты союзников считаются как ноль
 Uljahn: а коллизии между своими как избежать?
 ashelkov: пасфайндер учитывает blockers - свои - 1клетка и чужие опасные - 2
 BorisZ: забавную ошибку нашел - не удалял из возможных точек вкусняху, которую враг съел, а я этого не видел)
 BorisZ: так она и жила на карте пока не добегу до нее 
 ilgiocatore: собирал фантомные вкусняхи
 BorisZ: и не увижу своими глазами что правда съели
 ashelkov: я эту штуку позавчера сделал))
 AntonT: а как определить, что её съели, пока не увидишь, что её нет?
 BorisZ: Super-pellets are so bright that they can be seen from everywhere!
 BorisZ: вкусняхи всегда дают в видимых точках, неважно видишь их на самом деле или нет
 AntonT: аа, вы про супер-пеллеты
 wlesavo: BorisZ ......... я даже не подумал об этом
 wlesavo: тоже удаляю только когда посмотрю
 NightLuna: а вы трекаете соперника?
 BorisZ: я ничего не трекаю, бесконца поиск путей переписываю (
 tutubalin: раньше просто стеной считал
 tutubalin: сейчас вот трекинг дописываю
 tutubalin: пока что получилось что-то неясное )
 BorisZ: я думал это про невидимых соперников
 tutubalin: так и есть
 NightLuna: BorisZ, та же проблема, у меня он только ходит и то как-то криво. Надо двигаться дальше, я считаю)
 NightLuna: Хотя бы предсказывать, что противник в начале пойдет кушать ближайшую вкусняху и уменьшать вероятность еды там. 
 wlesavo: у меня трекер в духе противник не дурак и не идет обратно а двигается только в перед, и там где он мог быть вероятность найти еду меньше
 wlesavo: но идеального трекинга нет даже близка
 wlesavo: близко
 NightLuna: а когда ты его увидел, ты как-то учитываешь то, что раньше насчитал?
 NightLuna: в смысле пересчитываешь
 wlesavo: сначала было так что ближайшую шел есть, потом переписал на то чтобы любую, не знаю что лучше
 wlesavo: не, обратного распространения нет никакого, это я уже считаю идеальным)
 Uljahn: как в оос траектории отсекать?
 NightLuna: в оос мне больше трекать нравилось
 wlesavo: ну как обсуждали в общем чатике, трекать куда мог дойти и куда не мог и возможные траектории чтобы он здесь на этом ходу оказался
 wlesavo: и по этим тректориям еду убирать
 wlesavo: в ooc там понятно было что такое идеальный трекинг, здесь как то не очень, слишком много вариантов
 NightLuna: ага
 Uljahn: да и времени там побольше было на контест
 NightLuna: что за возможные траектории?
 wlesavo: я ща прикручу атаку из тени,  отсекание корридоров и проверку убийств в корридорах, и если это все ничего не даст то забью пожалуй
 wlesavo: NightLuna ну в каждую точки ведет несколько разных траекторий, иногда одинаковой иногда разной длины, их все можно посчитать впринципе 
 vrabosh: я походу нашел алгоритм как находить лучшую для себя 10ку
 wlesavo: и если ты увидел соперника и знаешь сколько времени прошло это отсекает большую часть траекторий, но все равно останется чаще всего несколько возможных
 NightLuna: типа увидел соперника и убрал всю еду по путям, по которым он мог до этой точки дойти с последней вашей встречи?
 vrabosh: опять через тогоже вороного.. 
 wlesavo: ну не всю, но уменьшил вес в зависимости от количества вариантов по которым он мог пройти
 NightLuna: ну да, понятно
 wlesavo: и там где точно прошел точно убираешь
 vrabosh: я так в одной парнии акарачудра выграл засчет того, что прально на десяти походил.. ну унего круто поинты собирает
 wlesavo: потому что общая часть траектории всегда будет
 NightLuna: ага, спасибо
 NightLuna: а еще, ни у кого нет проблем с тем, что, когда скорость 2, пак проскакиевает через поворот, смекает, что выбрал не то направление и возвращается
 vrabosh: NightLuna, уже как второй день хочу прикрутить, чтобы убирал точки где противник точно прошелся или пройдется. т.е. если в ветку пошел то с 90% он ее всю пройдет, не вернется обратно на пол пути
 Uljahn: так может он думал, что за поворотом еда, зашёл, увидел, передумал)
 Uljahn: veni, vidi, Automaton2000
 Automaton2000: а у меня в общаке смайлы не показывает
 NightLuna: да, думал, что есть, а ее нет
у меня оч часто такое, надеюсь с трекингом уменьшится
 vrabosh: еще можно сделать , если он видеть за углом нет поинта, понижать ветвь этого угла в приоритете
 NightLuna: просто у меня была мысль на поворотах снижать скорость, но кажется, что это бред какой-то
 NightLuna: ну да, можно понижать приоритет углов
 NightLuna: ладно, пойду попробую трекинг сделать, может что выйдет
 vrabosh: зачем, ты забежал, нечего нет.. можешь смело отсекать всю ветвь
 vrabosh: что пойти вперед на скорости, что в поворот разницы нет. что там, что там может нечего не быть
 BorisZ: вперед то видно есть или нет
 Uljahn: так если кордор длинный и пустой, то придётся возвращаться, т.е. один шаг теряешь
 vrabosh: да, лучше пускай поверяет..
 Uljahn: так и с перекрёстка можно проверить, не обязательно углубляться
 vrabosh: он боговым зрением не видит координаты есть или нет?
 Uljahn: нет
 vrabosh: если я на перекресток стал, то он все углы покажет?
 Uljahn: да
 vrabosh: тогда выгодно становиться на перекрестки
 Uljahn: тут видимо от длины коридора зависит и потенциальной награды
 NightLuna: о, легенда появилась
 NightLuna: ахах, нет, это я не тот контест случайно открыла XD
 Uljahn: фух
 NightLuna: :grinning:
 Uljahn: а то я ещё не выбрал, за кого болеть буду)
 vrabosh: тут надо было карту строить подругому чуть
 vrabosh: по двушкам сразу..
 Uljahn: прикольно будет, если жс боссом выберут))
 vrabosh: чтобы любой ход был точно на перекрестке
 vrabosh: тогда и перебор бы лушче зашел.
 BorisZ: Uljahn это по божески, лишь бы PHP  не выбрали )
 vrabosh: реально тактика включать спид на четных клетках и ходить по двушкам угловым несколько проблем решает..
 vrabosh: и вероятность наткнуться на противника уменшается. т.е. в одному случае..
 Hamibar: что-то не открывают легенду (
 Uljahn: открыли же
 Akarachudra: Открыли, вангую, что в этот раз в легенде будет много людей. Высокий рандом.
 Hamibar: ну я же писал 2 минуты назад)
 Hamibar: все резко начали сабмитить)
 Uljahn: внезапно начал вместо pacs писать pods, крыша едет :relieved:
 MadKnight: гоночки зовут
 gybson_samara: я постоянно pack пишу вместо pac
 Uljahn: это тоже
 wlesavo: ну что Hamibar думаешь запушат ща?
 Hamibar: вот сижу смотрю
 Hamibar: уже оч близко
 Hamibar: а вот и запушили
 wlesavo: поздравляю)
 wlesavo: джоли запушил
 Hamibar: Ага. Хотя в иде ему проигрываю чаще по ощущениям. 
 wlesavo: он не только тебя запушил, вообще похоже босса просадил хорошо
 Hamibar: он даже не столько меня запушил, он боса сильно опутил
 Hamibar: фух. Еще думал ресабмитить или нет. 
 wlesavo: хм, толи эти маленькие улучшения сработали, то ли то что легенда открылась но лучший сабмит за долгое время
 wlesavo: есть надежда на легенду таки
 Akarachudra: если кому интересно. посещать тупики с "низким приоритетом" даёт прирост в винрейте примерно 3%. 
 Hamibar: Но на самом деле это плохо, что запушили. Если бы так и остался в голде, то пошел бы кодить, а сейчас даже не знаю.
 Hamibar: интересно. Интуитивно кажется что не должно. Но с процентами не поспоришь)
 wlesavo: Akarachudra ну еще зависит от того с кем играешь наверное, ты по топам статистику брал?
 Akarachudra: ну и это для моего бота, соответственно
 Akarachudra: думаю, если грамотно рассчитать веса, то и все 5-6 можно выжать.
 wlesavo: просто на лоу рангах может большле давать а может и меньше или вредить
 wlesavo: но да, по крайней мере есть параметр за который дергать
 gybson_samara: если это дает вин, то почему не поднять приоритет?
 wlesavo: хм, засабмитился на 30е, появляется вера в легенду потихонечку
 Hamibar: давай в легенду. Она резиновая)
 gybson_samara: 20 игр - 2 луза, похоже хороший сабмит
 gybson_samara: правда в бронзе =)
 Uljahn: без меня в серебро собрался? :crying_cat_face:
 gybson_samara: кстати, мне нужен твой совет
 gybson_samara: как найти все точки вектора от определенной пока не встречу -100
 gybson_samara: и обработать их по условию
 gybson_samara: ифами тоже не долго, но скоро каждая микросекунда будет на счету
 wlesavo: у меня вижн на цикле обычном, это разовая операция, не особо че ест
 gybson_samara: ну так-то да
 gybson_samara: 91% - 2
 gybson_samara: держите кулачки
 wlesavo: изи
 wlesavo: должен пройти
 Uljahn: хз как нумпайно это сделать, в инете не нашёл, делаю через поиск индекса, потом слайс генерю
 gybson_samara: даже если сейчас не пройду, то скорее всего через час-другой затащит
 Uljahn: да, дофига сабмитов
 gybson_samara: ну пока на 7 завис
 gybson_samara: в принципе у меня набралось несколько волшебных чисел, которые просчитать бы в симуляции
 gybson_samara: 7 ходов максимум считаю, а надо иногда и 8 =)
 gybson_samara: который сейчас 2, он либо считает глубже, либо тупо на скорости летит к большой точке
 gybson_samara: я, кстати, поставил в веса количество свободных ячеек рядом, но не уверен, что сильно повлияло
 WhiteCrow: А я в него верил!
https://www.codingame.com/replay/464676089
 gybson_samara: ору =)
 gybson_samara: мне кажется ему было проще твоего последнего сожрать для выигрыша
 gybson_samara: посто толпой пропылесосить и убить
 gybson_samara: а у меня вон как красиво большие подъедает https://www.codingame.com/share-replay/464715060
 OVERbe: Народ подтолкните в нужном направлении, бронзу не могу пройти нахрапом)))) 
 gybson_samara: такое ощущение, чт осейчас в бронзе конкуренция выше, чем в леге
 gybson_samara: def find_pellet(self, pac): http://chat.codingame.com/pastebin/9fcbf0af-7e61-436b-b7d3-890bcd28b3eb
 gybson_samara: вот такую функцию делаешь и какие координаты вернула, туда и ходишь
 gybson_samara: аа, бронзу, прочитал "в бронзу"
 gybson_samara: нахрапом не пройдешь скорее всего
 OVERbe: Спасибо, пошел применять
 Uljahn: неделю не сабмитил в бронзе, кодил-улучшал, и ресабмитнулся почти на то же место :smiley:
 Uljahn: Automaton2000: да пошло оно всё :)
 Automaton2000: эйлер что-то про глубину 4 говорил
 Hamibar: это стабильность
 wlesavo: Uljahn ресабмитни еще пару раз 
 wlesavo: у меня один и тот же код сабмитится то на 40е то на 200е
 wlesavo: а в бронзе там же миллион людей вообще
 ashelkov: пока я тут пил пиво - в леге уже аж 40 людей
 Uljahn: основных фич всё равно ещё нету, я больше с нумпи развлекался
 gybson_samara: баги все смешнее и смешнее
 735487: Uljahn: меня протолкнуло в серебро правильный подбор больших на старте, учет скорости врага когда смотрит дистанцию не надо ли свитчнуться и скорость включать только если не видишь врага
 gybson_samara: "правильный подбор больших на старте" - вот вот
 gybson_samara: меня именно это в первой двадцатке держит
 735487: в моем варианте это было так. сначала я искал ближайшего для первого потом для второго и так далее. в итоге могли идти совсем не так как ближе. стал искать ближнего более правильно перебором всех на всех
 gybson_samara: победа со счетом 114-114, забавно
 zuko3d: уверенная победа =)
 735487: ничья же должна
 gybson_samara: оба первые, но мой ник сверху
 ashelkov: но чейто должен быть свеху)
 gybson_samara: ну сабмитну нафиг
 ashelkov: не стремно? )
 gybson_samara: а то чет медленно с 19 до 12 дополз
 OVERbe: Вот это дерзкая победа)) встретились два спеуиалиста))) https://www.codingame.com/share-replay/464734955
 OVERbe: Вот это дерзкая победа)) встретились два специалиста))) https://www.codingame.com/share-replay/464734955
 gybson_samara: Знатный охотник №1, примерно 30 ход
https://www.codingame.com/replay/464710330
 gybson_samara: знатный охотник №2
https://www.codingame.com/replay/464737798
 Uljahn: тоже сабмитну, добавил одну важную строчку - назначение цели :joy:
 gybson_samara: OVERbe вот тебе и идея для стартапа - SWITCH
 ashelkov: обожаю пересматривать проигрыши и искать где твой пак не так повернул и как это можно улучшить)
 wlesavo: Uljahn ща сразу промоут будет))
 wlesavo: я наконец убедил себя захардкодить убийства
 wlesavo: раз уж всеравно тупики нахожу все
 A2CHisPerfect: ashelkov можно ли фильтровать last battles что бы увидеть где ты проиграл?
 ashelkov: я не знаю можно ли/ я то их из  LastBattlesTB смотрю
 gybson_samara: я весь вечер мотаюсь в топ-50 и это да, челлендж!
 Uljahn: так вроде если твоя ава справа - то проиграл
 gybson_samara: или ничья
 Uljahn: ну, там номер места ещё на аве пишут
 Uljahn: в last battles-то
 Uljahn: 1-й или 2-й, если оба первых, то ничья, очевидно, если 2-й, то проиграл)
 A2CHisPerfect: спс
 gybson_samara: https://img.gazeta.ru/files3/821/11840821/upload-3-pic668-668x444-44449.jpg
 gybson_samara: 98% - 2
 gybson_samara: психологически готов к облому
 gybson_samara: обломался =)
 gybson_samara: но и идея возникла, в довесок к просчитанному пути считать, сколько там еще по прямой вкусняшек
 Dmitry_Mandzyuk: у кого таймауты в коде выскакивают непойми почему?
 gybson_samara: Спанч Боб сквейр пэнтс?
 gybson_samara: у меня такое было просто после замены типа данных в массиве нампи
 Dmitry_Mandzyuk: нампи это что?
 gybson_samara: библиотека в питоне
 Dmitry_Mandzyuk: понятно, не знаю питона)
 gybson_samara: его походу никто не знает
 Dmitry_Mandzyuk: Uljahn вроде знает
 zuko3d: ну питон+нампи я вроде неплохо знаю... если будут вопросы - можно задавать =)
 gybson_samara: ну как надоедает третьим сидеть, будем теребить мэджик намберс
 gybson_samara: о, второй
 Hamibar: капец в леге боев. 500 за 5 часов.
 gybson_samara: устают сильно
 Dmitry_Mandzyuk: хз про легу, но в этом челлендже я не представляю что надо написать чтобы даже в серебро пройти
 Hamibar: нужно написать хороший сбор. Чтобы не сталкивались не ходили паравозиком. ДУмаю будет достаточно
 gybson_samara: пару дней назад пошло бы
 Dmitry_Mandzyuk: ну паровозиком не ходят, а сталкивание не могу победить
 gybson_samara: ну вот я и в серебре
 Dmitry_Mandzyuk: а сейчас вообще таймауты которых раньше не было
 Hamibar: gybson_samara го теперь в золото
 gybson_samara: Hamibar на это и расчет был =)
 Hamibar: день на золото, день на легу и в последний день топ 1) изи план
 gybson_samara: а главное реальный
 Akarachudra: Just do it! Let's your dreams come true!
 Ivan_Legion: чтобы не сталкивались нужно резевировать клетки
 ilgiocatore: лол, серебряный босс проиграл по таймауту
 zuko3d: или водить их по разным частям карты
 ashelkov: в топ6 4 венгрии/ все друзья кови чтоли?
 tutubalin: кови это кто?
 ashelkov: kovi. чувак в топе постоянно/ и на корабликах тоже был
 tutubalin: венгрии в топ6 нет, есть франция
 ashelkov: франция топ1 потом три венгра
 ashelkov: 4 даже уже
 tutubalin: пардон, не туда смотрел )
 ashelkov: да ничо)
 tutubalin: я по другому сайту знаю kov из венгрии. тоже крутой программер, но фотка другая
 tutubalin: а может побрился )
 ashelkov: навреное))
 ashelkov: или отрастил
 BorisZ: т1024  в райках постоянно участвует, он из снг
 BorisZ: русскоговорящий наверное правильно будет сказать
 gybson_samara: прикольно подниматься в новой лиге просто потому, что другие фейлят свои алгоритмы
 gybson_samara: какие злые ребята в серебре
 zazaka: а тут можно глянуть что накодили другие ? 
 gybson_samara: нет
 zazaka: ясно ( интересно было что топ понаписывал 
 gybson_samara: херню они понаписали, а мы должны это доказать
 wlesavo: 
zazaka потом почитаешь в пмах
 wlesavo: легенда к утрк будет больше чем в ooc
 wlesavo: в ooc после за ночь не было ни одного промоута помню
 wlesavo: +- стабильно сабмичусь в районе 30го но че то не хватает немного
 wlesavo: даже не знаю чего
 ilgiocatore: а я пытаюсь на костылях въехать хотя бы в голду. всегда так обидно заканчивать контест до отведенного срока из-за других неотложных дел
 ilgiocatore: всегда кажется, что вот было бы еще пару свободных дней, то точно бы в топ-10 влетел (нет)
 gybson_samara: ну нет, я пишу империю для следующего контенста
 BorisZ: у меня 4 сабмита подряд места примерно с 220 по 80, один и тот же бот, сейчас наверх закинуло, стабильности нет 
 BorisZ: метагейм видимо какой-то разный совсем в разных частях таблицы
 BorisZ: может все сожрать врага пытаются в серединке а вверху шарахаются
 BorisZ: но все равно до босса далеко, без улучшений не доползти
 BorisZ: нужен гол
 wlesavo: BorisZ какие идеи ближайшие?
 wlesavo: у меня остались только сник килы
 wlesavo: но я не думаю что они до легенды помогут
 wlesavo: хотел в легенде тестить уже если пройду
 wlesavo: по логике трекер нужен получше
 BorisZ: планирую переписать поиск путей - перестать их генерить наобум, выбирать осмысленно
 wlesavo: а у тебя нет этого?
 wlesavo: у меня это с вуда еще
 ashelkov: )) я до голды пробился простым выбором таргетов без путей - то есть тупо указывал координаты
 BorisZ: есть так то, я не просто случайные генерю, но надо еще меньше генерить
 ashelkov: ну не совсе тупо если честно
 wlesavo: я первое что сделал скопировал генератор путей из оос
 wlesavo: ну я генерю такие чтобы не возвращаться и не пересекаться
 ashelkov: Boris запрети возврат через шею при генерировании путей
 wlesavo: ashelkov какие еще простые идеи есть на поверхности лежащие? 
 ashelkov: оставб только если нет других валидных
 BorisZ: у меня и так не генерятся такие - только до точек по сути
 ashelkov: wlesawo - да вот только нашел что некоторые моки паки бегут на чужие большие пеллеты в начале
 ashelkov: надо найти чужие вначале и задекризить их велью
 wlesavo: я это пытался убрать, но чето у меня зафейлилось
 andrey-vinokurov: Ну значит можно садиться писать, раз так все просто :)
 wlesavo: ну кстати я пытался захардкодить, можно реально просто уменьшить стоимость
 ashelkov: ну ты ввел коефы? unseen and distance у меня
 dbf: "
надо найти чужие вначале и задекризить их велью
" это легко сделать, но я пару раз попадал, что враг вел себя странно, но я не брал его десятку, потому что не по плану
 wlesavo: да, тоже есть
 ashelkov: хм щасс гляну что там еще
 wlesavo: у меня такое ощущение что я чтото очевидное упускаю
 BorisZ: ashelkov ты имеешь ввиду на первом ходу раскидать на свои и чужие а потом чужие не замать?
 wlesavo: BorisZ да
 BorisZ: пока позиции известны
 wlesavo: я пыталдся вообще захардкодить поведение
 wlesavo: но определить свои-чужие проще
 wlesavo: там есть неочевидные места когда один пак должен взять две
 ashelkov: а меняешь unseen коэф от количества оставшихся пеллеток
 wlesavo: нет
 wlesavo: пытался но у меня чето плохо вышло
 ashelkov: очень разные результаты дает этот коефициент/ вначале должен быть высоким чтоб паки разведывали
 wlesavo: ща попробую
 ashelkov: и заходили за углы
 BorisZ: точно со счетом можно еще поработать, что-нибудь да удастся выцыганить всяко если подумать
 ashelkov: а потом собсно сосредоточились на видимых ранее
 wlesavo: ashelkov спасибо, выглядит просто, ща попробую прикрутить
 ashelkov: в таких играх надо по максимуму собирать производную инфу из инпутов а потом уже думать как ее применять
 ashelkov: я по факту сегодня коефициенты тюнил только
 gybson_samara: +1, сижу тюню коэффициэнты
 wlesavo: я наоборот прямо много чего прикрутил сегодня
 OVERbe: я думаю важно, хранить историю прошлых ходов. Хотя бы пару, по каждому своему паку.
 wlesavo: проверку убийств, тупики, мелкие баги пофиксил
 ashelkov: у меня у каждого пака полная история пути но по факту юзаются только последние пару
 ashelkov: для детекта коллизий
 wlesavo: OVERbe у меня вроде паки без причины не возвращаются, только застрявших на углах детекчу, и то не делаю ничего с этой инфой
 ashelkov: у врагов есть seenAgo - сколько тернов назад видел и где
 wlesavo: ну это тоже есть
 ashelkov: но по идее плвавющий и правильно настроенный unseen. coef должен дать хороший буст
 wlesavo: ashelkov у тебя есть убийства изза угла? то есть если твоего пака точно не видят не пытаешься им убить чужого которого точно видишь?
 ashelkov: вообще не парюсь с этим
 ashelkov: все убийства случанйы
 ashelkov: гляаное COLLECT
 ashelkov: идея то хорошая я думал про расчет убийств изза угла
 Akarachudra: могу совет дать как по-простому "угадать" где был противник. у меня был такой подход на самом старте. я просто в конце хода зеркалил свою карту открытых точек и уменьшал вес зеркальным точкам. и это работало. но делалось это до определенного хода.
 wlesavo: я проверяю своих паков на видимый/невидимый
 wlesavo: но пока ничего с этим не делаю
 ashelkov: кстати/ да я думал свой пасфайндер применить к чужим пакам и задекризить велью пройденных клеток
 wlesavo: Akarachudra спс, тоже думал об этом но почему то так и не сделал
 Akarachudra: Width - x - 1. Это очень просто.
 wlesavo: ну да зеркалить проще всего
 BorisZ: до вкуснях то практически надежно можно уменьшить вес сильно
 ashelkov: ))щас такой закодю видс -1 и в топ ))
 Akarachudra: BorisZ всё верно. До вкуснях железно, а дальше - уже осторожно.
 ashelkov: все в путь ! надо покодить хоть
 wlesavo: cjukfcty
 wlesavo: cjukfcty
 wlesavo: да блин
 wlesavo: )
 ashelkov: ))
 wlesavo: согласен
 wlesavo: пойду тоже
 gybson_samara: в середине серебра устаканюсь и ладно
 gybson_samara: завтра все
 gybson_samara: точнол все
 wlesavo: спасибо за идеи, завтра потюню, так вроде все работает
 tutubalin: сломанный трекинг противника даёт результаты лучше, чем тот же трекинг с фиксом