Я тоже делал прогу по разминированию, но ничего руками вводить не нужно было. она "сканировала" экран, распознавала поле и расположение открытых|закрытых|помеченных ячеек, делала необходимые вычисления и сама мышкой открывала нужные ячейки. таким образом экспертное поле открывалось за 3 секунды.
Ну а для удобства без проблем можно получать данные каждой ячейки из памяти программы. Заминированные конечно не стоит, а вот раскрытые - очень даже не помешало бы.
Вобще я помню на ixbt несколько лет назад на новый год они сделали сапёра… и тот вычислял вероятность мин вокруг нажатия средней кнопкой. Мож поищи, помню рубился.
Кстати майкрософт тоже пострадала такой фигней и встроила в сапер подсказку: Сверните все программы закрывающие рабочий стол и желательно установить на рабочий стол темную картинку или заставку. Запустите игру.Наберите на клавиатуре xyzzy и нажмите левый Shift. Начните игру. Удерживайте левый Shift, когда водите мышкой над полем. При этом верхний левый пискел экрана будет белым если под клеткой над которым проходит мышка нет мины и темным - если есть :-)))
шайтан! чур меня! вон! :))))
это ж классика. настоятельно рекомендую найти jDoom или как его там... doom glide... в общем, оттянитесь. там много от второквака (прыжки, взгляд вверх-вниз).
хех :) не знаю, почему то вспомнилась книжка Сергея Лукьяненко "Лабиринт отражений", про то как там парень се играть после работы в дум, и в итоге не смог остановиться :)
а... в конце 90-х поиграл в Descent в шлеме. несколько чаов подряд. потом вышел на улицу, наклонил голову и сделал прямой шаг... 10 ступенек крылечка прокатился и решил перекурить на лавке пока нормальное восприятие реальности не вернется :)
:) шутки шутками, а ведь подумайте, сколько миллиардов денег было потеряно з-за того что люди на работе в косынку со товарищи рубаюца - вот уж точно, на голодающих детей хватило бы :)
Да уж, не первый... Лет 8 назад я тоже писал такую программку для автоматического разминирования стандартного NT-шного сапера :)
Помнится, даже была возможность подключать разные алгоритмы разминирования как плагины, и я считал вероятность выигрыша каждого алгоритма на реальных запусках.
Не всегда она кстати, совпадала с расчетной. ;)
Спасибо Вам за эту тему. С недавнего времени подсел на "Сапёра". Помогает сконцентрироваться. Но всё это время меня мучали угрызения совести, что я один такой несчастный играюсь в игрушку, которая так непохожа на современные пожиратели 3D-ресурсов. Но теперь я вижу - нас много!
Где то слышал, что существует 4-5(точно не помню) алгоритмов 100% разбора сапера. И за каждый такой найденный алгоритм один из америкосовскх университетов выплачивает по 1 000 000 $. Так что есть смысл совершенствовать программу :)
100% алгоритма в принципе не существует (и не может существовать), так как первым же ходом можно подорваться. И дальше могут быть проблемы в разных местах, которые можно только вероятностно решить. В общем поточнее условия неплохо бы сформулировать :-)
Сдается мне, генерация мин на поле происходит как раз после первого "открытия" - т.е. ты указываешь с чего начинаешь и взависимости от этого расставляются остальные мины.
easter egg (Windows XP)
сначала запомните что делать, затем сверните все приложения. запускаем сапёра, набираем xyzzy, жмём Shift более 1 секунды. теперь если провести над полем мышь, в левом верхнем углу десктопа можно будет заметить мигающий пиксель. если чёрный - значит под мышкой мина!
это я нашёл в инете когда все свои рекорды побил :-)
Хотел было сказать, что лучше не генерировать случайный набор бомб, а перебирать все возможные варианты, но потом посчитал, что например на чистом поле вариантов расположения этих 32х мин будет 3,6E+22, что не очень приятно...
а дальше пошла математика, за которую извените. Это больше для справки
Правда эт число резко падает при открытых бомбах ;) допустим открыта 1 бомба и скажем 15 клеток с цифрами(нну так мне попалось при тупом кликании ;) ), то это уже 6,4E+18 вариантов размещения.
Кстати вот с этими данными видно что 10000 итераций это абсолютно несерьезный подсчет, грубо говоря в начальных условиях шансы что программа даст результаты близкие со статистикой почти нулевые;)
и вообще получается что в среднем(количество клеток претендентов падает, но и кол-во бомб тоже) получается около 1Е+10 вариантов.
короче итераций надо под миллиардик;)
P.S. К сожалению я забыл как подсчитывать доверительные интервалы, так что сказать сколько выборок(в данном случае случайно сгенерированных наборов) будет давать приблизительно точную статистику сказать не могу
P.P.S. Извиняюсь, за такое компасирование мозгов
> Кстати вот с этими данными видно что 10000 итераций это абсолютно несерьезный подсчет
Ну как сказать, если опросить 100 человек из разных мест за кого они будут голосовать на выборах, то вполне можно ожидать примерно этот же результат в целом по стране.
Я тут посчитал, да действительно, число вариантов заметно падает. Имеет смысл использовать, если осталось немного клеток.
(оказывается calc.exe считает здоровенные факториалы на ура =))
Возможно программа не работает при совсем непоставленных минах, а еще возможно ей не хватает возможности кроме неоткрытых клеток выбирать еще и действительно пустые
Да, признаю, мой косяк. Если программе не удается расставить мины 30000 раз подряд так, чтобы они удовлетворяли введенным данным, то она считает, что это невозможно и выдает собщение.
Советую заполнить правый верхний угол нулями, и нажимать только первую кнопку, это немного поможет.
Конечно, нужен другой алгоритм, но я не могу придумать такой, чтобы быть уверенным, что он не нарушает распределение вероятностей расположения мин.
Ну если почитать мой пост выше, то выбор случайной генерации наборов остается самым лучшим вариантом, т.к. иначе прийдется перебирать гораздо больше наборов..
Кстати что-то я не догадался что пустое место мжн нулями заполнять;)
А еще можно проводить предварительный анализ, например, вокруг той точки где 6 мин, можно гарантированно показать 100%. А также можно заняться поиском и заведомо пустых точек. Хотя, обычно, человек их сам легко находит. Кроме простого сравнения числа внутри точки и числа закрытых вокруг нее полей, можно придумать еще несколько алгоритмов(частных случаев) для предварительного анализа.
Сууппер! Правда, лично для меня это бесполезно, но провел больше часа, мучая Сапера с Вашей программой :)
Только это.. Вместо "Вы где-то ошиблись", сделайте, что ли, хотя бы небольшую поблажку.. К примеру, если таких "ошибок" в вычислениях произошло больше пяти - выдавать сообщение. В противном случае - продолжать решать :) А то получилось так, что из 30 попыток решения только одна дошла до 100% (но все-таки дошла :)).
почти такая же история у меня произошла с Military Game, которая является одной из демок технологии Web Start: http://java.sun.com/products/javawebstart/demos.html. Чтобы научится выигрывать компьютер, я написал программу, которая просчитывает выигрышные и проигрышные ситуации и встроил её gui, чтобы она подсказывала, куда мне ходить. Получилась миленькая тренировочная программка. Хотел написать об этом статейку, но похоже никуда на хабре писать не могу, карма-с...
Прохождение сапера на поле 9x9 с 32-мя минами