Chat:Ru/2020-04-13
tutubalin: поэтому многие во время сайленса или не двигаются, или двигаются на 1.
BorisZ: что-то не нравится мне метод со счетчиками, простой контрпример:
BorisZ: позиция уже известна точно, враг поставил мину из точки 1-1, потом черз несколько ходов поставил мину из точки 2-2
BorisZ: затем уехал куда-то, все остальные мины далеко
BorisZ: потом получили триггер 2-1, затем триггер 1-2
BorisZ: по методу счетчиков у нас еще там могут оставаться 4 мины
BorisZ: хотя если сверху посмотреть то очевидно что мин там нету
tutubalin: вот-вот1
tutubalin: я тоже думал над этим, но отказался
tutubalin: храню мины для каждой траектории отдельно. когда мина взрывается, для каждой траектории, где эта мина могла быть поставлена, для каждой возможной мины создаю новую траекторию - без этой мины
BorisZ: сложно, у меня нет траекторий, только точки. пока туманные мысли что надо какой-то граф мин строить и искать в нем connected components, как бы облака мин, которые могут пересекаться
BorisZ: в моем примере будет 1 компонента из двух мин, если в ней 2 взрыва то можно все удалять
Uljahn: а ты сохраняешь состояние точек на момент установки каждой из мин?
BorisZ: да, историю точек храню и каждый ход пробегаю назад пытаясь сузить
Uljahn: т.е. всё равно траекторию строишь, только в обратном направлении?
BorisZ: не, траектория это все же последовательность положений
BorisZ: а уменя послетовательность наборов позиций
BorisZ: может конечно это вопрос терминологии )
wlesavo: BorisZ нене, ты не понял, или я описал коряво ставится мина, ты запоминаешь. при расчете что отсюда поставлено, и дальше считаешь сколько вокруг этой точки может быть мин, то есть сколько еще есть неотсеченных диагональных позиций постановки
Uljahn: диагональных? :confused:
wlesavo: ну тех из которых можно мину поставить на ту же точку что и отсюда
wlesavo: тоесть как в примере 1,1 2,2
BorisZ: в моем примере когда ставится мина из позици 2-2 - что происходит? мы знаем что могут быть 2 мины рядом
Uljahn: т.е. у нас в точке 1,2 и 2,1 будет счётчик 2
BorisZ: счетчик не для мин а для позиций из которых мины ставим не?
Uljahn: блин, точно
BorisZ: то есть когда в 2-2 ставится мина - для него счетчик будет =2, видимо надо и дл я1-1 то же сделать
wlesavo: есть 2 позиции, счет взорванных у них ноль, ты при проверке смотришь что ага, две диагональные, взорванных ноль, оставляем. взоравал одну, для обоих позиций счетчик увеличился, но меньше чем этих позиций, оставляем
wlesavo: ну и те мины которые без дубликатов взрываются легко тоже отсекаются
Uljahn: это только для диагональных (и ромбических) паттернов? сурфейс должен сильно влиять, наверное
Uljahn: лол, меня один чел пушит в голду, счёт с ним 32/0
wlesavo: у меня так с кови в серебре было
wlesavo: 0/32 только
wlesavo: а ну, не только диагональные, я забыл еще про равноудаленные, по сути все клетки на расстоянии 2 по бфс нужны
Uljahn: точно
wlesavo: короче да, просто прикрутить счетчик не получится, в итоге аналогично тому что у меня все равно
tutubalin: мой бот наиболее успешен против тех, кто появляется в центральной точке: https://www.codingame.com/share-replay/448943207
tutubalin: читак: https://www.codingame.com/share-replay/448943326
735487: прикольно :)
wlesavo: засабмитил золотого босса в легенду, ща посмотрим где приземлится
wlesavo: вроде не так уж и плохо идет
wlesavo: но и не хорошо
Valdemar: босс хороший, за выходные 1 человек в легенду прошел)
735487: я пока застопорился даже не знаю в какую сторону смотреть в плане улучшений
wlesavo: не могу придумать как симу битвы сделать
wlesavo: ничего в голову не идет
wlesavo: о, еще один человек прошел кстати
735487: кто?
wlesavo: kangou
735487: вот зараза сам прошел а нас не взял )))
735487: босса чуть спустил но и меня тоже :)))
735487: я заметил что есть битвы в которых проигрывает тот кто первый стрельнул. а есть наоборот кто первый попал тот и выиграл
wlesavo: засабмитил босса на 12ое место, лол
735487: wlesavo: симу битвы можно сделать если знаешь точное положение и примерно его зарады.
735487: не хилый босс )) пока одолеешь сразу в топ легенды )))
wlesavo: там чето обсуждали без точного положения, типа симулируешь против всех возможных
735487: я вот думаю реально сделать так чтобы я в противника стрелял и сразу отходил на безопасное расстояние?
735487: против всех симить это жестко
wlesavo: ну бластер говорил что там вовремя прунить надо лишнее
wlesavo: всеравно не представляю как это
wlesavo: то есть надо и ход и выстрелы
wlesavo: хотя, хм
wlesavo: есть простая идея
wlesavo: или нет
wlesavo: хз чето даже
735487: для простоты можешь считать что он всегда старается сблизиться и выстрелить
735487: в идеале надо ходить так чтобы он стрельнул и попал на 1 а ты сразу бац на шаг к нему и на 2
wlesavo: у меня ща кстати сделано что если торпеда заряжена и я хочу стрельнуть, то всегда сначала стреляю потом хожу и заряжаю торпеду
735487: угу я тоже так сделал вчера. присмотрелся к боссу и понял что он стреляет чаще чем я потому что заряжает чаще
735487: и мины тоже так стал чаще ставить
wlesavo: у меня просто были ложные заряды изза бага с порядком действий, пытался зарядить заряженную ракету и потом стрелял
wlesavo: потом подумал что если ты первый стреляешь то лучше сразу начать заряжать
735487: у меня были попытки стрелять 2 раза и по 2 мины откладывать :)
735487: держим пальцы 0.1 разница с боссом. кто то хорошо его скинул
Alex.swift: ого, крут
735487: да то я не крут а временно босса спустили. теперь обратно запушили ((((
735487: а мне повезло а мне повезло я в леге
735487: 0.02 valdemar отстает :)
Alex.swift: какие изменения помогли так продвинуться?
735487: Ocean of Code 06D 20H 37MN 52SCLegend LeagueRank 1 305 классный баг
735487: никакие меня запушили просто
735487: XLP босса спустил хорошо
wlesavo: валдемар тоже в леге, норм
735487: что то я в леге на 25 месте аж )))
wlesavo: я был на 10 из 10 когда прошел)) все винрейты отрицательные, дизмораль прям
735487: валдемар на 13 уже а я на 25. :))) жесть как я там вообще в голде на 2 то удерживался тогда
BorisZ: amurushkin Valdemar :muscle:
BorisZ: можно сказать запушили, а можно сказать - проявил недюжинную выдержку )
735487: если я 3 раза подряд обыграл босса значит ли это что мой бот стал круче?
Valdemar: К сожалению, нет)
Valdemar: 3 раза недостаточно большая выборка, но тенденция хороша
wlesavo: босс на 13-14 месте сабмитнулся сегодня, так что не думаю :slight_smile:
Valdemar: тесты с предыдущей версией +- достоверны
Valdemar: если много гонять
735487: ухты сабмит только с 4 поражениями на старте в леге :)
735487: о кажись что то изменилось. уже на 15
wlesavo: а я подсел на бенчмаркинг, так приятно когда все настроено, два клика запустил и работает
735487: надо будет попробовать себе настроить. мне раньше cg spunk нравился
wlesavo: отказался все таки от идеи симуляции, потестил против тех кто точно симулирует и не заметил большой разницы, в редких случаях видно что решает, но при этом видно что неидеальная симуляция кое где хорошо вредит
wlesavo: amurushkin там не сложно, есть даже уже скомпиленный джар, просто конфиг ему подправить и все, у меня была проблема что я название языка с пробелом пытался написать
wlesavo: в остальном сразу запустилось
735487: чуток спустили на землю ))
735487: баг нашел у себя. туда где надо было передавать int передаю char. из за этого неправильный обсчет идет и теряю сам себя
wlesavo: лол
wlesavo: ща как ресабмитнишь
735487: да не сильно ничего не изменится на самом деле :)
735487: короче у меня для финишера самотрекер какой то пипец вообще )) теперь не потерял себя после фикса а не сдвинул с места да еще и путей добавил после обычного мува )))
wlesavo: а зачем тебе в финишере самотрекер?
735487: а у меня он сразу применяется по ходу поиска
735487: потом если не нашел то откат а если нашел то идет на следующий тик
wlesavo: не понял
wlesavo: если нашел то игра закончилась же
735487: не совсем. это не столько финишер сколько поиск можно ли нанести дамаг с прыжком из комбинаций с сайленсом
735487: мораль такова - если ты уверен в том как код работает не помешает проверить в дебаге )))
wlesavo: а, типа симуляция боя, но я почти уверен что стрельба после сайленса вне финишера очень плохая идея
735487: блин чем дальше тем веселее. знаешь откуда ходы прибавляются? сайленс типа делает )) только вывод не туда ))
735487: ну у меня там было и поиск без сайленса до стрельбы тоже
wlesavo: у меня было похожее, делал сайленс на 0, а думал что на какуюто длинну и эти клетки считал посещенными
wlesavo: заметил только изза странных серфейсов
735487: копипасты зло )) все эти баги последние это результат копипасты ))
735487: хехе сходу kovi и jolindienа обыграл :)
735487: только это везение
735487: у меня еще было идея что спавниться нужно по другой схеме
735487: нужно поделить карту на 2 части и по разделу сразу мины ставить
735487: типа отгородить для себя территорию
tutubalin: поздравляю! меня на шестое запушили. ща кое-чего улучшу и может быть к вам присоеденюсь
tutubalin: на шестое в голде
735487: вовремя ресабмитнул называется )) полтора десятка игр против pb4 и illedan ))
735487: да удивительно что тебя так пушат вверх
tutubalin: после сабмита был 60-й. уже 6-й )
wlesavo: но босса тож чуть подпушили так
Alex.swift: это за какое время?
735487: походу надо думать как передвигаться получше и мины ставить
735487: wlesavo: что ты там такого засабмитил что мой прямо неплохо против тебя играет даже?
wlesavo: тестирую версию с эвалом на движении
735487: https://www.codingame.com/share-replay/449144470 капец мой дичь творит ))
735487: а рассмотрел что это он мину пытается поставить куда нельзя ))
735487: попробую ставить мины всегда по кулдауну а не только по оценке как раньше
wlesavo: так и не заработал эвал, я сдался
735487: https://www.codingame.com/share-replay/449148234 ахаха раздел территории
Alex.swift: https://www.codingame.com/replay/449141354 странная ситуация на 54 шаге. Стреляю в клетку за 2 углами (12, 12) и не достреливаю, но вроде как должен же
Alex.swift: не, туплю. Надо смотреть прямое соединение
BorisZ: оптический обман, чувак в озере заспавнился
Uljahn: а взрыв по диагонали проникает же?
BorisZ: я не уверен но у меня считается что проникает
735487: нашел еще баг при котором сам себя взрывал вместе с врагом а мог бы и выжить
735487: по идее должен если там взрыв не считается через графами
735487: так либо еулер что то тестит либо я крут )) 3-0 с ним на сабмите
Valdemar: BorisZ сплеш точно бьет по диагонали
wlesavo: он точно чето тестит)
Tecarlo: А если мы на предыдущем ходу взорвали мину и одновременно выстрелили торпеду, то можно ли узнать, чем именно мы попали?4
Tecarlo: если у противника стало меньше здоровья*
Uljahn: нет
Uljahn: но можно узнать, где противника точно не было в момент выстрела
Tecarlo: Это если у него столько же здоровья, сколько и было раньше?
Tecarlo: тогда его точно не было рядом с выстрелом торпеды и с взорванной миной
Uljahn: если уменьшилось - то он оказался в одной из зон взрывов, он в какой именно - не известно
Uljahn: *но
Uljahn: если при этом сам противник стреляет или триггерит мину, всё становится интереснее
BorisZ: да вроде единообразно, строишь карту урона до движения врага, потом карту урона после движения врага и фильтруешь пути в обоих случаях
BorisZ: а кто стрелял и чем не важно
BorisZ: хотя нет, вру
BorisZ: надо до движения только
BorisZ: ну позиции может быть, если путей нет
Tecarlo: у меня для каждой клетки считается, может ли там быть враг или нет, при чём тут пути?
BorisZ: у многих сделано так что позиция - это конечная точка пути
BorisZ: ну нет путей и нет, не важно
BorisZ: отбрасываешь из этих возможных позиций те которые не соответствуют полученному урону
BorisZ: я не фильтрую ничего если были взрывы после движения врага - не придумал как
BorisZ: а все взрывы до движения - легко фильтруются
Tecarlo: да, я теперь понял, что делать если стреляли и торпедой и миной. А в каком случае будут взрывы после движения врага? Это если он сам взрывал свои мины/стрелял торпедами?
BorisZ: да, например ты взорвал мину, потом пальнул торпедой, потом враг сходил и сам пальнул торпедой куда-то - такие случаи я пропускаю просто если был какой-то урон
BorisZ: если урона не было то все фильтруется так же
735487: BorisZ: почему пропускаешь? научить фильтровать?
BorisZ: не понятно же когда был урон получен - до мува или после?
BorisZ: каким фильтром фильтровать?
BorisZ: если был урон конечно, если не было то все ок, не забыть передвинуть позицию просто
735487: смотри у меня для каждого пути есть еще хп. вот при мувах ты двигаешь точку а при взрывах считаешь урон если он по ней попадает. потом убираешь все пути где хп отличается от того что должно быть
BorisZ: ну смотри твои позиции в прямоугольнике от 0 до 6 по х и от 0 до 3 по у, взрыв 1-1, потом мув потом взрыв 3-1, урон 1
BorisZ: откинуть можно только один из двух центров взрывов разве
BorisZ: тоже хлеб конечно
BorisZ: непонятно описал?
BorisZ: второй взрыв не 3-1 а 4-1, ошибся
BorisZ: два непересекающихся взрыва для простоты
735487: ну а как еще? отсекаем только то что точно можно отсечь. остальные пути отсекутся потом
735487: на самом деле такой способ отсечет все пути которые не подходят под данный сценарий
BorisZ: да, наверное можно было заморочиться
735487: тут не особо заморачиваться. я это все закодил минут за 5-10
StepanSmirnov: Можно обыграть все случаи. есть по 3 маски (от 0 до урона) на каждый из взрывов. После мува маски сдвигаются, после сайленса "размываются" во всех возможных направлениях. В конце раунда считаем все комбинации, дающие полученный урон и для каждой находим пересечение масок. Типа 2 если урона и было 2 взрыва, мина&торпеда + только мина + только торпеда.
BorisZ: в смысле взять весь урон до мува - 1я маска, взять весь урон после мува - другая маска, сдвинуть вторую маску в направлении мува
BorisZ: наложить друг на друга - получится общая карта урона?
BorisZ: надо подумать так ли это может правда это простое решение
tutubalin: урон может быть от нашей торпеды, от его торпеды, от нашей мины, от его мины урон может быть на 1 или на 2
tutubalin: плюс урон от всплытия
tutubalin: мне кажется в голде после промаха противника имеет смысл стрельнуть в себя, чтобы сломать врагу трекинг )
tomatoes: вычитаешь здоровье своими действиями. потом вычитаешь действиями врага. дропаешь где здоровье не сходится :rolling_eyes:
Tunez: tutubalin сколько строк уже?
tutubalin: 1549
tutubalin: ну это с пустыми
tutubalin: tomatoes а если ты попал во врага торпедой, он после этого переместился мувом, потом попал сам в себя торпедой, потом переместился сайленсом, потом попал сам в себя миной?
tutubalin: у меня такой случай корректно обрабатывается )
tomatoes: вроде да, без эвристик (или чего-то подобного) же всё
MadKnight: ну чё посоны как успехи?
MadKnight: tomatoes а ты тут откуда
MadKnight: и вообще кто ты
MadKnight: и откуда ты
MadKnight: и кто ты
MadKnight: и откуда
MadKnight: Automaton2000 что правильно спрашивать у новичков?
**Automaton2000 slaps madknight around a bit with a large fishbot
MadKnight: Automaton2000 da ty ohuelk
Automaton2000: это типа для файлов проекта
MadKnight: tomatoes ты же в кораблики игарешь?
Bzn0r: да думаю с какого контеста начать
Bzn0r: Мед что посоветуешь?
Bzn0r: (ладн шуткую:) )