Chat:Ru/2020-04-14
tomatoes: в кораблики
BorisZ: кораблики уже были - на гексах, тут подлодки
BorisZ: you need to go deeper
BorisZ: или как там
BorisZ: прикольно если б можно было плыть по поверхности после всплытия
BorisZ: но позиция точно будет известна
miklla: подлодка на курьих ножках
BorisZ: плюс еще какой-то дизадванаж
BorisZ: два уровня как бы - практически 3Д
miklla: за многоуровневостью - в WW
BorisZ: даже достаточно чтобы сектор был всегда известен если по поверхности плывешь
miklla: блин, 3 дня почти ничего не писал - пытался придумать как можно намутить минимакс - сдаюсь, нереально
miklla: буду на себе фокусироваться
BorisZ: без сайленса можно наверное
BorisZ: расчитать исход дуэли - типа того
miklla: у меня на моём ходу с обрезаниями ветвление в 3к бывает
miklla: без обрезаний в десятки тысяч
BorisZ: если считать только мув с зарядкой торпеды и саму торпеду
miklla: а ещё бывают сайленсы и всплывания
BorisZ: не учитывать их может попробовать
miklla: но когда-то делать придётся же
BorisZ: ну кроме последнего удара может
miklla: и у противника много возможных позиций
BorisZ: часто довольно заруба до победы когда уже точные позици известны
miklla: даже если ты каким-то чудом осилил глубину 5 без учёта чего-то, получишь полную ерунду, потому что использовал неверные предположения
miklla: писать минимакс чтобы работал только когда обе позиции известны и сайленс в кд - вообще хз
miklla: у меня уже 1.4к строчек
miklla: в основном на движок
miklla: и детекты
735487: типа по поверхности когда плывешь путь не красится )) были бы другие стратегии совсем.
BorisZ: угу но стрелять нельзя например
BorisZ: у всех много понаписано думаю, у меня тоже 1400 строчек
BorisZ: надо срочно добить до 2к, непорядок
amurushkin: 2048 правда часть старого кода там еще в комментах
miklla: сколько на питоне позиций за ход перебирается? наверняка несколько сотен
BorisZ: какие позиции ты имеешь ввиду? у меня ничего не перебирается особо, 3мс на ход сейчас
BorisZ: собераюсь пилить поиск пути только, будет подольше, до этого не было трекинга мин, нечего было искать
BorisZ: да и то 3мс -это первый ход видимо, так то 1мс
miklla: значит твой бот пока не нападает внезапно через 9 клеток
miklla: хотя хз
BorisZ: если убить может только тогда
miklla: у меня без убийства иногда нападает
miklla: если вероятность урона неплохая и не будет суперпалева
miklla: ещё я пока не совсем понимаю, как соединить перебор будущих путей с выстрелами, никак что ли
BorisZ: искать для врага лучший путь может
miklla: у врага много возможных позиций
miklla: и вообще такое себе загадывать где враг будет на большой глубине
BorisZ: и добавлять в карту урона его рендж торпеды с дискаунтом
miklla: да, что-то такое думал, но хз
miklla: вероятности выстрелов настраивать
BorisZ: тогда будешь бегать от врага опять таки )
BorisZ: всегда
miklla: что-то в чат сообщение иногда больше 30 сек отправляется
miklla: ну или наоборот, доходит, что отправилось
wlesavo: я тут вот что подумал
wlesavo: когда тебе прилетает на 2, надо стрелять куданибудь где много твоих кандидатов
wlesavo: либо мину взрывать
BorisZ: сомнительно - сведешь свои позиции с 1 до 2, потратишь торпеду зря
wlesavo: почему до 2
BorisZ: центры взрывов
wlesavo: не центры
wlesavo: а два выстрела
BorisZ: если на 2 прилетело - ты в центре
BorisZ: с точки зрения врага
wlesavo: типа он тебя попал и ты сам себя попал
wlesavo: краями
wlesavo: он же суммарный урон получит
miklla: ещё жёстче, если между взрывом противника и твоим свой сайленс проюзать
wlesavo: и при этом не зря, все равно же стрелять надо, можно просто максимизировать количество само попаданий вместо минимизирования при максимальном уроне по врагу
miklla: тогда жёсткий перебор
BorisZ: ну если ему придет на след ход 1 взрыв и у тебя урон 2 - он знает твою точную позицию, если придет 2 взрыва и урон два - до до 2х позиций
miklla: но это всё само учитывается, если делать через оценки позиции
wlesavo: нет же
wlesavo: комбинаций на 2 очень много
miklla: он не знает твою точную позицию
BorisZ: ну согласен, можно сделать несколько на 2
miklla: даже, уже думал о таком, оценка позиции это всё отлично обрабатывает
wlesavo: да, а если стрельнуть еще и после сайленса это вообще неплохо
BorisZ: по линии на расстоянии 2 если там есть кндидаты - будет всего 4 позиции
miklla: лишь бы не отпрунить себе слишком много до этого
BorisZ: с 2 урона
BorisZ: да годная идея вполне, можно пробовать
wlesavo: ну в отличии от стрельбы по себе это имеет право на жизнь
BorisZ: можно и с 1 урона
wlesavo: вообще да
wlesavo: по реплеям часто это само так происходит
wlesavo: но можно форсить это
BorisZ: miklla ничего не отпрунится - ты с его точки зрения просто расширяешь маску урона на 2
wlesavo: он имеет ввиду что после сайленса на большо йрендж если стрельнешь далеко то твоя позиция сильно сужается
BorisZ: если торпеды не жалко конечно )
wlesavo: наверное
miklla: BorisZ у меня перебираются не все возможные выстрелы, иначе пришлось бы перебирать десятки тысяч позиций, я про этот прунинг
miklla: перебираются - в смысле доходят до оценки
BorisZ: да вобще не причем оценка, ты в начале хода стоишь на 1-1, получил что враг стрелял в 1-1 и у тебя жизни стало-2
BorisZ: если ничего не делать то враг точно знает где ты
BorisZ: а если стрельнуть в 3-1 то под уроном 2 будут еще 4 клетки
BorisZ: если там тоже были твои кандидаты, то враг не сузит твою позицию до 1
miklla: я в курсе
wlesavo: но хочется и врага зацеепить при этом
BorisZ: и рыбку съесть и на х сесть
miklla: я имел ввиду, что чтобы сгенерить свой великий ход, дающий собственную неопределённость, надо случайно не отпрунить свой выстрел
wlesavo: именно
miklla: как мало накрывающий
miklla: при собственном переборе
miklla: у меня забавная история была
wlesavo: ладно, надо просто прикрутить в паре вариантов и посмотреть
miklla: у меня бот ради собственной неопределённости после выстрела противника часто всплывал и стрелял куда-то, потому что в старой версии бота
miklla: если выстрелы были разделены всплыванием, то он выдавал, что не может их оттрекать
miklla: и таким образом просто так терял 1 хп
Uljahn: хрена се, в общаке голд ботов стримят
RMuskovets: да) еще и "красть" ф-ции чел дает
Uljahn: давайте уж сразу на гитхаб код легендарных ботов выкладывать, пусть народ учится
miklla: после контеста некоторые так делают
Uljahn: и в мульти потом никто не играет, потому что там клоны
cheaz910: А как подсчитать возможные позиции врага, когда он использует сайленс? После нескольких сайленсов становится сложно считать
Uljahn: оптимизируй вычисления, юзай сонар
cheaz910: Просто бот на серебряной лиге выводит кол-во моих возможных позиций, хочется достичь тех же цифр)
Uljahn: лол, ты на питоне
wlesavo: странно кстати что у серебрянного босса оставили мессагу а у золота убрали
miklla: до некоторых пор можешь хранить все возможные траектории противника, а если их станет слишком много, то отрезать начало
Uljahn: юзаешь numpy, cheaz910?
Uljahn: BorisZ: а ты тоже без numpy трекаешь?
BorisZ: cheaz910 надо каждый ход пробегать обратно по истории ходов - обрежутся многие варианты
BorisZ: да вроде ни к чему совсем numpy
Uljahn: :crying_cat_face:
wlesavo: я вот не знаю можно сказать что я юзаю нумпай или нет, кое что храню в массивах, кое что считаю типа карт дамага, но в целом примитивно все
wlesavo: хотя на питоновских листах это была бы боль
BorisZ: я не знаток numpy конечно, может что-то пригодилось бы хз, но я сразу все храню не в массивах а в серах и мапах
BorisZ: * в сетах
wlesavo: ну вот да, двумерные листы в питоне особенно если их нужно копировать это ппц
BorisZ: я и карты дамага в сетах, просто репу почесать пришлось и вспомнить алгебру
wlesavo: но с нумпаем просто, берешь кусок и массива и на него +1
Uljahn: я на CG только из-за изучения numpy сижу, других смыслов на питоне участвовать не вижу
BorisZ: я помню минирайк в том году делал на нумпае, потребовалось применить функцию к массиу, которая зависит не от значений а от координат
BorisZ: и чет не нашел как, разочаровался (
Uljahn: а, я помню, ты спрашивал
miklla: тогда в значения добавить координаты?
wlesavo: ну я планирую посерьезнее за нумпай взяться
BorisZ: тогда в ячейкач будут объекты а не числа - здраствуй питон
BorisZ: ну можно наверное отдельно массив с координатами и их вместе мутить
miklla: можно несколько бит выделить, или у тебя уже 64 бита было занято?
Uljahn: угу, создать массив индексов и передавать как параметр или как ещё одно измерение добавить
Uljahn: подожди, какие объекты? есть же structured arrays
BorisZ: я не помню уже деталей и даже как решил не помню помню что осадочек остался )
miklla: :)
BorisZ: Uljahn да вполне может пыть что было numpy-way красивое решение, просто я его не нашел
Uljahn: надо было на SO вопрос закинуть)
Uljahn: там такие крутые вещи пишут
Uljahn: чем больше вопросов будет отвечено, тем проще потом пользоваться нампаем - сообществу выгодно отвечать
BorisZ: да я понимаю, если б я его юзал где-то еще то надо вкладываться
Uljahn: ML/RL не интересуешься?
Uljahn: DL ещё забыл
BorisZ: делал пару заходов, даже курсы начинал и даже один или два до конца )
BorisZ: потом что-то отвлекает, а через полгода голова абсолютно пустая
Uljahn: всё равно полезно - главное понять, что магии нет, а есть массивы весов :)
Uljahn: а как вы со спам-сайленсом боретесь?
amurushkin: да никак. мой иногда даже таймит от такого
Uljahn: это при скольки тысячах вариантов примерно?
amurushkin: 40000+
Uljahn: если самому спам-сайленсить, то придётся в половину времени укладываться, чтобы и себя симулировать с точки зрения противника?
amurushkin: наверное. но для себя может как то и упростить можно
amurushkin: у моего бота другая проблема. зачастую он считает что еще много позиций у него а по нему уже стреляют
wlesavo: может позиции плотно
wlesavo: а, ну я еще штрафую дополнительным весом сайленс 0
amurushkin: у меня сайленс сейчас либо 0 либо если после всплытия то на максимум. я его пока никак не выбираю
BorisZ: пропихнули еще одного в легу
tutubalin: я использую вероятности: некоторые траектории более вероятные чем другие
tutubalin: например, чаще всего салом прыгают на 0 или 1 клетку.
tutubalin: очень редко на 3 клетки
tutubalin: поэтому даже если вариантов, где противник, много, некоторые из них более вероятные, чем другие
BorisZ: это метагем такой в золоте
BorisZ: в легенде скорее всего прыгать будут туда где позиция выгоднее
BorisZ: мину там перепрыгнуть или еще чего
Valdemar: tutubalin мне кажется это будет мешать против тех, кто прыгает по-другому
BorisZ: короче откуда путь можно построить повыгоднее
BorisZ: ну подкрутишь потом вероятности
BorisZ: наверное лучше если они есть чем их нет )
tutubalin: да, я уже подкручивал )
tutubalin: Valdemar ага, мешает ) те, кто прыгают на 4, сбивают с толку. но по закону больших чисел в целом выгоднее
metahom: ща я нмаходе в легу запихаю
wlesavo: второй питон в леге
wlesavo: не проиграть бы компетишн языковой
wlesavo: ато я уже особо не планирую улучшений
metahom: он примерно моего уровня чувак
wlesavo: ну пока то вроде вне опасности, но может легко подтянуться
wlesavo: времени куча еще
metahom: wlesavo, а ты в следующем контесте участвуешь?
metahom: я вот тоже пытаюсь зеноскейва обойти. но я за третье место )))
wlesavo: ну собираюсь, да, но не уверен насколько хорошо получится, в этом повезло что не так к алгоритмам и мощностям требователен оказался
Uljahn: дня через три топы начнут норм ботов выкатывать, а кто-то может и захайдит до последнего))
wlesavo: на самом деле зашел в трон погонять, чето захотелось расслабиться после этого всего))
wlesavo: да, я на топ 10 не рассчитываю уже, но очень интересно что там выкатят посмотреть
metahom: а че ты, поборись еще
Uljahn: на питоне?
wlesavo: да идей нет, таких чтобы серьезные улучшения давали
metahom: ты и сейчас в десятке, глядишь удержишь
wlesavo: на чсет сим я сдался, слишком напряжно во время не укладываюсь
wlesavo: так это еще не подтянулись
wlesavo: ща какой-нибудь роял и чак допишут и все
Uljahn: ещё карлисо и дапорана не видать
wlesavo: да, много людей еще получается которые должны выкатить чтото хорошее
Uljahn: не то, что должны, но могут удивить в последнюю минуту
metahom: дапоран вроде давно не играет
wlesavo: лол, в троне был говнокод на 300 строк с 600ым иестом, ща переписал на мега примитивную оценку влияния на 200 строк с нумпаем и кажется промоушен в золото ща будет как досчитается
BorisZ: загугли диаграмма вороного - идея простая, пилится на раз два
wlesavo: я это и сделал фактически
wlesavo: просто без минимакссов без ничего на глубину 1
wlesavo: засабмитил протестить
wlesavo: и проммут
BorisZ: вот трон - неправильное соревнование, по сути у всех минимакс на вороного, различия в скорости и как против нескольких врагов играть
wlesavo: офигеть, два с половиной часа ждать теперь промоута
BorisZ: то есть одно решение по сути
wlesavo: да, нынешний контест прям разнообразный, реально камень ножницы бумага, много мелких фишек которые можно добавить
wlesavo: и которые реально будут влиять на исход
wlesavo: все-таки не думал что так просто будет с троном
amurushkin: BorisZ у меня в троне не минимакс :)
amurushkin: я туда смитмакс впендючил
monnyz: Ребят, вечер добрый, скажите пожалуйста, способствует ли сайт в изучение языка? т.е, в получение новых знаний и т.п(глупый вопрос, знаю)
wlesavo: способствует не то слово, но совсем с нуля начинать здесь не очень, минимальные знания лучше иметь
Uljahn: тут сайт для практики, но можно на изи пазлах с гуглом и стековерфлоу качаться
wlesavo: ну вообще да, изи пазлы можно совсем с нуля решать
wlesavo: хм, с тем же кодом в троне уже 77 на 50%
wlesavo: мож и до леги дойти можно
monnyz: Тогда где посоветуете подкрепить знания?
Uljahn: онлайн туториалы ищи
Uljahn: какой язык изучаешь?
Uljahn: желательно знать английский
Uljahn: тогда можно попробовать что-то типа https://www.learncs.org/
Uljahn: потом переходить к пазлам, решать, смотреть как другие решили
amurushkin: по C# ulearn.me на русском
wlesavo: unlearn me
wlesavo: хм, 35, можно попробовать таки в легу пройти
tutubalin: monnyz попробуй этот сайт: https://app.codesignal.com/arcade
tutubalin: (требуется регистрация)
tutubalin: там прям вобще с нуля почти