Прохождение Сапера На Поле 9Х9 С 32 Минами

Вот к чему иногда могут привести безобидные развлечения.

2 месяца назад я внезапно увлекся игрой в тральщика.

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

На «начальном» уровне игры поле 9х9 и 10 минут. Конечно, это было очень просто, и я начал увеличивать количество мин.

12, 15, 20 штук, это была простая разминка.

Затем после многих попыток мне исполнилось 25. Игра с 27 минами (заминирована каждая 3-я ячейка) заняла у меня несколько часов.

Не останавливаясь на достигнутом, я выставил сразу 30 штук.

Я выиграл через полторы недели, играя по часу в день.

Больше месяца я пытался разминировать 32 мины, и даже в лучших попытках оставалось найти около 10 мин, а потом его взорвали.

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

Основная сложность в игре заключается в том, куда тыкать, если полученные цифры не однозначно определяют наличие или отсутствие мины в какой-либо ячейке.

Но, тем не менее, эти вероятности могут быть очень разными.

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

Но лично я плохо представляю, как можно математически точно вычислить эти вероятности.

Поэтому все эти проблемы пришлось перенести в программу.

На написание у меня ушло около 2 часов, но, наконец, после десятка попыток я победил! Собственно сама программа: Алгоритм работает самым простым способом, который называется «в лоб»: пользователь вводит данные с минного поля, нажимает кнопку, затем программа расставляет недостающие мины в своем массиве случайным образом, но так, чтобы они удовлетворяли введенным данным.

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

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

(программисты и математики, сильно не ругайте :) Ввод данных:

Прохождение Сапера на поле 9х9 с 32 минами

Результат:

Прохождение Сапера на поле 9х9 с 32 минами

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

Ячейка может быть пустой (если о ней ничего не известно), цифрой от 0 до 8 или буквой «м», если ячейка помечена как заминированная.

Все 3 кнопки справа рассчитывают вероятности, разница заключается в разном количестве итераций (100, 1000, 10000).

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

Остальное ясно.

Вы можете скачать Здесь (200кб).

Сразу приношу извинения за отсутствие какой-либо «надежной» защиты.

Всё, с сапером я закончил.

Хотя бы на пару дней.



Прохождение Сапера на поле 9х9 с 32 минами

Теги: #сапер #Аномальное программирование

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.