Chat:Ru/2020-08-14
tutubalin: gtj у тебя находит только одну дугу из узла, а надо искать все.
tutubalin: например 1-6 нашла, а 1-2 пропустила
tutubalin: вангую: либо лишний else либо лишний break
gsomix: Uljahn, да, двигаться к центроиду (минимизировать сумму расстояний) недостаточно. Хочу попробовать написать симуляцию для гигантов, может быть это даст еще одно слагаемое в целевой функции.
Uljahn: так ведь хотелось бы без симуляции
gsomix: Какая-то хитрая эвристика должна быть. Я думал про то, чтобы идти к смещенному центроиду, если центроид занят гигантом. Но ничего хорошего не получилось.
gsomix: https://pbs.twimg.com/media/ET-KOCxXgAIWRMG.jpg
Uljahn: "если равная сумма - то подальше по евклидовому расстоянию" - по идее будет диагонально отступать. а ещё - "WAIT" тоже придётся использовать? а то я только соседей перебираю
Uljahn: с выводом карты в дебаг проще конечно, когда 4 года назад делал первый подход - ещё не знал, как это легко и красиво можно сделать
gsomix: Все, 100%.
gsomix: Можно спокойно работать. :)
Uljahn: гратц
gsomix: Спасибо. Первая задача из харда.
Uljahn: кажется, понял: двигаться ближе по чебышёву, а из равных выбирать дальнее по эвклиду...
BorisZ: Uljahn да, так и есть. Все 9 клеток куда можно пойти рассматриваю в том числе wait
BorisZ: ну и понятно что не бить если можно отойти куда то безопасно
Uljahn: спс
BorisZ: бить только если все в рендже или нет ходов безопасных
BorisZ: http://chat.codingame.com/pastebin/2b574a1f-4f2f-49a0-8315-a253ace6b866
Uljahn: а рендж - 9 spaces wide - это 9х9 квадрат что ли? :scream_cat:
BorisZ: в последнем тесте вот так они собираются, не двигаюсь пока не подойдут на HEIGHT // 2
BorisZ: да )
BorisZ: def in_strike(self, o):
return self.ddist(o) <= 4
gsomix: BorisZ, сработало в итоге?
BorisZ: да, у меня сработало
BorisZ: с последним кейсом пришлось только помучиться - помогла задержка
gsomix: Хорошая задача, потому что разными путями можно решить. :)
gsomix: Надо код причесать и убрать кое-какой хардкод.
Uljahn: я правильно понял - если идти в соседнюю с гигантом клетку, то он 100% ловит?
gsomix: Uljahn, да.
gsomix: Закончил. Не уверен, что мой код будет работать в любых условиях. Но симулятор для этой задачи писать лень. :)
gsomix: В итоге получилась следующая стратегия: идти к центроиду и ждать, а если он уже занят, то идти к любой свободной точке около него.
gsomix: Вчера не получилось, потому что я шел минимизируя расстояние по Чебышеву, а эффективнее оказалось ходить по Манхеттену. :upside_down:
tutubalin: пока сделал просто - убегать подальше, пока не зажмут когда зажали - бить
tutubalin: проходит всё, кроме последних двух. там он просто стоит на месте пока они рядом не подойдут, и только после этого начинает бегать
Tandemura: gsomix Ты пишешь про лень писать симулятор. Под симулятором имеется в виду симулятор гигантов? Я правильно понимаю?
gsomix: Да.
Tandemura: А у этого сайта нет никаких плагинов для известных IDE?
Tandemura: Онлайн IDE, в принципе, удобная, но с некоторыми задачками хотелось бы в своей привычной поковырять.
gsomix: Tandemura, я пользуюсь Sync для синхронизации файлов с онлайн IDE.
https://www.codingame.com/forum/t/codingame-sync-beta/614
Tandemura: Спасибо, посмотрю.
mykeich: cntrl+a cntrl+c win+1 mouse 1 cntrl+v
gsomix: mykeich, удобнее, когда оно само синхронизирует и запускает. :)
Tandemura: А по сути симулятор гиганта - это то же самое, что первая задачка про Тора, только в качестве Тора будут гиганты, а в Качестве конечной точки будет сам Тор.
Uljahn: похоже на то
gsomix: Tandemura, немного хитрее, мне кажется, потому что гиганты друг на друга не заходят.
mykeich: gsomix я привык и у меня часто несколько копий кода для проверки разных теорий
gsomix: Непонятно, в каком порядке вычисляются их позиции.
Tandemura: gsomix это точно, что они толкаются и мешают друг другу? По спрайтам похоже, что топчутся друг в друге, хотя я не знаю какой там шаг сетки.
Uljahn: надо в дебаг выводить карту
gsomix: > all the remaining giants on the map move in the direction of Thor (without ever overlapping each other)
Uljahn: http://chat.codingame.com/pastebin/4aefbfb7-89c6-4816-acd7-1b3d9d46118b
Uljahn: при этом в визуализаторе ничего не понятно - спрайты перекрываются
tutubalin: Tandemura CGSync - удобный экстеншн для браузера. синхронизирует файл на диске и в CG. можно использовать любую IDE, какая нравится
tutubalin: mykeich для проверки теорий я использую Git :)
BorisZ: Uljahn тех гигантов которые в рейндже другим символом лучше печатать - лучше обзор будет
BorisZ: G & g например
Uljahn: я ещё рендж не проверяю, но спасибо за совет, сделаю
tutubalin: можно и сам обзор другим символом. например пробелом вместо точки
Uljahn: и внешний визуализатор в 3D на жль написать :relieved:
BorisZ: слово жль каким-то образом стало ругательством )
BorisZ: приобрело отрицательную коннотацию
BorisZ: чудны твои пути, господи
tutubalin: гжель
Uljahn: будто что-то сокращённое нецензурное типа бдь, кстати и буквы на клаве совсем рядом (в обычной раскладке)
tutubalin: гиганты ходят в том же порядке, в котором они передаются
tutubalin: если одна координата больше другой в 2 или более раз - ходит по ней
tutubalin: если разница меньше чем в 2 раза, то ходит наискосок
mykeich: что за пазл?
tutubalin: имеется в виду координата относительно Тора
tutubalin: тор-2, гиганты наносят ответный удар
tutubalin: http://chat.codingame.com/pastebin/f7a186f9-92ca-465b-9e43-5b62844d6d6b
mykeich: поиск на сайте CG какой-то бесполезный, пазл как будто делал а найти его не реально
mykeich: POWER OF THOR - EPISODE 2 ?
BorisZ: mykeich да, оно
BorisZ: tutubalin а ты это сам вывел или рефери где-то есть?
mykeich: у меня решение на симуляции и движение гигантов простое
BorisZ: похоже на правду очень - с гигантами
Uljahn: http://chat.codingame.com/pastebin/0c5f5ef3-b91d-40da-845a-32b3582f7e3c
Uljahn: красоту навёл
mykeich: И что выяснил?:)
BorisZ: круть) еще пару мелких улучшений и вот от жль )
gsomix: И получится рогалик. :)
tutubalin: Uljahn раздели клетки пробелами. чтобы aspect ratio 1:1 сделать
Uljahn: угу
tutubalin: BorisZ сам вывел. посмотри картинку выше.
BorisZ: без динамики то не понять, но я согласен с правилом, но для симы надо еще добавить что делать гиганту если занята клетка
gtj: Ульян лучше сделай в граф
gtj: самое простое визуализейшн
gtj: я у корейца подсморел делаешь отдельный метод билд граф
gtj: копируешь вставляешь в браузер и готово
Uljahn: :joy:
gtj: http://chat.codingame.com/pastebin/928678d7-2d27-4340-9cd7-6058438efa81
Uljahn: теперь жль уже не модно? модно в граф всё пихать?
gtj: сначало если это граф надо в граф засунуть в такой визуальный
gtj: теперь ты каждый кадр сканишь карту свою)
gtj: красавчик значит разобрался)
tutubalin: gtj lolii, а ты бфс уже сделал?
tutubalin: лабиринт прошёл?
gtj: ты не правильный вопрос задал
tutubalin: просто тебе неправильно отвечать
tutubalin: зацени: https://www.codingame.com/replay/481739856
tutubalin: бфс без очереди
tutubalin: из состояния только один булеан: идём к терминалу или к выходу
tutubalin: потому что игра это не передает, приходится хранить
tutubalin: заняло чуть больше часа
tutubalin: а ты уже неделю не можешь бфс понять
tutubalin: эх lolii lolii
tutubalin: зачем? у меня всё работает как по маслу
gtj: у тебя когда он начинает играть 1 ход делает вних а должен минимум 5 сделать
tutubalin: зачем?
gtj: потомучто с другой стороны он обходит и не проход до не изведаной дороги
gtj: как будто стена где ее нет
gtj: http://chat.codingame.com/pastebin/e4444e69-2191-4bdb-9df0-3cacb9bd9903
tutubalin: зачем мне этот говнокод?
tutubalin: у меня прекрасно работает
gtj: посмотреть связи с графом
tutubalin: ты на реплее видишь весь лабиринт
tutubalin: кирк видит только часть
tutubalin: он делает выводы на основе того что видит
tutubalin: что в нём не так?
gtj: ххххххх ххххх0х ххххх0х ххххххх
gtj: и как будто там 2 икса для него незивестных тоесть стенка
gtj: щас скажу ход обхода с другой стороны первому
tutubalin: что такое ход обхода с другой стороны первому?
gtj: там буквально 1-2-3 хода он не доходит
gtj: ну я сравнил 1 слайд с 70+
gtj: и заметил что он не фиксирует 2 3 клетки
tutubalin: а почему он должен доходить?
tutubalin: http://chat.codingame.com/pastebin/203f3d3d-c26c-489c-893c-b198de7da0e3
tutubalin: вот так это выглядит для кирка
gtj: если у тебя работает то классно
tutubalin: никак )
gtj: окей я просто покажу свой код
gtj: http://chat.codingame.com/pastebin/1154e860-17f8-46c4-abcb-e8a75c700b66
tutubalin: у меня есть грид. просто проверяю 4 направления
gtj: ты хранишь гриф это плохо
gtj: надо понять почему в 1 слайде он делает 1 шаг вниз и обратно а в 70 не доходит до туда где пошел вверх если коротко
tutubalin: я понимаю, почему он так делает )
gtj: я думал ты не допечатывал секонды
tutubalin: ты картинку посмотрел?
gtj: и думал они у тебя в векторах
tutubalin: он идёт к ближайшему вопросу
tutubalin: ближайший вопрос сверху
gtj: у меня кстати были похожие баги вначале вчера
gsomix: gtj, видимо ты забыл, что
> [Kirk] is only able to scan the cells located in a 5-cell wide square centered on him.
gtj: мне если честно пофиг я свою задачу выполнил сделал то чего хотел теперь можно дальше разбираться
gtj: туту я вот чего добился все валид)
gtj: http://chat.codingame.com/pastebin/1cbeea46-c508-456d-bc7c-24a9b3ad7316
tutubalin: все тесты прошёл?
tutubalin: это просто твоё отношение. измени его
gtj: у тебя наверно каждый кто кодером назвался 100% все умеет
gsomix: Привет!
tutubalin: Denis_Ka_120719 привет!
tutubalin: добро пожаловать на CG!
gtj: tutubalin у меня вот почему то все было но с графами дел не имел и вот все изучил как я понял, но тут используется 1 подтип графов
gtj: tutubalin и вот в этом вопросе где он нужен я более менее раззобрался
tutubalin: gtj ты не понимаешь условие задачи, а даёшь советы
gtj: tutubalin главное не это а то что я разобрался с тем о чем не знал а то что ты пишешь другого рода дело
tutubalin: gtj ты молодец! теперь попробуй применить полученные знания для решения задачи
tutubalin: gtj держи бфс без очереди, смс и регистрации https://pastebin.com/WPCKK79B
gtj: да у меня есть я буду с очередью делать
gtj: это ты тот имплементейшн посмотрел)
tutubalin: на плюсах получается тошнотина
tutubalin: какой тот?
tutubalin: который я тебе на русском языке писал?
tutubalin: https://pastebin.com/aewqFpCg
gtj: ну и тот тоже да все похоже на решения смотрел есть
Tandemura: Denis_Ka_120719 привет!
gtj: тогда вроде прячет тошнотину
tutubalin: вот тем, кто using namespace std использует в серьёзных конторах отрубают руки
gtj: если не понял щас напишу)
tutubalin: не надо
tutubalin: лучше реши задачу
tutubalin: или хотя бронза в крестиках
gtj: using nv_t = std::map<int, std::vector<std::pair<int, int>>>::iterator;
tutubalin: ну вот уже тошнотина пошла
tutubalin: лучше выйди в бронзу
gtj: кароче чтобы понять о чем я глянь корейца
tutubalin: ты тут полгода уже, а всё ещё в дереве
tutubalin: стыд и позор
gtj: http://chat.codingame.com/pastebin/eae0bd09-9835-4bd6-bc7b-3e0c49db921f
tutubalin: не надо этой тошнотиной чат забивать
gtj: а что для тебя не тошнотина?
gtj: даже коррец в варианте и тупле пишет так
gtj: и пол языка переопределяет
Denis_Ka_120719: есть кто на Perle тут задачки решает ? :)
gtj: чтоб ему проще было с потоком работать
tutubalin: Denis_Ka_120719 это тебе в #world надо
Denis_Ka_120719: ой, не заметил что русский поток
tutubalin: и то перл в основном для гольфа только
Denis_Ka_120719: я ищу ресурсы где можно потренировать знания, полученные из книжки XD
tutubalin: не, потренить смело можешь
tutubalin: но не знаю, сможет ли кто-то посоветовать, если бага будет
tutubalin: тест
gsomix: tutubalin, что проверяешь? :)
tutubalin: иногда чат перестаёт обновляться
gtj: tutubalin а что у тебя выводит когда идет твой кирк по лабиринту в вывод тыже тестил дома
gtj: серию чисел или одно число?
gtj: путь получается серия тут что засунешь в путь получается да?
tutubalin: ты неправильно сформулировал вопрос
tutubalin: если имеешь в виду, в каком формате bfs возвращает путь до целевой точки
tutubalin: то ответ следующий: bfs не возвращает путь целиком, только самый первый шаг
tutubalin: если быть конкретнее, в общем случае bfs может построить весь путь, но в этой конкретной задаче весь путь не нужен
gtj: да мне не надо для этой задачи чтобы эту задачу решить надо понять как все работает
gtj: чтобы настроить под эту задачу
gtj: просто 1 код возвращает 1 число
gtj: я пытался настроить чтобы возвращал серию чисел
tutubalin: какой 1 код? какое 1 число?
tutubalin: их нихт фирштейн
gtj: https://e-maxx.ru/algo/bfs#4
gtj: я пытаюсь понять как вывод для что он показывает и что по нему понимать
gtj: тоесть он вывод типо чо это значит
tutubalin: вот почитай внимательно свою ссылку и научись так же чётко формулировать мысли, как в тексте по ссылке
gtj: он мне по момему лабиринту 1 число возвращает 1 или 2
tutubalin: короче если по графу одно число то не то что да тогда типа серия по графу фьють фьють и в дамки
gtj: ты хочешь сказать если 1 то вызвать бфс по текущей вершине
gtj: кароче вопрос исключительно касается смежного вопроса вывода информаии движения обьекта для людей а не для машин
tutubalin: это короче как в линяге только с графой 1 в 1 как в линяге берёшь код и одним прокастом делаешь комбо серию 1 число много чисел
gtj: и число 1 не понятно чо значит для кого это
gtj: бфс да есть в линяге только он ищет фокус доступный в диаметре
tutubalin: у тебя bfs написан?
tutubalin: написан тобой или скачан?
tutubalin: что передаёшь на вход?
gtj: я пишу только то что понимаю
tutubalin: какие параметры передаёшь на вход?
gtj: tutubalin стартовый вертекс номер его
gtj: ради этих вертексов этот бдсм запилил который я кидал тебе
tutubalin: вершины ты хранишь в виде чисел, я правильно понимаю?
tutubalin: у тебя был грид, который ты превратил граф. в результате каждая вершина имеет номер и список соседних вершин, правильно?
gtj: вершины в числах в конечном итоге ага
tutubalin: нумерация вершин начинается с нуля или с единицы?
tutubalin: в каком виде хранишь список соседей?
gtj: он по сути два раза в граф превращает просто мне обязательно надо было в дерево засунуть эту инфу и иметь бекапчик в виде структуры
tutubalin: зачем?
tutubalin: а дерево зачем?
tutubalin: дерево - это граф без циклов
tutubalin: а у тебя граф может содержать циклы
gtj: первый прогон я сканю инпут массив непойми чего и парсю на вершины и реальные координаты записал
gtj: структуру парсю и соприкасаю вершины записав в дерево
tutubalin: вот надо сперва понять массив чего ты сканишь
gtj: любой инфы которая в графе бдет
gtj: дерево у меня имеет номер вершины дерева 1 вершина и к кому пишем
gtj: к кому пишем вершину то вектор пар
gtj: это будет в первой вершине
gtj: иззи того что их несколько я храню их в векторе
gtj: а из йив вектора можно вызывать координаты реальные
gtj: тоесть 6 в конечном счете будет хранить реальные координаты
tutubalin: ок, пойдём дальше
tutubalin: что ты передаёшь bfs?
gtj: просто вертекс откуда идем
tutubalin: начальная точка и конечная точка, так?
tutubalin: откуда идём не достаточно, нужно ещё и куда идём
gtj: понял просто во всех примерах со стартом а с финишем у про разборов
tutubalin: если только ты не хочешь узнать кратчайших путь вообще до всех точек
tutubalin: надо отмотать назад
tutubalin: какая задача вообще перед тобой стоит?
tutubalin: точнее, какую задачу должен решать твой алгоритм?
gtj: вывести для человека информацию понятную что делает алгоритм в консоль куда идет хотябы и где закончил движение
tutubalin: не правильный ответ
tutubalin: что поступает на вход
tutubalin: что получается на выходе
tutubalin: не соскальзывай
tutubalin: на входе лабиринт
gtj: ну я тебя понял что будет перечисление вершин
tutubalin: на выходе список вершин, ок
tutubalin: чем замечателен этот список вершин?
tutubalin: он замечателен тем, что это кратчайший путь из начальной точки в конечную
gtj: я тебя кажись понял вижу типо куда шел алгоритм
tutubalin: правильно?
tutubalin: формулировка задачи
tutubalin: input: лабиринт, начальная точка, конечная точка
tutubalin: output: кратчайший путь
gtj: да это понятно я делаю дебаг разбивая задачи
gtj: запдачи разбившись привносят больше опыта
gtj: потом можно собрать что надо и уже понимаешь что происходит
gtj: смотрю что происходит чтобы потом собрать эти куски алгоритма
gtj: а тут да сама задача подводит к другому решению
gtj: тоесть мне больше понятно это
gtj: http://chat.codingame.com/pastebin/9d5676b0-7d5d-499c-a1e8-48fa79541324
Uljahn: а мне не понятно, что за цикл в конце, откуда curn взялось...
Uljahn: с какого конца queue.remove() достаёт индекс ноды? это будет иметь значение на порядок обхода
Uljahn: блин, у меня какой-то рунглиш попёр :(
gtj: http://chat.codingame.com/pastebin/9e5dfa05-0487-4e5a-8b12-5d4a4d657e53
gtj: тут приходилось качать еклипс разбираться он немного паршивит текст
gtj: но в самом еклипсе все в формате
gtj: это гайд по сути я писал за гайдоделом
gtj: ну по тродиции надо линки кинуть сек
gtj: https://www.youtube.com/watch?v=pyDS_sTSsFo
gtj: кароче 2 урока за ним писал
Uljahn: за такие традиции пора банить
gtj: нам как он так в вузе обьясни все известные алгоритмы на ++
gtj: пока ты находился в кабинете было все понятно
gtj: только покинул кабинет все
Uljahn: на лабах обычно закрепляют, конспекты пишут, читают методички, учебники
gtj: на лабах не шибко надавят по такому комуто такое давали комуто структуры на рекурсиях
Uljahn: жаль, не было CG в то время
gtj: мне самое обидно я потерял конспект там монте карло обьясняли
Denis_Ka_120719: http://chat.codingame.com/pastebin/204a39dd-2cc7-489a-9dbb-f6683f4cd428
Uljahn: Denis_Ka_120719: угу
gtj: угу но щас я уже по другому подошел осознанно тогда побоку было это всё
gtj: ток структуры запомнил боле менее)
Denis_Ka_120719: а какой язык если не секрет сейчас дают?
gtj: ее оч долго обьясняли просто)
Uljahn: мне всегда нравилось кодить, я алгоритмы учил для себя, только учился не на кодера
amurushkin: а я вообще в универе не программинг учил :) все самоучка. до сих пор пробелы в знаниях. и в структурах и алгоритмах и в шаблонах проектирования
gtj: я тоже не программингом был
Uljahn: ну, шаблоны только кодерам дают, а нам - инженерам - давали численные методы
Uljahn: эфм?
gtj: и кодерам не все преподы дают шаблоны считаетсяч что вроде тебе на работе или ты сам дойдешь до них
gtj: в колледже не все преподы брались за шаблоны в вузе я не вкурсе
gtj: с++ ну сморя где и как щас хз
Denis_Ka_120719: @Uljahn матлаб наше все?
Uljahn: матлаб проприетарный слишком, но там замечательный симулинк
Uljahn: так-то и на питоне всё можно делать
Uljahn: или на octave
gtj: ну как amurushkin чем пользуются тем и пользуешься
gtj: если матлаб симулинк значит и задачи соотвествующие
gtj: всмысле amurushkin упоминал о том что команда юзает опр набор софта в зависимости от задач
Uljahn: понятно, что производители софта пытаются пропихнуть свой продукт в образовательную среду, "подсаживают" будущих инженеров
Uljahn: у нас LabVIEW пропихивал NI
gtj: и не только просто некоторые задачи по ембеду проще сразу в матлабе делать
Uljahn: за удобство всегда приходится платить
Uljahn: деньгами и худшей конфигурируемостью
gtj: вчера сакутина послушал задумался над этими строками)
gtj: http://chat.codingame.com/pastebin/f8a332e3-02ee-4d61-900d-b66f976caa56
gtj: Ульян получается наибольший сосед питону это ява
Uljahn: скорее жс или руби
gtj: тоже вм тоже все есть тоже мощ
Uljahn: смотря по каким критериям близость определять, вм в питоне вроде нету, есть байткод, есть интерпретатор и GIL. а мощь - за счёт плюсовых либ...
gtj: плюс я еклипс поставил вижу тут еще ред хет тащит свои наработки
gtj: в питоне вроде ты работаешь в среде
mykeich: Прочитав чат я так и не понял gtj научился BFS писать?:)
gtj: да исследовал я просто завис над 1 моментом
gtj: я посмотрел ява реализацию понял несколько важных моментов и подвис пока(
gtj: у меня кривое понимание классов в ++( я деленирую основную работу другому классу(
gtj: тоесть класса нету у меня
gtj: обертка для работы другого класса(
tutubalin: он вместо того чтобы bfs писать, опять что-то ставить начал
tutubalin: ему бы в сисадмины
gtj: нет я углубился в исследования нашел язык где можно прототипировать классы
gtj: более глубоко и понимать огрехи класс реализаций своих в с++
gtj: и нашел 1 жирный минус который я тащу из opengl
gtj: когда в опенжл это отрабатывает в чистом коде так нельзя получается делегат какойто
gtj: в обьекте обьект и обьект работает не с собой
gtj: вот присмотрись внимательно
gtj: http://chat.codingame.com/pastebin/198cb0f5-2b54-4dd2-ac10-20c8c6e4661f
Uljahn: Automaton2000: где там наша уточка?
Automaton2000: так что не так что есть что
tutubalin: gtj ты не хочешь присматриваться к моему хорошему коду, я не буду присматриваться к твоему плохому
gtj: я смотрел на твой но писать реализацию очереди это врятли для новичка сначало надо на очереди реализовать ну и тут у меня появилась новая задача
gtj: щас сделаю еще одно дерево визитёра
gtj: сделаю ассоциацию с основой откопирую флаги в дерево и посмотрю к чему приведет это
Uljahn: у тебя новые задачи появляются быстрее, чем старые решаются, не? технический долг не давит?
amurushkin: а ты не пробовал псевдокод алгоритма осилить и сделать на каком хочешь языке?
gtj: amurushkin у меня это все ради кадров
YurkovAS: wlesavo у тебя samegame MC? Юзаю beam search - немного ниже тебя
gtj: не совсем для решения задачи но и для ее решения тоже
gtj: я хочу научится хранить кадры в дереве
Uljahn: эйлер вроде про чокудай упоминал, тоже типа beam search с переменной шириной
tutubalin: ты сперва научись доводить дела до конца
amurushkin: 16:14:08) gtj: вчера сакутина послушал задумался над этими строками) вот когда я тебе тоже самое предлагал это не так авторитетно было да?
tutubalin: может его к сакутину в коменты отправить?
gtj: ты тоде авторитет просто осознал только щас как осенило
amurushkin: YurkovAS: попробуй поиграться с глубиной и шириной. может обгонишь
gybson_samara: а нельзя разве написать что-то типа using std и не указывать больше неймспейс?
YurkovAS: amurushkin с глубиной? Вот игра https://www.codingame.com/replay/481794711
gtj: я только щас осознал чо я ваще творю в классе как назвал его и какие у него состояния и осознал что это бредятина какаято типо делегата или типо какойто набор методов просто
amurushkin: ну с глубиной поиска
YurkovAS: amurushkin ограничения на глубину нет, только на ширину. или не понимаю как сделать.
amurushkin: или ты до упора идешь
wlesavo: YurkovAS да, чисто MC, но я делаю полный флудфил на каждом ходу по заветам смитси, чтобы не было увеличенной вероятности выбора больших кластероыв
Uljahn: gybson_samara: это наверное как в питоне написать from numpy import *, а потом думать, что за array и empty
YurkovAS: а, там еще на первый ход дают 20сек, поэтому на нем все и расчитывается
amurushkin: там надо все решение сразу? я просто не пробовал ее. только видел как выглядит
gtj: gybson_samara пока так оставил, тебя понял там есть да пара моментов где юзинг уместен там обьявления итераторов на всю ширину екрана
wlesavo: ну там нет противника, поэтому 50мс на ход не сильно времени добавляют
YurkovAS: wlesavo beam search пока не могу улучшить. может оценочная неочень
amurushkin: кстати в бим серч оценочная не такая простая вещь наверное. если оценивать в середине а не в конце то далеко не все очевидно наверное
YurkovAS: wlesavo а MC - это же рандомный ход выбираем и так повторяем до конца партии. Если эта цепочка оказалась лучшей, тогда сохраняем ее и дальше повторяем. Так же надо делать?
wlesavo: да, все верно
amurushkin: тогда наверняка можно через отжиг сделать еще лучше
gybson_samara: Uljahn ну std то это же std, мы же в питоне не пишем std.list
amurushkin: хотя может и не можно. разве что брать часть пути а остальную рандомить
wlesavo: amurushkin с отжигом мутации не понятно как делать мне
amurushkin: ну вот да пришла мысль только откусить хвост и нарандомить
YurkovAS: amurushkin да, c beam search-ем не просто, т.к. ширина обычно от 500 до 5к состояний. в гиперсонике так и не смог забраться выше 100 места
Uljahn: ппц, МТС блокирует https://www.slideshare.net/chokudai/chokudai-search-23234124
Uljahn: Automaton2000: я буду жаловаться в спортлото!
Automaton2000: ну вот я и говорю
wlesavo: я вот думаю mcts делать или нет особого смысла?
tutubalin: gybson_samara на стековерфлоу очень много копий сломано. но если у тебя проект не в один файлик, то лучше чётко прописывать неймспейсы
gtj: где все приведено в название
amurushkin: Uljahn: а на китайском то нам зачем ))
YurkovAS: wlesavo у меня был mcts - 10к очков только смог набрать. причем без солвера (с ним падало). перенес один в один на beam search и гораздо лучше
YurkovAS: может ошибка в mcts была
wlesavo: у тебя по любому косяк, у меня больше 7к у меня было просто рандомным выбором хода
wlesavo: а ты кстати делаешь выбор клетки или кластера?
gtj: http://chat.codingame.com/pastebin/9d40283a-14ee-47f3-8683-3e75ad150e5d
YurkovAS: wlesavo делаю выбором кластера
Uljahn: набил 80% в торе-2, смотрю в дебаге ascii-мультики :)
tutubalin: скоро roguelike напишешь )
Uljahn: со знаком суммы эвклидовых расстояний забавная петрушка, либо не проходит 7 и 10, либо 9 и 10, или где-то баг
tutubalin: в смысле не проходит?
Uljahn: зарядов не хватает, либо с колбасой из последних двух тестов тупит
tutubalin: а зачем там эвклидовы?
Uljahn: чтобы выбегать при равных чебышёвых
tutubalin: у меня кстати тоже 7 и 10 из тестов и 9 и 10 из валидаторов
gtj: считает расстояние до ближайших точек видимо
gtj: но там есть трик обычно когда на екране очень много мобов их надо собрать в кучу
Uljahn: кто-то манхеттен предлагал, надо попробовать...
tutubalin: gtj ТАААААК! Пока задачу сам не решишь, никаких советов давать не можешь
BorisZ: Uljahn откуда знак то там у тебя взялся - сумма расстояний всегда положительная
gtj: ок но я так буду делать когда 50 мобов иду по касательной пока дальние не сблизились с ближайшими
gtj: когда они близки друг другу массуха
gtj: в рагнарке даже могу показать эти моменты как это выглядит
BorisZ: не стоит
Uljahn: BorisZ: это я так понял "поближе подхожу по сумме расстояний до всех, если равная сумма - то подальше по евклидовому расстоянию", сделал тупл (сумма чебышёвых, -сумма эвклидовых) и по ней сортирую :)
BorisZ: да, у меня так же
BorisZ: предварительно отфильтровываю те клетки на которые нельзя наступать
Uljahn: это да, есть сет с запрещёнными клетками, которые уже рядом с гигантами
BorisZ: к колбасе он подходит с фланга тогда
gtj: еще тут что доказывает те состояния тут есть дорожка мобов надо сделать так движением касательной чтобы дорожка мобов сошлась в виде (1 2 3 4 5 6 7 89 ты ) надо чтобы первый подошел или был рядом с 8 9
gtj: если идет первый значит двигает второй
Uljahn: ясен пень, что надо - в этом смысл пазла, но как на простой эвристике сделать?
gtj: я думаю тебе надо иметь тупл расстояний до каждого пока на первом приближении
Uljahn: ты решил его?
BorisZ: Uljahn у меня сумма квадратов евклидовых кстати, может поэтому по разному
wlesavo: YurkovAS кстати с другим сидом +10к получилось сразу
BorisZ: я чет про это забыл (
Uljahn: :scream_cat:
YurkovAS: wlesavo сидом? для рандома? юзаю fastrand отсюда https://www.codingame.com/playgrounds/283/sse-avx-vectorization/sseavx-c-frameworks
YurkovAS: constexpr int RND_SEED=8000; static unsigned int g_seed=RND_SEED; inline int fastrand() { g_seed = (214013 * g_seed + 2531011);return (g_seed >> 16) & 0x7FFF;}
wlesavo: ну у меня тоже фастранд, чуть подергал циферки
YurkovAS: и проект выкачал локально, настроил запуск валидаторов 1 в 1 как на проде в многопотоке. работает примерно 1.5мин, а результаты как так, очень удобно тестировать.
wlesavo: неплохо, мне чето лень пока заморачиваться
Uljahn: вроде на StC похоже?
gtj: там де от проца твоего зависит и того какой тут прости плис
gtj: avx и sse надо понять какая версия тут и у тебя на компе
gtj: не на компе а cpu какие поддерживает
gtj: может быть так что тут sse 3 (4)
Uljahn: модели cpu известны же
gtj: ну это оптимизация посмотри прагмы
gtj: надо просто скан цпу сделать на налоичие флагов
tutubalin: gtj давай ты будешь учиться, а не учить, ок?
wlesavo: Uljahn да, похоже но сильно проще
gtj: tutubalin иди в AVX/SSE Extension
gtj: я не учу я предпологаю потомучто я такое делаю в генте
gtj: я выставляю те флаги какие поддерживает цпу
tutubalin: gtj все здесь присутствующие знают гораздо больше тебя про AVX, AVX2, AVX512
gtj: буду считать что у тебя ссе4
Uljahn: здесь три вида процов одной модели с разной частотой, model name: Intel Core Processor (Haswell, no TSX), flags: ssse3 sse4_1 sse4_2 popcnt aes avx bmi1 avx2 bmi2 и т.д., читается из /proc/cpuinfo
gtj: https://github.com/mgorny/cpuid2cpuflags/blob/master/src/x86.c
tutubalin: Uljahn это может быть один и тот же проц с плавающей частотой
tutubalin: когда AVX2 слишком активно используется, частота падает
gtj: https://github.com/mgorny/cpuid2cpuflags
amurushkin: tutubalin: я думаю что если бы частота плавала то бот бы тоже плавал в просчетах. а так четко держится на одном уровне. скорее всего разные
tutubalin: ну мы проверяем только при запуске
tutubalin: может так быть, что первый раз засабмитил - попал пока проц "холодный" второй раз засабмитил - он уже "прогрелся" и понизил частоту
tutubalin: вот кстати на SameGame можно отестить. там 20 секунд дают на первый ход
tutubalin: должно быть достаточно, чтобы проц прогреть
gtj: а если флаги на твоей машине 1 а на таргете где код запускается другие может быть так что расчеты разные если ты на таргете по инструкции или гайду не знаю как еще написать используешь опр оптимизацию имплементруя ту самую оптимизацию на таргете
BorisZ: тут может иметь значение какой проц попался, надо несколько сабмитов делать
BorisZ: в отличие от мультиплеера где всем примерно поровну отсыпается
gtj: arch=native тогда будет для тебя 1 для таргета другой как минимум
BorisZ: просто зачем знать то на каком проце сейчас исполняется программа?
BorisZ: не будешь же разные схемы для разных процов делать, все одно и то же будет, выход по времени
BorisZ: или я чего-то не понимаю?
gtj: мне gcc придется ставить проводить исследование тогда чтобы конкретно ответить на вопрос
BorisZ: а от сабмита только конечный скор известен, никакой другой инфы не получишь
gtj: если у тебя есть возможность запустить код с той страницы
gtj: запусти проверь значения с той страницей они будут одинаковые?
gtj: вот надо чтобы 1 в 1 были
gtj: потомучто тут советуют тебе опр оптимизацию хоста
Uljahn: сабмит же можно фейлить, если попался неподходящий проц?
Uljahn: вот тебе один бит инфы
BorisZ: ну можно, согласен. Но не фейлить ничем не хуже - спамишь пока дают да и все )
Uljahn: можно узнать статистически распределение подходящих процов)
gtj: щас прям на примеру спрошу у тебя
gtj: вот у нас есть код (и такие флаги )
gtj: CPU_FLAGS_X86: aes avx avx2 f16c fma3 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3
gtj: а если запустить тот же код без нескольких флагов отсюда
gtj: программа одинаково посчитает?
Uljahn: смотря какая программа
BorisZ: я не знаю )
Uljahn: если она не использует эти инструкции, то скорее всего одинаково
gtj: а инструкции берутся из битов регистров
Uljahn: хотя я тут про процы для смартфонов читал, там вообще с плавающей точкой беда, в угоду бенчмаркам оптимизируют с потерей точночти
gtj: ну из файлика этой страницы можно привязатся впринципе что натив и что только авикс и забить но мне интересно если тоже самое запустить с другими флагами и проц другой интересно что будет
BorisZ: есть набор прагм которые уже подобраны другими умными людьми специально для КГ - берешь и копируешь, зачем париться?
Uljahn: если интересно - то разберись, почитай мануалы
gtj: где мне говорили что когда интел делали процы в самом начале наны точно помню где мне говорили отличались и гдето я делал эти сравнения наверно на ассемблере
Uljahn: godbolt?
gtj: нет когда учился мы делали лабы на асемьлере
gtj: и гдето я уже видел эти наны и сравнения
gtj: или типо у когото в задании совпадало у когото нет
gtj: давно было какбудто уже не было
Uljahn: удачи в поисках, а я пошёл гигантов дебажить
gybson_samara: первая половина кейсов прям как-то совсем легко
gtj: кароче проще на асемблере проверить эти флаги
gtj: http://chat.codingame.com/pastebin/915f4a88-11ca-488e-8fa1-7fc9c0cb19d9
tutubalin: я уже вроде задавал вопрос, но не помню ответ. кубер как-то игнорил мэда. это только через внешний клиент можно сделать?
gtj: помоги разобраться как искать
gtj: хотябы на примере массива с ребрами
gtj: выводит на примере массива с ребрами 11111111112222222222
gtj: я не понимаю что это такое
gtj: http://chat.codingame.com/pastebin/b76e1e35-ff75-4fd9-8dc4-21f627586136
tutubalin: вот где код копировали - туда и идите
gtj: http://chat.codingame.com/pastebin/dabf60f5-6ab3-4ee5-b7f0-516171bf133f
tutubalin: иди у корейца спроси
gtj: а что хоть это такое я ввел 19
gtj: https://imgur.com/a/i1PdlLL
gtj: щас попробую на дерево поменять но там тоже самое выводит 11111111122222222
gtj: как вы пользуетесь то этими данными там же только 111111111222222222
Uljahn: так может тебе не бфс, а Дейкстра нужен?
tutubalin: ну хватит уже флудить единичками
gtj: так разобрался уже просто не понимаю что он выводит
tutubalin: спроси у корейца
gtj: он выводит если д то единички
Uljahn: спроси у уточки
tutubalin: тебе дали достаточно информации
tutubalin: если ты не способен её переварить, мы тут бессильны
gtj: f xj nt,t ckj;yj gjlcrfpfnm jxtdblyj ;t xnj jy xnjnj yf[jlbn&
gtj: а что тебе сложно подсказать очевидно же что он чтото находит
gtj: он либо до 15 идет либо я хз
gtj: 1чки получается доходят до 18
gtj: другого обьяснения я не вижу
Uljahn: за репетиторство тут не платят, люди помогают добровольно кому хотят и когда хотят. если хочешь, чтобы тебе отвечали - не сношай мозги постоянно, копи социальный кредит доверия
amurushkin: tutubalin: игнорить да через внешний клиент можно
tutubalin: amurushkin внешний клиент просит пароль от аккаунта
tutubalin: а я через гитхаб логинюсь
Uljahn: у тебя через соцсеть авторизация?
Uljahn: ага, известная проблема
Uljahn: "You can click on “forget my password”; it will alow you to generate one."
Uljahn: https://www.codingame.com/forum/t/native-login/4978
amurushkin: tutubalin: прийдется задать пароль. через это все проходили
Uljahn: 100% на торе-2! добавил в оценку расстояние до стенки, как в discussion подсказывали
gsomix: Uljahn, какая в итоге стратегия получилась?
BorisZ: поздравляю
gsomix: Грац! :)
BorisZ: третим членом или прибавлял?
Uljahn: ой, у меня такая оценка страшная, попробую свести к минимально рабочей
BorisZ: я тоже пробовал и третьим и складывать со вторым - одинаково шло, не доходило до него видимо )
Uljahn: иду в минимум суммы расстояний чебышёва - расстояние до ближайшего края, если одинаковые значения получились, то в клетку с большей суммой эвклида, вроде как-то так
BorisZ: другая то есть формула получилась у тебя. Доказывает что маловато тесткейсов в задачке -)
Uljahn: ну это же хард, а не вери хард, можно разными путями решать, это хорошо
BorisZ: если хотели подтолкнуть к симе, то спустя рукава делали
Uljahn: не, если бы к симе хотели, то описали бы алгоритм гигантов
gybson_samara: http://chat.codingame.com/pastebin/1eadc72b-bf83-4867-b90c-2513cd892ede
gtj: а бфс ищет пока не конец того что ищем чтоли?
gtj: тоесть у меня уловие не правильное чтоли?
Uljahn: для чего же нужен алгоритм поиска? электричество жечь? :thinking:
gtj: у меня условие было как у всех пока визитер -1
gtj: по тому что вытащили из очереди
gtj: кароче я так понимаю вся свистопляска ради прохода по дереву вот тупо щас пройдусь по дереву надоело
gtj: не работают примеры из инета
Uljahn: лыжи не едут?)
gtj: да нет я хотел красиво а придется дерево писать
gtj: напишу дерево и тупо сделаю чо надоело
gtj: не работает нихрена через эту фигню std::map<int, std::vector<std::pair<int, int>>> myNodes;
gtj: граф есть все связано я его проверил как только можно а как работать с этой конструкцией хз
gtj: щас еще попробую кое что если не сработает своё дерево напишу
Uljahn: дерево посещений нод или какое?
Uljahn: :neutral_face:
gtj: не мапа будет а мое дерево
gtj: в каждой ноде будет вся инфа тупо
tutubalin: https://imgflip.com/i/4bh8xq
Uljahn: хд
gtj: ну как я понял вся идея крутиться вокруг обхода
YurkovAS: wlesavo про какой offline в общем чате говорят? они решили в оффлайне и захардкодили ходы для каждого валидатора?
gtj: http://chat.codingame.com/pastebin/269ae728-f3de-45fd-8ec2-9b1e5d80f416
wlesavo: YurkovAS да, валидаторы же известные
wlesavo: https://github.com/acatai/SameGame/blob/master/src/test/java/StandardTestset.txt
gtj: вот щас если с этим не запашет сделаю обьект дерево с нодами с ссылками напишу методы адд принт и бфс типо того причем я уже писал в ширину обход когда тут был в раздлеле разработок запрос на дерево авл
wlesavo: я офлайн точно не пойду, попробую еще пару подходов онлайн и остановлюсь
YurkovAS: wlesavo понял, спасибо! ну так не интересно)
wlesavo: ну я тож думаю что не спортивно как-то)
Uljahn: :joy:
gtj: я долбаный неудачник писал бфс а тут не понимаю что происходит
YurkovAS: SA тут не затащит? ты же вроде юзал его в number-shifting. игры похожи
Uljahn: у них же контест идёт, все средства хороши
tutubalin: в оптимизации во всех задачках хардкод рулит
tutubalin: Code of the Ring вобще фиг алгоритмизируешь нормально
tutubalin: тем более с такими ограничениями по времени
Uljahn: We will do a small contest on it for fun :medal: Let's see who ranks first by Sunday 8 PM UTC!
Uljahn: это из дискорда
wlesavo: YurkovAS в SA я придумал как правильно мутации запилить, ключ был в том что каждый номер можно подвинуть только один раз
wlesavo: здесь хз, может и можно но пока кажется что не очень перспективно, у смитси мктс солвер неплохо работает
YurkovAS: а у него в онлайне мктс?
wlesavo: да
wlesavo: у него и кови онлайн скор
YurkovAS: а есть еще какие-то детали про мктс реализацию?
wlesavo: хотя он писал что недавно начал офлайн, может уже сабмитил офлайн, но там было около 120к онлайн точно
wlesavo: не, я не слышал
YurkovAS: 120к это хорошо, по стравнению с 30к.
YurkovAS: сейчас, только сделаю МС
wlesavo: у него где-то 80к роллаутов на 15ом кейсе
wlesavo: у меня почти в два раза меньше
wlesavo: но говорят это не особо решает
wlesavo: кови сказал что х2 роллаутов дало 5% всего скора, правда в его случае 5% это 5к, ощутимо таки
wlesavo: тем более близко к насыщению
YurkovAS: могу расшарить, как запускаю локально все тесты. там java unit test, его надо закинуть к рефери и запустить из idea
tutubalin: а в быках и коровах какое ограничение по времени?
wlesavo: tutubalin 1с + 50мс/ход
wlesavo: жесткое достаточно, было бы чуть больше было бы сильно проще
YurkovAS: МС лучше играет, 55к
gtj: кладу вершину ищу ее в мапе, обращаюсь к вектору пар этой вершины если второй элемент этой вершины векторы пар 1 и надо ити вперед беру 0 индекс второй элемент кладу его в очередь и пишу в путь и вывожу на екран этот гребаный номер кажись так
Uljahn: Automaton2000: вообще-то не так, но пусть будет так
Automaton2000: тупо я нашел что такое граф я вкурсе
gtj: в ферсте следующая координата 0 индекс я заметил если иду вперед 1 индекс я заметил если иду назад
gtj: тоесть если пройтись по вершинам с индексами 0 то тогда я иду вперед в глубину шириной
gtj: а если надо обратно тогда мне надо идти по первым индексам шириной тоже в глубину но обратно можно даже ерево перевернуть
Uljahn: Automaton2000: быстрее, глубже, ширее
Automaton2000: а то у меня не было
gtj: http://chat.codingame.com/pastebin/c68dea44-ad5f-42c6-99bb-c8b3e01ca350
gtj: тут уже все сделано это просто вывод дерева последовательно
gtj: надо ити всегда по второй числу по верхнему
gtj: а если обратно можно заморочится перевернуть рут в 33 и идти обратно
gtj: щас еще разок проверю все пары
gtj: щас буду пытаться чтоб так работало
gtj: стопарик можно уже без бфс
gtj: так вот она идея алгоритма по стенке
gtj: надо найди 1 любую стенку
gtj: Automaton2000 давай сделаем рекурсию в дереве и распарсим циклы
Automaton2000: также как и в других играх не было такого
gtj: http://chat.codingame.com/pastebin/4d3052e3-c260-4e2c-8996-704f6f6411e5
gtj: http://chat.codingame.com/pastebin/4fa62284-3fe6-4334-95c0-8b86528b780d
gtj: вот лабиринт из примера the labirinth
gtj: https://imgur.com/iZM4BRv
gtj: из 18 точки проходит в легкую до 128
gtj: http://chat.codingame.com/pastebin/0bae3df3-ab27-49b3-bf78-3364824d6b77
gtj: Automaton2000 bfs засчитай мне и рекурсивный бфс (две галочки пожалуйсто)
Automaton2000: вк на каждое какое сообщение куда отправляет?
gtj: я верил думал он все пути найдет а оказалось просто обход рекурсы
gtj: какая разница если есть рекурса рекурса так же обходит это два одинаковых алгоритма
gtj: оболдеть я протупил неделю
Uljahn: лол
Uljahn: Automaton2000: что такое алгоритм Флойда-Уоршелла
Automaton2000: я не знаю что это
Uljahn: Automaton2000: он тебе все пути найдёт
Automaton2000: у тебя не проверяет то что нужно, она проверяет только то что рядом нет двух одинаковых чисел