Chat:Ru/2020-04-12
tutubalin: Лайфхак. Взял скриптик, который склеивает несколько Java-классов в один файл. Поставил расширение для синхронизации CG с файлом.
tutubalin: Редактирую код в Idea, всё нормально структурировано, а не длинная портянка - и сразу в CG доступна исполняемая версия.
tutubalin: Единственная проблема пока - не поддерживаются пекеджи. Поэтому все классы в одной папке.
Valdemar: 3pt до босса, так близко итак далеко)
tutubalin: золотого босса понерфили что ли?
tutubalin: как-то у меня место резко вверх пошло
wlesavo: не, как его понерфят
wlesavo: но за вчера никто в легенду не прошел
tutubalin: хмм...
tutubalin: я просто так со 157 места поднялся до 94
Uljahn: а я со 170-го до 50-го
Uljahn: а, вы про голду
tutubalin: может быть забанили клонов?
Uljahn: да просто пушат сильно на рандоме, наверное
tutubalin: ну не до такой же степени! )
Uljahn: а ты ресабмитил потом?
wlesavo: может изменение в птс небольшое, а изменение в месте большое изза того что много близких по птс
tutubalin: сейчас уже новую версию засабмитил
wlesavo: я вот думаю сдаться в битве за топ 10, больно тяжело, без симы боя и хороших эвалов уже вообще не понятно что делать
tutubalin: нейронку тренировать
Uljahn: чтобы тренировать, сима нужна
Uljahn: или миллион реплеев
tutubalin: рефери ж есть
amurushkin: у всех свои нюансы. я вот думаю бросить пытаться пройти в легу ))
tutubalin: да лаааадно
tutubalin: ещё 7 дней
tutubalin: обычно весь контест 7 дней идёт
tutubalin: времени полно ещё
735487: просто те фичи на которые я надеялся я запилил как то хреново и тупо не могу осилить
Uljahn: скоро кто-нить запилит анти-босса и спамсабмитами затолкает кучу народа в легу
735487: я вчера до обеда легко доходил до 3 места. теперь в 10ку не могу ))
tutubalin: я вчера был на двести-каком-то месте в серебре
tutubalin: сегодня уже 64 в золоте
BorisZ: съел чего-то не то, ясное дело
tutubalin: прогресс!
tutubalin: джава кстати ничо так. я почему-то её боялся
wlesavo: я со смазкой в 10ку влажу, но не долго осталось
735487: я от джавы отказался из за сборщика мусора
MadKnight: это когда он зависал на минуту, очищая твои 700МБ мусора?
MadKnight: и таймил твоего бота?
735487: вот не надо сразу пытаться обсирать. не юзал я столько памяти. и я задолбался все время писать код чтобы не дай бог лишний раз нигде новый обьект не создать.
MadKnight: что значит обсирать
MadKnight: ты же сам сказал - сборщик мусора
MadKnight: и я сказал - он собирал мусор
MadKnight: что не так?)
BorisZ: сборщик так топорно не работает, worldstop очень редко бывает, надо специально стараться
MadKnight: ну может у тебя там в каждой симе по паре объектов новых создавалось
MadKnight: или массивы какие копировались
MadKnight: new GameState() делал
BorisZ: я когда на го писал бота - мерял специально, каждый раунд не более 0.3 мс занимал - в уттт, врад ли в джаве он хуже, скорее наоборот
735487: го напиши хоть один мульти на java для начала и покажи как надо
MadKnight: надо было создать 1 GameState и копировать в него
MadKnight: всм 1 копию основного GameState
MadKnight: и просто её перезаполнять
MadKnight: neumann так делал в StC
735487: я кучу контестов написал на java а перед этим еще кучу на питоне. и я не жалею что перешел на плюсы
MadKnight: в общем делать не new GameState(orig) а orig.CloneInto(testState)
MadKnight: и там задать всем массивам capacity
735487: мэд иди пиши на java кто не дает? а для контестов это нервотрепка
MadKnight: neumann кстати тоже с java на плюсы перешёл
MadKnight: специально плюсы выучил
MadKnight: так многие здесь делают
735487: вот и я пошел и выучил плюсы
tutubalin: я пошёл выучил плюсы, но удовольствия не получаю
tutubalin: все эти поинтеры, референсы
tutubalin: компилятор постоянно ругается
tutubalin: а если не ругается, то ещё более страшно. значит где-то прокосячил
tutubalin: с объектами на яве - это да. тоже поначалу стремался объекты создавать
tutubalin: но вот в Ocean of Code самый долгий ход - 10ms
735487: я просто пытался написать симу для MeanMax и генетику. получился пиздец :)
tutubalin: сборщик мусора лагал?
735487: да включался все время неожиданно и симы проседали всегда сильно.
735487: а еще напрягало что на одном и том же сиде могло быть то 30к сим то 60к например. очень большая разница
Uljahn: тогда и на питоне были жуткие лаги, скорее всего это были последствия переезда на новые серваки
Uljahn: процы троттлились или типа того
metahom: кстати. сейчас решил замерить время своего хода. у мееня частенько превышает 50 мс. иногда даже больше 100 выходит. почему бота не грохают?
Uljahn: после первого инпута начинаешь замерять?
Uljahn: в Mean Max часто наблюдал, как с 10-15 мс на ход внезапно подскакивало до 50-60 мс на пару ходов, и дальше опять 10-15 мс, сборку мусора отключал, не помогало
metahom: кстати нет. до первого
metahom: а откуда надо? после первого инпута?
Uljahn: да
Uljahn: во время первого инпута исполнение твоего бота приостанавливается, мне кажется, и исполняется код соперника + рефери
metahom: о, так лучше. спасибо
amurushkin: wlesavo подскажи как твой босс сало заряжает? никак не подстроюсь то твой чаще его делает то мой :)
amurushkin: понаблюдал за боссом кучу всего у себя поменял :)
amurushkin: теперь быстрее заряжает ракету :)
wlesavo: amurushkin ну пользует после выстрелов, получения урона и просто когда мало позиций в селфтрекинге, еще отдельно проверяю если сало чуть недозаряженное, могу потратить ход чтобы его зарядить даже если ракета не заряжена
735487: вот у меня почти также уже. стараюсь держать чтобы юзнуть после выстрела и дозаряжать его
735487: у меня теперь баги вылезают типа сайленс на 5. выполнил 2 одинаковые команды ))
735487: о награрока пропихнули
BorisZ: wlesavo что ты по поводу убирания мин объяснял, напомни пожалуйста
BorisZ: вот есть список ходов, на которых были поставлены мины, внутри список пизиций на которых может стоять мина
BorisZ: случился триггер - если позиция только раз встречается то понятно что мину убираем, а если несколько раз то что-то там со счетчиком
BorisZ: увеличиваем счетчик у всех ходов где позиция встетилась, а дальше то - когда убирать будем?
wlesavo: для каждой точки считаешь сколько раз из нее мину поставили, потом когда мина взрывается у всех точек вокруг счетчик уменьшаешь
wlesavo: я делаю так что если дубликаты есть, то их запоминаю, отдельно, и после каждого взрыва перепроверяю, потому что там где был дубликат может от этого взрыва уже не быть дубликата
wlesavo: что-то в этом духе
735487: там есть неприятный кейс. когда пути были во 2 и 4 ряду. а мины в 1 и 5. то в 3 будет происходить коллапс при таком рассчете
wlesavo: ну в общем от всех фантомов надежно избавиться тяжело
wlesavo: не уверен что возможно
wlesavo: но лучше избавить плохо чем совсем не избавляться
tutubalin: возможно
735487: ухты сабмитнул и забыл. открываю а я там 2 ))
735487: против босса 7-2 не в мою пользу ((
735487: 0,95 разница. буду ждать наверное может запушат
tutubalin: у меня мины надёжно обрабатываются. даже если стоят рядом.
tutubalin: и даже если противник стрелял, я стрелял, и оба взорвали мины, у меня всё равно правильно просчитает возможные пути с учётом полученного урона
735487: мы немного про другое
tutubalin: и убираются тоже
tutubalin: ещё заметил, что некоторые боты ставят мину всегда с одной стороны
735487: вот смотри как бы убирешь если чел ставит мину в точке 2,2 и потом в точке 4,2. он там сам стоит. потом проиходит взрыв в точке 3,2. из какого пути ты мину уберешь?
tutubalin: есть идея запилить в бота, чтобы он наблюдал, какая сторона чаще используется противником, и учитывать это тоже
tutubalin: > из какого пути ты мину уберешь? из обоих
735487: из обоих убираешь и теряешь 1 мину из внимания. у тебя ее нет а она на поле
tutubalin: я из этой траектории делаю две: в одной мина на 2,2 убралась, в другой на 4,2
tutubalin: квантовая механика )
tutubalin: и там и там мина как бы и есть и как бы и нет
Valdemar: amurushkin правильно делать сплит на несколько состояний, в каждом из которых убирать по 1 мине
Valdemar: но мне было лень, поэтому я в таком случае мины не убираю
735487: а я убираю одну из них как повезет )))
Valdemar: тогда трекер может сломаться
Valdemar: может быть ты убрал не ту
735487: это зависит на карту минного поля а не на положение противника
Valdemar: ааа, ты по минам противника не отслеживаешь?
Valdemar: у меня это все в одном месте
Valdemar: по трекеру минное поле строится
735487: отслеживаю но вроде перестал терять уже
735487: а вспомнил
735487: я убираю счетчик поставленной мины из одного места а сам путь не убираю. только если точно уверен
735487: вобщем это вроде бы сейчас не то место из за которого не получается босса одолеть :)
Tunez: А вы прям полностью пути противника храните или только где он может быть?
735487: полностью
tutubalin: в первой версии на питоне хранил только конечную точку
tutubalin: сейчас конечная точка + матрица посещённых мест + список мин
Tunez: сайленсом нельзя положить по памяти?
tutubalin: нет
tutubalin: отсечение получается лучше в этом случае
Tunez: а список мин откуда берешь?
tutubalin: я храню не сами мины, а те места, откуда они были поставлены
tutubalin: соответственно сама мина где-то по соседству
Tunez: но как бы не знаешь где даже противник находится
Tunez: расположении мин не будет слишком рандоным?
735487: постепенно варианты сужаются и противник обнаруживается
Tunez: хотя, если всё отсекать может и получится добыть информацию
Tunez: а можно ещё один вопросик
Tunez: вы писали стрельбу по себе?
Valdemar: да, иногда лучше пробить на 2 задев себя
Valdemar: Да, несколько лет назад закончил его)
Tunez: а строк кода уже сколько вышло?
Valdemar: 2,5к
Valdemar: я скриптом собираю из нескольких файлов, поэтому не экономлю
Valdemar: там еще самописные вектора и прочее
Tunez: Самописные вектора - звучит жестко
Valdemar: максимальный путь тут не нужен
tutubalin: "но как бы не знаешь где даже противник находится" для каждой возможной траектории - свой список мин
tutubalin: когда взрывает мину - отсекаю те траектории, где он не мог поставить мину
735487: не хотят меня пушить в легу :) скинуть пытаются
**tutubalin скрестил пальцы )
tutubalin: ого. а меня наоборот пропушили до 24 места уже
Tunez: а как вы несколько исходников в один объединяете?
Valdemar: самописные скрипты
tutubalin: я взял чей-то готовый, но он был кривой, переписал под себя
Tunez: а сайленс посещает клетки на своём пути?
735487: да