Chat:Ru/2020-05-09
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 же не мешает обзору? то есть не загораживает своей тушкой то что находится за ним?
tomatoes: не загораживает
Hamibar: спасибо
tomatoes: варпы тоже не загораживают
Hamibar: какие варпы?
tomatoes: телепорты
tomatoes: с краев карты в общем которые
Hamibar: ага понял. Я просто представляю их не как телепорты)
Razdva122: Вражеский загораживает
BorisZ: вражеский пак загораживает обзор?
BorisZ: может путь загораживает ты имел ввиду?
BorisZ: не может быть чтоб про это в правилах не было упомянуто
dbf: глянул гитхаб, вроде не загораживает обзор
BorisZ: да, ни слова про вражеские паки
BorisZ: священные книги не врут
BorisZ: на костер его!
Razdva122: Может быть я ошибся, видимо мне показалось в одном кейсе что он загораживал и я не видел
BorisZ: да все ок) зато проверили corner case
Razdva122: Смотрю половина топа С++
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: тоже таймит?
Akarachudra: Это довольно просто проверить - отправить игру в IDE и позапускать заново. Если плавающая проблема с таймаутами, то это можно будет увидеть. Может цикл или рекурсия?
Hamibar: у меня на плюсах ничего не падает
Hamibar: вот сейчас фул сабмит прошел хорошо
Hamibar: вернее плохо, но без сбоев)
735487: там единственное что у меня есть на 1 тике это бфс
aropan: Видимо либо бесконечный цикл либо решение падает (выхода за пределы вектора например).
aropan: Ты же можешь скопировать игру в веб иде и там запускать скок хочешь.
Akarachudra: ну бфс хороший кандидат на бескончный цикл.
735487: у меня единственный бесконечный цикл это игровой while
aropan: Порой беконечный цикл может быть там, где его быть не должно.
Akarachudra: а как ты реализовал бфс без циклов и рекурсии?
Akarachudra: ну и кстати, просто бфс - далеко не уйдёшь. слишком медленно, нужно вводить оценку весов и оптимизировать.
aropan: Для меня работает такой дебаг - всю инфу, которую мне нужна на текущий тик я вывожу в вывод ошибок, копирую это все и запускаю локально.
735487: ну бфс у меня для оценки расстояния от точки к точке
aropan: То есть локально воиспровожу, что не так - там быстро баги ищутся.
735487: может конечно действительно предпросчет расстояний падает на некоторых картах
Uljahn: а телепорты обрабатываются норм?
735487: да есть проверки
735487: короче да падает на некоторых картах на попытках рассчитаться расстояния от точки к точке
Hamibar: Akarachudra почему бфс медленный? он же за O(n) работает. Или нужно что-то быстрее? :sweat:
735487: для всех точек
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
Akarachudra: у меня вторая версия бота пытается симулировать противника на основе всяких данных. но что-то не очень получается. рандом высокий тут.
Hamibar: ооо, надо было в эксперт мод переключится.
WhiteCrow: ЛОЛ
Hamibar: Может быть потому что начала контеста и слишком разные стратегии пока.
WhiteCrow: Инфы очень мало
MadKnight: Akarachudra потому что не надо пытаться угадывать что он будет делать
WhiteCrow: Тут вполне можно умереть, даже не узнав, что произошло
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 сделал как я советовал?)
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: Я и не думал об этом
Akarachudra: MadKnight да сейчас скинут. Топ нестабилен из-за высокой дисперсии. Запилил оптимальный поиск с оценкой по нескольким функциям, могу перебрать всё поле всем пакам за 3-4мс. Добавил небольшую вероятностную симуляцию и оценку действий соперников.
Hamibar: Погодите свичнутся можно в любую из форм?
MadKnight: ага
MadKnight: Romka
Hamibar: хех, можно выбор врага пытаться запомнить и перехитрить)
Hamibar: правда есть риск не перехитрить
MadKnight: ну ты хитрюга
Hamibar: :grinning:
Anvilondre: Akarachudra раскроешь тайну такого быстрого перебора?
BorisZ: требуйте исходники, как-то вы скромно
BorisZ: и чтоб с комментариями а то разбирайся потом
WhiteCrow: Предподсчитывайте bfs
Anvilondre: Перебрать всё поле всем пакам за 3-4мс звучит как-то нереально быстро
BorisZ: заранее пути расчитать не проблема, но это ж будут хреновые пути чаще всего из-за врага, да и свои тоже мешают
Akarachudra: У меня извращенная реализация A*. Но тут подойдёт любой алгоритм с сохранением обратного пути, весов. mcts, думаю, тоже норм будет. как и симуляция поверх любого из этих алгоритмов.
Anvilondre: Круто, спасибо
Hamibar: Akarachudra а что значит перебрать все поле. Это же не значит перебрать все пути?
Akarachudra: Основной посыл алгоритмов поиска взвешенного пути - не перебирать всё, а найти оптимальный. Ищутся оптимальные пути, отбрасываются плохие, выбирается один. Нет уверенности, что это однозначно правильно работает. Но в топе у всех +/- одинаково паки выбирают направление.
Hamibar: Я просто испугался, что ты все пути перебираешь за 4 мс:grinning:
Akarachudra: Ну так и есть. Все. Где-то за 4мс. С ограниченной глубиной 1-2мс. Просто нет особого смысла все пути строить, потому что сложно предсказать поведение соперников. И чем дальше путь, тем меньше похожи на правду его веса.
vrabosh: до меня только дошло, что мы все на бронзе играем.. а я то думал.. вообще нуб
WhiteCrow: Кек
WhiteCrow: Остальные лиги позже откроют
WhiteCrow: Чтобы азарт поддерживать
vrabosh: не могу решить глюк когда он два пути находит одинаковые через ход. и иногда туда сюда ходит.
WhiteCrow: Нууу... Не все на бронзе, есть ещё в дереве народ :/
WhiteCrow: HAHA CLASSIC
vrabosh: пока в топ900 вхожу.
Hamibar: Ну да, если ограничивать глубину, то кажется, что не так уж много путей. Просто я подумал о всех(которые прямо вообще все) хотя это конечно не имеет смысла, ведь их бесконечно много. Что-то затупил.
WhiteCrow: NightLuna сдулась?
WhiteCrow: Cyberpunk тоже не видно
NightLuna: я сегодня занята была
vrabosh: подскажите, те кто графами пользуется, вы сталкиваетесь с проблемой ходьбы туда и обратно?
Akarachudra: Hamibar Попробую объяснить. Пути можно найти все. Их не бесконечное множество, например, в поле 40х40 у тебя оптимальных путей до каждой точки всего 1600. Это немного.
Akarachudra: С учетом стен, союзных путей, это число становится сильно меньше. Но даже тогда нет особого смысла считать их все.
Hamibar: Что такое оптимальные пути? кратчайшие?
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: Это результат для ограниченной глубины
WhiteCrow: Все - 4 мс Ограниченные - 1-2 мс
ilt: а ссылку на рефери можете подсказать?
WhiteCrow: https://github.com/CodinGame/SpringChallenge2020
WhiteCrow: ПЕРВЫЙНАХ
NightLuna: а, я неправильно прочитала сообщение
WhiteCrow: Да
spaceorc: блин, исправил баг стало хуже... классика )
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
Akarachudra: spaceorc о, Иван ворвался) скинешь меня сейчас))
WhiteCrow: Да реально халявное
spaceorc: не, вряд ли...
WhiteCrow: Просто ждать надо долго
spaceorc: топ 10 есть, доиграет 100% и спать )
WhiteCrow: Тссссс, тут не принято деанонимизировать
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: в общем, немного странная пвп-составляющая получилась у игры. Особенно криво выходит с углами. Можно неожиданно сдохнуть и нет шансов это предсказать. Или убить противника при проходе через перекрёсток и даже не узнать этого. В общем, как-то сыровато выглядят правила.