Chat:Ru/2020-05-15

From CG community
Jump to navigation Jump to search

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: может действительно уже почти не чего улучшать

Default avatar.png Borrow: а запирание в тупиках уже многие реализовали?

gybson_samara: а как ты запрешь? тебя сожрут

Default avatar.png Borrow: видишь жертва зашла в тупик - заходишь за ней следом

Hamibar: я у многих топов видел

Default avatar.png Borrow: если она свитчается, свитчуешься сам и съедаешь

Hamibar: ну у некоторых точно

Default avatar.png Borrow: если не свитчается, съедаешь так

Hamibar: на самом деле это риск

Default avatar.png Borrow: в чём риск?

Hamibar: нападать когда кулдаун 0

gybson_samara: а главное зачем?

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

gybson_samara: зачем этим заниматься то?

Default avatar.png Borrow: я должен нападать на тебя, но не 100%

Default avatar.png Borrow: это риск, да

Hamibar: ну и получается небольшая угадайка

Default avatar.png Borrow: но если ты в оборонных целях свитчнешься раньше чем я напал, ты съеден

Hamibar: но думаю все равно более менее выгодно

Default avatar.png Borrow: фактически тебе надо угадать момент когда я напал в точности

Hamibar: gybson_samara у тебя становиться на 1 пака больше, чем у врага)

Default avatar.png Borrow: так что если я например жду random(1,5) ходов перед нападением, у тебя шанс 20% выжить.

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

Hamibar: ну да, по идее нападающий в более выигрышной ситуации

gybson_samara: нападающий в проигрышной, так как во время его хода обороняющийся просто свитчится

gybson_samara: а еще и догнать надо

gybson_samara: Uljahn вот есть nonzero, а как нулевые то элементы искать?

Default avatar.png Borrow: не надо догонять если жертва в тупике

Hamibar: Borrow правильно написал, обороняющемуся нужно угадать точны момент нападения. А атакующий может подождать

gybson_samara: если он ждет, то он уже какой-то совсем и не нападающий

Hamibar: подождать пару ходов, а потом получать профит остальные 50-100 звучит как хороший размен.

Hamibar: Но действительно не уверен, что это даст большой прирост рейтинга.

Default avatar.png Borrow: потом, жертва же тоже ждёт

Default avatar.png Borrow: так что это даже не потеря времени

Default avatar.png 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 как применить операцию хитрую для каждой точки без лупа по массиву? есть какиенибудь интересные методы?

Default avatar.png Borrow: насколько хитрую?

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: я правда не зна кто такой вороного

Default avatar.png S0L0: это плохо работает , у меня так типа вороного

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

vrabosh: во щаз как раз посмотрел.. а вороного

vrabosh: зато они не пересикаются.. и каждый в своей области крутится.. ну и каждый ход же ситуация меняется

Default avatar.png S0L0: ну да свои не пересекаются

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

Default avatar.png S0L0: зато область построения ограничена , порой она с 10 клеток

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

Default avatar.png 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: Пулинг обьектов норм тема, но это оптимизация, до неё еще не дошел

Default avatar.png Akarachudra: Привет. Тут скидывали ссылку на брутер - чтобы бились твои два бота. Может кто повторно скинуть?

MelnikovIgor: О, еще один шарпист, расскажи секрет, юзаешь симы?)

dbf: Akarachudra есть такое, но я не следил насколько это актуальная арена https://github.com/dreignier/cg-brutaltester/

qbit86: Uljahn Например, в .NET Core есть ArrayPool<T>.Shared

Default avatar.png Akarachudra: dbf спасибо!

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: )) прикол

Default avatar.png 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: открыли же

Default avatar.png 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: есть надежда на легенду таки

Default avatar.png Akarachudra: если кому интересно. посещать тупики с "низким приоритетом" даёт прирост в винрейте примерно 3%.

Hamibar: Но на самом деле это плохо, что запушили. Если бы так и остался в голде, то пошел бы кодить, а сейчас даже не знаю.

Hamibar: интересно. Интуитивно кажется что не должно. Но с процентами не поспоришь)

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

Default avatar.png Akarachudra: да

Default avatar.png Akarachudra: ну и это для моего бота, соответственно

Default avatar.png 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: а главное реальный

Default avatar.png 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: какие злые ребята в серебре

Default avatar.png zazaka: а тут можно глянуть что накодили другие ?

gybson_samara: нет

Default avatar.png 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: идея то хорошая я думал про расчет убийств изза угла

Default avatar.png Akarachudra: могу совет дать как по-простому "угадать" где был противник. у меня был такой подход на самом старте. я просто в конце хода зеркалил свою карту открытых точек и уменьшал вес зеркальным точкам. и это работало. но делалось это до определенного хода.

wlesavo: я проверяю своих паков на видимый/невидимый

wlesavo: но пока ничего с этим не делаю

ashelkov: кстати/ да я думал свой пасфайндер применить к чужим пакам и задекризить велью пройденных клеток

wlesavo: Akarachudra спс, тоже думал об этом но почему то так и не сделал

Default avatar.png Akarachudra: Width - x - 1. Это очень просто.

wlesavo: ну да зеркалить проще всего

BorisZ: до вкуснях то практически надежно можно уменьшить вес сильно

ashelkov: ))щас такой закодю видс -1 и в топ ))

Default avatar.png Akarachudra: BorisZ всё верно. До вкуснях железно, а дальше - уже осторожно.

ashelkov: все в путь ! надо покодить хоть

wlesavo: cjukfcty

wlesavo: cjukfcty

wlesavo: да блин

wlesavo: )

ashelkov: ))

wlesavo: согласен

wlesavo: пойду тоже

gybson_samara: в середине серебра устаканюсь и ладно

gybson_samara: завтра все

gybson_samara: точнол все

wlesavo: спасибо за идеи, завтра потюню, так вроде все работает

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