image

Haken und Minen

Бревна и мины — древняя немецкая игра. Сюжет игры напоминает шахматные этюды.
Заинтересовавшись головоломкой, я проверил Appstore. Поиск не дал результата.
И я восполнил мировой пробел.

Правила игры


Напоминаю правила игры — дано шахматное поле 8 на 8 клеток. На нем брошены N мин и N бревен. N в диапазоне от 2 до 6.
Бревна можно двигать по правилу шахматной ладьи. Перепрыгивать через другие бревна нельзя. При пересечении мины и бревна — оба предмета снимаются с доски. Цель — съесть все мины и все бревна.

Если бревно при движении не встречает препятствия — оно улетает с доски, этюд считается нерешенным.

Осмелюсь предложить Вам три этюда, решение которых доставит математическое удовольствие.


Этюд номер 5 с разоблачением


На iPhone начальный расклад этюда номер 5 выглядит довольно художественно.

image

В тексте и цифрах расклад выглядит строже.

11-2--
---2x-
x-----
33--x-
4-x---
4-x---
------
----55

Как видно, если первым ходом сдвинуть бревно номер 4 направо — оно съест сразу две мины и задача становится нерешенной.

Решение этюда номер 5




Время решения не имеет значения, я завел его исключительно для любителей скоростного вождения пальцами.
Кроме того, я ограничил поле пропорциями iPhone (6 на 8), отчего игра не потеряла сложности и интеллектуального шарма.
Программа генерирует 10000 раскладов. Некоторые очень интересны, по крайней мере для меня. Предлагаю и Вам погреть мозги.

Три этюда 6, 11 и 23


image

Кто желает порешать этюды не в уме, но на личном iPhone — добро пожаловать в тестеры со своим Apple ID.
Игры в магазине нет. Virgin.

Заключение


В процессе разработки, вдохновленный рассказом blind_designer, я численно смоделировал движение поверхностных волн.
Если тема интересная — я опубликую алгоритм. Рейтинг заменит опрос.

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

image


На старых iPhone приложение Paper Cutter подтормаживает. В новой головоломке Haken und Minen тормоза убраны за счет оптимизации -O3 и выкидывания оператора if внутри циклов.
Всех бывших пионеров — с праздником.

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


  1. nepster
    22.04.2015 16:25
    +5

    >> Если тема интересная — я опубликую алгоритм.
    Конечно публикуйте!


  1. Ezhyg
    22.04.2015 16:48
    +1

    Кнопки да и вообще оформление, очень напоминают игру Pudding Monster компании Zeptolab.


    1. PapaBubaDiop Автор
      22.04.2015 17:03

      Нещадно эксплуатирую их тему. Научился рисовать в этом стиле, как Вам лодка на заставке?


      1. Ezhyg
        22.04.2015 18:01

        А так можно? Кстати их фоны — всё-таки симпатичнее, хотя там работали художники за деньги.

        Да я ваще в восторге — «хатеть!»… только у меня ойПадика нету.


        1. PapaBubaDiop Автор
          22.04.2015 18:35

          Спасибо за комментарий — в нем много скрытого юмора. Как раз фоны я не рисовал, а безвозмездно позаимствовал))
          К тому же у меня эти обои живые — сверху струится вода, эффект- очуметь, не встать. На iPhone 6+ надо смотреть.


  1. Kapitan_Vanya
    22.04.2015 17:49

    «Бревна и мины — древняя немецкая игра» — надо что-то убрать: либо «мины», либо «древняя»


  1. Goodkat
    22.04.2015 18:40

    Программа генерирует 10000 раскладов.
    То-то я второй день играю и до конца пройти не могу :)

    Расскажите об алгоритме генерации уровней и расчитывании сложности.


    1. PapaBubaDiop Автор
      22.04.2015 19:01

      Генерация этюдов классическая. Завел датчик псевдослучайный последовательности.

      - (int)microsoft_rnd {
          holdrand = holdrand * 214013  + 2531011;
          return ((holdrand >> 16)  & 0x7FFF);
      }
      


      Задавая переменную holdrand = puzzleNumber автоматически получаешь уникальный расклад, соответствующий данному числу.
      Первые 35 раскладов проверил и выбрал вручную с приятелем.
      Затем приятель написал на питоне решатель и в диапазоне 21000-22000 проверил все решения. Сходятся — более 95 процентов. Самые трудные (по длине решения) оставил. Потом плюнул и оставил все.
      Они все интересные, особенно несходящиеся.


      1. Goodkat
        22.04.2015 19:05
        +3

        Так там ещё и несходящиеся есть…
        Наверное, лучше удалить аппу от греха подальше


        1. PapaBubaDiop Автор
          23.04.2015 01:59

          Да, надо бросать это дело. У меня в трех из 8-ми соседних кубиках раздаются звуки характерных взрывов)