Chat:Ru/2020-06-14

From CG community
Jump to navigation Jump to search

tutubalin: а где-то официально написано про эти 2.5 секунды? и насколько они гарантированны?

ilt: нигде, это такая фича

ilt: словил странную ситуацию в локале, если я ставлю 3м нод

ilt: то на первом ходы в 6 раз падает число роллаутов

ilt: точнее нет у меня такой фичи

ilt: вылетает по таймауту

ilt: не у меня нет такой фичи

ilt: 1с +несколько мс иногда на первый ход

ilt: не больше

vrabosh: что за Automaton2000 вы часто пишете?

Automaton2000: вместо ucb можно epsilon-greedy использовать или thompson sampling

Uljahn: чат-бот

vrabosh: а вот чел отвечает Automaton2000 и вроде как чел) это чат-бот?)

Automaton2000: Прикол в том, что я не понимаю

vrabosh: Automaton2000, привет

Automaton2000: я не могу со сраного клиента зайти, требуется пароль, а у меня нет

Uljahn: http://chat.codingame.com/pastebin/d0273d84-f188-4fb5-aa06-c13455ed92a1

Uljahn: как тебе такое, Automaton2000?

Automaton2000: вот у меня не получилось

Uljahn: вот сам же говорил, что np.zeros - хитрый зверь

Uljahn: и где эта сволочь память выделяет? она в основном процессе не учитывается

Uljahn: при этом np.ones учитывается

tutubalin: может она лениво выделяет?

Uljahn: я пишу в первую и последнюю ячейку для теста, всё там сохраняется

Uljahn: похоже на баг

Uljahn: почитал релиз ноуты - в numpy как раз в районе этой версии чинили утечки памяти, надо локально на более новой версии пробовать

Uljahn: такая же хрень на винде с нумпи 1.18.1, память резервируется и учитывается при последующих выделениях, но не отображается в статистике, видимо это нормальное поведение для zeros :confused:

Uljahn: а начинаешь заполнять - появляется в статистике, вот оно что. действительно - ленивое выделение

YurkovAS: и это вроде на уровне ОС сделано, чтобы всю память программы не сожрали.

ilt: а может быть что в середине игры в дереве для какой-то ноды второй уровень не раксрывается или это нонсенс?

ilt: написано 25к роллаутов

ilt: нод всего 6

Uljahn: видимо, есть какой-то механизм безопасного выделения памяти с нулями, потому что ещё есть np.empty, он чуть быстрее, чем np.zeros, но не гарантирует отсутствия мусора. при этому np.ones на порядок медленнее, потому что нет быстрого механизма установки памяти в единицу

735487: ilt: теоретически должны все по разу быть раскрыты. на 2 уровне так точно

Uljahn: ilt: бага, очевидно

Uljahn: если только коэффициент эксплорейшна не ноль

ilt: первый уровень раскрыт целиком

ilt: для одной из нод не раскрыт второй уровень

YurkovAS: и визитов там 0?

Uljahn: выводи Q и U для нод первого уровня

Uljahn: т.е. левое и правое слагаемое в формуле UCT

YurkovAS: может в формуле ошибка. как минимум у этой ноды долже быть 1 визит.

ilt: проблема в том что при сдвигании дерева два раза нового рута нет

ilt: выводить и просматривать тяжело

ilt: да и редкая это ситуация

YurkovAS: посмотри на визиты на этой ноде. если есть 1 визит, тогда у тебя константа слишком маленькая может быть.

ilt: нода первого уровня точно есть

Uljahn: так надо определить, почему формула её не выбирает, хотя роллаутов достаточно, для этого надо слагаемые формулы выводить в дебаг

ilt: и визит на ней есть

Uljahn: значит, экспанд глючный

Uljahn: или ты один визит при создании присваиваешь?

ilt: нет

YurkovAS: http://chat.codingame.com/pastebin/8841d5fe-3880-4d9f-a19d-95ed6643f244

ilt: визит присваиваю только если был хоть один проход

ilt: вообще там глубина дерева большая 14-16

Uljahn: хм, а когда может скорости не хватить? когда несколько фримувов подряд?

YurkovAS: у тебя же так? 0 визитов - не раскрываем и играем рандомно есть визиты, но не раскрыта - тогда раскрываем, берем рандомного ребенка и играем рандом игру.

ilt: 0 визитов - раскрываем и играем рандомно на одной из нод

ilt: а смысл играть не раскрывая?

YurkovAS: лучше, сначала сыграть 1 рандомную игру. и только уже потом раскрывать и грать с ребенком нормально прибавляет.

Uljahn: но у этой ноды тоже будет 0 визитов, её тоже раскрывать будешь?

ilt: YurkovAS то ли реализовать твою идею сразу, то ли в список записать

YurkovAS: точно даст прирост

Uljahn: "есть визиты, но не раскрыта" - это ведь только для одного визита ситуация возможна?

YurkovAS: да

YurkovAS: не получается ни чего улучшить. наверное проще уже сделать книгу дебютов.

YurkovAS: по разному пытался заставить работать это метод "full expand" - быстрый, но играет хуже. и в другой игре так же, но там клон мктс-а.

ilt: https://www.codingame.com/replay/472754783

ilt: тут не совсем пример такой какой хотел

ilt: 32 ход

ilt: ответ противника вообще не раскрывается

ilt: на нем 0 визитов

YurkovAS: значит баг в раскрытии

Uljahn: может быть как-то с фримувом связано?

Rush_iam: Ребята, привет! Я здесь третий день, подскажите можно ли как-то посмотреть сколько времени занял мой код на выполнение?

735487: замерять самому

Uljahn: from timeit import default_timer as tmr start_tmr = tmr() my_function_to_profile() print(tmr() - start_tmr)

Uljahn: Rush_iam: ты же питон изучаешь?

Uljahn: кстати, в Horse-racing Duals в последнем тесте оптимизации не помогут

Uljahn: надо перерабатывать сам алгоритм

Uljahn: вроде слева должна быть кнопка Hints

Rush_iam: Спасибо большое, Uljahn!

Rush_iam: Если получаю 0.20 - это 0.2 мс или 0.2 сек?

Uljahn: сек

Uljahn: для мс надо на 1000 умножить

Uljahn: замер лучше начинать после первого инпута

Rush_iam: :thumbsup: CG даёт таймаут при >1 сек?

Uljahn: в пазлах по-разному, вроде до 3 сек бывает

735487: прикольно было очков 26.70. поменял одну строчку. стало 26.72 нифига не поменялось ))

vrabosh: подскажите по этому пазлу

vrabosh: энкодер проходит , написан норм..

vrabosh: но выполняю последний тест, он мне говорит декодировать его.. но я проверяю результат енкодером, и он получается другой чем то, что мне датется в message

Uljahn: по этому пазлу? :thinking:

vrabosh: Disordered First Contact


vrabosh: def encode(m,s=,c=0): http://chat.codingame.com/pastebin/fe68a316-2c3c-464a-8537-b3ecf4091290

vrabosh: код энкодера

Uljahn: какой не проходит?

vrabosh: последний, но при сабмите два..

Uljahn: тесты же посмотреть можно

vrabosh: Lorem ipsum dolor sit amet, con...dit ut ac est. Fusce at dui ipsum. Aliquam est nibh, tempor id. - я ему должен это вернуть, но мой енкодер возращается другое, чем мне дает message

vrabosh: а все тесты по еэкодеру проходят

Uljahn: так там декодер нужен

Uljahn: Output One line: The original message (if N is positive)

vrabosh: да, только как мой декодер может дать пральный результат если мне message дают не тот

vrabosh: который должен быть.. а проверил я это своим енкодером

vrabosh: в обратном порядке

Uljahn: значит, где-то баг

vrabosh: либо я гдето ошибся в енкодере, то и естественно не прально декодер сделал..

vrabosh: посмотри плз, там код мелкий.. сравни со своим

Uljahn: не похоже совсем

Uljahn: в чужих решениях посмотрел - есть похожие

vrabosh: вот так я вызываю

vrabosh: if n<0:

   for i in range(abs(n)):
       m = encode(m)

Uljahn: def encode(m): http://chat.codingame.com/pastebin/fbca0efe-b09a-49c3-8d3b-edaac824f8d9

Uljahn: почти то же самое, что и у тебя нашёл

Uljahn: r на s только заменить

Uljahn: однобуквенные имена это пипец, хуже только буква с цифрой

vrabosh: тотже результат дает

Uljahn: http://chat.codingame.com/pastebin/3f5ab53e-6d21-4338-a7ce-066ab75651fe

Uljahn: это не я писал, но так проходит

Uljahn: может, у тебя декодер не правильный всё же?

vrabosh: даже если он не пральный.. то поему мой енкодер показывает другою строку, чем мне приходит от message?

Uljahn: может, функция кодирования не обратима?

vrabosh: как они тогда закодировали?

Uljahn: магия

vrabosh: другим энкодиром чтоли?

vrabosh: скинь того чела декодер плз, проверю)

Uljahn: def decode(s): http://chat.codingame.com/pastebin/92e7f7f6-5f67-4f4d-bc02-09244f824be2

vrabosh: страно заработало

vrabosh: возможно правила не допонял

vrabosh: всетаки некодер не пральный.. я оказывается не всю стр скопировал...

vrabosh: понял, он у меня проверку всегда с начала начинал, а тут с конца надо делать..

vrabosh: Uljahn, а чего тебе не нравятся имена в один символ, читать удобно.. как мат формула почти)

ilt: когда ты вернешься к своему коду через некоторое время ты в него будешь долго втыкать с этими формулами

Uljahn: я не против, когда известные физические формулы записываются односимвольными именами

Uljahn: или математические

Uljahn: или если односимвольные имена используются для индексов или обозначения координат

Uljahn: во всех прочих случаях получается codegolf на равном месте

Uljahn: хорошее имя подсказывает, что можно ожидать от значения переменной, это особенно важно в питоне с его динамической типизацией

Uljahn: к тому же, однобуквенных переменных не так уж и много (особенно не рекомендуется использовать l, I, O), т.е. для скрипта на пару десятков строчек - норм, но что-то крупнее писать уже больно

Uljahn: возможно, у меня другое представление об удобстве чтения, - я люблю когда имена выстраиваются с командами и названиями функций в осмысленные фразы, на питоне очень красиво выглядит, почти как человеческая речь

Uljahn: я когда первый раз увидел такой код, прям катарсис пережил - "а что, так можно было?!"

735487: самый топчик случайно русскую c вписать где нибудь :)

Uljahn: угу, классика

Uljahn: тоже стараюсь не использовать с

735487: я еще недавно совсем ловил багу несколько часов

735487: считываю текстовик. делю его по разделителю. и в базе ищу по словам. смотрю тупо на первой строке не находит а на второй тоже самое и уже находит

735487: долго очень ковырялся

735487: угадаешь в чем дело?

ilt: 15к достиг на втором ходе

ilt: но почему-то пока играет хуже, чем прошлая стабильная версия

ilt: есть ряд сомнительных ходов

ilt: иногда дает противнику немотивированный фримув

ilt: скорости что-ли не хватает!?

735487: да может быть мало роллаутов чтобы понять что есть лучше ходы

tomatoes: на фримув какойто штраф надо делать. чтоб и мцтс не пыталось так ходить и саму мцтс разгружало

Default avatar.png TTeaLL: срочно

Default avatar.png TTeaLL: я сделал сабмит

Default avatar.png TTeaLL: как его прекратить

tomatoes: новым только

wlesavo: засабмитил в крестики на плюсах, 1.5k роллаутов)) но я вообще пока ничего не делал, чисто наивная такая реализация, по сравнению с 300 питоновскими конечно даже в такой версии выглядит лучше