Пользователь
0,0
рейтинг
27 января 2010 в 18:18

Теория и практика игры «Морской бой» — по-честному

Читая в очередной раз Хабр, я заинтересовался статьей «Морской бой с искусственным интеллектом — по-честному» и программой «Интеллектуальный морской бой».
Попробовав сыграть с ней, я обнаружил, что стратегия программы пока оставляет желать лучшего, т.к. счет был 9:1 в мою пользу.
Я решил поделиться своими мыслями со всеми, и в частности с автором(michurin) программы, т.к. проект очень интересный.

Внимание!
После прочтения данной статьи исход игры «Морской бой» перестанет быть для вас случайностью.

Статья писалась простым языком без использования формул.
«Любая формула, включенная в книгу, уменьшает число ее покупателей вдвое» Стивен Хокинг.

Я бы хотел в легкой и доступной форме изложить алгоритм, который я давно прочитал в книге Е.Я. Гика «Занимательные математические игры».
(При написании статьи алгоритм был дополнен)
Вся стратегия будет описана для «Классического» морского боя
(поле 10х10 у каждого игрока по одному четырехтрубнику, два трехтрубника, три двухтрубника и четыре однотрубника).
Корабли не могут изгибаться.
Корабли не могут соприкасаться.
Игрок делает 1 выстрел, если промахивается, то ход переходит сопернику,
если попадает, делает еще выстрелы до первого промаха).

Конечно успех игры, в какой-то мере зависит от везения. Можно беспорядочно наносить удары по неприятельской территории и при этом без промаха уничтожить все его корабли.
Данная стратегия не даст Вам 100% победы, но увеличит вероятность Вашей победы до максимума.
У нас в классе была девочка, так вот она не выставляла до последнего один однотрубный корабль, но здесь будет описана честная стратегия.

Стратегия состоит из 2-х частей.
1) Правильная расстановка кораблей.
2) Правильная стрельба по противнику.

Правильная расстановка кораблей.

Эта идея уже упоминалась в вышеуказанной статье, повторюсь и распишу подробно для тех, кто не знает.

Суть идеи расставить корабли так, чтобы уменьшить вероятность попадания в них.
Сложнее всего попасть в однотрубник, наша задача расставить остальные корабли на минимальной площади, чтобы оставить как можно больше пространства под однотрубники.
Такой расстановкой является расстановка «по краям» или «по периметру».
Таким образом, когда будут потоплены все «большие» корабли, искать однотрубники будет весьма непросто.

Покажу на примере:
Постарался сохранить цветовую схему, как в вышеописанной игре.
Желтый = корабли
Голубой = надстройка (место вокруг корабля, где не может находиться соседний корабль)
Морской волны (cyan) = оставшаяся территория для расстановки однотрубников.



При написании статьи была случайно найдена расстановка, которой не было в рассмотренной в книге.



Расстановки могут также получаться зеркальными отражениями по вертикали и горизонтали, а также поворотом поля на 90, 180, 270 градусов.
Область, оставшаяся для расстановки 4-х однотрубных кораблей, получается 60 клеток. Следовательно, вероятность попадания в однотрубный корабль составляет 4 из 60 или 6,67%. При других расстановках вероятность попадания выше.

Рассмотрим произвольную расстановку, которая была предложена программой.
(однотрубники я убрал, для чистоты эксперимента).


33 клетки для расстановки 4 однотрубных кораблей, это почти в 2 раза меньше,
т.е. вероятность моего выигрыша была почти в 2! раза выше (не учитывая оптимальность стрельбы).

Правильная стрельба по противнику

Идея правильной стрельбы заключается в следующем.
Сначала нужно стараться попасть в самый большой корабль (для классики это 4-х трубник), т.к. попасть в него вероятностно проще, чем в однотрубник.
Разобьем поле на области 4х4 (произвольно). Должно получиться 4 полных квадрата и все, что осталось.



Для этого существует 7 комбинаций, которые могут быть так же расширены путем зеркальных отражений и поворотов. При таком простреле нельзя вписать в квадрат 4х4 четырехтрубник.



Все поле простреливается в любой последовательности, соблюдая комбинацию.



Если мы попадаем в какой-то корабль, то надо его добивать до конца.
После того как корабль подбит, вокруг него рисуется надстройка в одну клетку,
чтобы туда зря не стрелять.
Далее, когда 4-х трубник потоплен, ищем 3-х трубники, простреливаем экономно поля так, чтобы было не поставить 3-х трубник.
Делим поле на квадраты 3х3. Стреляем так, чтобы нельзя было поставить 3-х трубник.



И так далее. Доходим до однотрубников, далее как повезет.

Ну вот, в принципе, и все.

После того как все в классе знали эту стратегию, мы перешли к игре «Морской бой» (на поле 5х5 выставляется 4 однотрубника).
После этого игра стала носить больше психологический характер (кто как повторяется или не повторяется при расстановке), чем математический.

Заключение:
Предлагаю автору(michurin) «Морского боя с интеллектом» взять на вооружение данную стратегию и использовать ее частями в зависимости от выставленного уровня интеллекта программы.

PS При написании данной статьи ни один корабль ВМФ не пострадал =).


PS2 Мои игры с программой:





UPD Картинки исправил(переложил с pict.com на imagehack), но их по прежнему не видно.
UPD2 Переложил все на habrastorage.org вроде все видно.
@born2fly
карма
29,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (91)

  • +4
    Не знаю как у вас, а я уже несколько месяцев (из Севастополя) получаю недоступность picamatic.com
    В частности www.picamatic.com/show/2010/01/27/06/07/6376400_210x190.png == 403 Forbidden
    Собственно речь про скриншоты
    • +2
      Переложил на pict.com. Посмотрите, пожалуйста.
      • 0
        Да, теперь все отлично, спасибо.
        И логика игры достаточно интересна, тоже благодарствую :)
    • +3
      у меня тоже самое (Молдова)
      • 0
        сейчас видно?
    • 0
      москва, аналогично.

      из питера говорят, что работает, причем грешат на некоторых (видимо, не всех) московских провайдеров. как выяснилось, зря.
  • +5
    Когда я в первый раз столкнулся с такой тактикой, я был жутко разочарован, вся прелесть игры пропала :(
    • +1
      Да, согласен.
      Я в статье и написал «После того как все в классе знали эту стратегию, мы перешли к игре «Морской бой» (на поле 5х5 выставляется 4 однотрубника). После этого игра стала носить больше психологический характер (кто как повторяется или не повторяется при расстановке), чем математический.»
      • 0
        Мне вот интересно, после расстрела всего поля по методу поиска четырехпалубника перейти к расстрелу всего поля по методу поиска трехпалубника?
        После
        img2.pict.com/02/d7/e6/2658433/0/7.png
        устанавливать положение трехпалубного не очень то удобно.

        И да, такое расставление кораблей я также придумал самостоятельно)
        • 0
          если оставшееся поле пустое то оно простреливается как
          img2.pict.com/4d/f8/a5/2658437/0/9.png

          если нет, то в зависимости от ситуации, так чтобы было не поставить 3-х трубник.
          • 0
            Тогда гораздо рациональнее использовать диагональные прострелы в случайных местах. Например(цифровым кодом): 1-1, 7-7, 9-9, потом диагональ 4-1, 5-2, 7-4 и т.п. Стрелять в случайные места этих диагоналей, чтобы избежать угадываемого перечисления.
            К тому же при поиске двухпалубников, трехпалубники вылезут все до единого.
            • 0
              прострелы «определенным образом» хороши только для пустых квадратов,
              когда же в них есть простреленные участки или потопленный корабль,
              надо смотреть по ситуации.
              Надо исходить из принципа — Меньшим количеством выстрелов не дать поставить
              в оставшуюся не простреленную площадь 4х,3х или 2х трубник.

              Пишите конкретный пример, и я попробую ответить.
              • 0
                Классическая расстановка кораблей в морсом бое.
                • 0
                  отметился
                  • НЛО прилетело и опубликовало эту надпись здесь
                    • 0
                      Just for fun!
    • +9
      А я наивно полагал, что ее придумал я :D
  • +7
    Когда пишешь «При написании данной статьи не один корабль ВМФ не пострадал =)».

    То это значит, что их пострадало много. Нужно писать «ни один».
    Простите, что не в почту, почему-то я не нашел такой кнопки в вашем профиле.
    • 0
      спасибо. исправил.
      • +2
        33 клетки для расстановки 4 однотрубных кораблей, это почти в 2 раза больше,
        т.е. вероятность моего выигрыша была почти в 2! раза выше (не учитывая оптимальность стрельбы).


        наверное в два раза меньше, по сравнению с вариантами, когда остаётся 60 клеток…
        • 0
          спасибо, исправил.
    • 0
      Между логином и кармой есть стрелка, а там уже Написать письмо. К. О.
      • +1
        Спасибо, теперь нашел.
    • 0
      Вообще-то в такой формулировке это значит, что пострадал ровно один. Если бы было «При написании данной статьи не один корабль ВМФ пострадал =)», тогда было бы много (и в стиле магистра Йоды :) ).
      • 0
        Почему ровно один? Ясно же написано «не один».
        Так, пора заканчивать это обсуждение.
        • 0
          Поотому что двойное отрицание.
          • +3
            Двойное отрицание — это «не не X». Конструкция «не X не Y» двойным отрицанием не является, как, впрочем, и конструкцией математической логики.

            Не умничайте. Всегда найдется Хабр, который статистически умнее вас.
            • +2
              а тут не «не X не Y», тут по другому:

              не один корабль не пострадал, это значит множество кораблей кроме одного не пострадали, что психологически наталкивает на мысль, что с этим одним что-то не чисто

              так что сами вы не умничайте! (интересно, сможет ли меня кто-нибудь переумничать?)
              • 0
                это значит, что некоторое количество кораблей не пострадало :)
                не один пострадал — пострадало много
                не один не пострадал — не пострадало много
    • 0
      > Когда пишешь «При написании данной статьи не один корабль ВМФ не пострадал =)».
      > То это значит, что их пострадало много.
      Нет, это значит, что больше одного корабля остались целыми (замените: «не один корабль ВМФ уцелел»).

      А еще в самом первом предложении вопиюще неправильно употреблен деепричастный оборот. Хотел написать на почту, а тут как раз специальная ветка для этого.
      • 0
        Всё в порядке, статья читала хабр, не придирайтесь =)
      • 0
        Да, вы правы. Вечер, пятница… голова ни к черту. Хоть суть замечания была верной.
  • +1
    Если по этой методе играть с человеком, то все эти расстановки «по краям» или «по периметру» приведут к тому, что все многопалубные корабли будут вынесены сразу. Помню еще по играм в школе — просчитывается это на раз-два. А потом можно спокойно добивать однопалубников.
    • +1
      Ну так а толку-то, что кораблики, которые больше однопалубных, сразу отстреляешь? Они и так довольно быстро отстреливаются. Если оставлять больше места для однопалубных то среднее количество выстрелов до уничтожения всех кораблей будет выше.
      • 0
        «Ну так а толку-то, что кораблики, которые больше однопалубных, сразу отстреляешь? Они и так довольно быстро отстреливаются»

        Толк как раз в разнице между «сразу» и «довольно быстро». Это те самые несколько ходов, которых не хватает, чтобы найти последний кораблик противника =)
        • +2
          О_о
          Как бы, странно…

          Смотрите:
          1. Противник расставил корабли вперемешку. Из-за чего, у него под мелкие кораблики осталось порядка 30 клеток. Вы методично стреляете, в результате чего у вас к моменту, когда все большие корабли потоплены уже прострелена часть оставшегося места от тех и так немногих 30 с чем-то клеток.

          2. Вы «сразу» расстреливаете большие корабли, потратив на это некоторое небольшое количество ходов (совсем сразу не получится, так как все-таки, вариантов их распределения достаточно), а затем у вас 60 клеток и 4 мелких кораблика хрен знает где закопанных.

          • –1
            Как всегда, истина где-то посередине.

            3. Вы расставляете корабли так, что для мелких кораблей остаётся 50 клеток, но и большие корабли расставлены менее предсказуемо
            • 0
              Тут еще есть большая разница по какой тактике стреляет противник. Если он стреляет по системе, которая оговаривается в этой статье, то в третьем варианте будет все-таки хуже, хоть и ненамного, так как эта система исходит из вообще рандомной расстановки кораблей противника.
              • 0
                Разумеется. Любая стратегия игры может быть хороша против конкретной другой и плоха против третьей. Именно поэтому хотелось бы увидеть программу, позволяющую двум алгоритмам играть друг против друга. Было бы интересно, есть ли такой, который выигрывает у всех остальных.
                • 0
                  Так, чтобы выигрывать сразу — вряд ли. А вот такой алгоритм, который бы адаптировался к стратегии противника со временем — возможно.
                  • 0
                    Кстати, ваш алгоритм можно ещё улучшить, если три однопалубника тоже припереть к стенке. В оставшихся ~50 ячейках искать однопалубник _очень_ неприятно.

                    И да, это придумано очень давно. Любой человек, которого в универе мучали теорвером во времена СССР, это знает.
                    • 0
                      но вся прелесть данного метода сводиться на нет, если отдельностоящий однопалубник был снесён «шальной» пулей :)
                      • 0
                        А если случайно все корабли подряд потопить — так и вообще ))

                        Понятное дело, что стратегия рассматривается как оптимальная на примере многих партий.
                        • 0
                          я это понимаю. просто сам часто использовал вышеописанный способ и довольно часто прощался с «тёмной лошадкой» после случайного попадания :(
                          кстати, интересно было бы просчитать, какой всё-таки алгоритм лучше: предложенный автором статьи с 4мя однопалубниками или с 1м?
                          • 0
                            из практики выходит что 4 из 60 лучше,
                            чем 1 из 50.
                            Хотя математически выходит наоборот.

                            Мне программа несколько раз выносила этот однотрубник на тестах
                            (именно «шальной» пулей).
                            • 0
                              4 из 60 гораздо лучше чем 1 из 50.
                              Допустим все равновероятно, поля вокруг кораблей не учитываются. Каждый корабль находится где-то в 15-ти клетках.
                              Вероятность подбить его за 7-8 выстрелов =50%. Далее ты не начинаешь выбивать следующие 15 клеток, пытаясь найти второй корабль, а продолжаешь добивать первую четверть пространства.
                              Правда каждое такое попадание уменьшает поле на 4-9 клеток.
                              • 0
                                >>корабль находится где-то в 15-ти клетках.

                                не правильная расстановка!!!

                                они расставляются абсолютно рандомно.
              • 0
                Верно. Но против расстановки №2 можно найти более эффективную схему расстрела кораблей, чем описано в статье. В частности, более результативной будет стрельба сначала по углам.
                • +1
                  Против заранее известной схемы (даже в каких-то весьма значительных вариациях) практически всегда можно придумать контр-тактику, в общем-то.
                  Фишка в том, чтобы найти «среднюю» тактику, играющую в среднем хорошо.
    • +2
      автор как бы намекает, что вся суть стратегии как раз в уменьшении шансов попасть в однопалубник — ибо для стрельбы ровно 66 клеток. И пока соперник будет ловить однопалубники в этой туче пустых клеток — вы со спокойной душой отстреляете всё методом отсечения — потому, что если соперник расположил свои корабли отличным от этого способа — отстреливаются они чуть более чем быстрее, чем ваши 4 однопалубника.
      • 0
        60 клеток на 4 однотрубных корабля.
    • 0
      Попробуйте сыграть сами с собой.
      За первого игрока сыграйте по своей тактике,
      за второго по вышеописанной.
  • +1
    Ну всё, теперь хабрасообщество непобедимо!)
    Спасибо за статью, всё логично, мог бы и сам до всего догадаться.
    А ещё порадовали инициалы и фамилия автора книги)
  • +1
    «Любая формула, включенная в книгу, уменьшает число ее покупателей вдвое» Стивен Хокинг.

    Позанудствую чутка:

    это его издатель сказал, когда первая версия книги «Краткая история времени от Большого взрыва до черных дыр» вышла с формулами, потом он убрал от туда их все, кроме E=mc^2.
  • +4
    «Занимательные математические игры»

    В онлайне почитать возможно вообще? :) Гугление пока не дало результатов.
    • 0
      У меня где-то есть бумажный вариант. При наличии достаточного количества времени смог бы отсканить.
      Если не найдете нигде — пишите, что-нибудь придумаем.
      • 0
        Если кому еще нужно:

        ifolder.ru/16716133
        Я сначала хотел в цвете и с распознанным текстом сделать, но посмотрев сколько времени мой сканер сканирует в цвете, решил остановиться на ч/б варианте. Потом, прогнав файнридером увидел, что половину страниц надо пересканировать, чтобы получить что-то вменяемое =)

        В итоге, пересканировал только те страницы, которые получились совсем плохо.
        Запихал это в pdf нераспознанным. Должно все более-менее читаться. =)
        • 0
          ifolder говорит, что файл удалён. он, случаем, не сохранился, чтобы ещё раз выложить? например на Я.Диск.

          пардон за некропост.
  • –6
    Британские учёные на Хабре!
  • 0
    Спасибо, вроде всё просто, но врятли когда-нибудь сам задумался о такой стратегии, а теперь когда я её знаю придётся завтра устроить соревнования на работе по морскому бою :)
  • +15
    «У нас в классе была девочка, так вот она не выставляла до последнего один однотрубный корабль»

    Чтобы этого избежать мы брали 2 ручки, например, у одного красная, у второго синяя. Рисовали корабли и потом менялись ручками. Т.е. уже не дорисуешь кораблик…
  • +3
    А вот и я — автор обсуждаемой игры :-)

    Не буду утомлять здесь никого результатами тестов — каждый, кто интересуется, может взять мои исходники и поиграться. Но если коротко:

    Пусть у нас есть две программы. Одна — моя — назовем её «наивная» — она играет, не делая никаких предположений, где враг поставил корабли (знаем только, что они расставлены по правилам). И программа, которая думает, что противник хитёр и расставил корабли «правильно», назовем её «умная». Пусть эти программы сразятся, как вы думаете, какая выиграет? ,-)

    Оказывается, что выигрывает наивная!

    Если понаблюдать за тем, как они играют, или просто подумать головой (лично я шёл по первому пути :-)), то можно обнаружить, что это совершенно очевидный факт! «Умная» программа оказывается более предсказуемой.

    Итак, поверьте (если не хотите смоделировать или подумать), — с «умной» программой сложно играть только первый раз :-) Дальше её хитрый план становится очевиден, а играть становится вообще не интересно. Но я не сдаюсь и планирую некоторые доработки, которые могут сделать игру интересней.

    Предлагаю их обсудить.

    подстраивание под противника

    С человеком интересно играть потому, что он пытается тебя разгадать, а ты пытаешь разгадать его. Это битва не отдельных выстрелов, битва стратегий. Можно попробовать заставить мою программу собирать статистику и обучаться игре с конкретным соперником. Скажем, она может заподозрить, что в A1 соперник всегда ставит однотрубный :-) Со временем, программа будет набирать силу (это "+"), но достаточно будет сменить тактику (или за комп сядет другой человек) и программа станет беззащитна как ребёнок (это минус).

    корабли могут плавать :-)

    то есть корабли можно переставлять во время игры. Это должно уравнять шансы тех, кто расставляет по-умному и по-глупому.

    МБ на шаре

    Это исключит влияние границ. Но тут не понятно, как разбить шар на квадратики :-) (вариант, конечно, с полюсами не проходит)

    Я рад любым предложениям. А так же, можете использовать мои идеи как вам угодно :-)

    Автору спасибо за статью и интерес к моей работе.
    • 0
      Наверное, имелся ввиду не шар, а тор. Человек просто не очень знаком с топологией, за что мы его винить не имеем никакой возможности.

      Соединяете левую/правую и верхюю/нижнюю границы. Желательно ещё сделать возможность прокрутить поле, полезно изредка поменять свой взгляд на положение вещей.
      • 0
        Идея с тором хорошая, но я имел ввиду именно шар по двум причинам: 1) человеку проще представить шар, 2) при навигации по шару его достаточно крутить всего вокруг двух осей, причём по одной из осей достаточно 180 градусов, при таких умеренных поворотах, человек может достаточно легко сохранять привязку к фигуре (на торе заблудиться проще). Одним словом, мне кажется, что играть на торе было бы очень головоломно и сам процесс будет связан с таким количеством вращений, что у многих может начаться лёгкая тошнота :-) Ведь человеку надо показывать не только его ходы, но и ходы противника. Однако, если вы напишете игру на торе, что, — вы правы, — менее проблематично, чем на шаре, — проанонсите её на хабре, — думаю, что не я один с удовольствием испытаю свой вестибулярный аппарат :-)

        В идее же с шаром, надо либо отказаться от квадратности ячеек (пусть на полюсах буду многоугольники; или всё замостить пятиугольниками и шестиугольниками...), либо перейти к «кирпичному мощению», либо действительно добавить «ручку», превратив всё это дело в топологический эквивалент тора. Но последний вариант мне кажется… слегка через чур :-)

        Если вернуться к шару, у вас идей нет?
        • 0
          человеку довольно просто представить, что там где заканчивается верхняя граница начинается нижняя — много таких игр было, просто замкнутое поле и все, никаких шаров не надо

          двигаешься по полю, хоп-хоп-хоп, добрался до верха, еще хоп и ты уже внизу (ловкость рук и никакого мошенничества)
        • 0
          Вы никогда не крутили развёртку тора.
          • 0
            Давно была такая игра «Тор», так вот у нее поле было такое…
            стороны замкнуты левый край с правым, верхний край с нижним,
            а так же замкнуты ВСЕ углы.
            (мне все-таки кажется, что это шар получается а не тор)



            Основное поле голубое, дополнительные поля нужны только для удобства восприятия.
            Поля кораблей(как и выстрелы по ним) стоящие на «1» слева, должны дублироваться так же и справа.
            Для примера, показано, как бы выглядел 4х и 2х трубник на таком поле(на стороне и в углу).

            Угловые поля 5,6,7,8 дублируются 4х кратно.
            При подсчете, дополнительные поля не учитываются.
            • 0

              картинка побилась =)
          • 0
            удивительное радом. я не говорю про развёртку, а изначально и про тор речи не было :-) похоже, некоторые просто не читают реплики, а пишут сразу ответы на то, что им самим подумалось :-)
    • +1
      >>корабли могут плавать :-)

      с 4х палубника как с авианосца может подниматься палубная авиация,
      а однотрубники как подводные лодки могут погружаться.

      и Ред Алерт почти готов =)

      теперь серьезно.

      Хорошо было бы в программе предусмотреть некий модуль подключения движков
      (или протокол обмена 2х программ),
      чтобы можно было «сталкивать лбами» разные алгоритмы игры.

      Вот там и можно будет посмотреть, чей алгоритм лучше.
    • 0
      На счет интересных дополнений- есть одна вариация «Морского боя» для мобильников, там для кораблей доступный различные «навыки»- бомбардировка (игрок может выстрелить по любым трем точкам за один ход), торпедная атака (точки одной вертикали помечаются как простреленные, до попадания в корабль), мины, напалм (уже точно не помню смысла их действия). На картах могут быть острова, которые видны противнику, и за одну клетку от них тоже нельзя ставить корабль (типа отмель), навыки появляются только после определенного количества выигранных боев, чтобы их использовать необходимо три раза попасть во вражеский корабль, есть система рангов и медалей («попал первым выстрелом» и т.п.). С такими дополнениями игра становится действительно интересной.
  • НЛО прилетело и опубликовало эту надпись здесь
    • –2
      Попячься! =)
    • 0
      для таких случаев тоже есть своя тактика математически вполне оправданная, называется рандом
  • 0
    Если мы попадаем в какой-то корабль, то надо его добивать до конца.


    Спорное утверждение. Типов кораблей не так много и их количество заранее известно. На основе этих данных не сложно прикинуть в голове после 1-2 успешных попаданий, где именно заканчивается тот или иной корабль и не тратить время на прострел очевидностей ради выявления «мертвых зон» возле корабля.
    Это тоже не аксиома конечно. Многое зависит от каждого конкретного случая.

    Кроме того, психологически значительно эффективнее держать полуподбитый флот противника «на мушке», в осознании того, что несмотря на продолжающейся поиск однопалубников, все остальные могут быть добиты в любой момент. Впрочем, к математике это уже не имеет никакого отношения :)
    • +1
      и не тратить время на прострел очевидностей ради выявления «мертвых зон» возле корабля.


      Игрок делает 1 выстрел, если промахивается, то ход переходит сопернику, если попадает, делает еще выстрелы до первого промаха.


      Никакой траты времени здесь нет.
  • 0
    А насколько интереснее была бы игра, если иметь возможность поставить два корабля в упор друг к другу, но только один раз. Очевидно пустые клетки превратились бы в «скорее всего пустые».
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      стилистику исправил, спасибо.
  • +1
    Это для игры с компом. А если с человеком играть — как только партнер просекает тактику сразу становится неинтересно.

    Потому у меня несколько сценариев:
    «максимальной вырожденности» — когда поля вокруг разных кораблей сильно совпадают. Тогда число «пустых» клеток максимизируется но противнику становится проще вычислить следующий корабль найдя один

    «разбросать всё по бокам, оставить внутри дыру»

    «то как я играла в первом классе школы» — равномерное распределение всего и вся
  • 0
    Хм а если допустить перегибы в кораблях т.е Г-образные и Т-образные и тд, но без соединений по диагонали… тогда использование данной стратегии принесет меньше пользы… и больше вариантов расстановки кораблей
    • 0
      Да, нужно будет тактику изменять.
      Но учтите, что и надстройка у изогнутых кораблей больше
      (по крайней мере у тех, что стоят не с краю).
      Особенно интересен вариант изгиба 4х трубника как в тетрисе
      Т-образный, S и Z — образный.
      • 0
        визуальный эффект оказался обманчивым. =(
        проверил, оказалось, что во многих случаях и по надстройкам совпадают.
  • 0
    а я то думаю чего я всегда выигрывал :)))
  • 0
    Корабли не могут соприкасаться.
    Уточните, что имеется в виду касание в 8-связном смысле. Потому что некоторых местностях встречается разновидность «морского боя» на 4-связном поле.
  • 0
    Первый раз вижу такое наименование как "*трубные". Всегда юзали "*палубные" :)
  • 0
    Почините пожалуйста картинки :)
    • 0
      Починил. =)
  • 0
    Интересная теория.

    Попробую соотнести с играми на сайте «Морской бой» (http://battleship-game.org/), когда статистика накопится.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.