Chat:Ru/2020-03-21
 tutubalin: привет
 Uljahn: школы ещё не на карантине?
 735487: еще не пришли же. они в 11 приходят ))
 tutubalin: блин. дошёл до босса )
 Alex566: в бронзе босс какой-то легкий
 Uljahn: это не босс
 Uljahn: а дефолтный AI для тестов
 Uljahn: босс будет, когда откроют серебро
 Alex566: облом. Я думал уже есть гарантия серебряной лиги
 Uljahn: гарантия серебра - быть в топе бронзы
 Alex566: ладно, за неделю, думаю, все еще сильно поменяется
 Uljahn: очевидно
 Uljahn: щас битбордисты подтянутся)
 Uljahn: те, кто на битбордах всё оптимизирует на плюсах
 Uljahn: битборда - битовое представление игрового поля
 Uljahn: занимает мало места, быстрые операции применения хода, поиска соседей и т.д.
 Uljahn: у тебя сколько ход по времени в среднем занимает, не засекал?
 Uljahn: эти челы будут выжимать 99.9% из первого и последующих
 Alex566: ну уже бывало такое, что не хватало
 Alex566: приходилось упрощать некоторые правила
 Uljahn: первый ход - секунда времени, можно много всего предрассчитать, закешировать
 Uljahn: я вот 3D карту глубин щас запилил :)
 Uljahn: чем дальше от берега - тем больше глубина, или типа того
 tutubalin: хз, у меня пока всё просто. про битборды думал, но потом понял, что и без них норм
 tutubalin: щас сало с сонаром запили и улечу в бронзу
 tutubalin: *запилю
 Uljahn: numpy юзаешь?
 Uljahn: соперника трекаешь?
 tutubalin: соперника трекаю без numpy
 tutubalin: просто список возможных позиций
 tutubalin: фильрую через filter
 tutubalin: обана!
 tutubalin: пропушили меня )
 Uljahn: надо как-то запилить, пока только в лоб придумал рисовать путь на карте 30х30, кропать, потом окном скользить
 Uljahn: гратц
 tutubalin: вот я сперва тоже сперва про пути думал
 tutubalin: оно может быть потом пригодится
 tutubalin: чтобы смотреть потенциальные острова, от которых он мог увернуться
 tutubalin: но пока что в лоб: 
- в начале считаю, что противник может быть в любой клетке моря
- если движется, для каждой возможной клетки смотрю, мог ли он оттуда так пойти, и если мог, но добавляю новую клетку в список возможных (старую убираю, разумеется)
 tutubalin: - если всплывает или стреляет, то соответственно убираю те клетки, из которых он не мог это сделать
 tutubalin: - если включает тишину, то для каждой возможной клетки рисую крестик (с учётом границ и острово)
 735487: а во время тишины закрашивает путь?
 tutubalin: да
 tutubalin: можно переместиться сперва через MOVE, а потом через SILENCE
 tutubalin: в один ход
 735487: tutubalin: а твоя идея проще чем моя трекать путь и каждый раз от пути проверять все клетки с которых он возможен.  хотя вот с путями я собирался для себя проверять пути которые сложнее детектятся и по ним ходить. а с сонаром думал делать дерево путей от этой точки. но я пока вообще хз будет ли это работать. как быстро и все такое
 735487: через silence похоже и стрелять должно быть возможно и догонять таким образом
 735487: Uljahn: в вуд 1 можно пройти без детекта противника даже. у меня просто смотрел в 4 стороны и выбирал по оценке ту где путь свободнее. этого хватило. стрельба рандомная в 4 стороны на 3 или 4 клетки
 735487: из багов было что я не закрашивал свой путь в точке которой появляешься и после surface. он из за этого мог себя убивать. как пофиксил это все так и пошло дело
 Uljahn: у меня чё-то со стрельбой не заладилось, но кажется я придумал, как сделать супербыстрый рандомный выбор клетки в заданных границах расстояний
 Uljahn: масочки-масочки, да не от короновируса, Automaton2000 
 Automaton2000: у тебя же там связи есть, ты их напряги чтоб серебро уже открыли
 tutubalin: "из багов было что я не закрашивал свой путь в точке которой появляешься"
такая же фигня )
 Uljahn: хм, у меня сразу закрашивает
 tutubalin: точнее, я после всплытия не закрашивал
 Uljahn: то есть?
 tutubalin: там как-то не очевидно в правилах про это было
 Uljahn: а, т.е. клетка после всплытия всё равно считается посещённой
 tutubalin: когда всплывал, полностью очищал поле. а надо ту клетку, где всплыл, считать посещённой
 Uljahn: вот этот есть баг
 tutubalin: у меня ещё был баг, когда бот стрелял на шару и попадал сам в себя )
 735487: у меня в себя не попадает потому что стреляет далеко всегда ))
 Uljahn: я думаю маску сделать на расстоянии от 2 до 4, обрезать с учётом карты, потом семплировать из того, что осталось
 735487: мне кажется это лишнее. все что тебе нужно это проверять можно ли дострельнуть из искомой точки до цели
 Uljahn: а если нельзя, рероллить рандом?
 735487: о я придумал и как путь хранить и не проверять при этом все подряд ))) скрестил свою идею с tutubalin ))
 735487: имхо если нельзя то вообще не стрелять. в идеале надо стрелять только когда уверен. иначе ты раскрываешь свое положение
 Uljahn: но ты же с рандомной стрельбой из вуд2 выходил?
 735487: да но я не уверен что она зарешала.
 735487: у меня там просто проверка 8 точек куда можно шмальнуть и рандомно одну из них. если нет ни одной то не стреляет
 Uljahn: тогда лучще займусь предсказанием противника
 735487: предсказание в любом случае делать
 Uljahn: полез в старые боты за готовыми решениями - нашёл codebusters бота на питоне 2, переписал и ресабмитнул :)
 Uljahn: +500 мест в голде
 735487: а что много общего?
 Uljahn: ну там у меня были numpy трюки полезные
 735487: а ты в codebusters ресабмитнул
 Uljahn: угу, а то он на днище скатился
 Uljahn: в голде почти 1к народа, нифига се
 kotobotov: здаров посоны
 kotobotov: ну что, как там КАРАНТИН?
 kotobotov: все на удаленке?
 tutubalin: о, сколько лет!
 kotobotov: ну я инногда заглядываюЖЕЖ)
 tutubalin: Карантин пати ин да хаус
 kotobotov: привет тутубалин
 aaafgcfg: тутубалин триз?
 Uljahn: тут спецконтест замутили для тех, кому в карантине заняться нечем
 Uljahn: го в лодочки
 aaafgcfg: ну блин 
 aaafgcfg: нас застаавляют делать конспекты лекций и практику в тетрадях и отправлять фотки на проверку
 Uljahn: фотки на плёночный фотик, проявлять печатать и по обычной почте отправлять?
 aaafgcfg: конспект из книжки которая называется конспект лекций по высшей математике
 aaafgcfg: да не я прост думал будет как у заочников
 Uljahn: можно GAN натренить, чтобы фотки лекций генерил по заданному тексту
 aaafgcfg: а локалраннер у лодочек есть или самому писать?
 Uljahn: есть рефери на гитхабе
 Uljahn: на джяве
 MadKnight: aaafgcfg чё делаешь?
 aaafgcfg: да так 1 курс матанализа
 Uljahn: дифуры, инегралы?
 aaafgcfg: а, в лодочках че планирую?
 aaafgcfg: поверхностный интеграл
 Uljahn: норм тема, криволинейные, тройные, по замкнутому контуру
 Uljahn: ни разу не пригодилось в жизни
 kotobotov: Уль, ну да, лодочки это интересно
 kotobotov: я уже почитал
 aaafgcfg: неприятно то что чем дальше изучаешь тем ненагляднее знания
 kotobotov: хотя тут одна контора курсы свои открыла бесплатные, я буду их проходить до лета (там дохера)
 kotobotov: на топ неебаться разраба
 kotobotov: так курс и называется "Фром зиро то ТОП НЕЕБАТЬСЯ РАЗРАБ"
 Uljahn: >бесплатные
 tutubalin: Neyebatso Inc.
 Uljahn: ух блин, если рандомная торпеда зацепит противника - это сильно сужает область поиска
 tutubalin: ага
 tutubalin: если не зацепит - тоже
 tutubalin: только что закончил это реализовывать )
 Uljahn: я-то думаю, как босс выпасает
 tutubalin: самое сложное - понять, попал или нет
 Uljahn: так хп в инпутах есть
 tutubalin: а если он всплыл?
 tutubalin: а если он сам себя шарахнул?
 Uljahn: тогда будет в инпутах всплытие и координаты его торпеды
 Uljahn: не?
 tutubalin: да, но надо это учитывать
 Uljahn: :)
 tutubalin: я пока случай, когда противник потерял здоровье, а мы оба стреляли, не стал реализовывать
 Uljahn: там ещё и мины
 tutubalin: ветвление сильно жёсткое
 tutubalin: вот-вот
 Uljahn: ахах у меня пока код прямой как лом
 tutubalin: если противник потерял два здоровья и мы оба стреляли, то это: http://chat.codingame.com/pastebin/971f9be7-3043-4f00-aa3a-2c5f9a131945
 tutubalin: если противник потерял два здоровья и мы оба стреляли, то это:
 tutubalin: - я попал чётко, он не попал
- он попал сам в себя чётко, я не попал
- мы оба попали нечётко
 tutubalin: - а ещё могут быть мины...
 Uljahn: координаты выстрелов известны же
 Uljahn: тупо маски наложить
 Uljahn: от коронавируса, Automaton2000
 Automaton2000: но у меня есть задумка
 tutubalin: я не говорю, что невозможно. я говорю, что геморроя много
 Uljahn: мне вот лень инпуты соперника парсить :/
 tutubalin: да там легко
 tutubalin: split('|')
 tutubalin: потом каждый из них split()
 tutubalin: первый элемент - команда, остальное - параметры
 Uljahn: угу, так и сделал
 Uljahn: теперь условия прописывать...
 tutubalin: всё, у меня бот пошёл выпаливать. бьёт как снайпер
 Uljahn: def crop(arr):
# remove zero rows and columns return arr[~np.all(arr == 0, axis=1), :][:, ~np.all(arr == 0, axis=0)]
 Uljahn: нойс
 Uljahn: теперь надо масочку двигать по карте и запоминать совпадения
 Uljahn: 2мс бот выжирает за ход
 Uljahn: с флудфилами через всю карту)
 tutubalin: да карта-то маленькая
 Uljahn: так флудфил не оптимизированный на питоне
 Uljahn: можно ускорить на порядок, наверное
 Uljahn: не вычислять соседей каждый раз
 735487: а я еще ничего не писал для бота сегодня :)
 Alex566: бывают какие-то общие практики по структурированию бота? А то у меня все попытки построить стейт машину со временем доходят до того что 1 стейт хендлит все
 Hamibar: Хоть какой-то плюс от вируса. Внеочередной контест!
 Uljahn: ну, контест слепили наспех, много багов
 Uljahn: и стартер ботов нету
 Hamibar: так я думаю за месяц исправят
 Uljahn: 1,540 CodinGamers have registered to this contest
276 сабмитнуло
 Hamibar: насколько я понимаю торпеда не совсем торпеда? Она прилетает в цель на том же ходу?
 Uljahn: приплывает, если длина пути не более 4
 Hamibar: Ага, спасибо. Понял
 Uljahn: энергия тратится в любом случае, насколько я понял
 735487: да энергия тратится
 735487: мне вот интересно это тот контест который планировался на май или в мае тоже будет?
 tutubalin: нет
 tutubalin: в мае вроде другой
 tutubalin: этот в экстренном порядке соорудили
 tutubalin: This challenge is the result of last-minute efforts from two well-known members of the community, Illedan and EulerscheZahl who were eager to improve an old game prototype from our product manager G-Rom. As you can guess, it may not run as smooth as usual. We'll try our best to ensure it does.
 eulerscheZahl: a random ping occured
 tutubalin: eulerscheZahl sorry )
 tutubalin: i quoted email
 eulerscheZahl: i can confirm it's not the may contest
 tutubalin: we were discussing is that the same contest that was planned for May or not
 tutubalin: thanks!
 Alex566: если у меня в списке последних боев один и тот же человек это означает что он засабмитился и меня на него нарандомило много раз или что он на мне тренируется?)
 735487: нарандомило
 tutubalin: тренировки в рейтинг не идут
 tutubalin: https://www.codingame.com/replay/441058063
 tutubalin: Yellow Submarine hunts Red October
 735487: как ты так быстро по нему попадать стал?
 Alex566: помимо поиска по трафарету еще какие-то проверки делают? emh меня как-то детектит хорошо при еще маленьких дистанциях :thinking:
 tutubalin: появились рядом, поэтому первое попадание - просто повезло. стрелял туда, где он теоретически мог быть, и он там правда оказался )
 tutubalin: а потом уже когда увидел, что попал, локализовал его очень чётко
 tutubalin: после прямого попадания, если не уходит в тишину, я точно знаю координаты
 Alex566: а если попадаешь в соседнюю клетку отсекаешь те варианты положения, которые по трафарету не накладываются?
 Alex566: как много проверок. Надо все заново переписать)
 tutubalin: ага. если в соседнюю - то остаются только 8 вариантов вокруг центра выстрела
 tutubalin: хорошая новость: если враг стреляет и здоровье у него не уменьшается, то я знаю, что в окрестности выстрела его нет
плохая новость: у меня там баг, в результате может получится, что бот считает, что у него вообще нет врага
 Hamibar: а какой максимальный power  возможен?
 tutubalin: зависит от девайса
 tutubalin: торпеда - 3
сонар - 4
сайленс - 6
мина - 3
 tutubalin: или ты про какой power?
 Hamibar: нет я имею ввиду тот, который при движении
 Uljahn: радиус silence?
 tutubalin: ты про mars lander? :)
 Hamibar: MOVE direction POWER в этой команде
 Uljahn: или про гоночки
 Uljahn: 100
 tutubalin: power - это название девайса, который заряжаешь
 tutubalin: не число, а стринг
 Uljahn: ахах, точно
 Hamibar: ааааа. xD теперь понятно
 Uljahn: один мув даёт одну единичку заряда указанному девайсу
 tutubalin: и вот выбрать, какой заряжать конкретно сейчас - тоже интересная задача
 Hamibar: я просто думал можно скорость регулировать
 tutubalin: напрямую нет
 tutubalin: в Wood 2 появляется девайс SILENCE, который позволяет потихому проехать до 4 клеток в одну сторону
 tutubalin: *в Wood 1
 Hamibar: да я понял уже, спасибо. Просто в  деревянной лиге нет SILENCE)
 Uljahn: если б тут ещё и скорость регулировать можно было, то это уже coders of the caribbean получились бы
 FeZar97: контест вчера чтоли начался?
 735487: да
 FeZar97: даже оповещение на почту не пришло(
 tutubalin: рассылали
 Valdemar: Тут целый месяц еще, ты не сильно опоздал
 KDaniiell: В Coders Strike Back точки могут появляться так, что они будут касаться/пересекать границы поля?
 TheCrucial: нету границ поля. улететь можно за край далеко, не стоит это вообще учитывать
 BorisZ: неожиданно начался контест, о котором так долго говорили все большевики )
 735487: нет это другой :)
 BorisZ: короновирусный
 input.txt: Может ли враг за один ход стрельнуть в себя торпедой, прыгнуть сайленсом, потом подвинуться в сторону и всплыть?
 input.txt: и как все это детектить?)
 tutubalin: может
 tutubalin: каждый приказ по очереди разбираешь
 input.txt: и порядок важен?
 tutubalin: конечно!
 tutubalin: вообще лучше SILENCE в конце делать. кроме случаев, когда ты его используешь, чтобы подплыть и добить
 Uljahn: это получается, за ход можно на 5 клеток продвинуться и на 4 ещё стрельнуть, да ещё сплэш, это 10 рейндж максимальный
 input.txt: ты сначала столько энергии накопи..
 Uljahn: 8 ходов, одна энергия в тот же ход накапливается
 tutubalin: почему не нужно выбирать начальную точку рандомно: https://www.codingame.com/replay/441122977
 735487: у меня по оценке выбирается ))
 tutubalin: вот выбор начальной позиции и движение у меня пока тупые
 735487: а я вообще до сих пор в дереве )))
 Uljahn: замутил такую штуку
http://chat.codingame.com/pastebin/02231358-5fd2-432f-aed3-41405ea4f02c
0 - вода, 1 - суша, depth - буферное расстояние до суши и границ
 xoposhiy: это зачем? начальную позицию выбирать?
 Uljahn: угу
 Uljahn: amurushkin: даже в дереве можно научиться чему-то новому :)
 xoposhiy: нынешний контест адски напомнил WonDevWoman.
 xoposhiy: А также у меня вопрос. Чего так сложно из дерева вылезти?! :(
 Uljahn: я тоже про WW вспоминал уже, а боссы жёсткие, потому что 30 дней контест
 tutubalin: сделал стелс режим.
теперь умеет использовать сайленс и не стреляет направо и налево без причины. но буст получился не такой значительный: с 14 места на 11
 tutubalin: тут надо какой-то баланс найти
 tutubalin: с одной стороны когда стреляешь, очень сильно выдаёшь себя
 tutubalin: обычно у стрелков, которые с самого начала раунда стрелять начинают, я уже после после третьего выстрела точно знаю позицию, пока он в инвиз не уйдёт
 input.txt: главное по себе не попадать - это как мишень на лбу
 tutubalin: это да )
 tutubalin: но! не попадая в себя ты всё равно уменьшаешь зону поиска
 input.txt: я не уверен, но если стрелять в одну сторону, зона не так режется
 tutubalin: от клетки выстрела смотрим все клетки с манхэттоновским расстоянием от 2 до 4. в худшем случае их будет 32
 tutubalin: но в реальности там есть острова, плюс информацию от предыдущих раундов
 tutubalin: в итоге остаётся 10-20 возможных клеток после первого выстрела
 tutubalin: круче чем сонар и почти идентично всплытию, иногда даже хуже
 735487: а после 3 как в геолокации уже можно знать положение :)
 tutubalin: вот-вот )
 input.txt: (древняя шутка про ракету "земля-провайдер")
 735487: расскажи шутку
 input.txt: к сожалению, это единственное что я оттуда помню(
 MadKnight: https://tvrain.ru/news/moskva_24_pokazala_intervju_s_koronavirusom-505096/
 735487: кому то нех делать
 735487: гугл говорит что вот: Ученый-компьютерщики решили облегчить жизнь юзеров и создали ракету системы "Земля - Провайдер".
 735487: на том и все
 Uljahn: баллистическая шутка, Automaton2000
 Automaton2000: да я не про то
 input.txt: А, значит про пеленг по mac-адресу это было что-то другое..
 Uljahn: триангуляция по пингу
 MadKnight: так вот как решать batman pt.2
 MadKnight: amurushkin твои шутки - это уже не шутки
 MadKnight: cyka blyat
 MadKnight: amurushkin это уже сюжет терминатора 6
 MadKnight: там они решили нанести ракетный удар по программе в интернете
 Uljahn: сценарий уровня роскомнадзора
 735487: MadKnight: это не мои шутки не бомби
 tutubalin: кстати, лайфхак
 tutubalin: если температура и кашель и звонишь в скорую - тебя пошлют нахер, скажут что ОРВИ
 tutubalin: сиди, мол, дома и не мешай работать
 MadKnight: прям из дома можно больничный получить?)
 tutubalin: а если пойти в кафе, покашлять и позвонить в роспотребнадзор - сразу приедут люди и увезут лечиться
 BorisZ: надо по итальянски говорить просто - приедут как миленькие
 tutubalin: я по-итальянские знаю только вафанкуло, кацо
 tutubalin: или как-то так
 BorisZ: а что сначала свое движение или своя торпеда взрывается?
 BorisZ: как в себя то не пульнуть?
 tutubalin: а в каком порядке напишешь, в таком и произойдёт
 BorisZ: не в жить бв не догадался )
 MadKnight: а, так можно пальнуть вперёд, потом сделать move и самоподорваться?)
 BorisZ: gracio
 tutubalin: чтоб самоподорваться, надо стрельнуть прямо туда, где стоишь
 tutubalin: если сперва пальнуть (далеко), а потом потойти - всё ок
 tutubalin: а если сперва подойти, а потом забыл, что подошёл, и стрелять из начальной точки - то можно и в себя попасть
 tutubalin: короче, ты даёшь список действий
они выполняются одно за другим. после каждого действия состояние игры меняется
но игроку сообщается только финальное состояние, после совершения всех действий
 Ramdeath: жми submit
 Uljahn: чё-т не получается разобраться с привязкой координат противника к траектории, надо пробросить через три системы координат, или там можно как-то проще, но башка не варит уже :crying_cat_face:
 Ramdeath: :)