Chat:Ru/2020-05-14

From CG community
Jump to navigation Jump to search

Hoggins: пока что все баги в этой игре которые я видел, я же и написал...

Default avatar.png Mirartes: обидно когда проигрываешь больше чем 10 людям на 2-3 очка в серебре((

Hamibar: а кто-нибудь помнит сколько людей прошли в легу на прошлом контесте?

735487: 10 или 15

metahom: ровно 10

Hamibar: даа. Тяжеловато будет туда залезть

metahom: ты на 20 месте, куда ты денешься? )))

Hamibar: так это сейчас.

Hamibar: Через 2 дняя уже все по другому будет

Default avatar.png Akarachudra: Фундаментально боты лучше не стали за последние два дня. Простые способы улучшить бота закончились. Поэтому не факт, что ситуация сильно изменится через два дня.

Hamibar: наверное ты прав. Вот уже сколько держусь на 20-40 без каких-то значительных улучшений

vrabosh: не всеж так быстро сразу все запрогрммили, может подьедут новые боты, где базовые функци сделаны.

735487: есть кто в SQL разбирается? что то загуглить не могу. есть 2 таблицы. мне надо сделать запрос чтобы если поле не 0 то по нему джойнилась другая таблица а если поле 0 то джойнились пустые столбцы. так вообще можно сделать?

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

Uljahn: поделитесь сидом со сквозным коридором плз

dbf: -768104555130689020

Uljahn: спс!

MadKnight: вот это подстава

Default avatar.png S0L0: а куда вставляют этот сид ?

MadKnight: а у меня вайл до стены

MadKnight: S0L0 включи Expert

Uljahn: xd

MadKnight: всё, пофиксил

Uljahn: setting -> mode: expert -> options -> manual

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

BorisZ: amurushkin вместо джойна ставишь лефт джойн и вместо второй таблицы подзапрос селегт из второй где поле не равно 0

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

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

MadKnight: класека

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

Hamibar: получается 50% винрейт)

wlesavo: ага, только винрейт 50% против 300 ранга = сидишь на дне

wlesavo: и не важно что против топ 5 у тебя тоже 50 %

Hamibar: ну по идее игра и должна быть рандомной. Ведь это камень ножницы бумага)

Uljahn: wlesavo: у тебя бот крашится, похоже

Uljahn: или таймаутит

Uljahn: против Atra даже слил, хотя он стоит на месте

wlesavo: нет, не таймит, в том то и дело

Uljahn: https://www.codingame.com/replay/463413970

wlesavo: старый реплей

wlesavo: это я дебажил

Uljahn: а

Hamibar: вообще кстати странный контест. 10% кодишь 90% вылавливаешь баги. у меня вон всего 650 строк с кучей мусора.

Hamibar: в прошлых было как-то по другому

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

wlesavo: но времени не очень уже

Uljahn: да всё то же самое было

Hamibar: ну просто по ощущениям. Мб так же было.

735487: BorisZ: спасибо за совет. в конечном итоге решил двумя запросами и union

735487: wlesavo: это типа что если я рандом прикручу могу в голду пройти?

wlesavo: тебе нужна функция if random()>0.5: win()

MadKnight: для этого тебе нужна функция win() которая будет рвать вообще всех вообще всегда

MadKnight: wlesavo переписывай

Default avatar.png S0L0: интересно в голде все используют симулятор и заглядывание в будущее , или без этого есть там люди

MadKnight: в голде? может и без этого есть

wlesavo: если там это в голде то большинство без

MadKnight: а сколько в голде кстати?

wlesavo: 313 уже

MadKnight: да скорее всего многие без

Hamibar: У меня вообще никакая симуляция не прикручена.

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

Hamibar: ага. как стены

Hamibar: даже если могу скушать

Default avatar.png S0L0: ммм, а как получаете 2 или больше клетки вперед на поворотах если не симуляцией.

Uljahn: свои коллизии тоже небось избегаешь

Hamibar: и это тоже. Но я уже говорил как. Там ничего сложного

Uljahn: вот 20% симуляции и набралось)

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

Hamibar: S0L0 получаю путь и беру не 1ю клетку этого пути, а 2ю

Hamibar: ну тут конечно что называть симуляцией

Default avatar.png S0L0: не это не симул, из пути 2 часто нет , цель достигнута, за углом враг

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

Default avatar.png S0L0: про предсказание след цели (координаты)

Default avatar.png S0L0: ну и про врагов тож интересно , их же видно не часто

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

Hamibar: у меня оценочная функция устроена так, что она выбирает наиболее длинные пути. Так что если есть путь длины 2 с 2 палетками, то он лучше, чем путь 1 с 1 палеткой

Default avatar.png S0L0: вот теперь понятно

Default avatar.png S0L0: но не учитывает случая , на скрости текущая цель 1 палетка она в угле , рядом других нет , она на соседней клетке

Default avatar.png S0L0: итого теряется 1 ход скорости

Hamibar: теряется конечно. Но тут опять можно сделать такую оценку, что это плохой путь.

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

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

Default avatar.png S0L0: хорошие идеи , тоже надо прикрутить топы смотрю еще и тупики обрезают, в конце собирают

Uljahn: вот-вот

Hamibar: тупики обрезать насколько я помню было очень хорошим улучшением.

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

wlesavo: что значит тупики обрезать?

Default avatar.png Akarachudra: снизить веса и не посещать их

Uljahn: предпочитать пути с открытым концом

wlesavo: у меня это автоматом получалось, но что то я не уверен в эффективности

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

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

Hamibar: Или это вообще не сработало и мне повезло с сабмитом)

tutubalin: удивительно, на чём я в Botters of the Galaxy дошёл до бронзы

tutubalin: for i in range(5):

   print("WAIT")

tutubalin: while 1:

   print("ATTACK_NEAREST HERO")

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

tutubalin: это я давно уже засабмитил, а сегодня внезапно сообщила, что перешёл в Wood-1. а потом сразу в бронзу

gybson_samara: терпение и труд все перетрут =)

Default avatar.png Akarachudra: BOTG был слабый бос выбран в золоте, от того и переходили сразу из серебра в легенду.

wlesavo: скрепя сердце откатился на полтора дня назад, эх

ashelkov: я вчера пол кода удалил там где decision making был

ashelkov: ну зато то что щас мне нравится гораздо больше/ осталось фич допилить и можно подняться из дна золота

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

wlesavo: ато совсем грустно чето было

ashelkov: все равно поздравляю!

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

wlesavo: и дежае не понятно какие из них в теории могли бы заработать

wlesavo: буду ща по одной перебирать

Uljahn: тоже надоело каждый раз к концу контеста разгребать спагетти из костылей, такой код потом и не переиспользуешь толком, done is better than perfect тоже имеет крайность

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

ashelkov: у меня вчера еще так было/ щас вроде перфект но нихера не done

wlesavo: может как в ooc буду ща делать уже, добавлять только то что точно не может хуже сделать, типа трекера

wlesavo: ато на сомнительные идеи потратил много времени в итоге все сломал

Hamibar: надо сначала done, понять, что это работает(или нет) а потом привести в perfect. И по кругу так

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

Hamibar: я про то, чтобы не было спагети из костылей). Сделал костыль увидел, что работает. Переделал из костыля в хороший код.

vrabosh: а мне, чтото реализация с графами не дается.. надо было через береборы делать, тут бы как раз береборы лучше зашли чем в океане.. а в океане как раз графы..

ilt: где-то тут был брутал тестер!? не подскажете ссылку?

wlesavo: https://github.com/s-vivien/CGBenchmark ты про это?

wlesavo: или что то другое

tomatoes: https://github.com/dreignier/cg-brutaltester

Uljahn: ну всё, начинается)) rip CG, Automaton2000

Automaton2000: Uljahn пингани automatonnn пингани Uljahn пингани automatonnn пингани Uljahn пингани automatonnn

Uljahn: xd

ilt: я про вторую, раньше пользовался этой штукой

Hamibar: жалко, что эта штука только между своими стратегиями)

Hamibar: Хотя если изменил алгоритм наверное полезно

Hamibar: Uljahn так и не пинганул:neutral_face:

ilt: с чужими наверное лучше, но со своими проще фичи пилить их и сравнивать и отлаживать у меня лучше получается

ilt: когда есть несколько полных реплеев

Hamibar: ага интересная штука. Надо будет с след контесте заюзать

Hamibar: реплеи то можно и в иде сделать а вот винрейт посмотреть на хорошем количестве боев звучит интересно

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

ilt: как получить корректное состояние на шаг 100?

ilt: из ИДЕ

ilt: я быстрого способа не знаю

tomatoes: в stderr выводи

ilt: так и делаю

ilt: но у меня же есть некоторые объекты которые копят информацию

ilt: мне все 100 прошлых нужно знать по хорошему

ilt: мне этим брутал тестер и нравился

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

vrabosh: всмысле чтоб не обрезало?

tomatoes: в подлодках тоже стейт копился

vrabosh: выводи после 100 шага, кусками

vrabosh: типа на 99 шаге весю инфу, а потом по куску который влазиит

Hamibar: ну в файлик то удобнее выводить конечно. Если локально запускать.

Uljahn: ilt: а ты против себя играешь?

vrabosh: я придумал как кодгейму можно монетизироваться:)

wlesavo: они так то и сами придумали

Uljahn: они уже и сами умеют

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

vrabosh: кстати как они монетизируют?

Uljahn: https://www.codingame.com/work/

vrabosh: кто нить находил через это работу?

vrabosh: из рус говорящих

Uljahn: я не слышал о таких

Uljahn: у них всё же фокус на франции и канаде

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

Uljahn: хотя и швейцария тут бывает

tomatoes: кто-то интервью проходил через кг интерфейс. но я забыл кто именно

Uljahn: ilt: тогда у тебя команды с каждого хода есть, придётся их последовательно применять, чтобы добраться до стейта на 100-м ходу. либо как-то хэшировать стейт и в дебаг выводить, из IDE никак иначе не получить, там же реплей показывается, можешь его распарсить сам, там принцип тот же - инициализация и изменения

Default avatar.png S0L0: дебаг обрезает , притом в первые ходы больше выводит , потом меньше, это можно как то изменить ?

Uljahn: нет, только меньше выводить

Uljahn: на других сайтах вообще без дебага как-то живут)

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

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

ilt: вот из иде его брать проблематично

ilt: а из БТ на раз два

ilt: нужно только выбрать игры которые тебя интересуют

Uljahn: есть такая штука вот http://eulerschezahl.herokuapp.com/codingame/replays/reproduce/320527355 - свой номер реплея ставишь, он ходы все выводит

Uljahn: но не знаю, насколько полезно может быть в этом случае

ilt: спасибо посмотрю

vrabosh: неужели я в золоте.. еле взял его.

Hamibar: теперь го в легенду

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

MelnikovIgor: Симуляции есть?

Default avatar.png Akarachudra: А если найду?

MelnikovIgor: Ку, как на шарпе удалось так высоко подняться?

Default avatar.png Akarachudra: Мне кажется, даже 1% участников не упираются в ограничения производительности какого-то языка.

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

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

Hamibar: Видел на 25е залетал. Похоже откат на пользу пошел?

wlesavo: не, просто сабмит случайный, выйграл первых 10 калибровочных и закинуло

wlesavo: дайте идей хороших, я чтото во всех своих задумках разочаровался

tutubalin: я ж уже давал

tutubalin: бей из-за угла

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

Hamibar: хотя надо все равно протестить

tutubalin: ранние атаки могут помочь

tutubalin: в ендшпиле уже особо не решают

MelnikovIgor: Akarachudra, я в крестиках кажется уперся

Hamibar: просто нет какого то надежного способа атаки. Кроме как из-за угла конечно)

Hamibar: ну или карта хорошая

Hamibar: или в тупик враг зашел

wlesavo: изза угла тоже не надежно

Hamibar: хм. Не так уж и мало вариантов:grinning:

wlesavo: это надо чтобы за тобой шел

wlesavo: а нормальный бот за тобой не пойдет

Hamibar: почему не надежно? тут одно маленько но. Враг должен не знать что ты за углом, а ты должен знать. Ну или понимать, что ничего опасного.

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

Hamibar: не знаю есть ли у кого из топов нападения из-за угла.

tutubalin: поэтому это верный способ забороть топов )

Hamibar: в любом случае если это безопасно то почему бы не попытаться убить

vrabosh: вот у меня как раз партия где на старте если сделать один лишний ход то можно подловить противника из за угла

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

vrabosh: причем при нынешней ситуации с 90% случаях противник пойдет по одному и томуже пути в начале.

ashelkov: ох и сложно в золоте подниматься по рейтингу oO

MadKnight: зато в леге будет не так

ashelkov: ахах/ лега то хорошо/ но для начала хоть бы в топ 100 залезть

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

Hamibar: Что нужно, чтобы прибавилась моивация что-то делать? Нужно упасть на 30 позиций за пол часа!

WhiteCrow: Ничто так не бодрит, как пуля, просвистевшая у уха

MelnikovIgor: Кто подскажет почему проиграл игру? Таймаута и ошибок не было https://www.codingame.com/replay/463771703

Uljahn: невалидная цель?

Hamibar: Не тот таргет дал

MelnikovIgor: Но в логах нет ошибки такой

Uljahn: наведи на прогресс лайн, там плашечка твоего цвета с описанием события

Hamibar: дал (1,14) а 13 по у

Hamibar: карта 13 по у

MelnikovIgor: о, спасибо

gybson_samara: поставил вместо списков массив numpy и словил ТА ... где вот? ... с чего?

wlesavo: уверен что именно таймаут, может просто баг?

gybson_samara: может

gybson_samara: везде выражения типа arr[y][x]

gybson_samara: как смена списков на нампи могла тут повлиять?

wlesavo: а нужно arr[x, y]

wlesavo: если координата в тупле кстати типа c = (x, y) можно делать просто arr[c]

gybson_samara: [y][x] тоже допустимо

gybson_samara: почему x первый, если это номер элемента в строке?

gybson_samara: ахххх

gybson_samara: вижу

gybson_samara: в нампи сначала номер строки

Jokero: чет как то сима не пошла. 5-7 ходов чужого пака, уже больше 100 вариантов где он может быть получается

gybson_samara: это очень удобно, но и переписывать много =)

gybson_samara: практически все ... =)

Hamibar: не может быть больше 100 за 7 ходов

Hamibar: а хотя скорость я не учел

Jokero: 4*4*2*2*2 - как то так

Jokero: первый ход 4-5 варинатов, от него 4 новых варианта от каждого варианта, от тех еще от каждого по 2 уникальных варианта

gybson_samara: это если никто из твоих паков не выходит на одну линию видимости с ними

Jokero: вот карта например, там вообще фиг с противником встретитесь seed=344351057542284220

Hamibar: но клеток на расстоянии 5-7 ограниченное число

gybson_samara: зачем тебе вообще с ним встречаться?

Jokero: что бы уменьшить количество вариантов

gybson_samara: так выигрывает тот, кто больше собрал

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

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

Default avatar.png S0L0: все возможные пути во все клетки на расстояннии номера хода

Jokero: я думал его можно будет более менее выслеживать, как в лодках

gybson_samara: в лодках это и было смыслом игры

gybson_samara: и тут-то нет

Jokero: но через 3-5 ходов уже становится слишком много мест, куда он мог уйти, и ценность от такой симуляции стремится к 0

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

Jokero: gybson что тебе не хочется знать, где шарахался противник и какие клетки он уже подъел?)

gybson_samara: не хочется

Hamibar: думаю нужно по другому делать

gybson_samara: какие он точно подъел я знаю, а какие не точно, те 0.5 цены

Hamibar: не оценивать где он был

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

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

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

gybson_samara: если клетка на другом конце карты, то чего толку ей приоритет понижать?

dbf: Hamibar, я чего-то такое пробовал делать, но как-то тяжеловато генерить все пути и перебирать. к тому же есть симметричные фрагменты, где не понять, как прошел

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

Uljahn: алгоритм брутфорса)

Hamibar: Достаточно быстрый говорят

dbf: там еще приходится отслеживать скорость и т.д., так что возни хватает ,я пока забил, а чего еще можно сделать, непонятно :)

Hamibar: Скорость вроде можно по кулдауну абилки отследить.

dbf: ага

gybson_samara: Uljahn кстати, про брутфорс и нампи. Как мне в нампи получить сразу все 4 клетки для хода? какую вью сделать?

Uljahn: gybson_samara: в книжке не смотрел, как игра жизнь сделана?

gybson_samara: смотрю

gybson_samara: и про графы смотрел

AntonT: а у вас тоже в начале в инпут приходят пеллеты, которые видны только противникам?

dbf: AntonT, те которые стоимостью 10 приходят

Uljahn: может, это через варп видно?

Uljahn: да, супер-пеллеты всем видны

AntonT: я чёт сейчас отрисовал, и мне все видны...

Hamibar: а какая лига?

AntonT: серебро

AntonT: все, которые видно пакам, если быть точнее. Но не только моим, но и противника

Hamibar: мб вы на одних линиях стоите?

AntonT: да не, я не настолько тупой)

Hamibar: кинь сид

AntonT: seed=-1018878394437563650

AntonT: а всё, затупил, но по-другому)

AntonT: прошу прощения за беспокойство)

Hamibar: прикольный сид кстати

Default avatar.png S0L0: единственный на котором я выигрываю у босса серебра

vrabosh: блин придумал новый алгоритм, но ппц писать придется.

vrabosh: где можно ускорить брут раза в 3 как мин.. это на питоне можно под 15 клеток спокойно перебирать.

vrabosh: проходные точки не учитывать в расчет.. только для этого придется граф или карту перерисовывать предварительно.

ashelkov: да я и на джсе вроде на 15 смотрю

ashelkov: на питоне надо на все 30 смореть))

vrabosh: может быть. просто я поверх 300 строк кода еще этот делаю.. одного юнита беру и на нем пробую новый алгоритм а другие по старому ходят)

vrabosh: с нуля уже не хочется писать

ashelkov: у меня 580 строк гдето/ я пишу в VScode на тайпскрипте (импорты / разные файлы) потом rollup-ом собираю бандл и копирую сюда

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

ashelkov: оно конечно дрочь, но зато классы импорты и по полочкам

vrabosh: ну я уже выдохся.. впадлу это делать.. еслиб вначале эта идея пришла

ashelkov: ну это ясно я прошлый OOC писал в едиторе встроенном/ в голду как-то вышел но макароны страшные были

ashelkov: и улушать невозможно

vrabosh: я просто в бруте позволял повторно проходить точку.. чтоб типа он назад возращался.. или восьмерки проходил красиво.. но таких ситуаций мало.. наверно надо чтоб только 1 раз ходил на точку

ashelkov: вот это я засабмитился! 44 место! добро пожаловать в топ)

ashelkov: это достижение! первый по стране и по javascript! пойду выпью за это)

gybson_samara: все-таки в numpy координаты пишутся [y,x]

Uljahn: на самом деле там [row, column]

Uljahn: кстати, в памяти данные обычно лежат ряд за рядом (С-order), т.е. векторизированные операции по элементам ряда будут значительно быстрее, чем вдоль столбцов, ну это только на больших массивах заметно

Hamibar: а в чем проблема создать так, чтобы было x y?

Uljahn: транспонировать придётся

gybson_samara: и привычку менять

Hamibar: нее, я имею ввиду не важно ведь что брать за ширину а что за длину

gybson_samara: ну эта собака строит для каждой клетки ходибельных соседей моментально

Uljahn: :smiley:

gybson_samara: ее еще научить с конца строки на начало и обратно переходить =)

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

gybson_samara: но это две секунды

Uljahn: тут уже советовали по массиву слева и справа приклеить

gybson_samara: эээээээээээээ

gybson_samara: вот код из учебника

gybson_samara: http://chat.codingame.com/pastebin/21ea9652-cc05-4cdd-98cd-1ab075d604a6

gybson_samara: тут просто условие поставить

gybson_samara: про col-1

gybson_samara: а по верху тут границу нам сразу сгенерили

Uljahn: ой, всё...

gybson_samara: ну приклеивать еще хуже

gybson_samara: вот если к массиву приклеить view массива, вот это вообще чит был бы

Uljahn: это можно с помощью stride tricks сделать

Uljahn: создаётся виртуальная копия данных

Uljahn: т.е. даже не создаётся

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

gybson_samara: но ттут сквозной проход ...

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

gybson_samara: рано или поздно придется вернуться, пока всю память не занял

gybson_samara: я просто делал вот такой же граф фактически, но на лету и всего на 8 ходов

Uljahn: ахах, я в самом начале контеста так тупанул и пытался выделить 40к х 40к массив, в показателе степени ошибся

Uljahn: смотрю - out of memory в дебаге

gybson_samara: да я удачно делаю, просто каждый ход

Uljahn: так лучше всё в начале посчитать

gybson_samara: все пути из каждой точки на N ходов?

gybson_samara: лучше, но пока и так норм

gybson_samara: из графа рекурсией быстро будет, но вот в нампи ее засунуть

gybson_samara: если я нампи дам список кортежей (y,x) - он посчитает мне сумму?

Uljahn: список в array и считай сколько хочешь

Uljahn: у тебя будет 2D массив из строк по два столбца, можешь сумму по строкам, по столбцам или полностью посчитать

gybson_samara: тут другая проблема, вот я ему дам список [1,1] [1,2] [1,1] и он выдаст 3, а съедено 2

Uljahn: так ты убери дубликаты через множество

gybson_samara: нельзя

gybson_samara: если в нише лежит 10, то туда выгодно зайти

gybson_samara: даже если не лежит, то путь с нишей может быть выгоднее других

Uljahn: ну, значит я не понимаю, что ты хочешь от numpy)

gybson_samara: пока я получил что хотел, скорость выше, чем со списками

gybson_samara: если получится дать ему условие типа x!=0, x=0, то круто будет

Uljahn: для чего условие?

gybson_samara: т.е. пройти по ячейке и обнулить ее

gybson_samara: для перебора массива

gybson_samara: но я и сейчас не обнуляю, так что пока не проблема

gybson_samara: суть в том, чтобы он делал обратный ход, но при этом этот ход стоил 0

Uljahn: т.е. посещённые надо трекать

Default avatar.png S0L0: они автоматически трекаются - там нет пеллетов

gybson_samara: ну допустим перед тобой угол, перед тобой 0, а за углом 10. ты делаешь ход вперед, вбок и обратно, два хода 0 из трех, а в сумме 10

gybson_samara: вот так и возврат, сходил вперед на 1 клетку, взял 10, а потом обратно

gybson_samara: потому что обратно выгоднее

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

gybson_samara: каждый ход +1, очень выгодно

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

Uljahn: или как-то так, чтобы упростить навигацию

gybson_samara: gtktns bcxtpf.n

gybson_samara: пелеты исчезают

gybson_samara: появляются враги и тиммейты

gybson_samara: это тоже веса ведь

gybson_samara: Вот я набросал граф с переходом

gybson_samara: http://chat.codingame.com/pastebin/482283e8-bbbd-4f13-869c-72624f587487

gybson_samara: это просто тестовая программа на питоне, не конкурсная

gybson_samara: вроде фырит

gybson_samara: на каждом ходу надо собрать сумму по этому графу и сделать выбор

Default avatar.png S0L0: что вы там такого считаете что нампи нужен, если симуляцию не используете

gybson_samara: я считаю наилучший путь

gybson_samara: как больше собрать

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

gybson_samara: надо

gybson_samara: в субботу утром

Uljahn: угу

Default avatar.png S0L0: на списках вроде это без проблем

gybson_samara: только это еще дальше от нампи =)

Uljahn: списки это самое днище, какое может быть в питоне)

gybson_samara: вот я в топе бронзы потому, что 8 ходов всего считаю на списках

gybson_samara: противника вообще пока не считаю

gybson_samara: и так ТА

Uljahn: а я два дня красоту наводил, чтобы в дебаге карта была нарядная)

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

gybson_samara: ну не босса, а игры

gybson_samara: без пошаговой отладки слегка адок

gybson_samara: как слепой, а тут дебаг еще и в ТА вгоняет

ashelkov: всмысле в дебаге карта? чем дебажите?

Uljahn: ну это да, надо профилировать тогда локально

Uljahn: http://chat.codingame.com/pastebin/5056e090-c6ce-45d1-872e-5fb0cd1b1f48

Default avatar.png S0L0: карта буковками

Default avatar.png S0L0: много карт не входит сразу - обрезает

Uljahn: ascii-art как в рогаликах)

Default avatar.png S0L0: вот хотел веса выводитьь для всех паков - 5 карт не входит, приходится по 1 смотреть

ashelkov: я както давеча усатвовал в епам бот челлендже

ashelkov: так там карта приходила в аски

ashelkov: ну у тебя был свой клиент и можно было рисовать красоту

ashelkov: вот https://www.facebook.com/EPAM.Ukraine/videos/1966325960343931/

ashelkov: ну тайлсет то их/ у них игры показывались на сайте/ но analitycs layer дорисовать для дебага это что-то )

gybson_samara: кстати о симуляции

gybson_samara: граф (читай поле) без стен, которое позволяет и в симуляцию

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

gybson_samara: пустить по графу все паки по очереди много раз уже не так и затратно

gybson_samara: тиммейтов учесть не проблема

gybson_samara: врагов я учитываю пока в начале хода и вполне успешно

ashelkov: я даже врагов не учитываю в начале (собирался вот)

ashelkov: но как то вы все усложняете

gybson_samara: если кто-то нападет на меня из-за угла, то скорее всего он мало соберет

ashelkov: я написал 1 толковую функцию поиска лучшего пути для1 пака

gybson_samara: или это случайно

ashelkov: и каждый ход ее запускаю

ashelkov: топ60 аж закатило

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

wlesavo: не знаю че будет, ща еще покручу в селфплее и засабмичу

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

gybson_samara: завтра остальное перепишу =)

ashelkov: о! попался и я на бесконечном корридоре/ прострел на всю карту - затаймилось ))

Anvilondre: В легенду пускают по такому же принципу? Кто босса победит?

dbf: да

dbf: босс обычно уровня топ-15 золота на момент открытия

Anvilondre: Понял, спасибо

Uljahn: ashelkov: красава

ashelkov: спасибо Uljahn. приятно)

Uljahn: жс в топе даёт надежду и питону)

Uljahn: а то прям руки опускаются

ashelkov: js в топе дает надежду всем

ashelkov: там дето и пхпшник был

ashelkov: и это я еще начального матчинга не сделал - бывает бегу на большую пеллету которая ближе к врагу

ashelkov: так что есть куда подрасти

ashelkov: но это завтра

ashelkov: ну да плюсы доминируют в топе/ немножко их js разбавил)