Chat:Ru/2021-03-18

From CG community
Revision as of 11:36, 15 June 2021 by Chat Log (talk | contribs) (Created page with "<img src=/a/25714480415254> tutubalin: n! / (n-m)! <img src=/a/29443769474274> MadKnight: > cow indicates a digit in your guess that matches the value of a digit in your oppo...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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