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: :)