Chat:Ru/2020-10-13
wlesavo: magaiti неплохо, это у тебя бимсерч?
magaiti: кривой бимсерч
magaiti: из N лучших потомков беру одного, того у кого потомки лучше
magaiti: а по определению бимсерча надо брать N лучших потомков со всех N предков
magaiti: как я понял
magaiti: так попробую тоже, первый вариант проще запрогать было
magaiti: из N предков беру одного то есть
magaiti: таймит щас, а ночью не было такого
amurushkin: а я не так понимаю бимсерч
amurushkin: мы из всего пула делаем все возможные ходы. а потом из всей этой кучи берем N
magaiti: ну да
magaiti: это второй вариант что я озвучил
amurushkin: у меня тоже таймит постоянно на сабмитах. в иде нет
magaiti: ночью четко было все
magaiti: это загрузка сервера похоже
amurushkin: это ты типа на 2 хода делаешь итерацию и потом выбираешь одного?
magaiti: да
amurushkin: это больше на best first search наверное похоже
magaiti: лень было все ходы запоминать
magaiti: да
amurushkin: капец а я никак не придумаю как хранить ходы чтобы их можно было много вывести. вот думаю сделать наверное массив а у ноды в него ссылку держать
amurushkin: у меня сейчас 2 варианта. либо на лимите в 600 хороший счет и еще очень играбельная позиция но ходов маловато около 20к. или ходов больше но играет в разы хуже
magaiti: так в ноде хранить 7 последних, и ссылку на ноду из предыдущего шага. ноды хранить, их по всего по N на шаг
magaiti: вообще без шансов что-то засабмитить сейчас
amurushkin: а ты цепочку стейтов по 7 ходов выводишь?
amurushkin: это тогда у тебя как у wlesavo наверное
magaiti: пока да, потом думаю потестить разную глубину
amurushkin: а у меня не так
magaiti: даже с отсечкой 40 таймит
amurushkin: с 30 даже таймит
magaiti: но я запускаю то же решение что и ночью, так что это сервер
magaiti: ночью с 45 запускал
amurushkin: у меня в ноде список первых ходов которые я буду ходить. и я их тащу от родителя к детям. и добавляю туда. и потом у лучшего их вывожу
magaiti: у лучшего кого?
amurushkin: ну стейт которых в конце самом лучший
amurushkin: похоже у меня концепция не верная
magaiti: в одном поколении 1 ход ?
amurushkin: нет смотри. в начальных поколенияих будет сначала 1 ход. потом у потомка еще +1 ход и так далее. только я храню не все а N первых ходов которые и вывожу потом
magaiti: а, просто хранить не умеешь
amurushkin: ага
amurushkin: вот думаю может сделать двумерный массив глобальный и в него писать. а у ноды держать индекс
magaiti: да, вариант
magaiti: вектор массивов
amurushkin: ну если память не экономить можно и двумерный. просто будет лимит на глубину
amurushkin: а чтобы разную длину иметь надо наоборот массив векторов тогда
magaiti: нужно достаточно чтоб секунду продержаться
amurushkin: а у меня секунда не так делается ))
amurushkin: я 20 раз серч запускаю
magaiti: ye nj;t yjhv
magaiti: норм
wlesavo: amurushkin не я же не так делаю, цепочку не вывожу, по одному ходу нахожу и добавляю в пул
amurushkin: wlesavo: ну так он тоже просто по 7 штук
amurushkin: если я правильно понял то он нашел лучшую цепочку из 7. породил новый стейт. из него тоже цепочку из 7. и потом собирает в одну
wlesavo: у меня следующая идея что-то похожее делать
wlesavo: я быстро проигрываю достаточно когда набираю 65к, даже с брутфорсом на глубину 10 проверял локально, принципиально не отличается от глубины 6-7
wlesavo: там уже видимо нужна заметно больше глубина
magaiti: я брутфорсю на 7, беру 32 лучших , из каждого брутфорсю на 7, беру пачку с лучшим фитнесом, у нее соотв. один предок
magaiti: и 7 мумов уже можно выводить
magaiti: пробую нормальный бим серч, чет в районе 30, не лучше
magaiti: счет 30 лямо в смысле
magaiti: похоже, чем меньше глубина брутфорса, тем больше шанс проиграть
amurushkin: а в плюсах не придумали как подобную запись сделать короче? cerr << "next_storage_index=" << next_storage_index << endl;
magaiti: ytn? pfxtv&
magaiti: нет, зачем
magaiti: это плюсы, а не руби
magaiti: можешь макрос сделать, но это такое
amurushkin: чтобы быстрее код для дебага писать
magaiti: нормальные люди пользуются отладчиком
magaiti: это мы в цг извращаемся
amurushkin: я после php почти забыл что это такое )))
wlesavo: ну я локально отладчиком пользуюсь все равно, слишком уж тяжко когда тебе просто говорят таймаут и иди ищи что не так
wlesavo: даже асерты не особо помогают
wlesavo: в питоне еще как то терпимо в местной иде отлаживать
amurushkin: а примерно 70 на 30 наверное. все чаще прямо в браузере пишу
amurushkin: я придумал как у себя удлинить решение
amurushkin: запускать на 1 раз на 45 мс а 3 раза по 15 ))
amurushkin: в иде на тесте сразу за миллион перевалило
amurushkin: только таймаутов мама дорогая ))
amurushkin: набираю 30 лямов теперь но таймауты все портят
Uljahn: олигархи :(
magaiti: че, как на питоне играется?
Uljahn: симу пишу
Uljahn: нумпай вспоминаю
Uljahn: может, чё подскажете по симе? битборды какие-нибудь?
magaiti: мы на плюсах
input.txt: Это вы про какую игру?
Uljahn: 2048
Uljahn: оптимизация
wlesavo: Uljahn на самом деле возможно на питоне не так уж и плохо будет, думаю лямов на 10-15 можно выйти
wlesavo: учитывая что я набирал 4 ляма оценивая борд по одному тайлу
Uljahn: сколько там примерно офлайновый топчик был?
wlesavo: 17
wlesavo: хотя я так и не понял в чем у него проблема была
Uljahn: понял, что лыжи не едут, и переобулся вовремя
amurushkin: Uljahn: я про битборды вчера встречал. один чел предлагал в 4 бита закодить ячейку тогда вся доска в 64 бита влезает. но у него бот не мог собирать больше чем 32к в ячейке
magaiti: смысл
Uljahn: стейт хранить удобно
magaiti: тебе битов не хватает?
amurushkin: у меня вообще из рефери скопировано
magaiti: у тебя же бимсерч, нужно хранить всего (штрина *глубина) стейтов
magaiti: это немного
magaiti: смысла не вижу в битах и даже в байтах
magaiti: у меня инты
magaiti: если в байт кодить степерь двойки, то влезет все
magaiti: но я пробовал, не заметил пользы
magaiti: можете проверить
magaiti: фитнес чуть медленнее считать из-за сдвигов, хотя они быстрые должны быть
magaiti: у меня проблема до 600 дожить
amurushkin: очень нехватает в сабмитах чтобы показывало какой тест сколько набрал
amurushkin: до 600 не проблема если уменьшить глубину выводимых ходов ))
magaiti: ну ты можешь ронять на 599-м ходу
magaiti: и увидишь кто доходит
amurushkin: ну а смысл ронять? как потом посмотреть?
amurushkin: я же счет хочу узнать
magaiti: если упал значит дошел до 599
magaiti: а
amurushkin: а мне не это надо
amurushkin: я хочу видеть счет после сабмита раздельно по тестам
wlesavo: ну это потенциально приводило бы к утечке валидаторов, но учитывая что они и так утекают с гораздо меньшими усилиями то да
wlesavo: здесь не понятно как можно проверки векторизовать, в питоне все таки двойной цикл по нумпайному массиву слишком медленно, хотя и массив небольшой, но все равно больно
amurushkin: у того чела который в биты переводил было еще предрасчитаны все стейты что во что превращается
magaiti: все столбцы?
magaiti: хах
magaiti: не думаю что это даст ощутимую прибавку
wlesavo: а ну если так только, да
wlesavo: для питона может, для плюсов тоже не думаю
wlesavo: кстати, была еще в общаке идея считать две оценки, горизонтальную и вертикальную змейку
magaiti: вертикальную имеет смысл если 4 хода
wlesavo: но если честно не думаю что это даст что-то, глубины не хватит увидеть кризис ходов вначале, а потом змейка уже жестко к оси привязана
amurushkin: у меня 1 тест 1.7 ляма набирает. потенциал на 50лямов есть. осталось засабмитить без таймаутов
magaiti: все то не наберут
amurushkin: wlesavo: тсс не пали контору ))
amurushkin: я так делаю
amurushkin: хотя надо попробовать одну убрать
amurushkin: magaiti: можешь подсказать
amurushkin: for (int i = 0; i < first_moves_stored; ++i) { MOVES[first_moves_storage_index][i] = MOVES[oldindex][i]; }
amurushkin: вот такой цикл на copy можно переписать? а то чет у меня не получилось
amurushkin: быстро скопировать строку массива в другую строку
magaiti: memcpy(MOVES[fmsi], MOVES[old], sizeof(MOVES[0]))
magaiti: если first_movesStored одинаковый
magaiti: иначе sizeof(MOVES[0][0]) * first_moves_stored
gsomix: Ну вот, говорили, что на плюсах пишете, а у самих memcpy. :)
magaiti: std::memcpy
magaiti: не надо тут
amurushkin: я пробовал через std::copy записать подобное у меня оно падало почему то
magaiti: неправильно параметры наверное задавал
magaiti: copy (InputIterator first, InputIterator last, OutputIterator result);
magaiti: смысл только, быстрее цикла не будет
amurushkin: а memcpy гарантированно быстрее будет?
amurushkin: есть смысл размер выравнивать в кеш линию чтобы он копировал быстрее?
magaiti: что значит выравнивать в кеш
MadKnight: да, я тоже не понял
MadKnight: и кстати оптимизатор же сам вызывает memcpy
magaiti: думаешь
MadKnight: у меня вызывал
magaiti: где?
amurushkin: ну будет наверное разница если ему надо копировать 1000 или 1024 элемента
MadKnight: нее
MadKnight: https://godbolt.org/z/eM1esn
MadKnight: magaiti amurushkin
MadKnight: зацените чё он делает
rep movsq
magaiti: ye lf
magaiti: ну да , цепочечный примитив
magaiti: кувордами копирует, если длина на 8 делится
magaiti: а хотя нет
magaiti: байтами похоже,
magaiti: не, там прикол. он запхивает длину в байтах а потом ее сдвигает на 3, то есть пачками по 8 байт копирует. но нсли дляна некратна 8 то там остаток где-то надо отдельно докопировать
magaiti: mov rax, QWORD PTR [rsi+1016]
mov QWORD PTR [rcx+1016], rax
YurkovAS: помню, похожее, разраб из clickhouse-а рассказывал, как они ускорили memcpy у себя. стали массивы делать немного больше, кратные 8 байтам (вроде)
magaiti: тут код не отличается, кратно или нет
magaiti: тупо копирует последний куворд отдельно
magaiti: надо самому memcpy писать тогда
amurushkin: я тоже смотрел они там кратно 64 стали циклы делать
MadKnight: так 1000 кратно 8
MadKnight: кто стали кратно 64 делать ?
MadKnight: он грузит 64 байта в кэш
amurushkin: ну из яндекса чел показывал как они копировали несколько гиг. когда переписали циклы под размер кешлинии проца то ускорилось кажется в 8 раз
magaiti: но у тебя то не 4 гиг
amurushkin: а они матрицы кажется огромные умножали или что то такое
MadKnight: да, но в чём причина ускорения?
magaiti: магия
amurushkin: в том что данные в кеш проца попадают и меньше миссов
MadKnight: так а что именно они копировали для умножения?
amurushkin: матрицы какие то на кучу гигов
MadKnight: теперь мне кажется что ты чё-то не так понял
MadKnight: дай мне ссыль
amurushkin: если надо я видео найду
MadKnight: го
amurushkin: https://www.youtube.com/watch?v=QY6aLjvKRNM
Uljahn: https://en.wikipedia.org/wiki/Data_structure_alignment
MadKnight: да ты лол
MadKnight: там говорится о переменном использовании больших пачек данных
MadKnight: т.е. когда 64 байта используются разными вещами
amurushkin: ну молодец что ты не лол
MadKnight: когда у тебя код использует сразу 2 массива
MadKnight: например a[i] += b[i]
MadKnight: и он копирует поочерёдно сначала 64 байта из a, потом - из b
MadKnight: на каждой итерации
MadKnight: а они оптимизируют в блоки из 64, чтобы всё что нужно было в одном блоке
MadKnight: берут часть a и часть b
MadKnight: этот чел не очень public speaker кнш
MadKnight: не прикольно его слушать
MadKnight: amurushkin короче к обычному memcpy это всё не относится
MadKnight: там речь о случаях, когда хоть где-то есть рандомное обращение к памяти
MadKnight: как в матрицах
MadKnight: там суть в том, что пока он дойдёт до 2го значения в кэше из 64 байт, эти 64 байта уже вытеснятся из кэша остальными данными матрицы
MadKnight: потому что он умножает 10 000 строк на 10 000 столбцов
MadKnight: а это - дофига пачек по 64 байта
MadKnight: amurushkin ты понял?
MadKnight: YurkovAS а ты прочитал?)
YurkovAS: что прочитал?
MadKnight: ну я посмотрел видос откуда amurushkin подумал что memcpy в блоках по 64 будет быстрее
MadKnight: а оказалось - к memcpy это не относится, и я тут пишу почему вот ты прочитал, почему? YurkovAS
magaiti: Мэд, ты че такой дерзкий
YurkovAS: да, там не про memcpy, а про кеш больше про memcpy слушал у Миловидова из clickhouse-а, давненько, всех деталей не помню, это надо гуглить и переслушивать
MadKnight: YurkovAS нененен
MadKnight: не то чтобы там не про memcpy
MadKnight: а то, что memcpy вообще не подходит под тему
MadKnight: его так не оптимизировать
MadKnight: magaiti подвыпил
MadKnight: amurushkin и к тому же там используют кэш из min(dataLeft, 64)
MadKnight: всм блоки из
magaiti: там перемножение матриц, для каждого элемента надо строку на столбец перемножить, выгоднее делать пачками по 64 строки, а числа в столбце наверное все равно в памяти разнесены
magaiti: .8по 64 эл-та в строке
magaiti: *
MadKnight: ну так о том и речь
MadKnight: и вот как amurushkin из этого сделал вывод, что memcpy оптизируется с помощью блоков по 64 ?
magaiti: магическое мышление
MadKnight: ну короче amurushkin просто недопонял
MadKnight: ну бывает
MadKnight: magaiti а ты чё делаешь?
magaiti: ем
magaiti: а вообще работаю
MadKnight: а чё за работа у тебя?
magaiti: автомейшен кьюэй
MadKnight: хмммм это чё
magaiti: пишу тесты
magaiti: запускаю, нахожу дефекты, дальше все как у обычных QA
magaiti: самое веселое что у нас тесты на с++ пишут
MadKnight: а почему это самое весёлое?)
Uljahn: потому что обычно на питоне пишут?
magaiti: да, и потому что я люблю с++
amurushkin: magaiti: а почему ты в QA пошел? я в свое время пошел в QA потому что умел только в Delphi. потом фирма решила что надо меня обучить Java и сделать разработчиком
magaiti: пошел в QA когда слабо умел программировать
magaiti: а потом оказалось что автотестировщик с опытом компаниям нужен больше, чем программист без
magaiti: говорят хороших автотестров не найти, тошо все хотят в кодеры уходить
magaiti: а на моей работе как раз совпало, что нужен автотестер неа с++
magaiti: исторически сложилось что фреймворк на с++ написан был когд-то
amurushkin: меня тоже автотестирование привлекало. но в компании эта ниша не была еще разработана. и туда пыталс втиснуться другой чел который кореш директора. короче я даже не пытался ))
magaiti: я вот насчет 2048 думаю
magaiti: есть алгоритмы бим-поиска с возвратом
magaiti: можно как-то это использовать
magaiti: на первом ходу нагенерить запас по глубине
magaiti: а выводит ьне все
magaiti: и там в глубине отползать назад, если луз схватил
magaiti: но я пока не пытался реализовывать
amurushkin: у меня если луз хватает то не добавляется просто в пул
magaiti: луз это когда пул пустой
amurushkin: у меня в этом случае прекращает поиск и берет с прошлой итерации лучший. но у меня всегда выводит часть первых ходов а не все
magaiti: а если прошлая итерация уже в аутпуте
amurushkin: прошлая итерация у меня это по сути шаг назад
magaiti: а если на прошлой итерации какая же фигня? насколько глубоко ты можешь откатиться
amurushkin: нет на прошлой у меня не может быть такой же фигни иначе бы она не случилась
amurushkin: у меня как только пул пустой то поиск прекращается
amurushkin: выводит результат и идет следующий тик
amurushkin: вот как раз идея возникла. надо наверное то что собрался выводить засимить и от этого места дальше еще считать
amurushkin: хотя в моем случае смысла нет все равно я выводить буду только начало последовательности
magaiti: ты можешь выводить не все, хранить в буфере
amurushkin: еще бы сабмитнуться на 100%
amurushkin: я итак не все вывожу. я просто храню начало последовательности и а не на всю глубину куда он дойдет
magaiti: ну у меня как-то насчитал больше 10к символов за первый ход, уронил рефери
amurushkin: я глубину не замерял куда он может.
amurushkin: у меня если зашел дальше чем то количество что я храню то просто в список не добавляет
magaiti: я храню все, на 10 ходов отступаю перед выводом
magaiti: но от лузв не спасает особо
amurushkin: блин а реально. не от 10к ли падают у мен
wlesavo: ну я проверял опытным путем что при 10к падают, на выводе теперь ограничение чтобы слуайно 10 к не вывести
amurushkin: хотя не вроде теоретический максимум сколько я вывожу в 1 ход это 2500
magaiti: вот блин, не дают без фейлов засабмитить, а с фейлами 38 набрал уже, должен свой рекорд побить по идее
magaiti: 3 раза дали и опять жди
MadKnight: почему не дают
MadKnight: amurushkin ты что, оскорбился и не хочешь отвечать?
magaiti: нельзя часто сабмитить, харя треснет
MadKnight: возможно, я забыл что тут некоторым больше 20 лет
MadKnight: magaiti а чё ты так часто сабмитишь?
MadKnight: ааа, 2048
magaiti: так падают тесты по таймауту рандомно, а надо чтоб все прошли
MadKnight: не пробовал с конца искать?)
magaiti: не пробовал в гоночках в другую сторону ездить?
amurushkin: magaiti: у меня с фейлами 39 и я никак не сабмитну на 100
MadKnight: > на первом ходу нагенерить запас по глубине / а выводит ьне все / и там в глубине отползать назад, если луз схватил
не пробовал заставить бота играть так же, как человек?
amurushkin: человек явно проигрывает боту как мне кажется
MadKnight: и всё же человек доходит до офигенных результатов
MadKnight: строя змейкой
MadKnight: а бот может, как предложил magaiti, откатываться назад
MadKnight: это как раз то чего не хватает человеку - он не может предугадать будущее и иногда ему не везёт, что он не может сохранять структуру змейки
MadKnight: amurushkin ну хоть скажи, понял ли ты почему для malloc размерность в 64 бесполезна
magaiti: еще не факт что на 100% будет 39
MadKnight: а каковы условия фейла?
magaiti: я вот на 41 с фейлами намухлевал щас
magaiti: твой код не понравился верховному шаману
MadKnight: Automaton2000, почему не принимаешь коды людей?
YurkovAS: amurushkin попробуй выводимые ходы сначала в string записать, а потом ее уже в cout
Automaton2000: ну у меня и у кубера
Uljahn: в общаке как альтернативу бимсёрчу как-то обсуждали chokudai search (бимсёрч с переменной шириной луча) - самопальный алгоритм одного японца по типу смитсимакса, никто не пробовал осилить?
magaiti: че куда серч? :)
Uljahn: это имя создателя :)
Uljahn: или ник
magaiti: дан
magaiti: ну переменная ширина это известная тема
magaiti: вопрос как ее менять
MadKnight: magaiti да как там вообще можно не взять 100% ? в каком случае будет Fail ?
magaiti: придется откатываться
magaiti: фейл если таймат
magaiti: таймаут
magaiti: или невалидный аутпут
MadKnight: а зачем ты таймаутишься
magaiti: это не я
magaiti: это сервер цасы переводит
MadKnight: всмысле
magaiti: хз, потоки у него заплетаются
MadKnight: Allotted response time to output is ≤ 50 ms for the later turns.
MadKnight: а ты сколько юзаешь?
magaiti: ну да, у меня отсечка на 45 мс
MadKnight: так попробуй 42
Uljahn: сервера сегодня тупят, даже в пазлах чё-то долго тесты выполняются
magaiti: тогда решение хуже будет
magaiti: просто день сегодня
MadKnight: а, сегодня так
Uljahn: 13-е
magaiti: простое число
MadKnight: magaiti а типа вчера не таймаутился?
magaiti: ночью не таймаутило
magaiti: а сейчас день
magaiti: ну да, надо что-то с возможностью глубокого бэктрекинга делать
gsomix: MadKnight, а ты сам-то не дед разве?
magaiti: уговорил, 44 попробую
MadKnight: Uljahn magaiti вы можете объяснить конкретно в чём лаги?
MadKnight: я передам адмену
MadKnight: gsomix ты контекст не знаешь
magaiti: да пофиг, это годами не могут пофиксить
amurushkin: YurkovAS: идея впринципе. типа coutы медленные.
magaiti: cinы быстрее?
MadKnight: magaiti так ты объясни конкретно
amurushkin: MadKnight: так попробуй 42, 30 даже не спасает
YurkovAS: amurushkin мне вроде бы это помогло с таймаутами, заметно уменьшились и потом даже время увеличил. стринг можно сразу большим сделать и потом реюзать всю игру
amurushkin: хз что там конкретно. факт в том что в иде тесты не таймят а при сабмитах рандомно хоть 1 тест да упадет
MadKnight: amurushkin c++ ?
MadKnight: magaiti c++ тоже ?
magaiti: думаешь только у сишников такое
MadKnight: нене
MadKnight: наоборот
amurushkin: да с++
MadKnight: так это не только в 2048?
amurushkin: да не только. в серч рейс такая же фигня. но там не так часто. быстрее 100% ловится. там помогает 35мс поставить. хотя при лимите 50мс это тоже странно
amurushkin: я думаю тут дело в кастомных мульти. там что то не то с рефери что он время меряет неправильно
amurushkin: YurkovAS: а там строку как обычно делать s+=move? или есть нюансы?
YurkovAS: += char
magaiti: s.push_back(char)
magaiti: s.append(char* moves, size);
YurkovAS: нюансы, хз, наверное как с vector-ом - будет ресайзиться, лучше сразу нужное кол-во памяти выделить
amurushkin: прикол со строкой набирает меньше ))))))
magaiti: а с += не будетресайзиться?
YurkovAS: мне кажется все 3 метода одинаковые
magaiti: аппенд быстрее если сразу много мувов запихивать
YurkovAS: и будет ресайзиться, если памяти недостаточно для новых символов
MadKnight: cout не то чтобы медленный
MadKnight: он просто делает flush() сразу же и ждёт когда в консоль попадёт
amurushkin: впринципе можно сразу и пачкой закидывать просто хранить ходы сразу в чарах
amurushkin: а массив чаров тоже можно через append? падает что то
MadKnight: Use std::cout << '\n' instead of std::endl. This avoids the flush after every line. std::endl will always flush, since that is its purpose. There's no option to disable that behavior. However, there's no requirement to use std::endl at all.
MadKnight: This works to an extent, but cout is buffered and will still flush on its own eventually when the buffer fills.
MadKnight: good news everyone
MadKnight: у cout есть встроенный строковый буфер
MadKnight: s+=move там встроено
MadKnight: так вы закиньте подробное описание в #bug-report, если завтра всё ещё будет
magaiti: о, забацал чтоб куча была не из элементов, а из указателей на них
amurushkin: быстрее стало?
magaiti: хз
magaiti: надо найти тест где 600 ходов и посмотрет ьсчет
magaiti: мож и не стало
magaiti: но копировать теперь надо меньше по идее
magaiti: у меня везде полтора ляма за 400 ходов и конец
magaiti: может отрезать побольше ходов, о 15 например
magaiti: 40 засабмитил
MadKnight: 40% ?
magaiti: 41.8м
magaiti: счет
amurushkin: сколько мс?
magaiti: 45 отсечка, 980 первый ход
magaiti: мне кажется просто код быстрее стал
magaiti: чаще время чекает
magaiti: но хз врать не буду
amurushkin: сабмитнул 25мс тупо на пробу. набирает мало но посмотреть таймауты будут или нет
magaiti: сделай почаще проверку времени
amurushkin: хм 25мс взяло
magaiti: а может просто сервера разгрузились уних
magaiti: конец рабочего дня
magaiti: пробуй больше
magaiti: потести, сколько у тебя задержка между проверкамитаймера
amurushkin: запустил все тесткейсы проходить
amurushkin: потенциально у меня должно быть больше чем у тебя вроде бы
magaiti: опять таймит
magaiti: немного поменял змейку
magaiti: неужели из-за нее
amurushkin: а что там может таймить?
magaiti: просто фитнесс дольше вычисляется
magaiti: да ерунда, сервер это
amurushkin: о я оптимизацию придумал только что :)
amurushkin: выяснил что у меня часть тестов берет 800 а часть 1.3-1.7
magaiti: и как оптимизировать будешь?
magaiti: я 42.2 с фейлами намутил
amurushkin: а я фитнесс считал всегда. даже когда не сдвинулось ничего
amurushkin: теперь не буду
magaiti: а
magaiti: обнуляй его когда что-то меняешь
magaiti: а когда чекаешь, пересчитывае если ноль
amurushkin: не это хуже вроде чем у меня сейчас
magaiti: в моем варианте зато все автоматически
magaiti: вызвал fitness() она все прверила сама
magaiti: думать не надо
magaiti: mutable float fitness_;
magaiti: http://chat.codingame.com/pastebin/557a94bd-c6ae-4cce-974a-e90f56aae9ea
magaiti: вот жеж
magaiti: странно, у меня косяк с типами fitness - где-то float , где-то целое
magaiti: целое работает лучше
magaiti: тесты в иде набирают больше
magaiti: но валидаторы меньше
magaiti: как так
YurkovAS: там 3 разных проца
magaiti: надо еще на быстрый проц попасть?
magaiti: ну ваще
YurkovAS: да, что не часто бывает
magaiti: кстати, может на быстром то и таймит
magaiti: из-за того что слишком длинный аутпут, или массив переполняется какой-нить
magaiti: который на глазок выделял
magaiti: 2.6м на одном тесте намутил
magaiti: на всех бы так
amurushkin: я случайно один увидел сейчас что там 2 и лимит
amurushkin: тоже вот нельзя запустить все тесткейсы и пойти погулять и потом результаты увидеть
magaiti: почему нельзя
magaiti: кнопка есть
magaiti: play all testcaes
amurushkin: а результат потом как узнать?
amurushkin: остается только последний
magaiti: смотреть на каждый
amurushkin: я же хочу пойти погулять а не сидеть и смотреть
magaiti: так вернешься и посмотришь
magaiti: наведи курсор на тест и увидишь\
magaiti: последний результат
amurushkin: не знаю я как это сделать. он перезапускает тест у меня если я нажму на строку с тестом
magaiti: не нажимай, мышку наведи
magaiti: ты с пк ?
magaiti: там подсказка всплывает
magaiti: я хз мож у тебя браузер какой-нить неправильный
amurushkin: хром. вот серьезно вообще не вдупляю как. можешь скрин сделать
amurushkin: о все увидел. пипец интутивно
magaiti: гыг
amurushkin: на сабмите бы еще так
magaiti: на сабмите облом
amurushkin: он как то сильно долго у меня встплывает и чаще всего толкьо если на номер теста навести
magaiti: единственная инфа из сабмита - пасс или фейл
magaiti: секунду где-то всплывает
magaiti: может у тебя страница тормозит
magaiti: анимацию не отключаешь
magaiti: If you add a - to the output, you will disable the viewer (as it can get laggy for longer games).
amurushkin: отключаю
magaiti: ну тогда хз
magaiti: может ты нетерпеливый такой, что секунду не можешь потерпеть
amurushkin: запущу все тесты и вручную сложу ))
magaiti: да, не хватает кнопки сложить
YurkovAS: проще уже локально запускать бота в рефери со всеми валидаторами
amurushkin: можно скриптом попробовать выдрать и сложить
magaiti: индуса нанять
magaiti: да елки. 44м и 1 фейл
magaiti: отдыхаем
YurkovAS: там и jquery доступен - легко написать
amurushkin: пишу в консоли просто не удобно
amurushkin: var sum=0;$('.testcase').each(function() {
sum += Number($(this).attr('title').split(':')[1].slice(0, -1)); }); console.log(sum);
amurushkin: держите кому надо
amurushkin: 42 насчитало
magaiti: ах ты негодяй
magaiti: в затылок дашишь
YurkovAS: http://chat.codingame.com/pastebin/d955bc24-3e5b-43fd-9e47-73a714afa3a6
YurkovAS: упс, обрезало
amurushkin: YurkovAS: давай в одну строку ))
YurkovAS: нашел пример, только еще каждый тест воводит + всего. юзал для оптимизации без рефери публичного. проще всетаки локально запускать из рефери
amurushkin: ты будешь ржать. я тебя на децл обогнал ))
amurushkin: приняло наконец то
amurushkin: а не. блин там нолик у меня еще )))
amurushkin: думал совсем почти одинаково
amurushkin: показалось что у тебя 830 а у меня 831
amurushkin: Mad вот видишь код целый день не принимало без изменений приняло
magaiti: нолика в конце не хватило? :D
magaiti: не дают без фейлов. 46 было один раз
magaiti: ну так тоже сойдет
magaiti: догоняй
magaiti: завтра проснусь, а у тебя 700
magaiti: таймаутит рефери в иде
magaiti: либо я все-таки где-то вылетаю
Mosha: Товарищи, всем привет! Поделитесь идеей, пожалусйта, как вы боретесь с тем, что дрон вокруг чекпоинта кружит
Mosha: Я думал выкрутить ускорение на максимум, но этого не хватает, он просто спирально достигает чп, и всё равно достаточно долго(\
magaiti: ускорение выруби
magaiti: пока не развернешься в сторону чекпоинта
Mosha: Просто, по идее, он тогда очень далеко отлетит... Но надо попробовать, спасибо! Слушайте, а тут чаты связаны с соревнованиями? Каждому соревнованию - свой?
magaiti: нет
Mosha: А, окей, значит, меня затроило... Спасибо
amurushkin: у клешей есть свои чаты
wlesavo: бим серч чето не работает у меня совсем
wlesavo: ну не совсем но очень плохо
amurushkin: он сильно беспощаден к параметрам
wlesavo: просто не пойму баги искать или пытаться в параметры, у меня до 2к доигрывает максимум. вроде работает правильно, хз
amurushkin: 2к это маловато
YurkovAS: 2к это кол-во ходов найденных всего?
Uljahn: Automaton2000: вроде правильно, но плохо
Automaton2000: у меня в общаке смайлы не показывает
Uljahn: в бимсёрче на каждой следующей глубине берём топ-N (ширина луча) лучших потомков из всех возможных?
amurushkin: да
magaiti: N лучших
magaiti: лузших
gsomix: MadKnight, а какой контекст?
magaiti: LURULRRULULLULR
magaiti: какой-то морлокский язык
MadKnight: gsomix я не называл всех стариками, я назвал свою фразу слишком подростковой
Uljahn: у меня рандомом из "LULD" сэмплируется, подогнал сиды под тесты как Т1000 в TAC ))
Uljahn: Automaton2000: i luld
Automaton2000: ну я про это тебе и говорю, что ГА меньше думать заставляет
wlesavo: YurkovAS 2к это число максимальное до которого доходит
magaiti: что за число? счет, ширина луча, глубина луча?
gsomix: MadKnight, проехали. Я просто неудачно пошутил. :)
magaiti: фишка на доске максимум 2048,
magaiti: Automaton2048
magaiti: Automaton2000, почему ты не Automaton2048?
Automaton2000: вот и я о том же
MadKnight: Automaton2048 был бы противником или боссом в мультиплеере
amurushkin: 47 лямов с фейлом )) почти обогнал
amurushkin: 53120916 столько набрал в иде
magaiti: я тоже
magaiti: 53.8
magaiti: скоро за 2-е место будем драться
amurushkin: я только засабмитить не смог )))
magaiti: 57.2
magaiti: думаю народ поднапряжется, и через месяц тут сотни лямов будут
amurushkin: я туда нет. больше 70 не вытянут
MadKnight: вы пробовали искать через эвристику + откат если змейка сломана?
MadKnight: amurushkin magaiti
magaiti: откат не пробовал
magaiti: эвристика ну это змейка и есть
MadKnight: так а откат чего не попробовал?
magaiti: кодить надо
MadKnight: ты щас как эвристику юзаешь?
magaiti: набираю N решений с максимальной оценочной
magaiti: вот
MadKnight: заче
MadKnight: м
MadKnight: и какая глубина
MadKnight: реплей
MadKnight: дай
magaiti: бим серч так работает
magaiti: поиск в ширину, с ограниченной нириной
magaiti: ща реплейсделаю
magaiti: но как он тебе поможет
magaiti: https://www.codingame.com/replay/492880241
magaiti: 43к ходов, ты так сможешь?
YurkovAS: magaiti invalid action
magaiti: ходы кончились, давлю в пол
YurkovAS: интересно у тебя змейка реализована, сначала макс был справа, потом стал слева
magaiti: :)
magaiti: один раз 3.3 ляма за тест получил, но не могу поймат ьснова
magaiti: повезло с таймингом где-то