Chat:Ru/2020-04-13

From CG community
Jump to navigation Jump to search

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: он точно чето тестит)

Default avatar.png Tecarlo: А если мы на предыдущем ходу взорвали мину и одновременно выстрелили торпеду, то можно ли узнать, чем именно мы попали?4

Default avatar.png Tecarlo: если у противника стало меньше здоровья*

Uljahn: нет

Uljahn: но можно узнать, где противника точно не было в момент выстрела

Default avatar.png Tecarlo: Это если у него столько же здоровья, сколько и было раньше?

Default avatar.png Tecarlo: тогда его точно не было рядом с выстрелом торпеды и с взорванной миной

Uljahn: если уменьшилось - то он оказался в одной из зон взрывов, он в какой именно - не известно

Uljahn: *но

Uljahn: если при этом сам противник стреляет или триггерит мину, всё становится интереснее

BorisZ: да вроде единообразно, строишь карту урона до движения врага, потом карту урона после движения врага и фильтруешь пути в обоих случаях

BorisZ: а кто стрелял и чем не важно

BorisZ: хотя нет, вру

Default avatar.png Tecarlo: какие пути?

BorisZ: надо до движения только

BorisZ: ну позиции может быть, если путей нет

Default avatar.png Tecarlo: у меня для каждой клетки считается, может ли там быть враг или нет, при чём тут пути?

BorisZ: у многих сделано так что позиция - это конечная точка пути

BorisZ: ну нет путей и нет, не важно

BorisZ: отбрасываешь из этих возможных позиций те которые не соответствуют полученному урону

BorisZ: я не фильтрую ничего если были взрывы после движения врага - не придумал как

BorisZ: а все взрывы до движения - легко фильтруются

Default avatar.png 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:

Default avatar.png 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: (ладн шуткую:) )