Chat:Ru/2020-06-23
 Uljahn: хммм, https://exponenta.ru/events
вебинары вроде интересные, но какая-то мутная контора
 Uljahn: никто не сталкивался?
 735487: с этой не сталкивался а вот у geekbrains можешь не смотреть. названия вебинаров обещающие а на деле там все время тебе вбивают мысль иди к нам учиться плати бабло
 735487: жаль что у них нельзя запись в архивных посмотреть. так бы было понятно стоящее или нет
 vrabosh: неужели вэбинары могут лучше чем книги рассказать?
 735487: вебинар это более узкая тема обычно
 735487: ну и книги могут устаревать же еще
 Uljahn: вот мне тоже интересно про актуальность инфы, но очень сомневаюсь, что там прямо самый свежак с архива, скорее всего такой же перевод из устаревших книг
 Uljahn: типа адаптации курсов с курсеры
 Uljahn: напрягло, сколько инфы затребовали при регистрации, ну их нафиг
 vrabosh: Врятли они дадут новее того, что в статьях расписано.
 Uljahn: да я не про новее, это вообще нереально
 Uljahn: а хотя бы не пятилетней давности переводы
 vrabosh: Как по мне вэбинары это под тренажером посидеть, послушать инфу, чтоб быстрее обучится.. а когда хочется серьезно.. для среднего уровня это книги.. а для профи уже самому углубляться встатьи
 Uljahn: любят у нас кликбейтные заголовки везде пихать, а кроме как регистрировать - нет других способов оценить качество материала
 vrabosh: как по мне лучший материал это былобы.. подборка дстойных книг.
 vrabosh: конспект к этим книгам. чтоб понять, примерно что получу..
 vrabosh: вот как раз конспекты это и есть чтото типа вэбинаров.
 Hamibar: да на самом деле без разницы, где черпать информацию.
 vrabosh: на вэбинары время можно потратить много. Хотя мне нравится их смотреть когда тренажер крутишь.. 
 735487: бывает что люди рассказывают личный опыт. такое интересно как правило
 735487: мне запомнился один как менеджер из яндекса или из мейла уже не помню, рассказывал почему они сроки которые дает программист умножают на пи и прибавляют 10
 Uljahn: это один из законов Мерфи же, только там вроде число Эйлера было
 Uljahn: или умножить на два и заменить единицы измерения на единицы более высокого порядка, так мы выделим 2 дня на часовую задачу
 vrabosh: а если быть замотивированным то можно уложиться в срок
 vrabosh: геймификация крутая штука.. фиг бы я наверно решал крестики, еслиб не рейтинги, очки, опыт итд)
 735487: ну там было обьяснение что программист типа рассчитывает пройти от начала до финиша по прямой. а на деле будет дуга окружности.  отсюда берется пи. а 10 дней это типа если зафейлят то у них есть программер который сделает любую задачу за 10 дней :)
 Hamibar: я из-за этого раньше в мульти не играл)
 vrabosh: что з мульты?
 tomatoes: боты
 vrabosh: а почему не играл?
 Hamibar: ну казалось, что нет соревновательного элемента
 Hamibar: только в контестах участвовал
 vrabosh: понял.. он то есть, рейтинг же есть.. ну и к контестам вот мне хочется подготовится.. знаний, опыта набраться..
 Uljahn: контесты первые раз 5 интересны, потом приедаются
 Uljahn: каждый раз всё больше ощущение повторов
 735487: не соглашусь насчет повторов
 735487: последние года 2 контесты довольно уникальные были и новые
 vrabosh: для меня все тут новое) но с как по мне пакман отличный контест.
 Uljahn: так я не про полные повторы говорил, а про повторы некоторых аспектов игр, которые уже встречались раньше
 Uljahn: каждая новая игра похожа на некоторые предыдущие, чем больше у меня багаж опыта, тем легче найти аналогию
 tomatoes: рандом в пакмане как-то не зашел
 tomatoes: и в самой игре и при сабмите
 vrabosh: мне кажется это норм.. смотивироваться переписать задачку с лабиринтом старую сложнее.. чем взять пройти контест новый где тоже лабиринт принцип
 vrabosh: а когда похожее делаешь по несколько раз, только тогда начинаешь понастоящему соображать как надо делать
 Uljahn: ну так можно и крестики улучшать до бесконечности)
 735487: ну так мы и улучшаем )))
 vrabosh: я думаю намного интересней будет, если выйдут какие нить новые крестики)
 vrabosh: а что думаю про крестики те кто написал альфа го?)
 735487: поле 27 на 27 ))))
 735487: и на большом поле сделать 4 в ряд ))
 vrabosh: можно 3 игрока на этиже крестики)
 vrabosh: 4 игрока.
 Uljahn: поле 256х256х256 и 128 игроков, только кто играть в это будет
 vrabosh: командная игра. я хожу, противник, потом мой напарник)
 735487: были какие то другие еще правила для таких крестиков. без фри мувов что ли. но там доказали что крестики всегда выигрывают
 Uljahn: да, читал про такие
 BrutalJetskiFromAfar_9bf: кто может объяснить уровень про тора?
 tutubalin: да, есть вариант, где можно продолжать ходить в ту борду, где уже выиграли. там есть 100% выигрышная стратегия - просто отправляешь противника всё время в одну и ту же борду даже после того, как он уже поставил три нолика
 tutubalin: BrutalJetskiFromAfar_9bf в торе тебе самому надо следить за своей текущей позицией. тебе говорится только начальная. а куда ты пришёл - вычисляй сам
 Uljahn: BrutalJetskiFromAfar_9bf: слева есть кнопка Hints
 735487: у меня походу лучший сабмит в CSB. даже против fenrira игры дали
 735487: о даже у мэда иногда выигрываю и смита
 735487: гы против мэда 5-1 )))
 YurkovAS: :thumbsup:
 735487: большая пропасть еще
 tutubalin: а куда мэд-то делся? его ковид съел?
 vrabosh: лет 20 процессорами не интересовался, а тут мак на мобильный переходит.. надо разобраться, что это такое для общего развития.
 vrabosh: кстати идея с двойным стуконьем по тел, чтоб сделал скрин прикольная
 vrabosh: можно прям свою ui азбуки морзы сделать)
 vrabosh: набил по корпусу . . он скрин, . - ., он еще чтото сделал
 vrabosh: или два стка, один поворот, и телефон чтото делает)
 tutubalin: ага. положил телефон в карман с мелочью - и у тебя 100500 скриншотов
 vrabosh: когда ты работаешь с ним
 vrabosh: указательный палец на крышке, им можно чтото делать
 vrabosh: прикинь, смотришь стрим вертикально... хочешь что нить написать, вместо того, чтобы уменшать экран открывать клаву... сидишь наиваешь морзу, а в низу поазывается текст который набиваешь. Посути только 1 линию экрана задействуешь и то полупрозрачную.. 
 vrabosh: 2-3 символа набил, ии подсказал какие ты слова имеешь введу, тыкнул на слово внизу.. дальше набиваешь. Хотя уже проще голосовй использовать)
 Uljahn: tutubalin: обиделся и ушёл, или сделал вид, что обиделся и использовал как предлог, чтобы уйти
 inoryy: чем вы его обидели
 Uljahn: https://cg.spdns.eu/wiki/Chat:World/2020-05-19
 Uljahn: небольшая драмка, сравнили с ботов в очередной раз
 Uljahn: *с ботом
 inoryy: выглядит как стёб
 Uljahn: ну вот я и предположил, что это предлог
 Uljahn: вряд ли бы мэд на такое реально обиделся
 Uljahn: может, в армейку забрали)
 Uljahn: Automaton2000: десятый наш ковидный батальон
 Automaton2000: ты в каком городе живешь?
 Uljahn: Automaton2000: в Петросянске
 Automaton2000: если с физикой и тригонометрией сложно - попробуй Трон, там на клетках, поочерёдные ходы и правила простые
 tutubalin: Uljahn он вышел не после шутки про бота
 tutubalin: а после того, как сказали, что он может помочь с csb
 tutubalin: сайт ни у кого не тормозит?
 Uljahn: тормозит немного
 tutubalin: поставил качалку боёв
 tutubalin: но я 100мс паузу делаю между запросами
 vrabosh: в пазлах самое сложно это понять, что автор хочет
 Uljahn: а ты хотел, чтобы псевдокод выкладывали вместо условия или грамотное ТЗ?
 Uljahn: понимание задачи - это тоже часть пазла
 tutubalin: щас ещё норм
 tutubalin: я помню какие-то школьники пазлы писали и друг другу аппрувили
 tutubalin: вот там жесть была
 Uljahn: "Первое место занял icecuber, который захардкодил 100 правил из обучающего датасета и 100 правил из теста" - ахах, 10к LoC из if-ов и брутфорса - вот тебе и искусственный интелект
 Uljahn: это соревнование на кагле было
https://habr.com/ru/company/sberbank/blog/507852/
 Uljahn: Automaton2000: как тебе такое, Илон Маск?
 Automaton2000: ну у меня в общаке смайлы не показывает
 vrabosh: вот это народ умеет замарачиватся.. у меня максимум на 1000 строк кода получается.. из которого половина мусора в итоге
 vrabosh: хотя посмотрел код.. меньше 300 строк кода надо чтоб золото брать.
 gybson_samara: Uljahn есть вот такой список [(0,0),(0,2)], как сумму ячеек получить?
 vrabosh: [sum(a[:][i]) for i in range(len(a))] - это ты имеещь введу?
 vrabosh: в нампи я думаю проще чуть
 gybson_samara: я имею в виду проще =)
 vrabosh: a.sum(axis=1)
 vrabosh: тоже самое, что вверху написал
 vrabosh: только что сам нашел.. в гугл, вообще в нампи куча всего.. надо его поизучать активно будет.
 gybson_samara: diagonal().sum()  тожен
 gybson_samara: но это не то
 Uljahn: sum(map(sum, lst))?
 Uljahn: или что за сумма ячеек?
 gybson_samara: Uljahn сумма ячеек в массиве нампи
 Uljahn: так у тебя списко кортежей или массив?
 Uljahn: *список
 gybson_samara: список кортедей
 Uljahn: а где массив нампи?
 Uljahn: аааа, у тебя список индексов?
 gybson_samara: ну тут =) надо в нем посчитать сумму значений ячеек из списка кортедей
 Uljahn: и ты индексируешь им массив
 gybson_samara: ну дефолтная индексация
 gybson_samara: пусть массив будет np.ones((3,3))
 vrabosh: тебе надо [a1+a2,b1+b2]? 
 gybson_samara: нет
 vrabosh: где [(a1,b1),(a2,b2)]
 vrabosh: а как?
 gybson_samara: мне надо a[x1,y1]+a[x2,y2]+a[x3,y3]
 gybson_samara: где [(x1,y1), (x2,y2), (x3,y3)]
 Uljahn: arr[ix].sum()
 Uljahn: где ix - список кортежей
 Uljahn: или np.sum(arr[ix])
 Uljahn: это вроде одно и то же
 Uljahn: это называется fancy indexing вроде бы
 gybson_samara: sum(ones[goal]) работает
 gybson_samara: по производительности не хуже суммы нампи должно быть, кмк
 Uljahn: sum - это питоновская функция, она медленная при работе с нампи массивами
 Uljahn: лучше всегда использовать специализированные нампишные
 gybson_samara: скорее всего да, но также скорее всего она вызывает нампишный же перекрытый метод
 Uljahn: ну, она не сильно прям медленная, но на больших массивах разница может быть заметна
 vrabosh: a.sum(1) - сумма ячеек
 gybson_samara: и у нас тут список туплов, а список это список
 vrabosh: a.sum(0) - столбксов
 gybson_samara: vrabosh мне проще через слайсы
 Uljahn: список туплов используется для индексирования, это норм
 gybson_samara: да я начал смотреть решения по крестикам и увидел, что используют словарь с комбинациями выигрышными
 gybson_samara: и решил, что норм =)
 Uljahn: кстати слайсы возвращают вид (view) оригинального массива, а fancy indexing - копию
 vrabosh: мне вот кажется, что теоретически можно найти формулу которая говорит, выигрышный ход..
 gybson_samara: np.flipud(mm).diagonal().sum() - как-то сложно для суммы трех ячеек
 Uljahn: т.е. если будешь над видом что-то делать, изменения уйдут в исходный массив
 gybson_samara: Uljahn мне пока так и надо
 vrabosh: вот есть такое для 3х3?
 Uljahn: а если списком туплов - то копия возвращается
 vrabosh: тебе диагональ надо просумировать?
 gybson_samara: Uljahn беру вот так
def get_subboard(self, board, y, x):
return self.board[board,y*3:y*3+3,x*3:x*3+3]
И все, вот моя минидоска
 Uljahn: да, это view
 gybson_samara: да это я разобрался сразу
 gybson_samara: до симы дошел и все мои излишества вылезли, надо оптимизировать
 Uljahn: я вот не сразу допёр, долго ловил баги, когда начинал нумпай учить)
 Uljahn: тебе же говорили, что доски лучше отдельными массивами хранить, а не 9х9
 Uljahn: если в двоичном представлении, то вообще парой интов на минидоску можно обойтись
 Uljahn: битоборды т.е.
 Uljahn: -о
 Uljahn: каждый раз слайсить - дороговато
 gybson_samara: а копировать девять досок дешево?
 gybson_samara: каждый раз слайсит и не стану
 gybson_samara: добавлю кэш слайсов
 vrabosh: я проверял, для меня дешево это
 vrabosh: tmp = a[1,1]
a[1,1] = 2
minimax
a[1,1] = tmp
 Uljahn: когда у тебя 3D массив, можешь просто делать return self.board[board]
 Uljahn: на выходе будет 2D 3x3 массив
 Uljahn: если тебе инты не удобны
 gybson_samara: Uljahn у меня массив (3,9,9)
 gybson_samara: в перспективе
 Uljahn: 3 откуда?
 Uljahn: три слоя инфы?
 gybson_samara: сейчас пока список массивов (3,3,3)
 gybson_samara: Uljahn да
 gybson_samara: 1 - мой ход, 2- ход противника, 3 - счет
 Uljahn: а, у тебя же эвристические оценки
 gybson_samara: да какая разница то какие оценки
 Uljahn: я не вижу преимуществ представления 3х3
 gybson_samara: посмотреть где в линию встанут
 Uljahn: 9 битов на игрока достаточно
 gybson_samara: согласен и даже проще будет после решейпа
 gybson_samara: но это потом
 gybson_samara: кстати, а как нампи 3*3 бит в слово решейпит, норм?
 Uljahn: не понял
 Uljahn: биты в инт запихиваем, ничего не надо решейпить
 Uljahn: получается массив (10, 2)
 Uljahn: 9 миниборд по 2 инта и 1 глобал по 2 инта
 Uljahn: проверки линий выполняем заранее, заносим в LUT
 Uljahn: у меня правда нумерация стрёмная - 0 миниборда в середине, всё думал как симметрию прикрутить
 Uljahn: за год уже так привык, что переделывать не хочется)
 gybson_samara: у меня то 3 инта на круг выходит, а у тебя 4 =)
 vrabosh: хваьиь обсуждать крестики, я не могу остановиться думать про них)
 gybson_samara: аааа, у тебя борды меньше
 Uljahn: ну, у меня пока оба игрока в одни инте, так что два всего на круг
 Uljahn: в одном*
 Uljahn: но надо переделывать
 Uljahn: щас инт32, занято 18 бит, надо переделать на два, а то с масками и сдвигами гемора много
 tutubalin: да-да, я тоже с этим столкнулся
 tutubalin: казалось, что вроде улучшение
 tutubalin: а в реальности один геморр
 gybson_samara: Uljahn вот так надо писать, оказывается
mm[tuple(goal)].sum()
а иначе ворнинг дает
 gybson_samara: в tuple() последовательность оборачивать
 Uljahn: ?
 Uljahn: со списком индексов тоже работает
 Uljahn: я проверил специально
 Uljahn: чё за ворнинг? размерности не сходятся?
 tutubalin: теперь у меня есть 465мб джейсон с боями из леги
 tutubalin: опа! томатос на 1м месте!
 735487: запушили походу
 tutubalin: ну так то всех пушили
 vrabosh: запушили - это типа зачетирили спомощью мульта?
 735487: нет. это например ты сабмитишь и проигрываешь ему много игр. у него потихоньку очки растут
 vrabosh: ааа
 vrabosh: ктото про такое слышал?
 vrabosh: http://chat.codingame.com/pastebin/38a7c64e-8f93-4d91-8c95-7a6de4d0edd5
 wlesavo: там наоборот юрков карилсо запушил вниз
 wlesavo: vrabosh где ты это нашел? 
 wlesavo: прикручу ща себе чисто проверить
 tutubalin: vrabosh магический квадрат?
в школе мерились письками, у кого программа быстрее найдёт
 wlesavo: выглядит как порядок проверки в роллаутах
 wlesavo: смитси говорил что у него не рандомные
 wlesavo: хотя хз
 tutubalin: интуиция мне подсказывает, что для порядка проверки должно быть что-то такое:
 tutubalin: 2 8 5
9 1 7
4 6 3
 vrabosh: https://www.mccme.ru/free-books/shen/shen-games.pdf - вот книгу нашел
 vrabosh: я думаю можно найти формулу игры.. щаз для 3х3 пробую
 tutubalin: а у vrabosh один из магических квадратов 3x3: на всех горизонталях, вертикалях и диагоналях сумма 15
 wlesavo: а, всеголишь
 tutubalin: магические квадраты с нечётной стороной можно найти по формуле. с чётной - только перебором
 wlesavo: а рекурс где нибудь рассказывал как у него питонная оболочка для NN работает?
 vrabosh: что за нн?
 wlesavo: нейросеть
 Uljahn: он из питона запускает скомпиленный экзешник, как я понял
 Uljahn: или бинарь, хз как в лине это правильно
 Uljahn: он вообще-то хейтит питон, но тут решил потроллить народ
 Uljahn: сказал, типа из питона проще всего запускать
 vrabosh: ну а что, зачем интерфейс делать на ругих языках, когда питон хорошо подходит.. а как раз перебор можно на Си делать и в питоне запускать..
 vrabosh: ну а так обучение на питоне тоже будет медленым поидеи? нейронки както надо говорить, выиграл или нет.. а для этого уже провера делается на медленом питоне..
 vrabosh: ну и саму симуляции наверно проходить надо. 
 Uljahn: да, рекурс всё сам написал на с++, и обучение, и симуляцию игры
 Uljahn: готовые фреймворки не использовал
 Uljahn: ну, он же профи, в юбисофте работает, ему не интересно чужое использовать, лучше самому переписать и разобраться
 vrabosh: когда у них время хватает, те кто работает в больших компаниях?
 vrabosh: или им паручасов по вечерам хватает?
 zuko3d: ну совй простенький фреймворк для нейронок пишется за пару вечеров, да
 zuko3d: *свой
 wlesavo: прикольная кривая обучения https://imgur.com/D85KXSx
 zuko3d: ага, нетипичная
 zuko3d: это какой-то RL?
 vrabosh: с этими числами прикольно получается... сильно не протестил. но вроде 3х3 играет норм.. а скорость почти в 50 раз быстрее
 vrabosh: нейронки мне кажется могут закономерность подсказать примернуюю и потом можно самому додумать
 wlesavo: zuko3d да, примитивный рл
 zuko3d: У меня всё никак не дойдут руки сделать RL в крестиках. Хочу в легу "по-честному" сначала зайти
 vrabosh: кароче надо к крестикам Пелермана подключать.. он тут разгадает формулу
 zuko3d: это вряд ли =)
 Uljahn: wlesavo: а как часто тестовые игры против mcts бота гоняешь? винрейт бы ещё выводить на соседнем графике
 Uljahn: а то ошибка вроде уменьшается, но может локальный оптимум быть или переобучение, не?
 wlesavo: да не гоняю пока, пока тестирую против случайных ходов, и что не рекаю случайные ходы :smiley:
 Uljahn: zuko3d рассказывал, как в картишках нейронку обучил во время контеста
 wlesavo: то есть против мктс там ни шанса
 Uljahn: там тоже марафон был на месяц
 Uljahn: вообще круто
 zuko3d: против случайных ходов тестировать RL плохо - он обучаемся не тому, что нужно. Ну, то есть это не плохо, но по времени будет х100, если не х1000
 wlesavo: так я не обучаю в это время
 wlesavo: это просто такой санити тест пока
 wlesavo: тут у меня чистый он полиси
 wlesavo: но вообще не похоже что он чему то учится пока, думаю может все-таки свичнусь на что-нибудь попроще
 Uljahn: типа cart-pole?
 Uljahn: кстати, а что за фичи у тебя в крестиках?
 Uljahn: сам не инжинирил дополнительные?
 wlesavo: дополнительных нет пока, просто позиции ходы этого игрока + позиции противника + борды в которые можно ходить на этом ходу
 wlesavo: если я обучу это на то чтобы побеждать рандом хотя бы буду считать что успех
 wlesavo: но сильно сомневаюсь
 Uljahn: у тебя вроде в первом боте были эвристики какие-то
 Uljahn: который в голде был
 Uljahn: я думаю в крестиках без подсказок нейронки не взлетят
 Uljahn: либо придётся какие-нибудь графовые свёртки прикручивать
 wlesavo: не, там вообще не к месту было
 zuko3d: а что именно ты на выходе из сетки получаешь? оценку позиции? или сами координаты, куда надо ставить?
 wlesavo: не, только оценку афтерстейта  и все
 wlesavo: без полиси для роллаутов даже
 Uljahn: можно прикрутить миник тогда
 Uljahn: может быстрее будет обучаться
 zuko3d: хм... тогда странно, что рандом не побеждается. кажется, это не должно быть сложно.
 Uljahn: или предобучить сетку, чтобы первый ход в центр делала...
 Uljahn: tutubalin реплеи выкачал, будет супервайзед вариант мутить что ли?
 wlesavo: zuko3d ну она с вероятностью 50 процентов побеждает :smiley:
 wlesavo: не знаю, ща параметры подергал может оставлю на ночь, медленно играет все-таки, очень уж не оптимально получается без полиси для роллаутов
 Uljahn: на каком железе обучаешь?
 Uljahn: https://github.com/alex-petrenko/sample-factory
 wlesavo: на своем одном проце)) чето запускал на гпу, но видимо криво, потому что так же медленно все было
 Uljahn: а фреймворк какой?
 Uljahn: питорч или тф с керасом?
 wlesavo: питорч
 wlesavo: вообще питорч конечно классная штука даже если не в плане нейросетей
 Uljahn: на проце конечно грустно