Chat:Ru/2021-03-18
tutubalin: n! / (n-m)!
MadKnight: > cow indicates a digit in your guess that matches the value of a digit in your opponent's secret number, but is in the wrong position. а зачем нужно это во 2й части?
MadKnight: там же все символы по разу
MadKnight: чисто из-за первой части оставили?
Uljahn: это только в 10-м тесте же каждой цифры по разу
MadKnight: а в других чё, цифры повторяются?
Uljahn: нет, но некоторые могут не встречаться вообще
MadKnight: а, так в тестах до 10го всё равно встречаются цифры от 0 до 9 ?
MadKnight: во 2 может быть 29 ?
MadKnight: прост мне кто-то сказал что цифры от 0 до n
Uljahn: тогда первый тест - всегда 0 что ли?
Uljahn: но 0 не может быть первым)
MadKnight: ну так в чём прикол первого теста всё равно?)
MadKnight: там же чисто отгадывть
Uljahn: там от 1 до 9, очевидно
Uljahn: если ты загадал 2, а секрет был 1, то получишь 0 быков и 0 коров
MadKnight: так получается что в первом чисто угадываешь
Uljahn: угу, максимум 9 попыток
Uljahn: во втором уже могут быть коровы без быков
Uljahn: например, секрет 12, угадываем 31, одна корова
MadKnight: ну так это понятно
MadKnight: я про первое
Uljahn: ну, в первом если угадал, то угадал, и коров никогда не будет
Uljahn: в десятом сумма быков и коров = 10
MadKnight: а как ты решаешь 4й тест?
MadKnight: можешь примерно расписать какие числа тестит бот?
Uljahn: пока никак, я сразу за 10-й взялся и не осилил
MadKnight: так а какой у тебя метод был?
CodeDiller: http://chat.codingame.com/pastebin/249cf422-91f9-4ae3-bd23-d14ec5629f78
MadKnight: CodeDiller это чё
Uljahn: for i in range(len(text)): - тут лучше использовать enumerate, мне кажется
Uljahn: l - плохое имя для переменной
Uljahn: с вас 20$ за ревью, Automaton2000
Automaton2000: и вот как раз тот поиск, когда заходишь в малопосещённые ветки
MadKnight: Automaton2000 можно оплатить в кодинкоинах?
Automaton2000: а вот если бы я стоял с другой стороны
magaiti: хмм, как легко попасть в легенду код аля мод
magaiti: не нужны мктсы
MadKnight: ты спрашиваешь или рассказываешь?)
magaiti: рассказываю
MadKnight: так вроде известно
MadKnight: там почти все на ифах выходили
magaiti: а есть еще такие игры?
magaiti: где можно на ифах в легенду :)
MadKnight: гоночки
MadKnight: всякие FB
MadKnight: какие-нить дотки
MadKnight: ну или графы
MadKnight: если не боишься функций фильтра и max_by
magaiti: fb это че
MadKnight: квиддич
MadKnight: гарри поттер мульти
magaiti: аа
magaiti: хз там сратка нужна
magaiti: всратегия
MadKnight: на контесте я в легу вышел на ифах
MadKnight: да спроси вон у ульжана как он на ифах постоянно в легу выходит
Uljahn: да где уж постоянно
magaiti: повелитель ифов
735487: fb я год назад получается или полтора выходил на ифах уже после контеста. а в дотке врядли выйдет
magaiti: в дотке сложно, нужно мансить, под башни не соваться зря
magaiti: а есть еще кооперативные игры интересные?
Uljahn: есть какая-то из новых коммьюнити мульти про фейрверки
Uljahn: https://www.codingame.com/multiplayer/bot-programming/fireworks Fireworks is a cooperative game, i.e. a game where the players do not play against each other but work together towards a common goal.
Uljahn: в ктулху ещё кооперэйшок некоторый есть
Uljahn: *кооперейшон
Uljahn: надо 2D apex legends запилить
magaiti: цс го запили
magaiti: в дерева доступна одна команда RUSH B
magaiti: в ктулху хз, там скорее вовремя прикрыться тушкой врага
magaiti: и тусить рядом чтоб не страшно было
magaiti: в fb я в бронзе тупо кидаю в ворота
magaiti: надо сделать чтоб во врага не кидал
Uljahn: добавь кидать с отскоком от борта
magaiti: о!
Uljahn: изи голд
magaiti: клоббер попробовал, интерено ,но сложно
magaiti: доску делить надо, вычислять потенциал всех кусков
735487: из инетерсных если про подлодку не играл то советую
MadKnight: amurushkin какой у тебя там бот?
YurkovAS: клоббер в топе у всех очень быстрый ванильный мкст, т.е. только рандомные игры
MadKnight: чё за клоббер ?
YurkovAS: клоппер
YurkovAS: для fb можно сделать ГА, у магуса исходники в гитхабе есть, очень похоже не ксб
MadKnight: помню как чел взял полный код симы у рекурса, запилил поверх него свою логику и оценочную, и вышел в том
MadKnight: топ
MadKnight: такой холивар был в чате....
wDisw: парни, есть способ вернуться назад в деревянную лигу ?
MadKnight: а тебе зачем?
MadKnight: только вперёд
magaiti: альтернативный аккаунт
YurkovAS: MadKnight у тебя есть ссылка на гитхаб рекурса?
MadKnight: он его закрыл после той истории
MadKnight: и твёрдо решил больше никогда не открывать
MadKnight: ну или не после той истории
MadKnight: а где-то в +-то время
YurkovAS: эх
MadKnight: а ты что, не видел его стримов где он кодил мульти за 2 часа?
YurkovAS: нет, есть ссылка?
MadKnight: да они так долго не хранятся
MadKnight: там стримы через 14-30 дней удаляются
YurkovAS: а что там, на твиче у него акк? и он иногд стримит и пилит мульти?
MadKnight: ну я видел пару его стримов
MadKnight: как он мульти пилил
MadKnight: типа за 2 часа в серебро
YurkovAS: а есть ссылка на акк?
MadKnight: нее
MadKnight: а что, хочешь посмотреть как рекурс код пишет?)
MadKnight: ну ты можешь у него лично спросить
MadKnight: скажешь что скидывать никому не будешь
735487: MadKnight: amurushkin какой у тебя там бот? Всмысле какой?
735487: YurkovAS: я смотрел его стрим как он карты делал. на стриме он говорил так просто попробует. по серьезке не будет. а потом вышел в топ )))
735487: довольно интересно было смотреть
YurkovAS: ну я бы глянул, вдруг чего нового бы узнал
MadKnight: amurushkin ну всм какой алгоритм?
YurkovAS: они там искользовали бимсерч или монтекарло
YurkovAS: только я вот не понял как
YurkovAS: + детекторы противника и себя
YurkovAS: ого, у меня там перебор только всех своих на глубину 1 ход и работает быстро, по 0мс, получается надо добавить еще один ход с дисконтом
735487: MadKnight: моя реализация бимсерча насколько я его понимал в тот момент. плюс детект противника и куча ифов :)
MadKnight: норм норм
MadKnight: я так-то вообще не особо хорош в стратегиях
MadKnight: вообще не знаю как стратегии строятся
YurkovAS: так то вроде понятно: нанести как можно больше урона и быть как можно больше невидимым но на деле получится как всегда
miklla: с первого взгляда этот клоббер похож на D&B
miklla: особенно на nimstring
YurkovAS: и смитс так же в чате писал
YurkovAS: пока что у всех там мктс. и джакек пилит нейронку безуспешно.
YurkovAS: мне понравилось тем, что узнал новую механику работы с битами
miklla: у меня сразу тянет написать точно такой же алгоритм, как в D&B, то есть эндгейм солвер
YurkovAS: после этого даже ускорил bandas в 3 раза и onitama, но заметно не прибавило но сам процесс ускорить программу очень нравится
YurkovAS: аха, будет забавно, если ты там все уделаешь как в D&B со 100% винрейтом :)
miklla: наждюсь, ты не про AVS
miklla: надеюсь*
YurkovAS: avx?
miklla: я до сих пор AVS не трогал, а другие биты мне нравятся
miklla: да
YurkovAS: конкретно в клоббере про инструкцию _pdep_u64, теперь стало понятно как ее используют в чате часто встречал, но не понимал
miklla: блин, мне стрёмно в такую платформозависимость углубляться
MadKnight: так запили какую-нить обёртку
MadKnight: на с++ с шаблонами можно вообще наворотить
YurkovAS: это поможет только если надо сделать быстрый рандомный роллаут: узнать кол-во ходов и потом выбрать рандомный
miklla: единственное, что изредка использую - это popcount, но даже с ним себя грязнова-то чувствую
miklla: как будто я жулик
YurkovAS: ну можно сделать lookup таблицу взамен, она будет примерно так же работать, может немного медленнее
MadKnight: miklla так обёртку сделай
MadKnight: решит все проблемы
miklla: не люблю обёртки, они попахивают лишними вызовами функций
miklla: и надеяться на инлайн
MadKnight: но это будет твоя обёртка
MadKnight: да с -О3 тебе скорее надо мечтать чтобы хоть где-то не заинлайнилось
MadKnight: он просто всё безусловно инлайнит, что меньше огромной многострочной функции
YurkovAS: да не все же инлайнится
MadKnight: ну корневые ф-ии не инлайнятся, а дальше всё инлайнится
MadKnight: с -О3 тебе даже больше не надо прописывать инлайн
MadKnight: он даже std::generate(arr, [](){return чёто}) инлайнит
YurkovAS: добавь ключик и посмотри что не инлайнится: -fopt-info-inline-missed
MadKnight: до простого arr[0] = formula; arr[1] = formula; arr[2] = formula;
MadKnight: YurkovAS и что у тебя не заинлайнилось?)
YurkovAS: как ты это проверяешь? в асм-е смотришь?
MadKnight: ага
MadKnight: в асме был чистый
MadKnight: последовательный код
YurkovAS: а как ты это делаешь?
MadKnight: godbolt.org
735487: а что вообще такое заинлайнить?
miklla: чтобы в месте вызова функции был не вызов функции, а сразу её код
miklla: (экономия вызова функции)
735487: сильно помогает?
miklla: для маленьких функций - наверное да
miklla: для больших не помогает
miklla: всё-таки вызов функции - это прыжки по коду и копирования переменных в какие-то регистры
YurkovAS: там же в стек сохраняются регистры, потом через стек передаем параметры вызова функции, переход по адресу функции и потом все в обратную сторону
YurkovAS: в общем есть лишняя работа
YurkovAS: с этим ключиком -fopt-info-inline-missed ругается на большинство инлайн функций сообщение типа: growth N exceeds --param early-inlining-insns заменил inline на __attribute__((always_inline)) и перестало ругаться работает локально немного быстрее
MadKnight: amurushkin для маленьких очень помогает
MadKnight: асм код же внедряется в асм код вызывающего, это компилятору даёт целую тонну возможностей
MadKnight: для оптимизации
MadKnight: вшивается в код вызывающего
MadKnight: YurkovAS затестил сервис?
MadKnight: YurkovAS это ты с -О3 тестил?
YurkovAS: туда не постил бота. локально тестировал сборку с прагамами для КГ. надо асм проверять. и скорости оно походу и не добавило совсем. зато рекурсивная функция с таким инлайном вообще не компилится, надо исправлять.
MadKnight: а чё ты за код тестишь?
YurkovAS: ботов для КГ.
MadKnight: скинь мне
MadKnight: я по кускам потесчу
YurkovAS: не надо, сам потом разберусь
magaiti: хм, а в клоббер так мало народу играет?
magaiti: коммьюнити пазлы не слишком популярны?
magaiti: 2 лиги всего, и обе деревянные
magaiti: 15-20к плейаутов намутил, пора мктс делать
YurkovAS: ого, ты без мктс-а прошел и как?
magaiti: тупо плейуты рандомные
YurkovAS: что-то вроде сбора статистики у первых ходов с рандомными доигрываниями из каждого?
magaiti: на все ходы
magaiti: где больше побед, туда и хожу
magaiti: я ф-цию назвал retarded_MCTS
magaiti: босса трудно победить, я наскреб с остальных очки, походу
magaiti: а в вуд1 босс смитс :)
YurkovAS: ахах
YurkovAS: роллаутов у меня больше 20к, а точнее от 100к
magaiti: ну хз, на первом ходу так
YurkovAS: ну посмотрим
tutubalin: YurkovAS я читал, что надо писать static inline
YurkovAS: спс
YurkovAS: always_inline я вообще неправильно заюзал, это аттрибут, само слово inline тоже надо оставлять
miklla: блин, я понял, что у клоббера есть серьёзное отличие от D&B, а именно игрок может двигать только свои фишки
miklla: поэтому с первого взгляда теорию Шпрага-Гранди не применить, но вдруг всё-таки можно
YurkovAS: гранд-шпага :)
tutubalin: тут по идее в одну и ту же комбинацию можно прийти разными способами
tutubalin: порядок ходов имеет значение, но не очень большое
tutubalin: это сокращает перебор
tutubalin: https://en.wikipedia.org/wiki/Monte_Carlo_tree_search#Improvements