Программа для решения СУДОКУ, выдающая все возможные варианты решения

Для тех, кто не знаком с Судоку читать дальше не имеет смысла.
Для тех, кто увлекается Судоку, но не интересуется программированием, целесообразно скачать программу и использовать ее по прямому назначению.

японская головоломка Судоку
А для программистов, может быть, будет интересно проанализировать алгоритм решения…

Это не студенческое задание.
Так, из спортивного интереса, я когда-то написал программку для решения этой японской головоломки на VBA (Excel).

Целью было - просто проверять, имеется ли решение для данного варианта конкретной Судоку. Поэтому и решал методом простого перебора с проверкой истинности условий по всем 18 линиям и 9 квадратикам.

Конечно, не рационально и долго.
Почти целую минуту…
Хотя для человека это недостижимый результат…

Кого интересует код на VBA (Excel)скачать xls-файл…
Этим же файлом могут воспользоваться те, у кого не установлена .NET Framework 4. Только макросы включать не забывайте.

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

Павел Жигулин – студент и талантливый программист, взялся за реализацию такой
программы на своем любимом языке C# (Visual Studio 2010, необходима .NET Framework 4).
Предметную область мы обсуждали и разрабатывали вместе.
На мой взгляд, задача оказалась менее заковыристой, чем казалась на первый взгляд
(но не знаю, как Павел на это дело смотрит).

Минимум классов предметной области:

  • Доступность
  • Клетка
  • Регион
  • ход
Понятно, что и каждая клетка, и каждый регион, будь то строка, столбец или квадратик,
в конкретный момент решения (на определенном ходе) обладают определенной доступностью – набором цифр, которые еще не использовались в этом регионе.

А ход представляет собой объект, который в начальный период присваивает одной единственной клетке альтернативное значение, а затем выполняет цепочку необратимых изменений, которые повлекло за собой это первое присвоение.

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

Программа работает практически мгновенно. При условии, что Судоку реальное
(т.е. не менее 20 клеток на начальный момент заполнено)…
Если заданы значения одной или двух клеток, то вариант может быть и не предсказуемым…
Например: «решение не найдено», но над этим мы еще поработаем.

Кроме того, программа позволяет при первом найденном решении, продолжить поиск и будет
останавливаться при каждом следующем найденном решении, услужливо спрашивая пользователя: «Продолжить? Или уже достаточно?».

программа для решения Судоку

Скачивайте и тестируйте программу,

а через некоторое время исходный код будет открыт, и, конечно,
в первую очередь для читателей рассылки ! …

Я лично, как апологет кибернетики «черного ящика» (и Искусственного Интеллекта в целом)
получил большое удовольствие от проделанной работы…

А здесь программа для решения Судоку 16 х 16 на Delphi 7


А здесь программа для решения Судоку 16 х 16 на C#


А здесь программа для решения Судоку 25 х 25 на C#


Можно достаточно легко переделать программу на составление (генерацию) судоку...





Если на этой странице не нашлось того, что Вы так искали...

         Не расстраивайтесь, не все потеряно... Смело щелкайте...

исходный код на заказ. orenstudent.ru Автоматизация документов MS Office. orenstudent.ru исходный код на заказ. orenstudent.ru Помогите найти и устранить ошибку в исходном коде программы. orenstudent.ru Skype-консультирование по программированию
Скайп-консультации
требуются
школьники!


и СТУДЕНТЫ!
Кому не плевать
на деньги!
Сайт помощи студентам по программированию и информатике