Chat:Ru/2020-05-10
vrabosh: единственный вариант перечитывать код и чистить.. приводить впорядок. создавать структуру функций итд.
WhiteCrow: Да, другие паки видны только когда их видят паки :)
WhiteCrow: Ну, если выбрался из дерева
vrabosh: вроде болеменее норм бегают.. способности уже завтра прикручу
vrabosh: wlesavo, я смотрю ты хорошо в топе так продвинулся.. расскажи как это у тебя получается? сколко строк кода?
Jokero: получается, когда паки противников под углом сталкиваются, они не видят друг друга?
WhiteCrow: Нет
WhiteCrow: :)
WhiteCrow: Сделал чуть менее агрессивного бота... 15/15
WhiteCrow: Хорошо пошло
zuko3d: есть ощущение, что агрессивно играть тут вообще не выгодно
zuko3d: т.к. нет способа надёжно нападать. тупо не догоняешь врага никогда.
WhiteCrow: Способы есть, я их пока не реализовывал
zuko3d: можно зажимать в тупичке, но это надо чтобы он сам зашёл в тупичок. и он там ещё все зелёнки соберёт
WhiteCrow: А сидел с эвристикой из дерева
zuko3d: т.е. убить можно, но невыгодно
WhiteCrow: Что характерно, во второй сотне оказалось, что новый менее агрессивный бот сильно проигрывает
zuko3d: я делал бота, который сильно агрессивный - в итоге проигрывал, т.к. убить-то убивал, но потом не хватало времени собрать все зелёнки на карте, 200 ходов истекало
zuko3d: ну и пока бегаешь за противником - он собирает, а ты - почти нет, т.к. бежишь за ним
zuko3d: в общем, немного странная пвп-составляющая получилась у игры. Особенно криво выходит с углами. Можно неожиданно сдохнуть и нет шансов это предсказать. Или убить противника при проходе через перекрёсток и даже не узнать этого. В общем, как-то сыровато выглядят правила.
Hamibar: По моему норм. Во первых можно сделать какое-то подобие трекера. Во вторых ты сам решаешь выбрать более рисковый путь с большим выигрышем или менее рисковый. К тому же открывается путь к командным взаимодействиям. Типа один посмотрел что чисто и только после этого пошел другой
Hamibar: Какой-то большой слишком разброс при одном и том же сабмите. То 50 то 150.
BorisZ: много участников, мало игр потому и разброс
BorisZ: разрыв в рейтинге в несколько сотых +- 50 мест, в середке может и сотня
BorisZ: в серебре будет меньше народу а игр вроде добавят в сабмите тоже
BorisZ: так что стабильнее будет место
BorisZ: то что код надо переписывать это к бабке не ходи, по крайней мере некоторые части
BorisZ: а то получаются функции в 100+ строчек моментально
BorisZ: или уродцы типа dbl_speed = (2 if pac.speed_left > 0 else 1) + (2 if opp.speed_left > 0 else 1)
Hamibar: лучше все таки не переписывать а рефакторить)
BorisZ: ну согласен, но всеж рефакторинг это тоже переписывание но с условием что функциональность идентичная будет
BorisZ: а тут может что-то всплывет, что ранше не заметил в куче говнокода
Hamibar: я вот решил переписать код для прошлого контеста) так туда и не вернулся. А ты предупреждал.
BorisZ: угу, люди склонны переоценивать свою мотивацию, иначе курсы похудения так бодро не продавались бы
BorisZ: и абонементы на фитнес на год со скидкой
Hamibar: Да мотивация штука ненадежная.
BorisZ: я читал что на курсере процент завершивших курс от начавших не то 4 не то 6 процентов
BorisZ: точно не помню сколько но совсем мало
BorisZ: а это с учетом того что у части народа это обязательный курс может быть в вузе каком-то
ilt: подскажите плиз переключение типа пака приводит к его оставновке или он делает это на ходу?
Hamibar: Тратит ход на переключение. Соответственно в этот ход не можешь ходить
MadKnight: логично
MadKnight: Hamibar как успехи?
MadKnight: у вас же уже у всех поиск?
MadKnight: вы в поиске как переключение типа делаете?
MadKnight: всм в каком виде добавили в поиск переключение типа?
MadKnight: где в 🎬 Action order for one turn находится переключение типа?
Hamibar: сделал очередность ходов. Пока по времени не прохожу.
Hamibar: Я никак не переключаю
MadKnight: успею я переключить тип, когда противник хочет меня съесть в этот же ход?
MadKnight: это было бы OP конечно
Hamibar: 3.Execute abilities 4.Resolve movement, including collisions.
Hamibar: По идее сначала переключаешь
MadKnight: так переключение типа идёт перед ходом?
Hamibar: потом только оп ходит
MadKnight: т.е. например я камень противник paper
MadKnight: противник рямом со мной
MadKnight: противник выводит ход на меня
MadKnight: а я меняю тип на ножницы
MadKnight: значит я его убью?)
Hamibar: ну по тому порядку ходов, что в описании получается что да
Hamibar: порядку операций
MadKnight: этож OP
Hamibar: Почему
Hoggins: на практике так и происходит
dbf: да, именно так и работает. несколько игр смотрел, где меня съедали, поменяв тип в тот же ход, когда я "наступаю"
MadKnight: давайте ничего не делать а просто стоять и менять тип
MadKnight: или идти блочить противника
MadKnight: всеми 3 блочить сначала одного противника
MadKnight: чтобы он самоубился
Hamibar: Ты не знаешь во что он превратиться
Hamibar: хотя
MadKnight: так он же нападает, он же не может превратиться и напасть
MadKnight: в 1 ход
Hamibar: да. Получается можно точно заблочить
MadKnight: новый страт посоны
Hamibar: Но только если у тебя нет кулдауна
MadKnight: трапаем противника
MadKnight: это как если бы в гоночках обе машинки были бы блокерами
MadKnight: а машинка, которую блочат слишком долго, самоуничтожалась юы
Hamibar: кстати же можно двумя своими паками стоять на 1 клетке, если они разного типа?
spaceorc: нет конечно
MadKnight: but a pac can't cross the path of a stronger pac: it will be blocked.
spaceorc: на одной клетке нельзя стоять никаким двум пакманам
Hamibar: ага. Не так прочитал это правило в начале контеста.
spaceorc: в тексте объяснение довольно путаное, но в коде рефери все предельно ясно
Hamibar: это же надо код рефери смотреть :upside_down:
MadKnight: Hamibar пили мой страт короче
MadKnight: в топ выйдешь
spaceorc: редко бывают игры, когда без чтения кода рефери обойдешься...
MadKnight: 100% working hack
spaceorc: ой, все )) эта тактика проиграет любой из топа...
MadKnight: а что топы такого делают?
spaceorc: не бегут на соперника без полной уверенности
spaceorc: некоторые ВООБЩЕ не бегут
MadKnight: а откуда у них будет полная уверенность?
735487: достаточно просто проверить кулдаун у противника и не наступать на него в этот же ход. а как только переключит то и себе переключать и он уже будет драпать
spaceorc: если ты видишь что соперник за дин ход переместился на 2, значит еще минимум 5 ходов не сможет ничего поменять
spaceorc: если ты видишь что соперник за один ход переместился на 2, значит еще минимум 5 ходов не сможет ничего поменять
735487: spaceorc: в инпутах кулдаун приходит :)
spaceorc: чо серьезно???
735487: да :)
spaceorc: блин!!!
Hamibar: spaceorc видишь топ 2. Ему тактику MadKnight предложил.
Hamibar: Так что лучше запилить
spaceorc: черт, это меняет дофига всего, пошел проверять, правда ли известен вражеский кулдаун
Hamibar: amurushkin а зачем мне переключать если я его блокаю
Hamibar: я тоже буду ждать
MadKnight: spaceorc ты думал кулдаун не приходит?)
spaceorc: ага
spaceorc: не посмотрел
MadKnight: как сокращённо этот контест называют?
735487: Hamibar: это если изначально тип подходит. ну а так в этом смысла нет особо мне кажется. в этот момент твой тоже очки не набирает
MadKnight: amurushkin как контест сокращённо называется?
Hamibar: я называю PAC но похоже оф названия нет
Hamibar: amurushkin я подумал, что часто еще есть проходы с другой стороны.
Hamibar: Наверное может иногда быть полезной страта. но очень ситуативно
735487: я у себя назвал PacMan
piter239: http://chat.codingame.com/pastebin/02cc95a5-bf02-4e2f-978d-0f4c0568e16e
piter239: Всем привет!:tophat:
piter239: вопрос про стратегию обхода поля, получилось длинно:grinning:
piter239: Буду благодарен за подсказку начинающему
Hamibar: Оптимальная то наверное есть, но ее никто не знает.
Hamibar: Я пока просто бфсом нахожу и выбираю оптимальный. (Не факт, что он действительно оптимален)
Uljahn: вообще, раскрывать все нюансы посреди контеста не принято, вот закончится - велком ту постмортемс
dbf: Hamibar, а бфс же не будет находить единичные корридоры в стороны, потому что ищет самый короткий?
Hamibar: Я не очень понял, что значит единичные коридоры в стороны. Пути длиной 1?
dbf: если карта такая
dbf: 000000000
dbf: 0000100000
dbf: 111111111
735487: dbf бфсом можно найти не только самый короткий путь а и все из точки
dbf: 0 - стена, 1 - это еда. бфс же не зайдет в единичное ответвление, если ты будешь искать путь длиной, 10, например?
Hamibar: зайдет конечно.
Hamibar: я не задаю какой длины путь
dbf: а, интересно. я думал, генерируется набор одинаковых по длине путей и оценивается
dbf: amurushkin, не понял, все пути из точки в разные точки? или в одну другую?
Hamibar: просто тяжело сказать путь какой длины надо сейчас искать. Поэтому просто ищу все из точки до достижимых из нее
Uljahn: т.е. надо найти путь, чтобы на развилке остановился? а то ведь не видно, есть там пелет или нет
Uljahn: хм, в данном случае есть, это да
dbf: да, наверное, можно сравнивать разные пути, если учесть длину,
Hamibar: я думал делать оценку сколько новых клеток этот путь откроет. И учитывать это при выборе. Но пока не запилил.
Hamibar: что-то 50мс стало резко совсем мало(
Altaire: Самая крутая ничья ;-) https://www.codingame.com/replay/460220476
Uljahn: нот бед
piter239: Спасибо за отклики!
piter239: я не спрашиваю "все детали", ясное дело))
735487: dbf: бфс ищет множество кратчайших путей из точки по всему лабиринту до упора
piter239: что сам сделал в качестве первой попытки - bfs от каждой исходной позиции пака даёт длину пути до любой точки поля.
piter239: точно!
piter239: для (больших) крошек нахожу того пака, который ближе
piter239: сейчас думаю, как поделить поле между паками. Voronoi diagram, видимо
piter239: а вот как сделать _обход_ - пока не знаю.
piter239: ничья да, красивая.
мой текущий код съел бы противника сразу, но я пока speed использую только при наличии больших крошек
wlesavo: вчера весь день пытался переписать поиск с монтекарло на что-то типа SA, в итоге заработало +- также но добавились рандомные таймауты
Hamibar: похоже нужно учиться писать оптимизированный код сразу)
dbf: amurushkin, ну да, я понял ,что можно типа floodfill сделать, чтобы найти пути во все точки, но смутило то, что он будет искать кратчайшие по числу клеток, а это не всегда хорошо
735487: dbf: можно же поменять чуток алгоритм но с весами это уже не бфс а дейкстра или astar наверное. ну или если чуток жадности включить можно и в бфс веса добавить например за переход не по 1 а по 100 и минусовать там врагов или еще как то
Hamibar: Что-то я не понимаю. Интересные решения, которые должны работать не дают результата, а 2х строчные дают :angry:
wlesavo: ;bpf
wlesavo: жиза
wlesavo: я склоняюсь к тому что это потому что руки не из того места
Xanrum: обычное дело. Делаешь ветку с интересным решением и оно хуже предыдущего, два часа оттачиваешь и оно наконец начинает давать результат
Hamibar: wlesavo хорошая версия. Многое объясняет.
Hamibar: Xanrum ну да. Скорее всего там жуки.
wlesavo: я "улучшенную" версию выше 20го не поднимал, а старая до сих пор в 10ку иногда залазиет, но стоит подергать параметры и скатывается
Xanrum: вчера переписал на переиспользование всех буферов и адресацию в одномерных массивах вместо двумерных. Дало хороший результат - но сегодня открываю теперь код ни читаемый, ни поддерживаемый ни дорабатываемый : (
wlesavo: это да
wlesavo: я так делаю только в тех кусках куда не собираюсь возвращаться уже точно, типа работает и хорошо
BorisZ: Xanrum можно одномерный массив типом обозвать и на нем сделать геттеры и прочие хелперы, они должны заинлайниться
BorisZ: ситаю свою мессагу и думаю как велик и могуч русский язык!
MadKnight: есть кто с калининграда?
Uljahn: мне кажется, одномерная адресация даёт копеечный выигрыш, т.к. пересчёт индексов ничто по сравнению с обращением к памяти, или я заблуждаюсь?
MadKnight: особенно если размер кратен 2
MadKnight: например 32
Ivan_Legion: сделай враппер
MadKnight: y*32+x это ваще просто сдвиг на 5
Uljahn: естественно, для случая, когда ряды массива лежат линейно в памяти
MadKnight: особенно если y unsigned
Ivan_Legion: я назвал Get2DId(x,y)
Ivan_Legion: я назвал Get2DId(int x, int y)
Ivan_Legion: и будет тебе счастье
BorisZ: проверок на выход за границу меньше может
Ivan_Legion: тебе проверки за выход за границу вообще не нужны если в нодах хранить только доступные соседние ноды
BorisZ: и да, если строки не кратны машииному слову до еще какая-то арифметика добавится при адресации
Xanrum: во первых - в GO нет двумерных массивов, только массив массивов - со всеми вытекающими по индексации. Но на C# делал так же - проверки границ нет, но там можно по указателю и без проверок будет
MadKnight: а оператор [] в го можно перегружать?
MadKnight: и передавать туда не х у а структурку координаты
MadKnight: я так делаю обычно
Xanrum: тут ничего нельзя перегружать, убогий в плане сахара язык
MadKnight: уууууу
MadKnight: не жди меня в go, Automaton2000
Automaton2000: а в чём смысл жизни?
MadKnight: играть в пакмэна и рекать antisquid'a
MadKnight: (отсылка к диалогам из #world если что)
MadKnight: зачем кому-то нужен go если там нельзя перегружать операторы Automaton2000 ?
Automaton2000: ну я так и подумал
MadKnight: а у списков там тоже list.get(i) ?)
MadKnight: а чтобы вектора сложить, надо писать vec1 + vec2 ?)
MadKnight: vec1.add(vec2) ?)
BorisZ: type Board [N * N] int func (b *Board)get(x,y) - как то так если не путаю синтаксис
MadKnight: в с++ я просто делаю myBoard[pt]
BorisZ: это все раскроется и будет только одна проверка на выход за границу
Xanrum: там координаты у всех объектом уже хранятся в одном uint16 и сразу по нему берутся данные
MadKnight: зачем в одном uint16 ?
MadKnight: сделай стракчу
BorisZ: перегрузка - дьявольское измышление, поопределяют всяких "№;? операторов потом лазь каждый раз по хедерам
BorisZ: чем словами хуже функцию написать
BorisZ: по скорости то же, зато читаешь и все понятно
MadKnight: перегрузка - дьявольское измышление потому что в неумелых руках могут понатворить фигни?)
MadKnight: ну так с чем угодно могут что угодно понатворить
BorisZ: не, ты когда пишешь класс\ либу может кажется логичным что [] означает, а сам же через год забудешь, не говоря про других
BorisZ: понятно что есть очевидные случаи, когда не перепутаешь, но их слишком мало
MadKnight: я не пишу такого, чтобы значение [] было неочевидно
Tecarlo: Можно [] сделать возведением в квадрат!
Tecarlo: Разве не очевидно?
BorisZ: угу квадратик )
BorisZ: а я никогда не забываю ключи, не забываю всех поздравить с ДР, начинаю писать функцию с тестов
BorisZ: ну и зарядку по утрам, как без этого
wlesavo: не человек, а человечище!
wlesavo: новый тракер заработал с первого раза, не каждый день такое уыидишь
Hamibar: такое мне является только в мечтах
Hiker: товариши, а кто-то знает как посмотреть, за что ты получал CP&
Hiker: и за текущий контест очки начисляются после конца соревнования? просто в описании вроде написано ежедневно
tomatoes: на место в профиле кликни
wlesavo: за текущий в конце
wlesavo: ежедневно за мульти
Hiker: что за мульти?)
tomatoes: https://www.codingame.com/multiplayer/bot-programming
tomatoes: то что без призов и неограниченно по времени (прошедшие контесты)
vrabosh: ну его нафиг, перепишу все с нуля.. максимум что смогу с тем, что есть это 600 место.
wlesavo: ну времени еще много
vrabosh: сначало надо сделать, чтоб он идеально ходил без глюков и друг другу не мешали.. а над стратегией как воевать уже потом буду думать
Uljahn: vrabosh: для питонистов, застрявших в бронзе, будет стрим от Icebox, когда сильвер откроют, я вот буду смотреть и делать как там :)
Hoggins: хм, а где идет? :)
Uljahn: что идёт?
Uljahn: будет идти на твиче, скорее всего
Uljahn: Icebox "If CG is okay with it, I can do my classic wood to silver stream on the release of silver
Uljahn: "
Jokero: блииин, пол часа пытался понять, почему мой пак не видит что в клетках нет гранул, если он видит клетки. Оказывается игра присылает только видимые гранулы, а не видимые клетки.
BorisZ: чтобы друг другу не мешали у меня так сделано: выбираю главный пак, генерю ему путь, потом второй поглавности, генерю путь, если он с первым пересекается то другой
Jokero: Ох уж это диагностика через Console.Error
BorisZ: и так пока паки не кончатся - друг с другом гарантированно не пересекутся
NightLuna: а как ты определяешь главного?)
BorisZ: ну тут уж от фантазии зависит
Jokero: я просто пакам разные конечные цели всегда даю,
BorisZ: ближе к вкусняхе, которого сожрут сейчас и так далее
BorisZ: например
Hamibar: я тоже на это попался)
NightLuna: эвристикой, понятно, у меня пока главный тот, у кого меньше id
Uljahn: зачем определять? сдлать перебор, каждого назначив главным по разу
wlesavo: у меня главный тот кто первым в словаре попался
Hamibar: BorisZ у меня примерно также. Но на самом деле можно перебрать
Uljahn: как у рекурса в корабликах
Hamibar: для 4 у меня получается полностью
BorisZ: да можно конечно - я ж так простой путь описываю
BorisZ: это все без ощенок пока что, если перебирать то оценивать надо как-то то что нагенерил
Ivan_Legion: а как правильно формировать строку для смены формы?
Ivan_Legion: SWITCH + pacId + formId ?
Ivan_Legion: или SWITCH + formId + pacId ?
Razdva122: SWITCH pacId pacType
Ivan_Legion: спасибо
Hamibar: как не хочется сабмитать когда на 30е закинуло.
BorisZ: за промежуточные места плюшек не дают
BorisZ: неделю еще контест, сабмить смелее)
Hamibar: да и в конце все равно запустят всех со всеми.
SqueeCoder: А когда в серебро будут пускать?
BorisZ: League opening: 5/11/20
BorisZ: нажимаешь на лигу вверху справа от таймера
BorisZ: между таймером и ранком
SqueeCoder: Понял, спасибо. Надо значит пилить до завтра что-нибудь, а то 1800 место слишком убого :)
BorisZ: обычно примерно половина бронзы в серебро проходит, но тут хз - народу больше чем обычно
Hamibar: ну человек 500-800 наверное пустят
SqueeCoder: значит шансы есть
BorisZ: я бы ставил на 1000, не больше половины точно, но это все гадание )
SqueeCoder: И как часто такие контесты? Классная штука.
BorisZ: вроде раз в полгода обещают теперь, раньше было почаще
Hiker: А почему становится реже?
BorisZ: раньше контесты готовили сами игроки, собирали команду, им помогали КГ просто
Hamibar: всегда есть мульти
BorisZ: а потом они сказали что ну нафиг коммюнити - гемороя больше с вами, сами будем делать
Hamibar: если очень не хватает контестов можно туда зайти
BorisZ: ага, мульти - это почти все бывшие контесты, можно потренироваться на кошках, не торопясь
Uljahn: они сказали, что если будет идеально готовый контест от игроков, то выпустят, а то приходится много доделывать
Hiker: а там игры проводятся? или там только самомум можно создавать игры?
BorisZ: райк еще есть 2 раза в году теперь
Hiker: в мульти? ( в старых контестах)
Uljahn: райк - это Russia AI Cup
BorisZ: да, там сразу все лиги открыты, боты игроков залиты, все так же
BorisZ: ну только без ограничений по времени и без призов
Hiker: прикольно. в том же раике песочницу замораживают и все
Uljahn: игры автоматом создаются, когда жмёшь сабмит
Uljahn: в мульти
Uljahn: да и в контестах так же
Hiker: топово. типо необходимое число игр, чтобы опеределить твой рейтинг?
Uljahn: угу
Hiker: интерестинг
Uljahn: сначала 10-20 калбировочных игр, следующие уточняют ранг по TrueSkill
Uljahn: *калибровочных
Hiker: все. осталось всех порвать=) то у меня какое-то позорное 250000 место =)
Hiker: в глобале
Uljahn: это быстро фиксится
Hiker: а типо за счет мультиков можно подкачать ранк?
Uljahn: да, особенно за счёт гоночек CSB
Uljahn: чем больше народа в мульти, тем больше очков дают
Uljahn: за хорошее место
Uljahn: можно даже не быть в топе
Hiker: а какой-то профит есть в текущем занять высокое место?
Hiker: или можно сразу в мульти идти?)
Uljahn: в CP учитывают три лучших контеста с дисконтом
Hiker: типо есть коэфициент, за то что вовремя
Uljahn: за контесты отдельные очки
Uljahn: потом суммируются с мульти и другими статьями
Uljahn: типа клэша, гольфа и оптимизаций
Uljahn: кликай в профиле везде, там разберёшься
Xanrum: а зачем нужны CP?
Uljahn: солить на зиму
Uljahn: в профиле на вопросики можно кликать, там даже формулы есть как рассчитывается всё
Hiker: получается в цп статья бот программинг - это за старые контесты, а статья контесты это за участие в актуальных контестах?
Uljahn: да
Uljahn: после завершения этот контест появится в мульти, можно будет ещё очков получить
Uljahn: боты ресабмитятся автоматически
Hamibar: https://www.codingame.com/share-replay/460403761 повешу в рамочку. Когда еще что-нибудь подобное случиться!
Hiker: все в бой =) спасибо
Xanrum: эх, еще б работодатели смотрели на этот CP
Hiker: так вот кнопка гет жоб , для кого
Hiker: =)
Uljahn: эйлер жжот как обычно https://i.imgur.com/sLWFbC8.gif
Hiker: это что такое
Hiker: и кто такой эйлер
Uljahn: визуализация бота
Uljahn: эйлер - топовый кодер
Uljahn: eulerscheZahl - 2й по сайто по CP как раз
Uljahn: *по сайту
Hiker: а. да он в раиках бывает
Hiker: я просто там обычно торчал, а тут заскучал, плюс спам на почту =)
Jokero: если пак на скорости проскакивает проход, то он не видит, какие там гранулы?
tomatoes: неа
Jokero: млин
Xanrum: для большого азарта надо было сделать что б пак видел гранулы только спереди перед собой
Uljahn: и разворот максимум 18 градусов за ход :joy:
tomatoes: вроде планировалось 4 игрока сразу и еще какие-то штуки. но решили убрать
tomatoes: в рефери остатки и из кг ктото писал
Xanrum: респа не хватает для пакманов
piter239: "и разворот максимум 18 градусов за ход :joy:" точно!
помню, полдня пытался понять "что с поворотом?!?"
Hiker: почему мои паки ходят иногда каждый тик, а иногда через тик? при том что я нитро не юзаю. что происходит вообще
Xanrum: они ходят каждый ход, но в ходу может быть два тика если у какого ли пака есть ускорения
Hiker: типо если существует хотя бы 1 на нитро, то время ускоряется?
Xanrum: это так неудобно смотреть что тик не равен ходу
Hiker: то что отображается в плеере это ходы?
Hiker: или тики?)
Xanrum: тики
Hiker: и как часто я реально получаю управлдение?
Hiker: управление я получаю видимо разв ход
Hiker: ход = тик если нету ни у кого нитро
Xanrum: раз в ход, но может быть два тика если есть паки с ускорением
Hiker: а почему, некоторые челики на нитро ходят с такой же частатой как мои без нитро. господе
Hiker: это если противник криво написал? и хочет ходить по 1 шагу?) хотя может по 2?
tomatoes: скорее всего
Hiker: видать я просто случайно попался на странногго противника и он мне задурил голову
Xanrum: да, под нитро а дает на один шаг
Xanrum: я поэтому не смотря есть ли нитро или нет - всегда ддаю команду на два шага
Xanrum: я так понимаю те самые "топовые кодеры" ничего не выкладывают и их код будет только под конец?
tomatoes: кода скорее всего не будет вообще
Xanrum: почему? они не будут участвовать?
tomatoes: а, я не так понял
wlesavo: может просто игра не зацепить и не будут вкладываться по времени
Hiker: на 0 тике нельзя ходить? но он есть? почему бин этого в правилах нету. ничо ж не ясно
Dmitry_Mandzyuk: а кто знает, что за ерунда, когда у противника паки движутся непрерывно, а свои после каждого хода примерно ход стоят
WhiteCrow: Он включил ускорение
WhiteCrow: Команда SPEED
Dmitry_Mandzyuk: а, то есть она влияет не только на него но и на меня?
WhiteCrow: Ну в смысле
WhiteCrow: Она влияет только на него
WhiteCrow: Он делает два шага, за тик
WhiteCrow: Ты только один
Xanrum: за тик все же все делают один шаг
Dmitry_Mandzyuk: а точно, теперь понял, спасибо
piter239: как я понял, фишка с ускорением вот ещё в чём: если указать цель в 1 шаге и включить speed, то пакман пойдёт на 1 клетку. А если указать более далёкую цель, то после включения speed он сделает 2 шага к цели - перед тем, как брать следующую команду.
Это просто проверить в самом начале.
piter239: проверил сейчас: https://www.codingame.com/share-replay/460470947
piter239: на 3-м тике красный id1 указывает цель (10,7)
piter239: поэтому на 5-м тике двигается он один, все остальные СТОЯТ. Синие - потому что не используют speed, а красные - потому что указали цель прямо под носом.
piter239: (клёвая тема, кстати - буст полезен, только если ставить далёкие цели :)
Razdva122: Да так и есть у меня пока кор алгоритма, который ищет ближайшую цель и особенно в начале это всегда клетка в радиусе один
Razdva122: И буст юзлес получается
MadKnight: а ты ищи дважды ближайшую
Uljahn: ближайшую к ближайшей, но не в направлении назад)
MadKnight: только если рядом с тобой противник другого типа
Xanrum: под ускорением с жалением ходит на две клетки есложность брать конфеты конце тонеля
Uljahn: Automaton2000: т упрлс?
Automaton2000: automaton2000: а что если кто-то сгенерит случайный токен и получит валидный чужой токен?
dbf: ого, Automaton2000 да ты хакер
Automaton2000: да можно конечно - я ж так простой путь описываю
dbf: Automaton2000 ты контест пишешь сейчас?
Automaton2000: вот я и говорю, что ГА меньше думать заставляет
Uljahn: Automaton2000: попробуй вообще не думать
Automaton2000: но когда у тебя есть
wlesavo: нашел одну фишку в реплеях кови
wlesavo: если на поворотах сталкивается меняет тип так чтобы сам себя съедать
wlesavo: просто и со вкусом
735487: у меня в одном реплее было вообще как будто засада. правда может и случайно. мы сталкиваемся противник шагает клеток 4-5 за поворот и там ждет. я прохожу мимо - профит. причем он вышел как раз в тот момент
MadKnight: я устал кодить
MadKnight: всм за компом сидеть
MadKnight: но я хочу покодить
MadKnight: чё делать?
Xanrum: поспать, встать пораньше и продолжить кодить
MadKnight: так всего 9 вечера
Xanrum: я за эти 4 дня написал кода больше за этот го дна работе : ( уже лапки устали печатать
MadKnight: ты так мало кода пишешь на работе?)
MadKnight: сколько ты кода уже написал тут?)
MadKnight: сколько строк?
Xanrum: на работе ты митингуешь, дейлики, планирования, ретроспективы. Ты обсуждаешь что делать, ставишь приоритеты, ревьюишь код, пишешь ревью за квартал, ставишь ОКР, деплоишь код, пишешь заявки одним админам, другим девопсам. И о боже, наконец только программируешь
Xanrum: сейчас у меня 600 строк, но различные варианты, оптимизизации, рефакторинг
Xanrum: у нас некоторые на работе программируют в выходные - потому что в будни из-за органихзационной волокиты не хватает времени на разработку
dbf: ого
dbf: выпилите аджайл, освободится часть времени :)
Xanrum: но без него манагеры не будут знать что ж делают разработчики
dbf: ну и хорошо, будет меньше поводов для разговора
dbf: а вообще прямо по-больному резанул, работники энтерпрайза почувствуют :)
Dmitry_Mandzyuk: MAdKnight, а ты в контесте участвуешь?
MadKnight: ага
MadKnight: просто пропустил пару дней
Dmitry_Mandzyuk: хм, а я хотел на твоих паках потренить и тебя не нашел
wlesavo: трень на илледане, он говорит у него полностью детерминированный бот
Dmitry_Mandzyuk: да уже пытался)))
Dmitry_Mandzyuk: детерминированный в смысле нахардкоденный чтоли?)))
Hamibar: дает один и тож же результат в одинаковых условиях.
Hamibar: насколько я понимаю
wlesavo: да, правильно понимаешь
wlesavo: я вот думаю что пора рерайтить уже основой кусок
wlesavo: хочу ближе к тому что было у меня в оос сделать, ато эвристики неудобно прикручвать :slight_smile:
m2bad4u: а противники всегда появиляются симметрично с такими же типами паков?
Hamibar: да
tutubalin: 102 байта, чтобы выйти из вуд2 )
tutubalin: (f=_=>[x,y]=readline().split` `)(g=n=>n&&g(n-1,f())) g(y) while(!g(f(g(f(f())))))print('MOVE 0',x,y)
Dmitry_Mandzyuk: воу, это на каком языке?
tutubalin: JavaScript
Dmitry_Mandzyuk: и второй вопрос как такой код вообще прочитать?
tutubalin: довольно сложно ) надо каждый байт разбирать
Dmitry_Mandzyuk: ну а написать его как? это ж обычный код надо как-то так ужать
ilgiocatore: мне понадобилось где-то 2 минуты, чтобы понять, что первые две строчки это объявление функций
Hoggins: представляешь если авто так думает ))
tutubalin: это называется Code Golf. Сперва берёшь нормальный рабочий код, а затем постепенно отсекаешь от него лишнее
Dmitry_Mandzyuk: это где про 102 байта написано? xD
tutubalin: ilgiocatore только это не две строчки, а одна ) просто чат так разбил
tutubalin: https://pastebin.com/2stsurUV
ilgiocatore: ну и вторая функция это типа просто цикл по сути, не
ilgiocatore: ?
ilgiocatore: он n до нуля
ilgiocatore: который вызывает f()
ilgiocatore: блин, сложные приколы у вас джсеров
tutubalin: да, вторая функция - просто рекурсия вместо цикла. цикл больше байт занял бы
ilgiocatore: ну а первая читает строчку с инпута и постоянно присваивает значения глобальным переменным x и y
ilgiocatore: ну и видимо просто в итоге берет координаты последнего видимого шарика
tutubalin: да-да )
tutubalin: молодец, разобрал!
tutubalin: а что такое g(f(g(f(f())))) ?
MadKnight: это куча вызовов
tutubalin: это да... лиспом попахивает
tutubalin: а что они делают?
TheCrucial: читраешь паков вначале, потом читаешь все пеллетки. последняя пелетка остётся в x,y
TheCrucial: в неё и дешь
TheCrucial: f() прочитать скоры f(f()) параметры паков g(f(f())) - прочитать всех паков. и т.д.
wlesavo: tutubalin лол неплохо
Uljahn: и ещё места осталось на 999 таких ботов
TheCrucial: ограничение на код 10к симвобов?
Uljahn: 100к
TheCrucial: хехе)
TheCrucial: как ваши делищи
EugeneYakNN: супер пеллет сколько максимум бывает на одной карте?
tutubalin: кстати, там не 102 байта, а 100. у меня перевод строки за 2 байта посчитался
Uljahn: разве суперов не 4 всегда?
Jokero: ничего не понимаю, если я не видел, как съели 10ку, она продолжает для меня подсвечиваться чтоль и приходить как будто она есть на карте?
Uljahn: не должна
Jokero: у меня из за недопонимания правил уже весь код в макароны превратился из-за того, что приходится костылями исправлять неверные изначально решения
Jokero: Они как пользаки, при описании задачи как будто платят за количество букв.
Hoggins: да, первое время не очевидные правила и глупые баги в коде заставляют покурить тз
Uljahn: я только не понял, почему вражеские кулдауны тоже показывают, вроде в других играх не было такого
Uljahn: может, решили упростить дизайн или типа того
Hoggins: это еще одна не очевидная штука. Заметил только когда меня стали враги ловко на них ловить
ashelkov: ну что как у кого успехи/ целый день сегодня ковырл нормальное уклонение от врагов
wlesavo: ого, аж на шестое запушили
ashelkov: ну это всяео лучше чем на 340) поздравляю
wlesavo: да у меня примерно один и тот же код сабмитится на 10-40, а ща чет запушили
wlesavo: мне рерайт нужен нормальный, не знаю за завтра успею или нет
ashelkov: ну а мне не рерайт - а нормально фич допилить план на контест - в топ 100 заехать (оптимистично так)
DualU: Всем привет. У меня одного есть проблемы с инпутом в пакман-игре?
tutubalin: какого рода проблемы?