Chat:Ru/2020-05-11

From CG community
Jump to navigation Jump to search

DualU: например, в программу вводится число пелетов n, и далее вводится только координаты и значение n-1 пелетов

DualU: была, кажется, та же история с пакманами

tutubalin: ищи ошибку в программе. инпут корректный

DualU: лады

tutubalin: может быть не учитываешь переносы строк

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

BorisZ: дублируй все что тебе приходит в stderr - быстро разберешься

BorisZ: считал строку - сразу вывел ее

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

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

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

Hoggins: это еще одна не очевидная штука. Заметил только когда меня стали враги ловко на них ловить

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

wlesavo: ого, аж на шестое запушили

ashelkov: ну это всяео лучше чем на 340) поздравляю

wlesavo: да у меня примерно один и тот же код сабмитится на 10-40, а ща чет запушили

wlesavo: мне рерайт нужен нормальный, не знаю за завтра успею или нет

ashelkov: ну а мне не рерайт - а нормально фич допилить план на контест - в топ 100 заехать (оптимистично так)

DualU: Всем привет. У меня одного есть проблемы с инпутом в пакман-игре?

tutubalin: какого рода проблемы?

MadKnight: В России разработали национальный стандарт по большим данным. Сколько текст не перечитывал, так и не понял, когда данные становятся «большими».

MadKnight: > Как по мне, Роисся сделала нереальный шаг вперед, стандартизовав "большие данные" как "много данных"

735487: а что это не так? насколько я видел всякие лекции про big data речь всегда шла об очень много данных. а вот коверкать название страны - как минимум не прилично

Uljahn: "Считается, что обычный человек может одновременно удержать в памяти в среднем семь объектов." - по аналогии, большие данные - которые не влезают в среднюю оперативу

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

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

BorisZ: а может и там ничего нет, вода одна

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

BorisZ: да, я подумал что строгое будет нелепо звучать, типа N это маленькие данные, а N+1 это большие данные )

MadKnight: в лекциях пускай описывают как хотят, но в стандарте надо очень конкретно описать, amurushkin

MadKnight: > Предполагается, что он обеспечит взаимопонимание сторон, которые кидаются этим термином с видом экспертов.

Uljahn: это как асимптотическая сложность алгоритмов

BorisZ: ну и собственно N чего - строк, байт, ячеек ?

MadKnight: вот в чём цель стандарта была

Uljahn: нужно тогда чётко описать, что НЕ является большими данными :)

MadKnight: гугл вот за 0.001с ищет, база гугла не является биг датой?)

Uljahn: а ты видел её?

Uljahn: может, там сверхсветовые гномики байтики таскают

MadKnight: неважно как реально там у них

MadKnight: я просто пример дал

Payalord: Привет Мэд

Uljahn: у гугла может вообще эвристика: берём 10 рекламных ссылок из пула -> страница готова

Payalord: Как жизнь?

Uljahn: или даже заранее подготовленную странциу показывают :smirk:

DualU: Всем привет. Я возвращаюсь к теме бага. Я абсолютно уверен что координаты одного пелета (последнего пелета) программе не выдают.

DualU: сейчас я приведу кусок кода на питоне

DualU: for i in range(i): http://chat.codingame.com/pastebin/32544e46-3221-4eec-96a3-177e68593ae3

Uljahn: лол

MadKnight: DualU а так в чём баг-то?

DualU: i - количество пелетов, выводится в stderr

MadKnight: DualU а ты уверен что ни разу не вывел больше 1 строки за ход?

BorisZ: for i in range(i):

MadKnight: а работать будет?)

Uljahn: такого я не видела (ц)

DualU: MadKnight, уверен

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

DualU: просто их нет

MadKnight: может ты всё же вывел больше 1 строки за ход?

MadKnight: однажды

DualU: https://www.codingame.com/share-replay/460950384

MadKnight: да по реплею непонятно

MadKnight: дай в ЛС весь код

DualU: нет, вывод масимум один раз

Uljahn: а минимум?

Uljahn: по такому кусочку ничего не понять

Uljahn: странный стандарт всё-таки: "Примечание к записи: Термин «обработка данных» не должен использоваться в качестве синонима для обработки информации." :/

DualU: Uljahn, весь вывод всех пакманов сохраняется в строку и выводится

MadKnight: а данные - это не информация?

Uljahn: хз, видимо нет

MadKnight: DualU дай в ЛС весь код

Uljahn: сбрось код на дефолтный, выставь manual seed и выводи

DualU: что это?

MadKnight: это чтобы карта та же самая была

MadKnight: это как seed в майнкрафте

Uljahn: в settings включи mode -> expert

Uljahn: появятся options

Uljahn: там seed - он задаёт карту и расположение

Uljahn: сеттинги слева, options под ide

DualU: ок

Uljahn: сброс кода - справа вверху в углу ide

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

BorisZ: подозрительно то что переменную BIG ты выставляешь один раз в True если встретил большую. а потом не трогаешь

BorisZ: то есть после первой встреченной большой BIG всегда будет True

Razdva122: А большие пеллеты же приходят даже если их паки не видят?

Uljahn: да

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

DualU: BorisZ, переманная отвечает за наличие больших пелетов

Uljahn: так можно гадать до окончания карантина)

BorisZ: тогда ок

Uljahn: ошибка не в этом месте, скорее всего

Razdva122: А stderr не выводит ошибку?

Uljahn: выводит

Razdva122: А какой смысл ее искать тогда?

Uljahn: там ещё можно добавить flush=True, чтобы и при таймаутах выводило

Uljahn: так не все выводит

Uljahn: где-то инпут потерялся у него

DualU: нет, не потерялся

Razdva122: А на каком языке пишешь?

DualU: всегда один из больших пелетов не выводит

BorisZ: DualU перед циклом выведи в дебаг значение i, внутри цикла в принте добавь тоже i print(i, x, y, v...

DualU: я проверял

DualU: BorisZ, я это сделал

DualU: я просто этот код не скинул

DualU: Razdva122, питон

BorisZ: ну последнее i должно равняться (i-1) которая была до начала цикла

DualU: именно, но не равняется

BorisZ: range(i) перебирает от 0 до i-1

DualU: спасибо, я в курсе

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

Razdva122: Есть инфа во сколько сильвер откроют?

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

Uljahn: Razdva122: есть

Razdva122: Через сколько?

Razdva122: часов

Uljahn: примерно в то же время, что и начало контеста было, т.е. около 6 вечера по франции

DualU: завтра должны открыть

Uljahn: сегодня

DualU: о, круто

Razdva122: то есть часов через 8

WhiteCrow: Семь с половиной

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

Uljahn: старшие лиги каждые два дня открывают

Uljahn: пнд, ср, птн

Razdva122: Я первый раз участвую, дальше тоже усложнения будут?

Uljahn: правил новых не будет

Uljahn: но боссы будут сложнее

Razdva122: Понял то есть сейчас только на текущие правила оптимизорвать

735487: MadKnight: а данные - это не информация? информация видимо не всегда данные. например Вася любит Олю это информация. но не данные в большинстве случаев

TheCrucial: а где граница между челиками которые пройдут в серебро и теми кто не пройдет?

735487: появится босс. все кто будет лучше те пройдут

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

Hamibar: точно где эта граница будет проходить никто не скажет

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

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

Hamibar: Хотя можно взять первый где нет коллизии.

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

BorisZ: а если с соседних навстречу то хз как )

BorisZ: без цикла в смысле

BorisZ: хотя нет вру, не сравнит

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

BorisZ: но не memcmp конечно - это я точно фигню спорол, нам же надо хоть одно совпадение найти

BorisZ: в цикле только ручками похоже

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

BorisZ: там и в лобовую посчитается

Hamibar: При одних и тех же путях

BorisZ: вроде тут порядок не важен

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

Hamibar: почему? вроде как можно паравозиком идти

BorisZ: мы ж ее не пытаемся разрулить а избежать ее

Hamibar: ааа

Hamibar: ну да, возможно. Я почему то думал, что порядок влияет

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

BorisZ: тут надо предыдущую из одного пути сравнивать со следующей из другого

BorisZ: вроде больше не бывает, я не придумал

Hamibar: ну да. Если порядок не важен, то и вопрос отпадает

Hiker: Товарищи, подскажите ньюбу, сколько тут реально активных юзеров в конкесте? сколько сильных страт?) короче за какие места начинает быть сложно? сколько из 3000 просто залили стратовую +-?

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

735487: хотя вот на этот раз я мало участвую и походу и в золото могу не пройти

Hiker: какой тут эквивалент финала раика?)

Hiker: ты там бываешь

Hiker: я помню

735487: ну тут немного не так как в раике. финал это когда по окончанию контеста запускают еще дополнительные игры в легенде. и по финалу уже смотрят кто какое место занял

735487: обычно в легу пропускают 10-15 человек в пятницу. к концу контеста туда проходят около 50-70 еще.

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

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

735487: ну и еще отличие что в раике если ты в финал не прошел то потом только доп набор из песочницы. а тут ты можешь хоть в последний день всех боссов победить и быть первым

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

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

735487: редко бывает что ищут очень сильно в притирку и только 1-2 игры решает исход распределения мест

735487: идут*

Uljahn: Hiker: а тебе зачем сравнение в эквивалентах раика? это что-то поменяет?

Uljahn: я вот в раиках не участвовал, но там же времени намного больше дают, как тут в марафонах, не?

735487: ну человек осваивается просто

Uljahn: по рассказам?)

735487: есть минираике там меньше

Uljahn: да много чего есть, cf, tc

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

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

BorisZ: там в финал около ста человек проходило

Uljahn: лучше всего самому попробовать

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

BorisZ: было что-то типа песочница на 200 ходов игра, финал на 600

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

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

BorisZ: а второе что фиальный пересчет делали от забора и до обеда

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

BorisZ: без критериев всяких

BorisZ: как будто не может быть такого что он никогда не устаканится

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

735487: я в миниках ниразу еще не участвовал

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

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

Uljahn: такое ощущение, что они там роллят, когда неугодные финалисты в рейтинге опустятся))

Uljahn: как с эйлером было

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

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

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

NightLuna: какое в итоге место занял?

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

BorisZ: а у него только сабмиты пошли

NightLuna: капец

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

Uljahn: что за бред

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

735487: ну просто это он с позиции CG привык что сабмиты дойдут. а там же по-другому

735487: ну в больших раиках все ровно более менее. финал всегда четкое количество времени. все оговорено

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

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

735487: ну в больших вообще с одной периодичностью

735487: там все знают что сабмитить надо за день если совсем с нуля

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

SqueeCoder: Блин, пол-часа баг вылавливаю. А оказалось, что код перестал обновляться между VS и хромом:joy:

m2bad4u: господа, а правда ли что первый раунд тайм лимит 1000?

m2bad4u: потому что в описании вроде да, а по факту вроде нет...

tomatoes: и по факту да

m2bad4u: хм... ок

Dmitry_Mandzyuk: код между vs и хромом? а расскажите подробнее пожалуйста

Dmitry_Mandzyuk: исходники же на питоне

wlesavo: vs с питоном работает

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

wlesavo: но я не пользуюсь, поэтому не помню как называется

SqueeCoder: https://www.codingame.com/forum/t/codingame-sync-beta/614

tutubalin: http://chat.codingame.com/pastebin/bfb3900f-5321-4c9a-8e41-e0b41a6878db

tutubalin: бесит блин чат этот своими линками )

tutubalin: Codingame Sync. Состоит из двух компонент:


tutubalin: 1. Расширение для браузера (оно имеет доступ к странице) 2. Приложение (оно имеет доступ к файловой системе)


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

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

tutubalin: Uljahn ну там у экстеншенов доступ к файловой системе появится и приложения станут не нужны

Uljahn: "We'll fix a few bugs and introduce a better way to detect dead pacs. It'll come with the Silver league tonight."

wlesavo: оооо то о чем euler говорил

wlesavo: класс, я надеялся что добавят

Uljahn: ограничения на реплеи будет 200 ходов, а не 200 фреймов :)

wlesavo: и это тоже круто

wlesavo: а дай ссылоку на пост

wlesavo: или это дискорд?

BorisZ: wlesavo а в чем суть проблемы? своих мертвых или вражеских детектить?

wlesavo: вражеских

wlesavo: своих то понятно

wlesavo: но есть ситуации когда невозможно вражескую смерть задетектить

wlesavo: когда выскочил изза угла и умер

wlesavo: ты его не успеваешь увидеть

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

BorisZ: типа часть игры

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

BorisZ: а то когда все со спидом не понятно ни хрена

BorisZ: или мотать чтоб не на фрейм а на ход сразу

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

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

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

BorisZ: написал жесткое письмо фром май харт, на картоне https://www.codingame.com/forum/t/spring-challenge-2020-bugs-questions/180397/98

Hiker: блин, почему так сложно ?)

BorisZ: я написал сложно?

BorisZ: или ты про правила?

Hiker: Про игру =)) и про написание бота. +)

ashelkov: как и везде опыт нужен/ но зато как интересно)

Uljahn: wlesavo: https://discord.com/channels/466965651135922206/636859567568846849/709381294290894861

wlesavo: Uljahn спс

wlesavo: Hiker ух ты, ты из ики, только заметил

wolwer1ne: Я один только сейчас понял, что лишние параметры в команде выводятся на пакманом?

wolwer1ne: *над

Uljahn: да, как мессейдж

Uljahn: как в гоночках

tutubalin: вот такие у меня игры ) https://www.youtube.com/watch?v=15Cs0FQ8vfw

NightLuna: прикольно синий через двух долбящихся красных прошел

wlesavo: tutubalin прям в голос с монтажа

BorisZ: ага, музон в тему вобще наложился )

735487: прикол а как он смог то пройти?

wlesavo: камня не было, поэтому он не оттолкнулся

wlesavo: а смог зайти на клетку

wlesavo: If the pacs are of the same type or belong to the same player, both pacs will go back to the cell they moved from. If the pacs are of different types, they can land on the same cell, but a pac can't cross the path of a stronger pac: it will be blocked.

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

tomatoes: это когда рядом стоят и друг на друга идут вроде как

Default avatar.png Akarachudra: Он смог пройти потому что у него скорость была, а у тех двух - нет.

Default avatar.png Akarachudra: Проскочил до того, как они сделали движение со столкновением.

Hoggins: в таких соревнованиях явно нужен опыт. Пыхтишь, переписываешь алгоритмы и остаешься на том же месте в лидерборде

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

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

morskaia_4erepashka: а когда серебро открывают кстати?

Hamibar: кто-то говорил, что время примерно совпадает с началом конеста

Hamibar: то есть где-то через часик

morskaia_4erepashka: спасибо!

Hamibar: но возможно конечно и позже

morskaia_4erepashka: интересно с 600 заеду ли в серебро?

morskaia_4erepashka: интересно с 650 заеду ли в серебро?

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

morskaia_4erepashka: а как найти боса бронзовой лиги?

Hamibar: его еще нет.

Hamibar: как откроют серебро появится

morskaia_4erepashka: а, ну да, логично

TheCrucial: во сколько серебро откроют?

BorisZ: уже босс появился

BorisZ: и он на 200 месте неожиданно

NightLuna: норм, хорошо, что 200

WhiteCrow: Сколько, говорили, в серебро пройдёт?

dbf: решили сделать поменьше, чтобы не застопорилось на пересчете что-ли :)

Hoggins: ну вот, 5 мест не хватило что бы быть последним в серебре :)

WhiteCrow: Какой-то отстой, я должен был пройти

WhiteCrow: Завтра вернусь к боту...

Hamibar: как-то мало вам не кажется?

Hamibar: хотя мб он сейчас опустится

amurushkin: ооо я в этот раз даже в серебро не прохожу ))))

WhiteCrow: Ну он скорее всего ещё туда-сюда попляшет

WhiteCrow: Так что я видимо пройду

WhiteCrow: Но запахло жареным, да

amurushkin: может в пятницу-субботу чего запилю еще :)

WhiteCrow: Ну я рефачил-рефачил в вс

WhiteCrow: Надо только заиспользовать всё это дело...

Xanrum: а кто написал этого золотого бота - в контесте не участвует?

amurushkin: внезапно я босса побеждаю )) осталось только до него дойти?

dbf: перепошли :)

Hoggins: хм, а он правда еще падает...

amurushkin: а еще он таймит иногда

amurushkin: хаха у WhiteCrow ровно столько же )))

amurushkin: и не пропустили

WhiteCrow: 20 секунд продержаться, и я в серебре

WhiteCrow: 5

WhiteCrow: YEAH

amurushkin: у тебя не помечен цветом же был

WhiteCrow: Science, b****!

WhiteCrow: Правда, я в говне серебра :/

wlesavo: WhiteCrow все боты сломаны

Hoggins: дай пять :)

amurushkin: а там что в серебре новые инпуты?

wlesavo: typeId: the pac's type (ROCK or PAPER or SCISSORS). If the pac is dead, its type is now DEAD.

amurushkin: о это круто

NightLuna: неплохо

Razdva122: Ух круто до топ-200 добрался

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

dbf: а кто-нибудь знает, зачем DEAD добавили?

wlesavo: лол, я крашусь на свиче, потому что пытаюсь превратится в тип dead

wlesavo: dbf чтобы упростить тракинг

tomatoes: когда на повороте кого-то съедаешь, то неизвестно съел ли

dbf: а, когда на скорости?

tomatoes: из-за угла

dbf: или когда навстречу

dbf: да, понятно

aropan: Хех, надо будет код что ли обновить. У меня сейчас мертвых обходить стороной будет - мало ли в кого он может превратиться. )))

WhiteCrow: ВТФ

tutubalin: ого, меня в топ1000 запушили

WhiteCrow: А он долго остаётся дедом?

WhiteCrow: static GuyType get(const std::string& s) { static const auto TM = genTypesMap(); return { TM.find(s)->second }; }

WhiteCrow: Кекекеке

WhiteCrow: UB для самых маленьких

Xanrum: почему в топе так много плюсов? Что такого дает этот язык что нельзя в том же C# или джаве?

Default avatar.png Akarachudra: Смотри в топ. Там сейчас будет C#

Hoggins: ГЦ дает очень не стабильную производительность. Тут как код напишешь, но красивый Linq не всегда хорош

Xanrum: я не про конкретное место, а в целом

Default avatar.png Akarachudra: У Эйлера (жаба) - очень сильный бот. Тоже на шарпах. Но вообще, на плюсах ты можешь больше переборов сделать за меньше количество ресурсов. Но если C# прогреть, и использовать unsafe, то сопоставимо.

dbf: Xanrum, некоторые вещи работают быстрее + топы пишут на C++, чтобы не силть по скорости, если вдруг понадобится

Hoggins: эх, плохо что апи изменился. Охота поиграть, а у многих просто баги от этого

Hiker: Товарищи, кто-то говорил, что добавили некий Dead, а где это написано? есть какие-то новости? как я должен это узнать? это дополнительный ввод?

dbf: Hiker, смотри правила серебра

dbf: там где статусы пакменов добавилась строка

Hiker: а как смотреть правила серебра

dbf: это только в серебряной лиге изменение

Hiker: понял. и увидеть это можно будет, только пройдя в нее

dbf: ага

Hiker: типо как добавления при переходе из деревянной. нутогда норм

Hiker: ладно спаисбо!

wlesavo: да там только это добавилось и все

dbf: https://c2n.me/47su8a1

tomatoes: typeId: the pac's type (ROCK or PAPER or SCISSORS ). If the pac is dead, its type is now DEAD.

dbf: вот эта строчка

wlesavo: да

dbf: думал это меня не затронет

dbf: а если для своихз DEAD придет, то будет для них пути считать

dbf: лол, так и происходит

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

Uljahn: на твиче щас идёт стрим на питоне в районе 250 места бронзы

dbf: это Icebox?

Uljahn: не, какой-то левый чел

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

dbf: у меня такой для РАИКа есть :)

Uljahn: на питоне

Uljahn: а, он ещё хэш кастомный придумал... ну хз

Uljahn: причём нумпи имортировал...

Xanrum: в серебре мои паки превратились в умственно больных инвалидов : (

Uljahn: walking dead

NightLuna: уже 400 человек в серебре

Xanrum: вот был ядо ввода бронзового бота 50, а теперь 48 - а в чем разница то? что дал этот бот?

NightLuna: мотивацию для тех, кто не прошел

wlesavo: + больше игр, стабильнее ранг

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

tomatoes: наверное :rolling_eyes:

Jokero: шарписты тут?

Xanrum: да полно

Uljahn: Xanrum: ещё 6 дней, ты думаешь так и останешься 50-м?))

Xanrum: я думаю скачусь до 100 - не дальше. Но у меня абсолютно отсутствуют идеи что можно улучшить, не видать топ10 : (

NightLuna: не, дальше

NightLuna: мне кажется, что если ничего не делать топ 200 будет в лучшем случае

Uljahn: угу

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

Uljahn: щас все как поднажмут, как стримов до серебра насмотрятся

Jokero: вопрос шарпистам такой. Я хочу найти короткие пути от паков до мега хавки. Для этого хочу создать таблицу в которой: первый столбец PacID, второй ID точки, третий расстояние. Потом нужно будет отсортировать расстояние по возрастанию

NightLuna: кто-то еще даже не начинал по-любому

Xanrum: я думаю те кто хотели начать - как раз в эти выходные начали

Jokero: что лучше использовать DataTable, список структур, или создать отдельный класс и использовать список объектов.

Uljahn: ты вороного пилишь?

MelnikovIgor: Есть SortedList например, если вегда хочшеь готовый отсортированный список

MelnikovIgor: Но ессесно будут затраты на вставку и поиск

Jokero: вроде как во всех трех случаях результать с сортировкой все равно Linq'om получать, но как обычно делается

MelnikovIgor: Но итерации будут отсортированы

MelnikovIgor: Если вся структура хранения делается под сортировку, то лучше не юзать линк каждый раз, а хранить в сортед структурах

MelnikovIgor: https://docs.microsoft.com/ru-ru/dotnet/standard/collections/sorted-collection-types

Uljahn: а если от каждой мегахавки (с учётом симметрии) флудфил на всю карту, проставляя длину пройденного пути, а потом в обратную сторону смотреть?

Uljahn: с телепортами только разобраться...

Jokero: у SortedList всего два столбца, а мне нужно 3 хранить

MelnikovIgor: 1ый это ключ, 2ой значение

Hoggins: value tuple в лист и лист отсортировать

MelnikovIgor: вот и делай 2ой сложным типом

Hoggins: поиск в списке из 100 эл-тов нужного просто перебором работает супер быстро. 100 путей составить будет затратнее

MelnikovIgor: А сортировка по 1ому ключу параметру будет

MelnikovIgor: Можно пути на всю карту на 1ый тик посчитать

Xanrum: да как граф надо карту представить с ключевыми точками где перекрестки - это ключ к высокой скорости

Xanrum: с учетом особеностей карт - путей очень мало получается

Jokero: оо, в серебре новые правила? теперь дохлые паки не исчезают с поля, а так и остаются валяться?

Xanrum: да, можно их сожрать для очков

Xanrum: (увы, но нет)

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

tomatoes: продолжают до конца игры

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

BorisZ: if ptype != "DEAD":

               visible_pacs.add(pac)

Hamibar: Погодите, а если я поверну за угол на скорости и по пути съем пака, то я не увижу, что он погиб?

dbf: теперь увидишь

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

wlesavo: dctulf

wlesavo: всегда

Hamibar: а ок. Удобно.

Xanrum: осталось понять что с этим знанием делать

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

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

Xanrum: в результате к врагу не приближаюсь - а зачем если там все съедено? и атак нет..

MadKnight: ну что, кто на первых 3 местах?

wlesavo: если ты увидел врага то увидел и что еды нет

BorisZ: где лежит мертвый пак том тоже рыбы нет

BorisZ: кто-то ж его съел

Hoggins: значит ты там уже был ;)

MadKnight: какие у вас алгоритмы посоны?

Uljahn: нейросетки

MadKnight: ну это слишком просто

MadKnight: так не интересно

Xanrum: MadKnight перебрать все как можно больше переиспользуя буфера и сношая указатели

MadKnight: переходите на нормальные алгоритмы посоны хватит сидеть на нейросетках

MadKnight: Xanrum а что с противником делаешь?

MadKnight: и на каком языке?

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

Xanrum: я поумолчанию считаю что еда всюду - где увидел врага - считаю что там еды нет, и переборы там получают нули и не выходят в рекорд

Xanrum: MadKnight вообще я шарпист, но тут решил на GO

Uljahn: Мэд, ты уже топ-1 в гоночках на нормальном алгоритме?

MadKnight: кнш

MadKnight: просто у всех остальных не нормальные алгоритмы

MadKnight: даже у Automaton2000

Jokero: я тож считаю, что еда всюду, но там где я ее вижу, доп бонус присваиваю

Automaton2000: в том то и дело, что это не так

MadKnight: у Automaton2000 в алгоритме вообще смайлов не показывает

Automaton2000: но я пока не придумал как тестить написанное и дебажить удобней. Думал на основе логов боя создавать файл с input-ом, ...

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

MadKnight: ну всм в самом переборе что с противником делаете?

MadKnight: если он виден и он рядом

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

MadKnight: что значит если есть то случайно?

Xanrum: не гнался за ним что б приблизиться

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

MadKnight: так какой максимальный размер поля?

MadKnight: какие могут быть value у pellet ?

Harrys13: 40000

MadKnight: что 40к

BorisZ: Приборы! 42! Что 42? А что приборы?

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

MadKnight: да уже нашёл

BorisZ: больше 128 клеток по-люому, на глаз видно

kostya200300: Кто то знаешь за какие месть призы дают?

dbf: 1-3

kostya200300: знает*

kostya200300: спс

m2bad4u: господа, а есть кто то из серебра? там как то правила меняются?

Hoggins: нет, просто в инпут добавляют еще один тип паков - трупы

m2bad4u: так вроде ж мы и так знаем кто кого съел

morskaia_4erepashka: скорее это для динамических препятствий

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

BorisZ: на предыдущем ходу врага не было визно из-за угла, на текущем ходу его уже нет - съеден

dabino: вроде специально сделали type = DEAD - должно съеденных быть видно

vrabosh: былобы классно еслиб после контеста ктото из топов написал статейку как он сделал алгоритм.

dabino: таких статеек римерно штук 50 будет

dabino: на форуме

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

Xanrum: да тут все просто - брутфорс-брутфорс-брутфорс

ashelkov: не обязательно

zuko3d: эммм... имхо на брутфорсе далеко не уедешь

zuko3d: т.е. как минимум - брутфорс с эфристиками. Типа ГА/Simulated Annealing или Ant Colone Optimization

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

ilgiocatore: оценку надо дополнить

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

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

vrabosh: не то это.. а вдруг ему возращаться надо или реально туда куда шел ловить нечего.

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

ilgiocatore: ну так надо путь строить

ilgiocatore: к ближайшей непосещенной точке

ilgiocatore: обычного bfs достаточно

piter239: достаточно для чего? ))

vrabosh: да ближайшая это не интересно.

ilgiocatore: достаточно для леги

vrabosh: ну щаз попробу.. а то уже замучался искать идеальный алгоритм)

vrabosh: хотя уже чуть разобрался что такое графы)

Hoggins: я за последние дни раз 5 прочитал статью о А* на википедии :)

vrabosh: я и статью, и обучающие курсы посмотрел)

dabino: аСтару нужна хорошая оценочная функция. если слишком оптимистичная - то будет слишком много итераций

BorisZ: для меня на графах все кроме бфс - страшное колдунство

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

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

ilgiocatore: +

Default avatar.png Akarachudra: BFS - это просто поиск без оценки, A* - это поиск с оценкой, может быть поверх BFS. Тут уже от реализации зависит. Если ты к BFS прикрутил оценку, то это уже не BFS получается, ну разве что, не хранишь и не перебираешь все пути. Но такое решение не пройдёт по скорости.

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

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

Default avatar.png Akarachudra: Ну да, тут прав. 50мс для поиска с некоторой эвристикой в текущих размера поля - более чем достаточно.

piter239: ух ты! трупики невинно убиенных паков на дороге мигом откатили с 3хх на 4ее места))


piter239: А время включения новой лиги заранее известно?

Uljahn: каждые два дня в это же время

Uljahn: теперь в среду и в пятницу новые лиги откроют

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

Uljahn: запили стрим как-нибудь

wlesavo: у меня даже вебки нет :slight_smile:

wlesavo: но вообще подумаю

Uljahn: без вебки даже лучше

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

Uljahn: *кот

Uljahn: блин

wlesavo: лол, соседский код

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

Uljahn: код у него не соседский был, какие-то ужасы, не стал смотреть

Uljahn: такое я и сам могу :smirk:

wlesavo: да ты любое можешь, просто лень же :slight_smile:

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

Uljahn: не, любое не могу

wlesavo: ну то что у меня нагорожено точно можешь

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

Uljahn: в общем, вся актуальная инфа - в дискорде

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

Uljahn: там мало игр дали

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

tutubalin: а в бронзе трупики есть?

Uljahn: We've not found a solution to prevent properly the surge of games with the opening of the new league. However, we'll promote less persons per second and there will be fewer matches in Silver until all promotions are done

Uljahn: ппц, я как вебгейт в дискорд уже

Uljahn: Automaton2000: пора нам профсоюз ботов мутить

Automaton2000: даже не знаю с чего начать

Uljahn: tutubalin: если в инпутах нет, то нет

Uljahn: я не обнаружил

Uljahn: ахах уже 500+ в серебре

wlesavo: так я говорю, с 200 уже 500, 300 промоушенов

Uljahn: а, я и не понял

AntonT: а нафиг вообще нужен статус DEAD?)

piter239: Anton: пока кажется, что лишь "дань памяти героям" - трупики видны, но ни на что не влияют

zuko3d: ну так-то это влияет на стратегию. Если у тебя живых больше, чем у оппонента - можно боле нагло бегать и собирать, чаще делать SPEED вместо SWITCH

MelnikovIgor: С какого момента начинается отсчет времени хода?

zuko3d: если не ошибаюсь - с того, когда тебе на вход подают первую информацию о текущем ходе

AntonT: zuko3d: ну да, но это можно было и ранее отследить, они же не сами умирают)

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

AntonT: NightLuna: аа, из-за угла я не подумал, да

Default avatar.png EugeneYakNN: есть вообще достоверный способ узнать что мой пак съел вражеского? типа если мы были в коридоре без поворотов и тот пропал?

Default avatar.png EugeneYakNN: про что вы говорите "статус DEAD"? не приходит же в инпут такое?

NightLuna: в дереве и бронзе не приходит, в серебре добавили

Default avatar.png EugeneYakNN: спасибо, буду иметь в виду

Default avatar.png EugeneYakNN: Я правильно читаю "When the game begins, the map is filled with pellets and the occasional super-pellet" как если не стена или пак, то точно пилюля?

Default avatar.png EugeneYakNN: *как "если не стена или пак, то точно пилюля"?

piter239: http://chat.codingame.com/pastebin/51aa6b33-4509-4c1f-9ca1-7e2844a03f8d

piter239: NightLuna: спасибо, не сообразил сам!

Uljahn: в инпутах приходят только твои и видимые паки соперника, вроде. в серебре теперь и съеденные