Chat:Ru/2020-05-09

From CG community
Jump to navigation Jump to search

miklla: ориентироваться в проекте

miklla: я могу выделить название функции

miklla: и мне браузер показывает где она определена и где используется (по всем файлам проекта)

metahom: тот который редирект?

miklla: что?

metahom: вирус редирект?

miklla: ?

miklla: чем заражён хром я хз

metahom: сейчас только прочел про этот вирус. странная штука

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

miklla: (удалить хром)

metahom: сто лет уже с вирусами не сталкивался

miklla: ну в том числе всякие окна открывались изнеоткуда

metahom: ну да, похоже он

miklla: с рекламой какой-то

metahom: прогнал бы cureit-ом для верности

miklla: так как я в танке, то скачаю пока это

miklla: то, что ты написал

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

metahom: только смотри, она раньше блокировала комп и может работать десять часов

metahom: * для тестирования на вирусы и лечения

miklla: она не распиратит мою пиратскую винду?

miklla: касперский распирачивал

metahom: вот этого не знаю

metahom: сам уже давно ей не пользовался

BorisZ: miklla 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.

BorisZ: камень идет из 1 в 2, ножницы из 2 в 1: ножницы стоят, камень идет и ест ножницы

BorisZ: ножницы слабее - они на камень шагать не будут

BorisZ: и нахрена чат починили - так хорошо без него писалось

735487: похоже да Борис опять прав :) это условие решает вопрос на какой клетке кто будет сьеден если они идут навстречу в упор

BorisZ: bинтереснее что будет если ножницы идут с ускорением из 3 в 1

BorisZ: а не, не так

BorisZ: камень из 1 в 2, ножницы с ускорением из 4 в 2, во

BorisZ: выдет что не съедят их, они просто шагнут на 1 клетку всесто двух

BorisZ: надо лезть в рефери уже видимо, а то домыслы какие-то (

BorisZ: а через границу карты паки видят или нет?

Mycopka: da

BorisZ: Mycopka спасибо

735487: как не сьедят? сначала они передвинутся камень на 2 и ножницы на 3. а потом камень стоит а ножницы на него наскакивают и проигрывают

735487: или нет? блин так и симу некогда будет запилить :)

BorisZ: вот и выходит из описания что не наскакивают, не имеют права ?

BorisZ: это они пересекают путь или нет? )

BorisZ: камень то стоит уже, закончил движение

Hiker: Товарищи, а то что паки теперь двигаются как бы один раз в 2 тика, это реализация нитро?

Hiker: то есть он реально не за тик проезжает 2 клетки, а двигается каждый тик. А без нитро - раз в 2 тика?

BorisZ: все так, если скорость активна хоть у кого-то, то ход длится 2 тика

BorisZ: ну или всегда 2 тика просто плеер съедает второй тик если скорости нет ни у кого

735487: https://www.codingame.com/share-replay/459302355 как сожрать почти всех и проиграть :)

735487: BorisZ: у меня в моих играх полно случаев когда противник стоит а мой на него находит и проигрывает

735487: решил свой код ресабмитнуть посмотреть насколько все поменялось :)

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

BorisZ: практика важнее теории )

Hamibar: А тут порядок ходов важен? К примеру если у меня паки на (1, 1) и (1,2). Если я скажу сначала (1,2) ->(1, 3), а потом (1,1) -> (1,2) будет коллизия или нет?

BorisZ: 1. All moving pacs move 1 step, regardless of their speed.

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

BorisZ: да и в реплеях видно паравозиком ходят только так

735487: блин ближайшие 2-3 дня некогда к сожалению симу писать. хз успею потом или нет. или уже неделю костылить потихоньку )) а потом в мульти врываться ))

Hamibar: BorisZ спасиб.

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

735487: так надо хотя бы манхеттен на бфс переписать ))

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

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

Hamibar: Я вот еще думаю. Что если найти какое-то количество хороших путей для каждого пака отдельно. Рандомно их выбирать и найти наилучшее сочетание из этих вариантов. Вот думаю будет ли толк или слишком много комбинаций.

BorisZ: угу, я пока в ту же сторону думаю

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

BorisZ: благу тут понятно куда идти, не то что в подлодках )

BorisZ: свои пути как-нибудь уж можно на непересечение проверить, а с врагом пока хрен с ним

Hamibar: почему случайные лучше, чем условно хорошие?

Hamibar: ааа

Hamibar: я не так прочитал

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

BorisZ: как мне кажется

BorisZ: и моему питону так же кажется

Hamibar: да да я понял) я думал ты наоборот написал :upside_down:

Vinatorul: Всем привет! Какой-то новый контест? Интересный?

BorisZ: да все они интересные если втянешься

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

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

BorisZ: вроде кто-то совсем без ифов обошелся

Hamibar: pac же не мешает обзору? то есть не загораживает своей тушкой то что находится за ним?

Default avatar.png selslack: 1 ифа достаточно :)

tomatoes: не загораживает

Hamibar: спасибо

tomatoes: варпы тоже не загораживают

Hamibar: какие варпы?

tomatoes: телепорты

tomatoes: с краев карты в общем которые

Hamibar: ага понял. Я просто представляю их не как телепорты)

Default avatar.png Razdva122: Вражеский загораживает

BorisZ: вражеский пак загораживает обзор?

BorisZ: может путь загораживает ты имел ввиду?

BorisZ: не может быть чтоб про это в правилах не было упомянуто

dbf: глянул гитхаб, вроде не загораживает обзор

dbf: https://github.com/CodinGame/SpringChallenge2020/blob/754903f4a66fc4575ac988f7f15e7c85da0aa162/src/main/java/com/codingame/spring2020/Game.java#L964

BorisZ: да, ни слова про вражеские паки

BorisZ: священные книги не врут

BorisZ: на костер его!

Default avatar.png Razdva122: Может быть я ошибся, видимо мне показалось в одном кейсе что он загораживал и я не видел

BorisZ: да все ок) зато проверили corner case

Razdva122: Смотрю половина топа С++

Default avatar.png selslack: на С++ больше вычислений можно сделать чем на других языках, поэтому он в топе часто :)

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

WhiteCrow: Хм... А проблемы с таймаутами ещё не пофикшены?

metahom: вроде да

WhiteCrow: А то у меня на минимальном количестве операций всё дохнет

WhiteCrow: Даже как-то обидно

WhiteCrow: Плюсы, говорили они

WhiteCrow: Больше вычислений, говорили они

Hamibar: таймаут же это не обязательно превышение по времени

Hamibar: может ошибка какая нибудь

gybson_samara: у меня тоже на каком-то этапе резко стало по ТА падать

gybson_samara: притом ошибку с stdout я видел, это другое

gybson_samara: хера се в бронзу налетело

gybson_samara: на C можно моментально сделать матрицу для эмкляции и после эмуляции ее выбрость

gybson_samara: а на питоне сиди в одном горшке сто раз вари

gybson_samara: я в ходе симуляции не стирал съеденные палеты, а потом удивлялся, что они туда-сюда у меня ходят

Uljahn: :/

Uljahn: numpy - тот же C

gybson_samara: я его пока не заюзал

gybson_samara: у тебя есть мануал?

WhiteCrow: Аааа... Таймауты выдают и при вылетах программы?

WhiteCrow: Теперь понял...

Uljahn: gybson_samara: на русском нет, есть вот такой https://www.labri.fr/perso/nrougier/from-python-to-numpy/

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

wlesavo: жалко за съеденных противников не дают ничего

WhiteCrow: Hamibar кажется, это называется оптимизм в случае неопределённости

WhiteCrow: wlesavo это было бы мессиво, да :)

wlesavo: в общем чатике обсуждали ток недавно скидку на цену в зависимости от того когда видел последний раз

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

Hamibar: WhiteCrow да мои паки оптимисты :smiley:

Hamibar: wlesavo по идее должно работать

Hamibar: но видимо просто узкое место не в этом

Hamibar: вот и не приносят почти пользы эти мелкие изменения коэффициента

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

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

Hamibar: совсем другая игра бы была)

wlesavo: ну в пакмане же давали за приведений

Hamibar: кстати сейчас наверное может быть не выгодно убивать.

Hamibar: просто теряешь кучу ходов

dbf: ну догонять смысла нет, а если зажал в тупике, то может и стоит

Hamibar: в общаке эйлер показывал реплей как он 2мя паками зажимал соперника.

WhiteCrow: Эпик кам бэк https://www.codingame.com/replay/459414299

WhiteCrow: Только не говорите мне, что mt19937 зациклился

Anvilondre: А как играть против себя же?

Anvilondre: А, только заметил что можно противника выбрать

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

Hamibar: как же классно на старте. Делаешь маленькое улучшение и видишь, как оно работает

gybson_samara: я с вуда2 сижу меняю параметры эмуляции и сижу в середине бронзы

gybson_samara: сегодня я никакой, а завтра начну применять скорость и превращения

gybson_samara: и мутацию добавялю

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

gybson_samara: мне надо симуляцию переписать

gybson_samara: под скорость

gybson_samara: если сейчас я убираю диагонали, то тут их надо будет оставить

gybson_samara: а если ход не по диагонали, то сделать еще один

gybson_samara: это значит рандомный ход я выношу в отдельную процедуру и вызываю ее один или два раза

gybson_samara: это я не вам пишу, себе =)

Hamibar: хорошо, что у меня не симуляция :slight_smile:

gybson_samara: ниче хорошего

gybson_samara: обход всей карты - таймаут

gybson_samara: граф не построить

gybson_samara: чекать соперника надо, чтобы понять где он съел

Hamibar: с питоном конечно есть свои сложности

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

gybson_samara: да при чем тут питон? я хоть сейчас на С перепишу

Hamibar: обход всей карты - таймаут.

Hamibar: на плюсах такой проблемы явно нет.

gybson_samara: А на С я буду два дня блох искать

gybson_samara: Где я там забыл * поставить

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

Hamibar: так можно про любой язык сказать

WhiteCrow: фук https://www.codingame.com/replay/459434438

735487: не ставь нигде * да и все )) никто не заставляет же

WhiteCrow: Ну, 7/10 лучше, чем ничего

WhiteCrow: Пересабмитился, 10/10

Hamibar: вы кстати при поиске пути противника как непроходимую клетку помечаете?

WhiteCrow: 13%, 308 место

WhiteCrow: Нет, забиваю на противника

WhiteCrow: 31%, 165 место

WhiteCrow: УЕ

gybson_samara: я противников пока не замечаю

wlesavo: Hamibar я противника пока только статически учитываю в эвале и все

WhiteCrow: Я противника учитываю только по принципу "он рядом, ща наваляю..."

WhiteCrow: Кажется, я только что опять поднял наш универ в топ-10

WhiteCrow: Побьеда

Hamibar: просто вроде как просто учитывать как стенку не круто. Ведь он только 1 ход там, но и совсем не учитывать нельзя. А то такой построил путь, а на пути вражина. Вот думаю как бы так это сделать.

Hamibar: Пока тактика "противник - это стенка" дала топ 50

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

gybson_samara: у меня противник это просто +- в функции

gybson_samara: пока 0

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

wlesavo: ну так со скидкой

wlesavo: от расстояния

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

wlesavo: нормально отпугивает

wlesavo: ну от поиска зависит

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

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

WhiteCrow: NFR CNJG

WhiteCrow: ТАК СТОП

Uljahn: начал писать бота - скопировал решение из labyrinth, по-моему очень близко по сути

WhiteCrow: А КАК МЕССАГИ ПИСАТЬ???

wlesavo: WhiteCrow текстом после команды

WhiteCrow: Спасибо...

Uljahn: позырь в рефери, наверняка какой нить | msg

ilgiocatore: мне почему-то напомнило трон

wlesavo: MOVE 1 2 3 EAT BRAINS

Uljahn: а, так для каждого можно, круто

Uljahn: из трона тут вороной как родной

WhiteCrow: Наш вуз четвёртый в рейтинге!

Uljahn: ну это пока :smirk:

WhiteCrow: МФТИ ЛЕЖАТЬ

Uljahn: репортед за кибербуллинг :smirk:

Hamibar: WhiteCrow ровно в топ 100 залез

WhiteCrow: Омг, после твоего сообщения у меня резко отпало соединение, я аж испугался

Uljahn: :smiley:

Uljahn: инстант карма

WhiteCrow: Угу

WhiteCrow: Кажется, пора пристраивать таймер к своей кодине

WhiteCrow: Увидел таймаут

gybson_samara: какой-то баг с ТА

gybson_samara: я подожду

WhiteCrow: Да не, похоже на реально зависание

gybson_samara: и тем не менее

wlesavo: лол, как будто селфплей https://www.codingame.com/share-replay/459458748

735487: https://imgur.com/a/iStXdza баг какой то

wlesavo: дай реплей

Hamibar: просто у соперника премиум аккаунт

735487: https://www.codingame.com/share-replay/459459022 вот реплей не знаю зачем. я вроде победил а вроде и второй )))

MadKnight: пишет что ты первый

MadKnight: https://sun1-24.userapi.com/nJ6HMhPhXxVcp1IpnevO2RGU8j3HUrIxpjxBCg/gQL5JF0JaYk.jpg

MadKnight: amurushkin скорее всего баг отображения

MadKnight: попробуй закрыть и открыть

Anvilondre: ну так в этом и прикол, что на реплее пишет что 1, а в истории матчей что 2

wlesavo: лол, оказывается можно съесть всех и все равно ничья будет https://www.codingame.com/share-replay/459465441

wlesavo: я чето думал это победа будет даже при ничьей по пеллетам

Razdva122: Там же в правилах написано

Razdva122: тебе просто все оставщиеся плетты отдают

Anvilondre: Кто-то шарит за проходной в серебро?

wlesavo: до серебра еще 2 дня

Anvilondre: Я понимаю

Anvilondre: Я просто думаю улучшить старый алгоритм или переписать под монте карло

Anvilondre: Типа заранее никто не знает какой процент пройдет в сильвер?

wlesavo: я думаю даже сам стаф не знает пока

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

735487: да процентов 40-50% пройдет

735487: не меньше 30% так точно

735487: обычно так

WhiteCrow: Не много?

WhiteCrow: Мне казалось, что меньше

WhiteCrow: Тут это будет 700-1100 человек

WhiteCrow: А то и больше

735487: ну в прошлые контесты всегда казалось что это процент а не количество. по количеству только в легу

WhiteCrow: Хм

wlesavo: amurushkin выглядит мало вероятно, это какой реран будет тогда в серебре, 100к игр

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

wlesavo: в 50% там наверное есть боты уровня вуд1 босса

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

Uljahn: такая массовость и такая лёгкая бронза на что-то намекают

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

wlesavo: ну да, всякое может быть конечно

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

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

WhiteCrow: В дереве

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

MadKnight: лиг

WhiteCrow: В остальных это делается выбором участника на правильной позиции

MadKnight: идеально одинаковой сложности

MadKnight: тем более для гоночек

MadKnight: где -3vel уже топ голды

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

MadKnight: вот предложи это одменам

MadKnight: какая частота будет в дереве?

MadKnight: 95% ?)

WhiteCrow: Подходящий под что?

MadKnight: подходящий под лигу

WhiteCrow: Деревянные боты должны появиться до появления участников

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

WhiteCrow: Под лигу?

MadKnight: Uljahn я к тому что 95% будет почти как рандомбот

WhiteCrow: Ты не знаешь, как орошо участники справятся в будущем

Uljahn: есть же история контестов

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

MadKnight: и чтобы постоянная смена хороший/кривой ходов не давали ходов типа влево-вправо-влево-вправо

Uljahn: да блин, чё там учить, не нейронку же

MadKnight: рандомная кривость не будет работать Uljahn

MadKnight: случится рассинхрон

Uljahn: ну а как в играх делают адаптивный ИИ?

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

MadKnight: чё значит адаптивный

MadKnight: аа

Uljahn: лол

MadKnight: ну не рандом же

MadKnight: там просто включают сложность пониже

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

MadKnight: простой бронзовый

MadKnight: и золото

MadKnight: й

Uljahn: рандом - это самый примитивный вариант, очевидно

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

Uljahn: отрубить ему фичи)

MadKnight: у пб4 бот без фич был в топе леги

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

Uljahn: вот-вот

MadKnight: но станет ли он нужного уровня?

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

wlesavo: короче ломать не строить

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

MadKnight: wlesavo ты вернулся обратно к проблеме

MadKnight: так как ты сделаешь константный уровень если он зависит?)

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

wlesavo: так проблема не в боте а в цели которой хотят добиться

Uljahn: +

MadKnight: так а как её добиться?

wlesavo: константный уровень и не нужен

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

MadKnight: тогда фичи должны рвать любых топовых ботов без этих фич

MadKnight: иначе ты просто запилишь симу и пройдёшь в легу без всех своих фич

Uljahn: фичи должны рвать боссов лиг

Uljahn: если запилишь симу - это уже уровень голды

Uljahn: как минимум

735487: ой я помню в каком то контесте так делал. прямо в вуде симу писал ))

metahom: вопрос конечно нетривиальный, но одной строчкой две лиги пройти это не оч решение

ilgiocatore: да так-то вообще на лиги пофигу, не?)

ilgiocatore: все равно весь интерес только в голде, а для кого-то только в леге

ilgiocatore: всегда

Uljahn: вопрос в цветовой дифференциации штанов)

metahom: во! :)

metahom: по хорошему и голда всегда халява

735487: не всегда. у меня есть несколько контестов где я не смог ))

ilgiocatore: я бы просто брал автоматом самого среднего бота в лиге и делал его боссом и так до бесконечности, пока не останется лига с ~10 участниками

Uljahn: лега42

ilgiocatore: в этом еще был бы свой прикол, кто-то конкретный становился бы боссом своей лиги)

735487: и контест бы год шел что ли?

Uljahn: в гоночках бы не помешала ещё пара топовых лиг

Uljahn: платина и нейроплатина

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

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

Uljahn: симуляция игрового мира на несколько ходов вперёд

Uljahn: имплементация всех правил

tutubalin: по сути, нужно реализовать те же правила игры, что и в рефери

735487: народ какая функция медленно затухает? что то я никак не соображу

735487: или медленно растет от 1 до 10 к пример на 200 тиках

ilgiocatore: гипербола, например, затухает: y=k/x

ilgiocatore: sqrt(x) медленно растет

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

ilgiocatore: wolframalpha

qbit86: Экспонента. Справа растёт, а влево хвост затухает к нулю. Соответственно, если перед аргументом поставишь минус, то развернёшь затухающий экспонентин хвост вправо.

qbit86: https://www.wolframalpha.com/input/?i=e%5E%28-x%29

Uljahn: экспонента топчик, крутизна затухания регулируется коэффициентом в показателе, т.н. https://ru.wikipedia.org/wiki/Постоянная_времени

Uljahn: в статье картинки понятные

wlesavo: по моему ему логарифм нужен

wlesavo: либо тангенс гиперболический, его легче скейлить

wlesavo: плюс он насыщается

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

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

735487: всем спасибо. буду думать

735487: про вольфрам я уже и забыл. у меня еще версия была 3.0 которая на 95 винде работала

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

BorisZ: amurushkin если в цикле затухание или для бфс то проще руками сделать декой и перемножать его каждую итерацию\слой на константу типа 0.95

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

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

735487: никто не слышал таймауты то починят или нет?

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

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

Uljahn: тепловая карта хм...

735487: у меня немеряно игр где тупо на 1 тике бот таймит. такое ощущение что с плюсами что то не то

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

Uljahn: если не сообщать об ошибке, то могут и не исправить)

WhiteCrow: Мне тоже кажется, что с плюсами что-то не то

WhiteCrow: Something is terribly wrong

735487: тоже таймит?

Default avatar.png Akarachudra: Это довольно просто проверить - отправить игру в IDE и позапускать заново. Если плавающая проблема с таймаутами, то это можно будет увидеть. Может цикл или рекурсия?

Hamibar: у меня на плюсах ничего не падает

Hamibar: вот сейчас фул сабмит прошел хорошо

Hamibar: вернее плохо, но без сбоев)

735487: там единственное что у меня есть на 1 тике это бфс

aropan: Видимо либо бесконечный цикл либо решение падает (выхода за пределы вектора например).

aropan: Ты же можешь скопировать игру в веб иде и там запускать скок хочешь.

Default avatar.png Akarachudra: ну бфс хороший кандидат на бескончный цикл.

735487: у меня единственный бесконечный цикл это игровой while

aropan: Порой беконечный цикл может быть там, где его быть не должно.

Default avatar.png Akarachudra: а как ты реализовал бфс без циклов и рекурсии?

Default avatar.png Akarachudra: ну и кстати, просто бфс - далеко не уйдёшь. слишком медленно, нужно вводить оценку весов и оптимизировать.

aropan: Для меня работает такой дебаг - всю инфу, которую мне нужна на текущий тик я вывожу в вывод ошибок, копирую это все и запускаю локально.

735487: ну бфс у меня для оценки расстояния от точки к точке

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

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

Uljahn: а телепорты обрабатываются норм?

735487: да есть проверки

735487: короче да падает на некоторых картах на попытках рассчитаться расстояния от точки к точке

Hamibar: Akarachudra почему бфс медленный? он же за O(n) работает. Или нужно что-то быстрее? :sweat:

735487: для всех точек

Default avatar.png Akarachudra: Если просто проверить доберешь ли ты до точки, то быстро, но ведь в одну точку можно прийти несколькими вариантами.

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

Hamibar: ну это да) понятно, что бфс ищет только определенные пути.не факт что оптимальные

735487: Uljahn: наверное ты был прав. присмотрелся к коду у меня в бфс можно идти или нет проверяется походу правильно а visited ставится не правильно на телепортах

735487: нашел бесконечный цикл ))

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

zuko3d: народ, о каких телепортах речь?

zuko3d: края карты?

735487: ну да

zuko3d: а, ок. я просто карту как граф реализовал, там края склеиваются и bfs уже ничего не знает про края

735487: а как вы пути ищите по которому идти? рандомно дфсом?

aropan: Бфс с восстановлением пути.

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

WhiteCrow: Какое напряжение https://www.codingame.com/replay/459654007

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

WhiteCrow: Ого

WhiteCrow: https://www.codingame.com/replay/459657110

WhiteCrow: Явно баги в симуляции

WhiteCrow: Плохо!

WhiteCrow: А, я понял

aropan: Ох, я этот случай отдельно разбирал.

WhiteCrow: Не, у меня это уже должно было быть давно пофикшено

WhiteCrow: Просто я баг посадил

WhiteCrow: Баг убрал а проблема осталась...

aropan: А я правильно понимаю, что то, что сейчас в бронзе это финальная версия игры?

735487: да

WhiteCrow: https://www.codingame.com/replay/459665569

WhiteCrow: Ну... Да. В какой-то момент стратегие на симуляции отключается и управление берёт эвристика из дерева

ilgiocatore: этой команде пакманов явно не хватает капитана)

MadKnight: стань этим капитаном

MadKnight: amurushkin

735487: MadKnight: лучше скажи как находить пути для выбора?

WhiteCrow: Фух, я смог отделить нормальные изменения от забагованных

WhiteCrow: Спасибо тебе, git!

WhiteCrow: Конечно, если бы я делал коммиты чуть чаще, было бы проще...

WhiteCrow: А по диагонали паки видят?

spaceorc: нет вроде

WhiteCrow: А то у меня возникли подозрения...

Uljahn: есть рефери специально на такой случай)

WhiteCrow: Я уже по дебаговому выводу проверил

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

WhiteCrow: Я пока это не учитываю в стратегии

WhiteCrow: Но общую инфу собираю/поддерживаю

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

spaceorc: они так быстро кончаются, что перестают играть роль очепнь быстро

Hamibar: + я не обновлял инфу о том, что их собрали

WhiteCrow: seed=-6248470599757999100

WhiteCrow: Без порталов О_о

Hamibar: а как запустить игру по сиду?

WhiteCrow: Слева от плей май код

spaceorc: options

WhiteCrow: OPTIONS

WhiteCrow: MANUAL

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

Hamibar: ооо, надо было в эксперт мод переключится.

WhiteCrow: ЛОЛ

Hamibar: Может быть потому что начала контеста и слишком разные стратегии пока.

WhiteCrow: Инфы очень мало

MadKnight: Akarachudra потому что не надо пытаться угадывать что он будет делать

WhiteCrow: Тут вполне можно умереть, даже не узнав, что произошло

Default avatar.png Akarachudra: MadKnight ладно, не буду)

MadKnight: Akarachudra надо искать решение, под которое у противника в принципе не будет хороших ходов

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

WhiteCrow: Их по компаниям можно вычислить

WhiteCrow: https://www.youtube.com/watch?v=JsVtHqICeKE&feature=youtu.be

BorisZ: атомная бомба не подходит - ресурсов маловато

MadKnight: ага, будешь ходить по зданию компании, спрашивать у каждого - это ты вот этот игрок?

Hamibar: опасная это профессия программист!

BorisZ: все забыли уже мемы из 2000х (

BorisZ: или я такой старпер?

Hamibar: не забыли, а даже и не знали :upside_down:

Uljahn: Automaton2000: я знаю твой айпи 127.0.0.1, машина уже выехала!

Automaton2000: И так пока я не пойму, что творю полную фигню. :)

Hamibar: Ооо на 26 закинуло. Люблю когда правишь несколько строк кода и получаешь результат)

MadKnight: Hamibar какой у тебя щас алгоритм?

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

Hamibar: Делаю это поочередно для каждого пака

Hamibar: Выбираю не какой-то а лучший из того, что нашел.

vrabosh: два дня с этим бфсом мучался. только начало получаться.

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

Hamibar: Ну и бегаю всегда на ускорении, а противники, как стены себя ведут)

Hamibar: vrabosh насколько я понимаю бфс все таки не самая оптимальная стратегия) так что мб переписывать еще надо будет:upside_down:

vrabosh: почему? как еще пути искать?

Hamibar: бфс все таки не ищет все пути. Это значит, что вероятно, какой-то отличный путь не был найден.

Hamibar: Вряд ли я смогу сказать почему бфс не слишком хорош) Но почему-то кажется, что можно придумать что-то лучше.

Hoggins: бфс - от брутфорс?

Hamibar: не поиск в ширину

Hamibar: breadth-first search

Hoggins: а

Hoggins: делаю то же самое что ты описал, только до 100 еще не добрался :)

Hamibar: ну дьявол же в мелочах) пару часов назад тоже был за 100

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

Xanrum: я вчера перебирая все варианты глубиной до 20 полей от каждого пака и не смотря на союзные и на противников 18 место занимал, но уже скатился : (

MadKnight: а надо смотреть на союзных

MadKnight: Akarachudra сделал как я советовал?)

Default avatar.png Akarachudra: Твоими молитвами вышел в топ1.

SqueeCoder: Просто жесть

Anvilondre: vrabosh понимаю, та же тема бывает из-за L1 метрики

Anvilondre: Надо ловить хайп и переходить на симулицию)))

Anvilondre: Сделал через алгоритм монте карло, через некоторое кол-во ходов таймауты выкидывает

Anvilondre: Кто как с ТА боролся?)

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

Anvilondre: У меня так всего 20 прогонов выходит

Uljahn: в первый ход кэшируй всё что можно

Uljahn: там лимит больше - 1 секунда

Anvilondre: Кстати хорошая идея

Hoggins: когда набрел на сайт, думал, та, щас буду какую то ахинею не напрягась писать. А сейчас код аккуртанее чем в прод :crazy:

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

Hamibar: Я когда в первый контест писал, все в одном файле делал. Капец не удобно было.

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

Hoggins: ух, как приятно :)

Anvilondre: А можно не в одном файле? :grimacing:

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

Hamibar: ну отправлять то в одном надо. Но писать можно в разных, а потом собирать

MadKnight: Akarachudra к успеху пришёл

MadKnight: так а что запилил?)

Uljahn: нот бед

Anvilondre: Кстати звучит очень удобно с несколькими файлами, лол

Anvilondre: Я и не думал об это

Anvilondre: Я и не думал об этом

Default avatar.png Akarachudra: MadKnight да сейчас скинут. Топ нестабилен из-за высокой дисперсии. Запилил оптимальный поиск с оценкой по нескольким функциям, могу перебрать всё поле всем пакам за 3-4мс. Добавил небольшую вероятностную симуляцию и оценку действий соперников.

Hamibar: Погодите свичнутся можно в любую из форм?

MadKnight: ага

MadKnight: Romka

Hamibar: хех, можно выбор врага пытаться запомнить и перехитрить)

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

MadKnight: ну ты хитрюга

Hamibar: :grinning:

Anvilondre: Akarachudra раскроешь тайну такого быстрого перебора?

BorisZ: требуйте исходники, как-то вы скромно

BorisZ: и чтоб с комментариями а то разбирайся потом

WhiteCrow: Предподсчитывайте bfs

Anvilondre: Перебрать всё поле всем пакам за 3-4мс звучит как-то нереально быстро

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

Default avatar.png Akarachudra: У меня извращенная реализация A*. Но тут подойдёт любой алгоритм с сохранением обратного пути, весов. mcts, думаю, тоже норм будет. как и симуляция поверх любого из этих алгоритмов.

Anvilondre: Круто, спасибо

Hamibar: Akarachudra а что значит перебрать все поле. Это же не значит перебрать все пути?

Default avatar.png Akarachudra: Основной посыл алгоритмов поиска взвешенного пути - не перебирать всё, а найти оптимальный. Ищутся оптимальные пути, отбрасываются плохие, выбирается один. Нет уверенности, что это однозначно правильно работает. Но в топе у всех +/- одинаково паки выбирают направление.

Hamibar: Я просто испугался, что ты все пути перебираешь за 4 мс:grinning:

Default avatar.png Akarachudra: Ну так и есть. Все. Где-то за 4мс. С ограниченной глубиной 1-2мс. Просто нет особого смысла все пути строить, потому что сложно предсказать поведение соперников. И чем дальше путь, тем меньше похожи на правду его веса.

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

WhiteCrow: Кек

WhiteCrow: Остальные лиги позже откроют

WhiteCrow: Чтобы азарт поддерживать

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

WhiteCrow: Нууу... Не все на бронзе, есть ещё в дереве народ :/

WhiteCrow: HAHA CLASSIC

vrabosh: пока в топ900 вхожу.

Hamibar: Ну да, если ограничивать глубину, то кажется, что не так уж много путей. Просто я подумал о всех(которые прямо вообще все) хотя это конечно не имеет смысла, ведь их бесконечно много. Что-то затупил.

WhiteCrow: NightLuna сдулась?

WhiteCrow: Cyberpunk тоже не видно

NightLuna: я сегодня занята была

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

Default avatar.png Akarachudra: Hamibar Попробую объяснить. Пути можно найти все. Их не бесконечное множество, например, в поле 40х40 у тебя оптимальных путей до каждой точки всего 1600. Это немного.

Default avatar.png Akarachudra: С учетом стен, союзных путей, это число становится сильно меньше. Но даже тогда нет особого смысла считать их все.

Hamibar: Что такое оптимальные пути? кратчайшие?

Default avatar.png Akarachudra: Ну это уже тебе решать, что ты считаешь оптимальным путём для твоего пака.

Hamibar: Тогда не понимаю почему 1600. На каждом ходу можно пойти в 4 направления. Мне всегда казалось, что путей 4^(длина пути).

WhiteCrow: Не все из них оптимальные

WhiteCrow: (ваш капитан)

WhiteCrow: Смотри, у нас есть N клеток

WhiteCrow: Сколько у нас пар клеток? N*N

WhiteCrow: Между парой клеток есть один оптимальный путь

Hoggins: так я так могу сказать что оптимальный путь состоит из одной клетки, значит посчитать их всего N*N. Ваш капитан :)

WhiteCrow: Сколько оптимальных путей? N*N

WhiteCrow: Сколько путей заканчивается в конкретной клетке? N

WhiteCrow: N=40*40

Hamibar: все я понял, что значит оптимальный путь)

Hamibar: эх, уметь бы их еще строить :sweat_smile:

NightLuna: Akarachudra `С ограниченной глубиной 1-2мс` а как глубина ограничивается временем? перестаешь перебирать, если больше этого времени?

WhiteCrow: Нет

WhiteCrow: Это результат для ограниченной глубины

Default avatar.png Akarachudra: +

WhiteCrow: Все - 4 мс Ограниченные - 1-2 мс

ilt: а ссылку на рефери можете подсказать?

WhiteCrow: https://github.com/CodinGame/SpringChallenge2020

WhiteCrow: ПЕРВЫЙНАХ

NightLuna: а, я неправильно прочитала сообщение

WhiteCrow: Да

spaceorc: блин, исправил баг стало хуже... классика )

Default avatar.png Akarachudra: сегодня раза три от таких исправлений бомбил...) один так и пришлось оставить.

Hamibar: значит не это совсем не баг:stuck_out_tongue_closed_eyes:

spaceorc: для проверки просто ресабмитил то же самое... 79 -> 24. Как-то рандом сильно влиет черезчур

spaceorc: сигма не успевает усохнуть, игр маловато... )

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

zuko3d: @spaceorc у меня вышло наоборот: 18 -> 147 :D

zuko3d: просто ресабмит с доп. дебажной инфой.

Xanrum: там явно порой чтото тупит и и один и тот же код может выполниться и за 30мс и за 50мс что приведет к вылету по таймауту. Напихал в разных местах проверку времени - если прошло 48 то использовать те рассчеты что имеешь - и улетел с 100 до 32

Jokero: Прикольнинько я так первым же сабмитом до бронзы долетел))

Jokero: еее

Xanrum: а серебро сможешь? уже третий день бьюсь и никак

Jokero: нет еще серебра ж

wlesavo: лол

Uljahn: в этот раз халявное дерево

spaceorc: халявное??? да его вообще было не пройти )) 2 часа ждешь пока обсчет закончится!

spaceorc: бот на 300 месте... толпа народа...

Uljahn: народу конечно дофига нафармили в этот раз, такой-то промоушн развернули, со времён TAC такого не было, правда тогда призами заманили 10к$ было или даже 15

Default avatar.png Akarachudra: spaceorc о, Иван ворвался) скинешь меня сейчас))

WhiteCrow: Да реально халявное

spaceorc: не, вряд ли...

WhiteCrow: Просто ждать надо долго

spaceorc: топ 10 есть, доиграет 100% и спать )

WhiteCrow: Тссссс, тут не принято деанонимизировать

Default avatar.png Akarachudra: ну с топ1 скинул, две победы у тебя, похоже где-то 0,5 отняли. не уследил.

Uljahn: WhiteCrow: кубера нет, а всем остальным пофиг

Xanrum: вы тут все друг с другом знакомы? : (

735487: скорее есть круг лиц которые тут чаще появляются

735487: и что то пишут в чате

Dmitry_Mandzyuk: всем привет :)

Dmitry_Mandzyuk: опять симы пилите для челленджа? xD

Dmitry_Mandzyuk: а я кажется баг нашел в самом соревновании

zuko3d: неправильно ходы учитываются?

Dmitry_Mandzyuk: не

Dmitry_Mandzyuk: как говорят правила, большую точку видно отовсюду

Dmitry_Mandzyuk: и когда на карте больших точек нет, пак пытается уйти на -1346470752 32767

spaceorc: Да вроде видно всегда, что не так?

Dmitry_Mandzyuk: откуда такие координаты выскакивают?

Dmitry_Mandzyuk: они ж(координаты) даются в цикле самой игрой

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

Dmitry_Mandzyuk: да вот уже смотрю

Dmitry_Mandzyuk: пока ничо не нахожу у себя

spaceorc: Ну если в реплее там джейсон приходит. В нем можно все четко посмотреть

Dmitry_Mandzyuk: а куда он приходит?

Dmitry_Mandzyuk: как его посмотреть?

spaceorc: Открой консоль браузера, в нетворке можно увидеть запрос

Dmitry_Mandzyuk: я так понимаю это если реплей кидануть в отдельное окно?

735487: ты уверен что оно прямо в инпутах а не у тебя не инициализированная переменная?

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

Dmitry_Mandzyuk: а пардон, косяк все-таки у меня))) нашел

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

WhiteCrow: В середине контеста переписать бота с нуля -- нормальная тема

vrabosh: надо два акаунта иметь.. на втором потом идеально переписывать.

WhiteCrow: Зачем?

vrabosh: а вдруг не получится переписать.. )

WhiteCrow: git ftw

WhiteCrow: Всегда же можно засабмитить раннюю версию


WhiteCrow: Олсо, слева есть вкладка History

wlesavo: не написание костылей а добавление новых фич!

wlesavo: плюс всегда можно оставить старую функцию прямо в коде переименовав в _old

Jokero: координаты вражеских пакменов доступны только когда их "видят" мои пакмены?

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

vrabosh: единственный вариант перечитывать код и чистить.. приводить впорядок. создавать структуру функций итд.

WhiteCrow: Да, другие паки видны только когда их видят паки :)

WhiteCrow: Ну, если выбрался из дерева

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

vrabosh: wlesavo, я смотрю ты хорошо в топе так продвинулся.. расскажи как это у тебя получается? сколко строк кода?

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

WhiteCrow: Нет

WhiteCrow: :)

WhiteCrow: Сделал чуть менее агрессивного бота... 15/15

WhiteCrow: Хорошо пошло

zuko3d: есть ощущение, что агрессивно играть тут вообще не выгодно

zuko3d: т.к. нет способа надёжно нападать. тупо не догоняешь врага никогда.

WhiteCrow: Способы есть, я их пока не реализовывал

zuko3d: можно зажимать в тупичке, но это надо чтобы он сам зашёл в тупичок. и он там ещё все зелёнки соберёт

WhiteCrow: А сидел с эвристикой из дерева

zuko3d: т.е. убить можно, но невыгодно

WhiteCrow: Что характерно, во второй сотне оказалось, что новый менее агрессивный бот сильно проигрывает

zuko3d: я делал бота, который сильно агрессивный - в итоге проигрывал, т.к. убить-то убивал, но потом не хватало времени собрать все зелёнки на карте, 200 ходов истекало

zuko3d: ну и пока бегаешь за противником - он собирает, а ты - почти нет, т.к. бежишь за ним

zuko3d: в общем, немного странная пвп-составляющая получилась у игры. Особенно криво выходит с углами. Можно неожиданно сдохнуть и нет шансов это предсказать. Или убить противника при проходе через перекрёсток и даже не узнать этого. В общем, как-то сыровато выглядят правила.