Chat:Ru/2020-05-12
Uljahn: ахах уже 500+ в серебре
wlesavo: так я говорю, с 200 уже 500, 300 промоушенов
Uljahn: а, я и не понял
AntonT: а нафиг вообще нужен статус DEAD?)
piter239: Anton: пока кажется, что лишь "дань памяти героям" - трупики видны, но ни на что не влияют
zuko3d: ну так-то это влияет на стратегию. Если у тебя живых больше, чем у оппонента - можно боле нагло бегать и собирать, чаще делать SPEED вместо SWITCH
MelnikovIgor: С какого момента начинается отсчет времени хода?
zuko3d: если не ошибаюсь - с того, когда тебе на вход подают первую информацию о текущем ходе
AntonT: zuko3d: ну да, но это можно было и ранее отследить, они же не сами умирают)
NightLuna: это нужно для трекинга, потому что если ты сам случайно съедаешь вражеского пака из-за угла, то ты этого никак иначе не узнаешь, потому что тебе в инпут не успело это прийти
AntonT: NightLuna: аа, из-за угла я не подумал, да
EugeneYakNN: есть вообще достоверный способ узнать что мой пак съел вражеского? типа если мы были в коридоре без поворотов и тот пропал?
EugeneYakNN: про что вы говорите "статус DEAD"? не приходит же в инпут такое?
NightLuna: в дереве и бронзе не приходит, в серебре добавили
EugeneYakNN: спасибо, буду иметь в виду
EugeneYakNN: Я правильно читаю "When the game begins, the map is filled with pellets and the occasional super-pellet" как если не стена или пак, то точно пилюля?
EugeneYakNN: *как "если не стена или пак, то точно пилюля"?
piter239: http://chat.codingame.com/pastebin/51aa6b33-4509-4c1f-9ca1-7e2844a03f8d
piter239: NightLuna: спасибо, не сообразил сам!
Uljahn: в инпутах приходят только твои и видимые паки соперника, вроде. в серебре теперь и съеденные
DualU: кто в курсе как много памяти занимают словари в питоне?
DualU: тем, кто помнит, как я вчера искал баг: я убрал 2 словаря из программы и все заработало
Uljahn: попробуй sys.getsizeof(your_dict)
BorisZ: зависит от версии и платформы я думаю в районе сотни байт
DualU: довольно много
BorisZ: да ульян дело говорит - проверить проще всего
DualU: пустой словарь весит 248
BorisZ: тут 700 МБ с хвостиком дают, так что вряд ли ты в лимит уперся
DualU: многовато
BorisZ: попробуй добавить туда что-нибудь - он скорее всего не вырастет, там с запасом должно быть под выравнивание
DualU: проверяю...
BorisZ: у меня в голове меньше цифры были - типа 48 что ли
Uljahn: да, изначально на 8 элементов память выделяется, вроде
Uljahn: https://habr.com/ru/post/432996/
DualU: тогда не понятно почему вылетало...
Uljahn: смотря что делал
DualU: блин, опять где-то накосячил и все обратно вернулось, все баги
DualU: афигеть!
DualU: я только что проверил, проходит ли выполнение кода далее, после"бага"
DualU: я специально сделал ошибку, и он программа ее вывела!
BorisZ: ты зря мешаешь в кучу считывание инпутов и их обработку и заполнение своих каких-то структур
DualU: это что-то новое...
gybson_samara: у меня после считывания инпутов код просто из цикла вылетает походу
BorisZ: сначала считал бы все аккуратно куда-нибудь, максимум приводя строки к интам, потом уже все обратывай
BorisZ: тогда если баг будет то понятно где
DualU: BorisZ, сейчас попробую...
BorisZ: я тебе могу скинуть свой код, который читает инпуты, он примерно одинаковый для всех игр, там только считывание, никаких секретов нет
Uljahn: согласен, сначала распихиваем всё по структурам, а операции изменения выносим в отдельные функции/методы, чтобы локализовать возможные баги
Uljahn: потом только в дебаг остаётся печатать до и после изменения
Hamibar: так и не сделали, чтобы ходы отображались вместо тиков(
Uljahn: угу, продолжаем страдать
Uljahn: хоть бы кнопки добавили для перемотки по кадрам заместо фреймов
Hamibar: да. Да даже просто какой-то счетчик будет уже хорошо. Сейчас приходится отматывать на юзание скорости
Hamibar: Да и вообще странно, что не добавили какой нибудь дебаг мод
Uljahn: начало кадра можно в консоли дебага смотреть, оно выравнивается по началу хода
Uljahn: начало хода, в смысле
Uljahn: т.е. фрейм начала синхронизирован с выводом инфы о начале хода
Uljahn: но это ппц как не удобно
Hamibar: Ага. Вот прямо сейчас это заметил. Интересно, что если у тебя таймаут, то отладочный вывод продолжает приходить во втором тике.
BorisZ: да, не видно свой дебаг тогда
BorisZ: там были какие-то расширения вроде чтоб дебаг был вместо кода, или еще где-то, короче большой и видно и плеер и дебаг
Uljahn: я юзерстайлом поменял размер окна, но тогда синхронизация нарушается, вроде
Hamibar: Как раз видно) я наверное не так описал. Дебаг выводится, но часть до таймаута на первом тике, а другая часть на втором. Он как-бы разрывается
BorisZ: ну это разовй случай таймаут, не так страшно
BorisZ: можно не заморачиваться
Hamibar: вот же. Только сейчас заметил, что дед и мой код ломает. И кстати можно мертвому паку отдавать приказы :grinning:
BorisZ: некромантия
Hamibar: новые правила для голд лиги.
tutubalin: мёртвого можно оживит большой пилюлей? )
Hamibar: а что звучит интересно
MelnikovIgor: Только нужно дотолкать его до неё
Hamibar: ого куда закинуло)
735487: нужно тогде еще одно переключение чтобы можно было в доктора трансформироваться ))
735487: и потом он становится UNDEAD и может сьесть любого включая своих но не может трасформироваться ))
Hamibar: причем undead не собирает палеты, а только гоняется за паками, и если поймал, то тот тоже становится unded
Uljahn: с учётом того, что пакменов съедают, этот undead будет скорее големом из пакменовских какашек
Hamibar: одна идея лучше другой:grinning:
Vitaliy_Kamalin: Попасть в топ 50 вуд1 сменив всего одну строчку в стандартном коде...
MadKnight: какую строчку?
Vitaliy_Kamalin: куда идти )
Vitaliy_Kamalin: много народу сейчас в серебре?
MadKnight: и на какую заменить?)
wlesavo: Vitaliy_Kamalin тут тутубалин с решением в одну строчку прошел в бронзу, учитывая считывание всех инпутов
Vitaliy_Kamalin: там цикл по точкам. Я просто взял последнюю и передал в ход, хз
MadKnight: lol
Mirartes: ребят, что думаете насчет волнового алгоритма?
zuko3d: волновой алгоритм хорош
tutubalin: wlesavo, не в бронзу, в вуд1 только
tutubalin: и до топ50 не добралась.
tutubalin: хотя алгоритм один и тот же
wlesavo: tutubalin эх, я думал в бронзу
Vitaliy_Kamalin: Двигаясь только одним паком сложно переиграть до бронзы )
tutubalin: для бронзы я уже модифицированного Дейкстру пилил
Vitaliy_Kamalin: Не пускает меня пинки в бронзу :\
ambival: Скажите как использовать ускорение. У меня после ускорения команды пак принимает как и все остальные паки. То есть по факту он не ускоряется
tutubalin: а ты ему в качестве цели какую точку даёшь?
tutubalin: ближайшую или дальнюю?
Hamibar: тогда все должно быть хорошо
tutubalin: кстати, а в один ход нельзя сразу и SPEED и MOVE одному паку?
Hamibar: кинь реплей посмотреть как они ходят
Hamibar: нее, можно только 1 команду
ambival: а, они отдельным ходом идут получается? тогда ясно. Спасибо
Uljahn: когда хотя бы у одного пака ускорение действует, то ход в плеере делится на два фрейма: сначала на 1 клетку ходят все паки, потом дополнительно на 1 клетку ходят паки со скоростью (или не ходят, если уже пришли к цели)
Uljahn: начало хода - когда строчка "Standard Error Stream:" в самом верху окна дебага, на дополнительном фрейме у меня в верху "Game Summary:"
tutubalin: опа!
tutubalin: просто добавил скорость и я в серебре
Uljahn: круто, надо тоже дейкстру какую запилить
Uljahn: но интереснее, конечно, определить, сколько символов максимум влезет в мессейдж в реплее (17 букв i или 7 цифр)
WhiteCrow: Парни, всем привет
WhiteCrow: Во вводе какие-то баги
WhiteCrow: Бот видит явно больше, чем должен
Mirartes: почему не отрабатывает?
WhiteCrow: Не помогло :/
WhiteCrow: Он уже ножницы?
WhiteCrow: Ты успел дать ему команду на перемещение?
WhiteCrow: Надо только одно за ход
wlesavo: WhiteCrow подробней
WhiteCrow: АаааААаАааа
WhiteCrow: ОооООоОооо
WhiteCrow: Вот это баг тысячелетия
wlesavo: ты дедов не видел?)
WhiteCrow: Вот это жесть
WhiteCrow: Видел
WhiteCrow: ВАЛЬКИН ДЕД
wlesavo: так че было
WhiteCrow: Классный сериал
WhiteCrow: Короч у меня тупая бага, ща пофикшу
WhiteCrow: У меня зрение у паков было ограничено во все стороны на 20 клеток
WhiteCrow: Почему-то я думал, что это правильно
ashelkov: да тут можно конкурс тупых багов устраивать
wlesavo: WhiteCrow зачем?
WhiteCrow: Я сам задаю себе этот вопрос
Dmitry_Mandzyuk: а как это ограничено во все стороны? они же только впереди и сзади себя видят
ashelkov: и слева и справа)
Uljahn: у мурушкина был похожий баг с длинным тунелем от телепорта до телепорта
ilgiocatore: да, у мурушкина как раз не было проверки и получался бесконечный цикл
ilgiocatore: у меня ограничение ставится шириной поля
Mirartes: почему могут лагать кадры?
Uljahn: это как?
wlesavo: я просто заполнение делаю по карте, если встретил заполненную то прекращаю
Mirartes: стабильно 60 кадров, но на тик мобы останавливаются и стоят просто
Uljahn: это дополнительный фрейм для тех, кто под спидами
Uljahn: ход один, а фреймов два
wlesavo: заполнение удобно тем что на выходе как раз маска получается потом умножать на массивы пеллетов и противников удобно
ilgiocatore: вообще-то да, я тупанул, можно убрать ограничение)
Dmitry_Mandzyuk: слева и справа это если стены нет, да и сзади и спереди тоже
C2H5OH: нельзя убрать ограничение. я так завис на прямом коридоре от края до края карты.
Uljahn: так в итоге всё равно попадёшь на посещённые позиции, просто их запоминать надо
C2H5OH: та я не запоминаю посещенные.
C2H5OH: https://www.codingame.com/replay/461968099
C2H5OH: чудом просто...
Uljahn: у меня весь бот на одной сортировке :rolling_eyes:
C2H5OH: у меня на волновом алгоритме. одном. без сортироваок.
Mirartes: а кд на скорость и свитч общий?
ilgiocatore: да
Hamibar: какое-то превосходство обороны над нападением в этой игре. Почти никогда нельзя нападать на соперника.
wlesavo: только тогда когда у противника кулдаун 0
wlesavo: остальное время норм
Dmitry_Mandzyuk: почему это нельзя? можно же, просто не всегда получается)))
wlesavo: я даже попробовал тактику неиспользования скорости чтобы всегда был кулдаун 0, но очевидно работало это неочень
Dmitry_Mandzyuk: так они ж как черепахи ходят без скорости, если противник на скорости
ilt: так и кулдаун у них 0 в этот момент )
Dmitry_Mandzyuk: ну да, а толку нет)))
Hamibar: не если ты как-то случайно подловил, то можно конечно. Но если тебе надо свичнуться и атаковать, то я совсем неочень понимаю как это сделать.
Hamibar: совсем неочень :grinning::grinning:
Dmitry_Mandzyuk: ну я пытался например свичнуться сразу если враг рядом
Dmitry_Mandzyuk: опять же если кд не 0 то толку нет
Hamibar: если он на скорости тоже.
Uljahn: на скорости тоже? но ты не сможешь свичнуться на скорости
Dmitry_Mandzyuk: я думал по простоиу, если враш рядом, то это Danger, надо что-то делать и свитчился круче него
Hamibar: вот именно. То есть если он на скорости, то не можешь атаковать. Если кулдаун не 0 - тоже не можешь. А при равной скорости убежать можно. Если не в тупике конечно
Dmitry_Mandzyuk: то есть надо тупо сваливать?)))
tutubalin: надо предсказывать позицию противника и атаковать из-за угла
Hamibar: Думаю, что свич в основном нужен чтобы какой-то вкусный кусок отжать.
Dmitry_Mandzyuk: еще круче блин))) предсказывальщики)))
Dmitry_Mandzyuk: как тут вообще можно что либо предсказать??? нейронку натренировать на исходном коде игры?
tutubalin: мои в основном дохнут именно когда из-за угла вылетает противник. мой на скорости даже остановиться не успевает
Hamibar: Dmitry_Mandzyuk ну лучше убежать чем совершать суицид :slight_smile:
Uljahn: Dmitry_Mandzyuk: как в прошлом контесте предсказывали, так и тут
Hamibar: tutubalin и еще он не разведывает на скорости( может тупо поворот проскочить.
wlesavo: у меня в целом работает предсказалка
Dmitry_Mandzyuk: я в прошлом не участвовал
wlesavo: не идеально, но и не так уж плохо
Dmitry_Mandzyuk: и предсказывать не умею
Uljahn: наверное, для начала можно построить область, до куда противник успевает добежать быстрее тебя (диаграмма Вороного)
Dmitry_Mandzyuk: воу математика да?
Uljahn: нет, флудфил обычный
wlesavo: не уверен что есть смысл, по крайней мере я не понял как использовать эту информаци.
wlesavo: ю
Uljahn: хотя бы определить суперпелеты
Uljahn: какие ты хаваешь, какие он
Dmitry_Mandzyuk: а ну кстати да, тогда гарантированно хоть пару сожрешь
wlesavo: хм
Dmitry_Mandzyuk: ато просто пытаться их сьесть не всегда выходит
Hamibar: ну например чтобы на чужую большую вкусняху не побежать.
wlesavo: не, не определить какие сожрешь, а не бежать за теми которые не сможешь есть все равно
wlesavo: вот это реально крутая идея
Uljahn: ну да
Uljahn: далее по моменту схавывания можно определить траекторию и id вражеского пака
Uljahn: если он рашит
wlesavo: да, это нормальная такая эвристика на начало игры
Uljahn: как обычно, накидываем в чат идеи, wlesavo кодит и выходит в топ)
wlesavo: мне по хорошему надо переписать кусочек сначала
wlesavo: но да, это выглядит достойной идеей для реализации
Uljahn: кстати, MSmits говорил вроде, что тут beam search зайти должен
wlesavo: он наоброт сказал вроде что отказался
Uljahn: а, ну мб
Uljahn: или дезу пустил)
wlesavo: но у него хороший монтекарло, он одновременно для 5 паков симулирует пути
Hamibar: блин так хочется новые фичи запилить, но для этого нужно порефакторить, а рефакторить не хочется:upside_down:
wlesavo: у меня в тупую перебираются
wlesavo: хочу переделать это как раз, чтобы хоть порядок назначить
wlesavo: ато пока совсем рандом
Uljahn: вон ейлер говорит, что догоняшки у него тоже на переборе
wlesavo: да прям реально один в один ooc получается
zuko3d: что такое оос?
wlesavo: предыдущий контест
Uljahn: прошлый контест с подлодками
zuko3d: а
Uljahn: ocean of code
MadKnight: zuko3d ты в него играл?
zuko3d: нет
MadKnight: а чё так?
zuko3d: я уже давно не участвовал в контестах. а сейчас вот время появилось - решил поучаствовать
zuko3d: как-то времени не было
MadKnight: ну ты занятой зуко
Dmitry_Mandzyuk: меня вот другой вопрос интересует, как сделать чтобы свои паки не сталкивались? ато встретяться где-нибудь и капец)))
Uljahn: Мэд, а сам-то играл?
MadKnight: ну я-то знаю почему я не играл
MadKnight: а про него не знаю
MadKnight: вот и спрашиваю
dbf: Dmitry_Mandzyuk, вредный совет - если столкнулись - разбегайся в случайные стороны
Uljahn: Dmitry_Mandzyuk: есть пара стратегий - расталкивание и симуляция путей
MadKnight: чё за расталкивание?
Dmitry_Mandzyuk: расталкивание?
Uljahn: типа потенциальных полей, где минусуешь, если пак идёт ближе к другому паку
Uljahn: чем ближе, тем сильнее минус
Uljahn: тогда даже если несколько твоих паков столкнутся, самые крайние буду убегать, затор рассосётся
Dmitry_Mandzyuk: все, я кажись окончательно запутался)))
Hamibar: Dmitry_Mandzyuk я просто сначала нахожу путь для одного, а для следующего строю путь с учетом информации, где и когда будут предыдущие
wlesavo: я делал штраф сначала в симуляции, а теперь просто одну клетку на гриде закрашиваю
Uljahn: это как раз второй подход
Dmitry_Mandzyuk: а ну это понятнее
Uljahn: у рекурса в корабликах было чётко сделано, я уже раз пять тут упоминал его постмортем
Mirartes: через 5 дней закончится этот эвент? и уже нельзя будет прогать бота?
zuko3d: MadKnight ну дело обычно не только во времени, но и в интересе. Когда на работе были интересные задачи и работы было много - дома хотелось отдыхать. А сейчас вот интересных задач нет и есть свободное время =)
Uljahn: https://recursive.cc/blog/coders-of-the-carribean-post-mortem.html
Uljahn: "Switching to brute force"
Uljahn: Mirartes: он в мульти появится, можно будет играть, но без призов
Uljahn: мульти==мультиплееры (ai bot programming), где почти все прошлые контесты
WhiteCrow: Хм, повысил жадность алгоритма, на тестировании показало лютый прирост, на сабмите -- полную парашу
Borrow: Самописный симулятор и против своего же бота?
WhiteCrow: Ну запускаю несколько раз и смотрю
Akarachudra: А нет инструмента для прогона без сабмита?
wlesavo: есть
WhiteCrow: Есть вроде, но я воспринимаю это как неспортивное поведение
Akarachudra: Поделитесь? Где глянуть?
Hamibar: ну несколько раз мало. Да и не против всех же тестируешь
wlesavo: CGBenchmark
wlesavo: на гите лежит
WhiteCrow: (какой ты чувствительный мальчик, томми)
wlesavo: https://github.com/s-vivien/CGBenchmark
wlesavo: там инструкция хорошая, даже я смог запустить
Hamibar: спасибо. Тоже надо глянуть
Akarachudra: Не в этот раз скорее всего, но, конечно, это даёт нереальное преимущество.
Akarachudra: У одного чела бот отваливает при запуске боя с ним в IDE. Похоже, практика ломать тестирование сопернику имеет место быть. Вот это точно неспортивное поведение.
Hamibar: зато можно точно понять улучшил ты код или нет. А то иногда сложно определить
wlesavo: да на самом деле там долго длдостаточно, оно фактически в иде отыгрывает, в золоте или легенде проще сабмит запустить
wlesavo: зато таймауты сразу ловит и ссылки на реплеи
wlesavo: Akarachudra наверное ты про дбдра, это проблема с растом
wlesavo: он в иде не запускается
Akarachudra: Да, про него. Не знал, что это известная проблема
Hamibar: Срочно переписываем все на раст
Akarachudra: Это у них доплата за вредность
wlesavo: ну это и самому вредит тоже
BorisZ: вроде было что раст компилируется в иде в дебаг режиме а на арене в релиз режиме, но не понятно как это связано с вылетами
BorisZ: когда в иде выбираешь бота соперника- он же не компилируется снова?
WhiteCrow: Думал же я на расте лабать...
wlesavo: ну типа берется скомпиленый в релиз режиме код уже
wlesavo: хотя я не уверен сам точно
BorisZ: я тоже думал на расте, даже полкнижки прочитал и пару задачек зарешал
BorisZ: но лень стало еще и с незнакомым языком воевать
BorisZ: к следующему контест уж точно
BorisZ: прочитаю еще пару глав и решу еще пару задачек )
NightLuna: цитаты великих просто)
NightLuna: вот к следующему контесту, ух
BorisZ: угу, новогодние обещания
BorisZ: но по серьезному в контестах то используется только малое подмножество языка
BorisZ: целые главы из книжки можно пропускать смело
WhiteCrow: Да не, я от раста оказался потому что он говно
WhiteCrow: Причём даже хуже, чем я думал до этого
WhiteCrow: Даже C# по сравнению с ним божественнен
Hamibar: жалко что нет поддержки брэйнфака)
WhiteCrow: Надо в следующий раз D попробовать
WhiteCrow: Если лень не будет ?:/
BorisZ: я не готов аргументированно спорить )
WhiteCrow: Вот это больше похоже на новогодние обещания :)
WhiteCrow: Хм, я про D
WhiteCrow: Воу, Питон
vrabosh: я смотрю тут много людей активно играет.. как мин 2000
BorisZ: 4005
BorisZ: похоже это рекорд КГ вобще, вроде не было столько никогда
BorisZ: это я про контест, а ты вообще по сайт?
Hamibar: как думаете, какая оптимальная стратегия если вы с противником долбитесь в одну клетку? Мне кажется, что лучше всего продолжать долбиться, но не тратить абилку.
BorisZ: я сваливаю в таком случае, не уверен что это правильно
Hamibar: ну просто свичнешься враг пройдет куда ему надо, а на след ход свичнется в то что бьет тебя и все.
BorisZ: не, не свитчится, а убегать
tomatoes: скорость :thinking:
BorisZ: но это у меня просто такая реализация сейчас, - для меня все враги это стены кроме тех которые я съедаю - этих я просто не замечаю )
Hamibar: но ведь тебе зачем-то туда надо. И получается отдаешь все сопернику
Hamibar: А так и ты не получаешь и он
Hamibar: tomatoes а чем поможет скорость?
tomatoes: потом по ситуации. если он может съесть тебя, то убегать; если ты его, то догонять
BorisZ: может если ведешь в очках то долбиться а если нет то пытаться свитчнутся или убежать
Hamibar: ну да может быть
Uljahn: если там тупик, можно ход не долбиться, пропустить и зажать, либо подвести второго пака
wlesavo: ,jkmyj ckj;yj
wlesavo: больно сложно
Hamibar: но ведь если я заюзаю абилку, то он пройдет. Не думаю, что скорость хороший выбор
wlesavo: тратить способность точно не вариант
Uljahn: скорость - если недалеко есть более привлекательный кластер пелетов
Hamibar: Uljahn так ты зажмешь то зажмешь, но как убить?
Hamibar: Если кулдауны равные конечно
Uljahn: никак, ждать пока он свичнется
BorisZ: чего спорить, можно реализовать функции для каждого паттерна что в голову придет и протестировать в поле
Uljahn: но так тупо, жа
Uljahn: да
BorisZ: если не запредельной сложности комбинация конечно )
Hamibar: не просто интересно может быть есть победная стратегия, которую мы не знаем
Uljahn: я вообще теоретик и у меня лапки)
tomatoes: скорость хуже не сделает за исключением пары вариантов
Akarachudra: мне кажется, проблема в том, что свитч нужно было сделать как SWITCH MOVE. вот тогда была бы жара. Камень-ножницы-бумага - как задумывали авторы. А так - лучше, конечно, сходить и посмотреть, что предпримет соперник.
Uljahn: вообще, дедлок можно расценивать как новую стену
tomatoes: когда зажат например, то можно рискнуть наверное
Hamibar: Akarachudra тогда конечно еще больший рандом бы был. Но весело.
BorisZ: Hamibar а ты имеешь ввиду долбиться именно из-за угла, когда не видишь врага, или когда видишь или и то и другое?
Hamibar: да в обоих случаях интересно. Но я не могу отличий найти)
BorisZ: случаи то разные когда видишь и когда нет, может мы о разном спорим вообще
BorisZ: когда видишь то знаешь кулдаун
BorisZ: если ты первый то долбиться, если второй то убегать
MadKnight: а я вижу через этот портал на другую сторону карты?
MadKnight: норм
Hamibar: Просто не знаю влияют ли кулдауны на эту ситуацию
BorisZ: когда видишь то влияют - если у тебя раньше кулдаут то ты победил уже - ты либо съешь его либо он убежит, забодал
Akarachudra: Забавная концовка: https://www.codingame.com/share-replay/462080258
Hamibar: Да вроде нет. Свичнишься он пройет и не догонишь.
Hamibar: Заюзашь скорость не убьешь
Hamibar: хах. Как раз подходит к обсуждению в чатике
BorisZ: да, прям бальзам на душу, и у топоф фигня случается, есть надежда )
Akarachudra: я вот сходу не могу придумать не костыльное разруливание такой ситуации
Akarachudra: ни при расчетё весов, ни эвристикой
Hamibar: такое ощущение что кто первый предпримет действие проиграет
Akarachudra: не, если бы он напал бумажным, я бы свитчнулся в ножницы, и он бы забрал пилюлю
Hamibar: ну да. Что-то сложно.
Akarachudra: наши боты расценивают этот мув как минусовый, поэтому так не делают, если дать ему оценку как плюсовый, то будешь проигрывать большинство других игр по очкам.
wlesavo: Akarachudra ну только другим паком помочь
Hamibar: кстати да. Ведь точно знаешь, что только 1 палетка осталась и она там
Hamibar: По счету
MadKnight: мои pacs всегда первыми идут?
Hamibar: одновременно ходят паки
MadKnight: ну всм в инпутах
MadKnight: в cin
Hamibar: а хз. Там же есть флаг
MadKnight: это я знаю
735487: пиши cerr << и проверь )))
MadKnight: Standard Error Stream: 0 1 0 0 1 1
Hamibar: у меня поочередно
MadKnight: не, не всегда
MadKnight: seed=8547593280605176800
MadKnight: на этом проверь
AntonT: нулевой игрок первый, идут веремешку
AntonT: вперемешку*
Hamibar: ну у меня в порядке возрастания айдишников поочередно
AntonT: по крайней мере инпуты двух ботов одинаковые
AntonT: хотя, не одинаковые) своих-то всех видно, а противника не всех)
Xanrum: все знают что паки могут через края карты на себя сзади смотреть?
BorisZ: непонятно - зачем на себя сзади смотреть ты и так себя видишь же
BorisZ: ну и вообще у паков глаза со всех сторон, нет вперед-назад тут
Xanrum: мой пак в переполнение стека падал увидев себя сзади
BorisZ: ну надеюсь что ты так троллишь)
BorisZ: допустим есть такая карта со сквозным прямым проходом, хотя я такой не встречал вроде
BorisZ: если пак стоит на этом проходе - он увидит все точки и всех врагов на нем и все - это придет в инпуте
gybson_samara: я такую встречал
gybson_samara: и одна из версий у меня уходила в ТА на инпутах, даже не начав обсчет движения
AntonT: да, у меня тоже такое было) я итерировался "до стенки", а стенки не было))
BorisZ: ну это как написать, у меня когда линию считает то только на расстояние ширины карты идет
BorisZ: а сид не сохранился у кого?
BorisZ: вот правда не встречалось ни разу
C2H5OH: https://www.codingame.com/replay/462130073
gybson_samara: иногда замечаю за собой гениальные строки if best == None : return None
Hamibar: я исправил этот баг до того, как написал его
AntonT: seed=-4083541552256915502 вот, например
BorisZ: C2H5OH круто, спасибо, сейчас проверю тоже
BorisZ: у меня ок, еще и у топ 1 выиграл ) https://www.codingame.com/replay/462131875
BorisZ: но он конечно меня перекапывает, если бы не убийство из-за угла
Xanrum: у некоторых явно тупит и смотрит до края карты и не смотрит за край
Hamibar: сейчас ромка первый)
gybson_samara: 150-65 против босса в бронзе, походу сабмит должен хороший быть
gybson_samara: сабмит и ТА, ТА, ТА, ТА =) ну да, ну да, поешл я нахер =)
MadKnight: заюзал свой первый goto
MadKnight: на проверке коллизий
ilgiocatore: воу
MadKnight: achievement unlocked, Automaton2000
Automaton2000: а еще я в 95% случаев пропускаю удар под перекладину с средних/дальних расстояний
MadKnight: в общем как только нахожу и резолвлю коллизию, иду в начало цикла проверки коллизий
Hamibar: вот как понять мне повезло или действительно улучшил код :disappointed:
dbf: отправь еще раз :)
Hamibar: кстати можно
Hamibar: прикольно у топ 1 честенько таймаутит
gybson_samara: на 5 паках небось
Hamibar: а я и не посмотрел. Тем более на 5 паках у меня код у самого рандомный немного)
Mirartes: Ребята, на какую дистанцию выставлен волновой алгоритм? я не успеваю вовремя отправить строку(
gybson_samara: 5 мс вроде
gybson_samara: да, это большая проблема
Mirartes: я волновым алгоритмом опрашиваю могу ли дойти до точки, но вся херня в этих мс
gybson_samara: напиши в поддержку, может увеличат
Hamibar: 50мс дают
gybson_samara: оу!
Mirartes: малооо) для 4х ботов пройтись волновым
zuko3d: не мало
Mirartes: ты каким алгоритмом узнаешь можешь ли ты дойти до точки?
zuko3d: bfs
gybson_samara: у меня 5 ботов на 5-6 клеток пути видят вроде
zuko3d: ты на чём пишешь?
Akarachudra: 50мс хватит всем©
gybson_samara: я просто рекурсией получаю все пути из точки на длину 5-6 ходов
zuko3d: ой
zuko3d: это не похоже на волновой.
gybson_samara: это от 16000 вариантов =)
zuko3d: напиши обычный bfs, он пишется за полчаса
Mirartes: я прохожусь в 4 стороны от точки
Mirartes: проблема только с этим алгоритмом, бота я научил уже юзать абилки и убивать других
gybson_samara: не надо в 4, надо в свободные
ashelkov: а есть тут кто на js/typescript? тот еще челлендж/ даже пока бфс не прикручивал
Mirartes: ну в свободные там проверка на -1
gybson_samara: ну вот получишь N путей? gjnjv lkz rf;ljuj gjcxbnftim wtye
gybson_samara: потом для каждого посчитаешь цену
Mirartes: бфс в качестве начальной вершины берете позицию пакмана?
Mirartes: ну я так и сделал но это долго, строку не успевает отправить
Hamibar: волновой же за O(n) работает?
gybson_samara: волновой метод это заливка чтоль?
gybson_samara: def give_a_way(self, x, y, count): http://chat.codingame.com/pastebin/8abce148-4ec0-4095-9ef4-ac161b6c99b6
zuko3d: да, и работает за O(n)
Hamibar: ну тогда точно должен успевать. Попробуй баг поискать
Mirartes: а А* никто не пробовал?
zuko3d: а зачем?
gybson_samara: я пока нет, я пока 3 алгоритма запилил =)
Mirartes: побыстрее должен быть
Hamibar: да тут какой хочешь такой и используй.
zuko3d: он не будет быстрее тут, чем bfs
gybson_samara: просто симуляция, ГА и поиск пути рекурсией (в душе не знаю как называется)
gybson_samara: рекурсия пока рулит
Mirartes: ну у меня так же рекурсией от точки в которой я нахожусь
Mirartes: я передаю ей на вход сетку со стенами, позицию x y и текущий d
gybson_samara: глубина рекурсии какая?
gybson_samara: не передавай на вход ничего, кроме новых координат
gybson_samara: и id
gybson_samara: сетку 16000 раз передать, да ты так все сервера положишь
Mirartes: предлагаешь работать со статик масивом?
zuko3d: откуда 16к? Тут же в поле всего пара сотен клеток
Hamibar: разве в шарпах не по ссылкаи передача?
zuko3d: по ссылке
Hamibar: тогда почему бы и не передавать)
Mirartes: ну вот я передаю по ссылке
Mirartes: после чего назначаю текущему квадрату значение d(значение текущего шага)
Mirartes: дальше следует проверка
Mirartes: if(y-1>=0 && grid[y-1,x]!=d+1 && grid[y-1,x] == 0 && grid[y-1,x] != -1){
Mirartes: и аналогичные для всех сторон
Mirartes: если соответствует проверки проваливается в рекурсию
zuko3d: посмотри на википедии BFS, с использованием очереди
Mirartes: сейчас о нем и читаю
Mirartes: ты в качестве начальной точки брал позицию персонажа, после чего бегал по соседним в ширину, верно?
zuko3d: если вопрос ко мне, то да. закидывал в очередь всех своих паков и от них распространял волну. теюе в итоге для каждой клетки я знаю, кто и насколько быстро может до этой клетки дойти
vrabosh: всетаки программить ботов намного сложнее чем делать приложения чатботов и прочее
dbf: vrabosh ты для какой платформы пилишь чатботов?
zuko3d: ну.... это ж разное. тут не надо юнит-тесты писать, расзворачивать инфраструктуру и т.п.
vrabosh: я под вк подсел уже как 10лет
vrabosh: игры, приложение, теперь чатботов
vrabosh: игровой
vrabosh: непишу я юнит тесты) и инфра структура это вдс купил да залил)
dbf: ууу, что ж так, без тестов
dbf: а если бот не у того деньги спишет? :)
vrabosh: игроки протестят)
dbf: в booking.com вроде похожий подход :)
vrabosh: это простые алгоритмы.. там нет замудренности.. ошибится сложно
Hamibar: https://www.codingame.com/share-replay/462149028 200 ходов бились лбами в центре) тут даже другими паками не помочь.
Xanrum: тип на первом месте по таймауту падает - как он занял первое место?
Hamibar: это тактический таймаут
zuko3d: кун фу от Rust.
gybson_samara: про 16к, в самом общем случае у вас 4 варианта начала пути
gybson_samara: из которого идут еще 4
S0L0: как тут ходы считаются у абилки на скорость непонятно, обнулился счётчик а активировать не даёт. И вообще глючит игра когда абилка включена, то ходят 2 шага, то 1 при включеной.
gybson_samara: кроме счетчика скорости есть общий КД на абилки
Hamibar: 1 ход может длится 2 кадра, если у кого-то скорость.
Hamibar: абилку можно использовать если кулдаун 0
S0L0: то есть сразу после активации скорости нельзя переключить тип ?
gybson_samara: нет
S0L0: с этим разобрался, а почему они при включеной скорости шагают на разное расстояние ? то 2 то 1
gybson_samara: 1 - команда была на один шаг, 2 - вторая команда в стену
ashelkov: SOLO первый тик ходят все паки / второй те у кого есть скорость
Akarachudra: Вроде Rust игроки могут в IDE прогонять игры. А вот против них нельзя.
ashelkov: может ты еще таргет ставишь длинной в 1 при скорости / тогда он и двигается до таргета
S0L0: да бывает и 1 , если супер хавка в 1 то зачем буду дальше ? там и путь не просчитан дальше
S0L0: глюк в общем число шагов зависит не только от включености абилки но и от того куда ты послал пака далеко или на 1 клетку
zuko3d: если ты отдаёшь команду пойти на одну клетку и пак идёт на одну клетку - в чём глюк?
Hamibar: не глюк . Он по кратчайшему пути к таргету. Если таргет на дистанции 2 - то он пройдет 2 клетки, если 1- то 1 клетку, если 0 - 0 клеток
vrabosh: ой наконецно серебро.. я то думал.. еще пилить чтобы предсказывал где уже нет поинтов
vrabosh: да и где враги изнаально и кто стоит
vrabosh: завтра надо будет код подчистить и часть в функции красивые запихнуть
Mirartes: как вы лечили втыкание лицами?
S0L0: https://www.codingame.com/replay/462265893 вот как смотрится когда абилка включена а толку нет , думал её просто включил и всё , а тут придётся весь поиск путей переделывать
Hamibar: у меня до сих пор никакого трекера нет.
Hamibar: Включил абилку и паки сами пусть решают.
zuko3d: Mirartes считаю сколько ходов пак не двигался с места. Если меньше 10 - переключаю на тип, который убивает меня же. Если дольше десяти - то на тип, который я убиваю.
Hamibar: Mirartes со своими?
zuko3d: а, я про врагов
vrabosh: оо какаято хрень появилась. DEAD и я занее подвис
ambival: что надо сделать, чтобы попасть в серебро?
zuko3d: победить босса бронзы
Hamibar: Купить премиум аккаунт
Uljahn: пофиксить баги
zuko3d: прям соревнование в остроумии :D
gybson_samara: бухнуть
Uljahn: это для леги
ambival: а босс - это solo? или как найти его, чтобы потренироваться?
gybson_samara: это соло
ambival: ник s0l0? то есть с нулями?
Uljahn: босс на арене с другими ботами, во время сабмита тебе дают матчи с теми, кто рядом с тобой по рейтингу
S0L0: мне до босса как до луны
Uljahn: в IDE можешь потренироваться против босса или другого игрока
ambival: ну я выиграл в ide босса
Uljahn: сабмить
ambival: но в серебро не попал
Uljahn: жаль, твоё место в бронзе, значит
gybson_samara: я предлагаю выиграть босса раз 10
gybson_samara: потом сабмитить
Uljahn: так надо ещё выигрывать у тех, кто рядом с боссом
gybson_samara: на разных картах, конечно
Hamibar: нужно не победить боса, а оказаться выше него в таблице
Uljahn: может быть ситуация камень-ножницы-бумага
gybson_samara: 10-20 боссов примерно дают релевантную выборку
Uljahn: когда босса ты всухую выигрываешь, а остальному топу сливаешь
gybson_samara: так-то да
gybson_samara: но 20 боссов если завалил, то скорее всего прошел
Uljahn: согласен
gybson_samara: одного - нет
gybson_samara: и даже 5 мало
Uljahn: и на разных картах обязательно
Uljahn: ещё можешь посмотреть в last battles свои проигрыши, и пофиксить их
ambival: ну соло же на 997м месте в бронзовой лиге
ambival: как он может быть топом?
Uljahn: при чём тут соло??
ambival: я так понял, что босс - это соло. Его надо побеждать
Uljahn: :confused:
Uljahn: босс на первом месте в лиге, все кто выше его - переходят в следующую
zuko3d: иногда я не понимаю, троллят люди или просто новички =)
Uljahn: да новички конечно
Uljahn: так троллить только кубер мог
zuko3d: ну кубер-то чел известный, с ним же не должно прокатывать =)
gybson_samara: ласт баттл конечно да, с боссом 80 игр устанешь играть
gybson_samara: и там самые обидные баги находятся
vrabosh: чел на 1 месте, а у него таймауты выкидывает.. как так?
Uljahn: это не таймауты
Hamibar: это чудеса раста
vrabosh: что за раста?
Uljahn: rust
Uljahn: против него нельзя пока в ide создать игру
Uljahn: на арене у него скомпиленный код в релизном режиме, а в ide нужен в режиме отладки
Uljahn: насколько я понял
gybson_samara: нарядно
gybson_samara: завтра к вам в серебро залезу
gybson_samara: ... так вы в золото уже убежите
NightLuna: а на шарпе тоже так можно, забавно
Akarachudra: NightLuna что на шарпе можно?
Akarachudra: DEBUG директиву воткнуть?
NightLuna: да
NightLuna: просто раньше вроде как всегда был дебаг, а сейчас сделали релиз
Uljahn: по-моему, только раст нельзя релизный в ide запустить, но наверное пофиксят
Uljahn: а, нашёл в дискорде
Uljahn: там проверка на режим что ли?
Akarachudra: Ну это бред, этим можно злоупотреблять прям по-жесткому. Неспортивно мягко говоря
Uljahn: "Rust is the new OP language. if (DEBUG) crash();"
Uljahn: кстати, кто тут cg-бенчмарк запустил? против раста можно же бенчить?
Uljahn: хотя, там берётся id бота с арены и игры создаются через api...
Uljahn: злоупотребление - это когда бота прячут до последней минуты :)
Uljahn: а тут можно игры хотя бы посмотреть
NightLuna: ну раньше прятали ботов, пушили на 10 минут и убирали
Akarachudra: Ну сейчас что хорошего? Я могу в два клика сделать сборщик себе так, чтобы он пушил с дебаг предпроцессором, а мне в IDE отправлял без него.
Akarachudra: Но это как-то совсем не очень.
Akarachudra: Это, если что, вопрос не тебе) а риторическое высказывание недовольства.
Ivan_Legion: а пак через палетки других паков не видит что ли?
NightLuna: Я не поддерживаю такой подход, потому что это капец читерство. Но я не знаю, как бороться с этим.
Uljahn: ждать, когда пофиксят
Uljahn: Ivan_Legion: в правилах такого вроде нет, можно ещё код рефери посмотреть, но мне кажется, что должны видеть
Uljahn: пак смотрит только в конечных положениях, когда идёт на 2 клетки под скоростью, то в промежуточной клетке (первый шаг) не смотрит
Ivan_Legion: понял свою ошбку, да все видно. Я просто инициализировал список пакменов 1 раз и не заполнял если замечал новых
Uljahn: классика
Ivan_Legion: сижу пол часа туплю почему в дебаге видно не всех врагов)
Uljahn: набивать такие шишки полезно
Ivan_Legion: я вообще код пасфайдинга от своей игры заюзал
Ivan_Legion: так что он оброс уже всякими полезными функциями
Ivan_Legion: и контест и игру свою улучшил)
wlesavo: нафиксил багов и чето сломал похоже, эх
Ivan_Legion: я вчера так понял что в коде не так и с 500го места на 1300 отлетел)
Ivan_Legion: видимо полезные баги были)
Hamibar: просто ты создал новые баги, чтобы исправить старые
Xanrum: отключил сборщик мусора, поднялся до 15 места О_О
Hamibar: больше пербрать смог?
Hamibar: или как это влияет?
Xanrum: я перебираю по лимиту времени. ВИдимо в некоторые тики вклинивался сборщик что недовал доперебрать
Xanrum: таймаутов и раньше не было, там сверху вотчер стоит что останаливает перебор на том что перебрал
Hamibar: хех. Всегда так. пишешь 1 строчку и получаешь больше чем от целого дня работы
Xanrum: ну.. день работы поднял с 80 до 30. Завтра на работе будут отчитывать что за день ничего не сделал : (
Dmitry_Mandzyuk: а кто-нибудь сталкивался с таким поведением, когда пак на скорости стоит на месте как если скорость отключена?
Xanrum: команда на одну клетку была паку дана
Hamibar: я про то что часто есть простые решения)
Ivan_Legion: ты послал ему идти на 1 клетку вместо 2х
S0L0: цель ставишь на 1 клетку
Dmitry_Mandzyuk: а вот оно что,я понял спасибо)
Xanrum: чтото питоноводов нет в топе
Hamibar: сейчас wlesavo баги поправит и ворвется
wlesavo: надеюсь хотя бы в легенду пройду, но на топ уже не надеюсь конечно
Xanrum: дошел до 16 и до сих пор не смотрю на тип паков противника и своих. Просто убегаю от всех. Кто как смотрит на тип паков?
Mirartes: у меня перед отправкой смотрит на ближайших паков которых видит
Mirartes: и если есть в радиусе 2ух клеток заменяет комманду мува на смену типа
wlesavo: у меня агрессивные боты достаточно, в оценке ставлю бонус если пак съедобный
Hamibar: я проверяю, что путь безопасен. А для этого нужно знать тип вражеского бота
wlesavo: а остальных делаю непроходимыми, ну и из тракинга бонус
Hamibar: ну и когда он вплотную могу свичнутся
Xanrum: у меня идея в том что там где вражеский пак - уже все съедено - зачем через них строить путь?
Hamibar: у меня кстати делать врагов проходимыми не дало никакого прироста не дало.
wlesavo: у euler'a классный учет, брутфорсом проверяет килы
Hamibar: хотя я конечно мог коряво реализовать
Hamibar: он кстати дал прикольный совет для трекера. Если прибавилось больше очков, чем паков, то кто-то заюзал скорость
Hamibar: вроде просто, но я как-то и не подумал об этом
Xanrum: осталось понять как это использовать - вот как?
Hamibar: ну трекер кажется вещь достаточно полезная
Dmitry_Mandzyuk: вот знаете с чем проблемы? если есть сквозной проход на другую сторону карты, то пак его не понимает, потому-что ищет ближайшие точки
Dmitry_Mandzyuk: а еще вот этот переключатель или бег или смена состояния, в итоге они или не дохнут или бегают и один хрен не успевают все собрать и дохнут время от времени :joy:
Xanrum: как не понимает? мои паки им пользуются
Dmitry_Mandzyuk: ну если в системе координат искать ближайшую точку и пак находится слева карты, то те что справа далеко
Xanrum: это смотря как сделаешь алгоритм - я справа и слева подрисовал копию карты
Dmitry_Mandzyuk: ну ты хитрец))) и что они у тебя в минуса по x ходят?
YurkovAS: wlesavo известно еще про брутфорс? как он это делает, минимаксит только 2х ближайших (своего и врага) и на какую глубину?
S0L0: замкнул карту в цилиндр и всё
wlesavo: YurkovAS он не говорил, но я дмаю ищет запертых паков на глубину 1, то есть еси может запереть в этот ход
Xanrum: садисты, паков запираете
WhiteCrow: Парни, как работает бфс в рефери?
WhiteCrow: Какая-то хрень творится
Xanrum: что такое рефери?
WhiteCrow: Или там какой-то непредсказуемый астар?
ashelkov: ну явно не как твой бфс)
WhiteCrow: ashelkov м,
WhiteCrow: М?
YurkovAS: wlesavo спасибо! еще монте-карло используют? это же с глубиной 1? рандомно меняем ходы и оцениваем?
WhiteCrow: Xanrum исходники проверяющей системы доступны
WhiteCrow: Я сделал примерно как там, но теперь у меня ничего не работает :/
WhiteCrow: В плане порядка обхода
Ivan_Legion: я дикстру использую
WhiteCrow: Может, мне прекратить выпендриваться и начать выводить точную клетку, куда я хочу?..
wlesavo: YurkovAS я да, но кто как
WhiteCrow: Да ну, бред какой-то....
ashelkov: я еще ничего не использую - вывожу точную клетку
wlesavo: спокойной ночи :slight_smile:
Xanrum: какие то умные алгоритмы у всех..
Cypher_8: Народ, а что за "cover" предлагается загрузить в профиле?
ashelkov: обложка профайла чисто картинка
Cypher_8: Я догадался, что это какая-то обложка. Это бэкграунд? Или иконка где-то?
ashelkov: наведи на иконку в чате - на фоне аватара - ковер
Cypher_8: А...всё, нашёл. Но всё равно спасибо за ответ! ^_^