Chat:Ru/2020-03-28
metahom: привет. подскажите по правилам контеста. какой порядок совершения действий? если я плыву и оставляю мину, я сначала перемещаюсь, или сначала оставляю мину? или в том порядке в котором отдаю команды?
BorisZ: в том же порядке что команды отдаешь
BorisZ: можно в одном туре дозарядить например торпеду и пульнуть
metahom: прикольно :)
metahom: а когда стреляешь/триггеришь, сначала взрыв или ход противника?
BorisZ: ты стреляешь или триггеришь в свой ход
BorisZ: рефери ходы не параллельно обсчитывает а по очереди
BorisZ: как в шахматах
metahom: ясно, спасибо
metahom: видимо показалось
MadKnight: smirok запилил?
metahom: MadKnight, а ты почему в контест не играешь?
MadKnight: да занят был
metahom: а будешь?
MadKnight: почему бы и нет
MadKnight: а у тебя как успехи?
metahom: ничего не получается :)
MadKnight: почему?
metahom: вот пытаюсь понять
MadKnight: типа код не работает?
metahom: да нет, много надо всего апгрейдить. и не понимаю, что делать если противник активно сайленс юзает
Uljahn: мины ставить, потом минами и сонаром отсекать, не?
Uljahn: на сники много зарядов уходит, т.е. активный сайленс == мало мин
metahom: наверное да. но сонар отсечет 1/9 вариантов (если не угадал). мина и того меньше
amurushkin: metahom: на самом деле если следить за его путем и где он может быть то сонар отсечь может намного больше да и мина тоже
metahom: наверное да. надо сонар подключать
BorisZ: у меня сонар не получилось завести, намного хуже с ним стало, видно руки кривые
BorisZ: меньше мин получается видимо хз
BorisZ: мины всех не только отсекают но и урон наносят
metahom: топы активно сонар юзают
amurushkin: я сонар в итоге отключил. мины лучше выходит
BorisZ: угу, я тоже - обработку оставил, но не заряжаю нафиг
metahom: как-то это сложно получается. что качать, в каких ситуациях
metahom: опять куча ифов
BorisZ: угу та же проблема, надо будет потом серьезно думать, разбирать по ситуации текущей
BorisZ: пока фигня - по реплеям регулярно фидно что когда надо стрелять я сайленс заряжаю а когда бежать - мину
amurushkin: заряжай стрельбу всегда первой чтобы было готово в любой момент
metahom: столько всего писать что руки опускаются
gybson_samara: и не говори
wlesavo: я тут понял что часто стреляю после сайленса
metahom: и обидно что первые выхи пропустил, все уже далеко вперед ушли
MadKnight: Uljahn
MadKnight: я могу в питоне из tuple'ы взять по индексу элемент?
Uljahn: да
Uljahn: тупл как список, только иммутабельный
Batya_S1: парни скажите как создавать нейронки если нельзя сохранять значения массивов в песочнице
Uljahn: создавать локально, загружать веса в код
MadKnight: на локалке
MadKnight: Uljahn если я хочу обрезать последний символ, то надо делать str[:-1] или -2 ?
Uljahn: :-1
MadKnight: а если хочу взять последние 2 символа?
MadKnight: [-2:] ?
Batya_S1: не совсем понял 'на локалке'
MadKnight: на компе домашнем
MadKnight: запускать код
MadKnight: и игру
Uljahn: Мэд, правильно
MadKnight: не на сервере
MadKnight: а на каком языке ты пишешь?
MadKnight: ну запускать питон на компе
MadKnight: и скачать referee
MadKnight: исходники игры всмысле
Uljahn: на гитхабе есть движок игры на джяве, переписываешь на питон и запускаешь локально
Uljahn: угу, рефери
amurushkin: а разв не [:-2] ?
MadKnight: да не обязательно на питон переписывать, просто запустить надо
MadKnight: смотри, тебе нужен скрипт
Uljahn: amurushkin: это до препоследнего
Uljahn: *пред
MadKnight: который будет запускать движок игры и твоего бота дважды
MadKnight: за обе команды
MadKnight: и всё это в огромном цикле
amurushkin: а точно
MadKnight: а в конце - сохранять что тебе нужно откуда тебе нужно куда нужно
MadKnight: ну или на локалке ты уже можешь с файлами работать
MadKnight: из бота прям
metahom: можно виртуальную машину купить и на ней заапустить
Batya_S1: я скачал, какой файл необходимо запустить
amurushkin: wlesavo: если не секрет что у тебя цифры в MSG означают?
wlesavo: amurushkin s селфтрекинг и e противник
wlesavo: количество кандидатов просто
amurushkin: блин как сильно иногда влияет стартовое положение. с тобой респавнюсь на 2 точки правее и уже выигрываю ))
amurushkin: время добавлять более правлиьное отсечение сайленса и трекать мины
amurushkin: переделал детектилку по хп. теперь вроде все круто ищет
wlesavo: вообще рандома пока много, я думаю потому что боты в целом слабые, фактически топ сейчас это хорошая реализацция всего базового функционала
wlesavo: поэтому такие винрейты нестабильные
wlesavo: я могу выйграть против топ1 3 игры подряд например, но это мало достаточно значит
amurushkin: блин таки иногда теряет. надо дебажить :(
wlesavo: у меня была основная проблема с тем куда воткнуть фильтр по дамагу для селфтрекинга
wlesavo: именно на временной шкале
wlesavo: в итоге перед приказами оппонента, и фильтр по дамагу за прошлый ход получился
wlesavo: но когда начинаешь об этом думать голова пухнет
wlesavo: в итоге я просто перебирал варианты и смотрел теряет или нет
amurushkin: я воткнул для врага после его действий. для себя после своих
amurushkin: надо теперь искать где теряет. как то резко с 12 до 0 бывает падает
amurushkin: после выстрелов зачастую. там что то не то наверное
wlesavo: для себя после своих, там не совсем все так просто, ты же свои взрывы должен учесть в противнике, а противника в своих
wlesavo: ye tot j,yektybt ghfdbkmyj ljk;yj cnjznm
wlesavo: ну еще обнуления правильно должно стоять
wlesavo: короче помню тоже долго мучался, по описанию очень похоже что тут косяк именно
amurushkin: wlesavo: смотри я когда торпеду или взрыв юзаю я у обоих обсчитываю хп после него. но сам фильтр потом делаю после всех действий
amurushkin: вроде логично что свои делаю после всех своих действий а его после всех его
wlesavo: во, нашел, я тоже думал что так логично, но сейчас оба фильтра после действий противника
Hamibar: я на старте своего хода считаю сначала свой прошлый ход, а потом ход соперника
amurushkin: а почему надо после действий противника свои считать?
amurushkin: чтобы на свои предсказания реагировать быстрее?
wlesavo: потому что тебе в инпуте приходит урон с учетом действий противника и твоих
wlesavo: то есть отклик на твои действия и последствия действий противника
wlesavo: короче попробуй воткни просто фильтр в одно место
amurushkin: логично. пробую
amurushkin: норм пошло. только 2 поражения со старта
wlesavo: без таймаутов главное чтоб
Hamibar: такой баг нашел! я оказывается точки вычитал неправильно)
wlesavo: или ты нигде не делишь на количество кандидатов?
amurushkin: где то противника иногда теряю. надо искать баг
wlesavo: я просто делю в паре мест, удобно, сразу при потере деление на ноль вылетает и идешь искать где теряешь
amurushkin: wlesavo: не так не делю нигде
amurushkin: у меня для мин я беру считаю в точке сколько урона могу нанести и если оно больше чем пятая часть от кандидатов в ней то взрываю
amurushkin: но у меня все мины бьют на 1. надо бы как то научить заманивать поближе
wlesavo: я просто урон делю на число кандидатов
amurushkin: у меня еще раньше там считались отсеченные кандидаты после сайленса смерженные в одну точку. а сейчас у меня появилась возможность хранить их все. надо пересмотреть этот момент
amurushkin: неплохо пошло. 20 уже. и это без фикса мин еще
amurushkin: на 22 завершил. лучше стало явно
amurushkin: так. либо это рандом такой либо неправильная на мой взгляд система подрыва мин лучше ))
BorisZ: у меня слишком активная разветка подрывами хуже играет
Hamibar: наверное потому-что разведка минами играет и против тебя
Hamibar: в смысле соперник тоже пользуется этой инфой
BorisZ: я ж не выдаю свою позицию при этом
BorisZ: я не придумал как это можно учитывать
Hamibar: ну как обычный взрыв
BorisZ: то что враг мину подорвал
Hamibar: если что-то взорвалось, но враг не получил урона - значит его там нет.
wlesavo: BorisZ выдаешь
BorisZ: это да, это простое рассуждение
wlesavo: не только, еще и по истории небольшое отсечение
BorisZ: но это децл совсем
BorisZ: вот по истории я пока не придумал отсечения
amurushkin: нифига себе у меня код таймаутнулся по времени ))))
gybson_samara: до какой лиги я дойду просто всплывая реже оппонента?
wlesavo: вуд1
gybson_samara: для первого дня норм =)
wlesavo: и то не факт, с непонерфленным боссом не дошел бы
wlesavo: там он вполне неплохо вычислял и палил
amurushkin: а wlesavo придумал ))
wlesavo: ну у меня сейчас вполне неплохой мин эскейпинг, мне нравится
wlesavo: https://www.codingame.com/share-replay/443079796
amurushkin: ох етить колотить у меня задержка сообщений в чате
wlesavo: сейчас надо прикрутить последний удар, важная штука
Hamibar: я вот не знаю мне повезло или простая зарядка торпеды на ходу выстрела дала мне +30 мест
Hamibar: вы кстати стреляете рядом, если знаете, где противник но не можете догнать? или ждете момента для -2хп?
amurushkin: у меня сообщения опаздывают на 7 минут. нифига себе
wlesavo: Hamibar пока нет
wlesavo: всмысле не жду
Hamibar: я вот не знаю, надо попробовать)
amurushkin: Hamibar: я стреляю рядом если уверен что цель знаю где
amurushkin: блин офигеть таймауты стали появляться у меня
Hamibar: мб это баги) а не по времени
wlesavo: может изза сайленсов таки
wlesavo: ты ж вроде сказал что начал хранить все а не мерджить
amurushkin: но они редки и я не понимаю в каком месте пока падает. все время по разному что ли
metahom: блин, весь день пишу, на 50 мест поднялся
Hamibar: это еще хорошо
metahom: до 185 )))
Hamibar: бывает целый день пишешь и на -100 поднимаешься
Hamibar: выловил детский баг) написал == вместо =.
metahom: ну это тоже обидно :)
Alex.swift: wlesavo а у тебя при сайленсе просто все возможные позиции добавляются в возможные или хранишь все возможные комбинации путей для того чтоб отсекать быстрее?
wlesavo: Alex.swift храню и мержу пути, фактически теряется часть информации, но зато очень хорошо по префомансу
gybson_samara: лол, был на 47 месте и неожиданно влетел в вуд 2
gybson_samara: в вуд1
amurushkin: еще топ багов у меня бывает x и y перепутан либо прибавлю и к x и к y иксы от другой точки
gybson_samara: бот команды выводит точно или может напихать пробелов для путаницы?
BorisZ: рефери тебе команды строго отформатированные дает если ты об этом
BorisZ: а если про то можно ли напихать самому пробелов и поймет ли тебя рефери то не знаю, не пробовал
BorisZ: если не поймет то сругается вроде - видно будет в дебакге
wlesavo: я видел что у некоторых есть пробелы перед "|"
gybson_samara: в копилку дурацких ошибок
gybson_samara: написал action_str.upper без скобок, получил не строку =)
BorisZ: у меня в какм-то контесте бот вышел в легенду, при том что в какой-то частой функции смешивались дистанция с дистанцией в квадрате
BorisZ: сккладывались они что ли
gybson_samara: у меня тоже было такой, чт оисправление бага сильно уронило меня в рейтинге
gybson_samara: начал прикручивать гитхаб к вскоде
Hamibar: чем ближе к тому тем сложнее оценить стал твой код лучше или нет(
Uljahn: локальный гитхаб или приватную репу?
Uljahn: в смысле, наоборот
gybson_samara: ну изначально файл на моем компе
gybson_samara: а потом туда
gybson_samara: я пока не очень разобрался, до этого работал с системами контроля версий ms (хотя и гитхаб теперь мс) и 1с
Uljahn: я к тому, что конестный код нельзя выкладывать в публичную репу на гитхабе, а то найдут и дисквалифицируют
Uljahn: *контестный
gybson_samara: Uljahn вроде приватный
gybson_samara: Uljahn как мне записать ходы противника так, чтобы потом по этому паттерну собрать информацию из массива
gybson_samara: ну типа там будет квадрат 3x3 и питон пробежится таким квадратом по массиву и выдаст сумму
gybson_samara: для каждого варианта расположения
gybson_samara: но фигура может быть сложнее
Uljahn: я сделал rolling window в numpy
gybson_samara: спасибо
Uljahn: беру большой пустой массив 40х40 примерно, начинаю рисовать траекторию противника из центра, потом обрезаю все пустые строки и столбцы - получается заготовка для rolling window, этой заготовкой прохожу по карте и проверяю, где траектория не пересекает сушу
Uljahn: получается массив индексов левого верхнего угла окна
Uljahn: от него надо ещё перейти в начало траектории, а от неё в конец траектории
Uljahn: это всё, что я пока придумал, сайленс не могу прикрутить, башка не варит :(
gybson_samara: я думал сначала дерево сделать с координатами из 0.0 и по нему бехать считать сумму, смещая координаты
amurushkin: хехе когда у меня таймит то я храню 128384 путей. в то время когда они ужимаются в 40 точек
Uljahn: это разные пути или возможны дубли?
amurushkin: сделал компрессию. видать много инфы теряю. с 200к делает 80 ))
gybson_samara: мне кажется уже на 20 ходу положение должно быть очевидно
Uljahn: а сайленс?
gybson_samara: ну там 4 клетки в паттерне
gybson_samara: хз, считать надо
Hamibar: gybson_samara нее. Иногда и после 25 не понятно, если только муваться.
Uljahn: 4 клетки в три стороны
Alex.swift: + вариант остаться на месте
gybson_samara: аааа
Uljahn: да
Alex.swift: и так для каждого возможного положения в момент сайленса
Hamibar: Без сонара кстати лучше играется) не знаю как так получается)
Hamibar: Смог в 20 влезть
Uljahn: после всплытия так вообще во все 4 стороны
Uljahn: Hamibar: молодец, буду болеть за вас с wlesavo
wlesavo: у меня какойто косяк нашелся со стрельбой вблизи границы
wlesavo: не могу понять откуда
Hamibar: Ты лучше не болей а догоняй!
Uljahn: у меня лапки, как я догоню
wlesavo: сразу не сделал доп границу блин, теперь мучаюсь
wlesavo: все индексы не хочется смещать
Hamibar: У меня тоже пишу == вместо = :grinning:
wlesavo: мне отключение сонара не особо помогало вроде
wlesavo: мож потом еще раз проверю
Hamibar: wlesavo видимо у тебя хороший сонар
wlesavo: ну я пользую его только когда нормально информации может дать
metahom: а вы когда вычислили соперника догоняете его или продолжаете "гулять"?
Hamibar: я просто бегу к нему по пути который мне bfs дал
metahom: ясно, спс
Hamibar: Но на самом деле, эту часть надо улучшать
BorisZ: я продолжаю гулять
BorisZ: сам прибежит )
BorisZ: пока до него дойдешь - все поменяется сто раз
metahom: так обидно бывает, не добьешь, а он потом выигрывает
BorisZ: Но на самом деле эту часть надо улучшать)
Hamibar: BorisZ мне кажется, что так можно сказать почти про любую часть бота
BorisZ: не поспоришь
wlesavo: я не бегу сломя голову, можно на мины нарваться, лучше подождать пока он сам на мины зайдет
wlesavo: но сейчас прикрутил фаталити
wlesavo: у меня на весь код столько хардкодных ифов нет наверное
wlesavo: как на этот кусок
wlesavo: ща гляну че получится и проверю без сонара
gybson_samara: алгоритм рыскания закончил =) https://www.codingame.com/share-replay/443134422
gybson_samara: щас прикручу выстрел чтоль рандомный
MadKnight: теперь будешь рыскать?)
gybson_samara: ну пока да
gybson_samara: сегодня точно
metahom: а вы обходите мины??
Uljahn: если бы знать, где они стоят
wlesavo: я знаю)
ДжБМ: а сегодня тоже есть стрим https://forum.codingame.com/t/stream-twenty-thousand-loc-under-the-c/168072/7?u=jbm
wlesavo: короче я тут переставил сайленс в конец хода, ато бред был, прыгаю на макс рендж, стреляю и тут же позицию выдаю полностью
gybson_samara: очень прошлый эвент напоминает
wlesavo: кажись неплохой сабмит пошел, ща посмотрим че там
DenShlk: https://www.codingame.com/replay/443136103 33 фрейм, почему торпеда не запустилась?
gybson_samara: вообще смотрю на рейтинг участников чата и прям гордость берет меня за наш чат =)
Uljahn: DenShlk: остров мешает
Uljahn: торпеда плывёт по морю же
DenShlk: она обойти может
Uljahn: расстояние 4
Uljahn: максимум
Uljahn: это длина пути торпеды
DenShlk: аааа
DenShlk: я думал просто радиус
DenShlk: спасибо
Hamibar: wlesavo бросился в погоню за тобой)
wlesavo: ух ты, отошел покушать приготовить и топ 5
wlesavo: надо чаще готовить :slight_smile:
wlesavo: пробовал кстати не стрелять чтобы нанести больше дамага когда точно знаю положение, не очень помогло
wlesavo: сейчас без него забрался
Hamibar: Но все равно стрелять надо бы пореже)
Hamibar: кстати избегать мест где был соперник выглядит как хорошая стратегия
wlesavo: ну как альтернатива трекеру мин да
wlesavo: ну все, теперь завтра надо более глубокие оценки делать, может подрефакторю к этому сначала
Hamibar: хм убрал погоню. Вроде результат примерно такой же остался
amurushkin: тест. отправлено в 29 минут
amurushkin: у меня сообщения похоже не отправляются
amurushkin: 123
Hamibar: прошлое же отправилось с тестом
amurushkin: во внешнем клиенте я их не вижу (( сейчас с сайта пробую
Hamibar: есть какой-то клиент?
amurushkin: да любой который xmpp умеет
Hamibar: ааа, я думал клиент кодингаейма
amurushkin: тест из клиента
Batya_S1: а где именно находится пакет package com.codingame.game
Uljahn: норм ты себе развлечение нашёл
Batya_S1: где должен referee находится,
Uljahn: я не спец в джаве, но вроде бы там надо мавен проект импортировать или типа того
Batya_S1: а как ты локально запускал codingame
Uljahn: никак
Uljahn: думаешь, кто-то тут запускал?
Uljahn: мы просто знаем, что это потенциально возможно, но сопряжено с трудностями
StepanSmirnov: eulerSchezahl 100%
Uljahn: ну да, можно в общаке спросить
Uljahn: пока эйлер спать не ушёл
Uljahn: я про англоязычный канал
eulerscheZahl: or here in english language
Uljahn: euler: how do you run referee locally?
eulerscheZahl: you will need maven to import dependencies
eulerscheZahl: personally i use the intelliJ community version. you can do it from the command line too, but i don't know how
wlesavo: я тож запускал
wlesavo: )
Batya_S1: в целом, как это сделать
wlesavo: скачай эклипс и импортируй игру как марвен проект
eulerscheZahl: https://www.codingame.com/forum/t/how-to-run-ocean-of-code-github-project-locally/168041/
Uljahn: wow nice
Uljahn: thanks euler
amurushkin: бляха почему внешний клиент не пашет?
Uljahn: c psi+ зашёл
Uljahn: и с pidgin
Uljahn: лагов нет
Uljahn: может, провайдер у тебя мутит чё? пакеты дропает?
amurushkin: раньше не было. хотя ничего исключать нельзя. через веб вроде лучше работает
Hamibar: https://www.codingame.com/replay/443231280 интересно. Подрывает мины на только на -2.
Uljahn: у тебя стартовая позиция не очень удачная, мне кажется, вот если бы на клетку повыше...
Hamibar: Эту часть я еще не придумал как улучшить
Uljahn: себя оцениваешь?
Hamibar: Вроде как эти подрывы на -2 не так тяжело реализовать
Hamibar: Я прохожусь по всем клеткам и смотрю на какой из них меня сложнее всего будет вычислить через 20+ ходов
Uljahn: я про текущий ход, количество твоих возможных позиций с точки зрения соперника
Hamibar: а это да.
Hamibar: Только сонар не сделал еще
Hamibar: Для себя
Uljahn: может, почаще сайленс юзать, когда их мало становится? или как у Мурушкина - при получении дамага
Hamibar: я так и делаю)
amurushkin: у меня и при дамаге и когда мало. но иногда кажется что противик меня задетектил лучше чем я сам
Uljahn: сайленс на 0 - плохая идея, мне кажется
Hamibar: это да :grinning:
Hamibar: но тут сложно.
Uljahn: эх, а у меня сил только на теоретизирование в чатике хватает
wlesavo: Hamibar у тебя фаталити есть?
Hamibar: нет
wlesavo: надо
wlesavo: хотяя бы оценивать можешь ли убить наверняка в этот ход
Hamibar: эта та часть, которую можно улучшить)
Hamibar: Но думаю для меня сейчас критично передвижение.
Hamibar: Я ведь просто дфс юзаю, пока не засеку противника
wlesavo: я сегодня делал как раз, потом проверил что реально много игр заканчиваются через фаталити, особенно со средними по силе противниками
amurushkin: у меня сайленс вообще на 1 вместо мува либо на 4 если после всплытия. полюбому надо улучшать но пока нет идей как
Uljahn: по сути вся игра - это создание условий для фаталити, перевес в информации, минах, зарядах, хп, диспозиции
Hamibar: Жаль нельзя мины все разом подорвать. Тогда точно фаталити
Hamibar: Еще можно в углу окопаться. Заминировать проходы, а потом начать палить по воздуху привлекая соперника:grinning:
Uljahn: а если не приплывёт? придётся всплывать
Hamibar: а если не приплывет, то не повезло.
Hamibar: у меня кстати стратегия не плыть к сопернику после его обнаружения плохо работает.
Uljahn: так надо мины тригерить
Hamibar: А, стоять на месте и тригерить?
wlesavo: я плаваю просто минимизируя всякую хрень, не пытаюсь учитывать противника пока не могу его убить
Alex.swift: фаталити, в смысле, когда у врага осталось 1-2 хп и его видно любой ценой плыть к нему и добивать?
Uljahn: ага
Uljahn: даже если всплыть придётся и заюзать сайленс
Uljahn: но это именно за один ход
Uljahn: некоторые так делают, ещё и в MSG пишут gg
Alex.swift: а, у топ1 замечал такие мувы. Вообще тактика интересная, почти всю игру я точно вижу где он находится
amurushkin: я об этом думал еще в дереве но до сих пор не запилил ))))
Uljahn: ещё можно предсказывать, чтобы тебя противник не ваншотнул, но это придётся кулдауны высчитывать ещё
BorisZ: это все вещи очевидные - у всех они будут через неделю
BorisZ: 22 до конца
Uljahn: не у всех :smirk:
BorisZ: все что мы пыхтим пишем сейчас - это прототипы, не более того
BorisZ: или заброшенные проекты (
BorisZ: я умею вдохновлять
Hamibar: на самом деле кажется, что 30 дней многовато.
Uljahn: летом было в самый раз, в жару, без фанатизма
amurushkin: для меня и сейчас в самый раз. работа же еще
BorisZ: да, мне 10 дневные тоже больше всего нравятся - если время удается выделить
BorisZ: интрига остается, времени достаточно, но тянуть тоже нельзя
BorisZ: а тут на неделю если отвлечешься - все, хрен потом вернешься, все вылетит из головы
Hamibar: да и устаешь/выдыхаешься
Hamibar: 30 дней думать какую бы фичу запилить)
BorisZ: вроде кажется что надо стремиться к минимаксу какому-то, с финальным добиванием или с оценкой
BorisZ: времени достаточно, всяко у лидеров к концу что-то такое будет
BorisZ: иначе все вничью будут играть к концу - количество тактических фишек ограничено
Hamibar: тут еще надо придумать как минимакс заюзать.
BorisZ: хотяб наивный на глубину 1 - перебор всех своих ходов и все ответы соперника с оценкой
BorisZ: хотя что оценивать если нихрена не известно о противнике )
BorisZ: ни заряды ни мины где стоят
BorisZ: может фантазии это конечно
Hamibar: ну частенько бывает,что вычисляешь противника.
Hamibar: Тогда наверное можно
BorisZ: а мины и заряды врага
Hamibar: Но я его никогда не писал, так что мое мнение не слишком обосновано)
BorisZ: может ты шагнешь на -2 хп в мину и торпедой влепят а может там и мины нет и торпеда не заряжена у врага
Hamibar: Ну примерно можно сделать
amurushkin: примерной оценкой можно и хуже сделать
wlesavo: BorisZ я кстати полностью согласен, то на чем сейчас топ держится, это все базовый функционал, реально хороших алгоритмов еще нет ни у кого
wlesavo: бгг, пока кто то ресабмитит аж на 3 закинуло