Доп. информация
Игра Судоку пришла в Россию из Европы ("Латинский квадрат" без блоков 3х3 ячейки) через Северную Америку (добавились блоки) и Японию (оформилось название игры "судоку").
Игра имеет много разновидностей. Здесь представлен классический вариант игры Судоку.
Разработчик оригинального интерфейса, алгоритма генерации новых судоку и некоторых алгоритмов решения - Polma (Россия).
Формулировка задачи игрока в Судоку очень проста. Имеется квадратная таблица, в которой 9 строк и 9 столбцов, то есть всего 81 ячейка.
Дополнительно в этой таблице выделены квадратные блоки 3 х 3 ячейки. В каждую ячейку таблицы необходимо вписать цифру от 1 до 9.
Первое условие: в каждой строке цифры не должны повторяться (то есть каждая из девяти цифр вписывается лишь в одну ячейку строки).
Второе условие аналогичное: в каждом столбце цифры не повторяются (то есть каждая из девяти цифр представлена лишь в одной ячейке столбца).
Существует и третье условие заполнения таблицы, кардинально усложняющее задачу игрока: цифры не должны повторяться и в каждом блоке.
Первоначально таблица частично заполнена. Известно, что 17 - это минимальное количество заполненных ячеек, при котором задача может быть однозначной, то есть иметь лишь одно решение.
Задача может быть и неоднозначной, если таблица содержит даже большее число заполненных ячеек. Максимальное число заполненных ячеек неоднозначного Судоку составляет 77.
Существует заблуждение, что чем более заполнена таблица, тем легче задача игрока. Это совершенно не так, в чем легко убедиться, решая Судоку различного начального заполнения.
В неклассических разновидностях игры блоки могут быть не квадратными, иногда добавляется требование к заполнению главных диагоналей таблицы - цифры и в них не должны повторяться, сама постановка задачи может видоизменяться и так далее.
В самом простом алгоритме решения Судоку последовательно выбираются не полностью заполненные блоки (последовательность может быть случайной).
Для каждого из блоков последовательно выбираются цифры, не представленные в блоке. Для каждой из этих цифр осуществляется проверка свободных ячеек блока.
Если в какой-либо из 3-х строк, проходящих через этот блок, выбранная цифра уже имеется (естественно вне блока), то свободные ячейки данной строки, входящие в блок вычеркиваются из рассмотрения.
Аналогично анализируются три столбца, проходящие через блок. Если в результате для данной цифры в блоке останется ровно одна свободная ячейка, то в нее и вписываем цифру.
Этот алгоритм легко выполняется визуально.
Чуть сложнее для визуального анализа аналогичный алгоритм уже не для блоков, а для строк и столбцов.
В каждой строке последовательно выбираются цифры, не представленные в ней. Для каждой из этих цифр осуществляется проверка свободных ячеек строки.
Если в каком-либо из 9-ти столбцов, проходящих через эту строку, выбранная цифра уже имеется, то соответствующая ячейка данной строки вычеркиваются из рассмотрения.
Далее рассматриваются блоки, через которые проходит выбранная строка. Если в каком-либо из 3-х таких блоков анализируемая цифра уже имеется, то свободные ячейки данной строки, входящие в блок тоже вычеркиваются из рассмотрения.
Если в результате для данной цифры в строке останется ровно одна свободная ячейка, то в нее и вписывается цифра. Такой же алгоритм и для столбцов.
Ненамного сложнее алгоритм установления для каждой из свободных ячеек паззла (таблицы) того факта, что лишь одна конкретная цифра может быть вписана в ячейку.
Для этого из 9 цифр последовательно вычеркиваются те, которые встречаются в строке, к которой принадлежит ячейка, в соответствующем столбце, а также в блоке 3х3, в который входит ячейка.
Если в результате для данной ячейки останется ровно одна цифра, то она и вписывается в ячейку.
В интернете имеются описания других более сложных алгоритмов решения задачи Судоку (голые или скрытые пары…тройки…четверки, закрытые кандидаты, X-крыло, рыба-меч, цветные метки).
В игре все судоку имеют однозначное решение и разделяются на 4 категории сложностии:
1..3) Легкие - все судоку этой категории решаются с использованием простейших алгоритмов визуального анализа.
4..5) Простые - судоку, которые удается решить тоже визуально.
6..7) Сложные - для решения судоку необходим более глубокий анализ.
8..10) Трудные - самые сложные судоку, в том числе судоку, для решения которых необходимо применять метод проб и ошибок.
В представленной игре имеется База судоку, в которой из 5 472 730 538 возможных судоку различной сложности встроено более 100 000 однозначных минимально заполненных (17-18 цифр).
Программа включает в себя генератор судоку, то есть можно на ходу создавать собственные судоку различного уровня сложности.
Программа умеет решать судоку, полученные из других источников.
Есть возможность получить помощь в виде подсказки, какую цифру надо вставить в определенную ячейку, или вообще помощь в виде демонстрации полного решения.
Для неоднозначных судоку решатель находит варианты решений.
Можно выбирать способы вставки и удаления цифр. Графика выдержана в минималистском стиле для мобилизации внимания. Осуществляется подстройка под размер экрана.
Имеется возможность корректировать уже сделанные ходы.
Для настройки параметров надо нажать на зубчатое колесо (самая правая кнопка меню).
Форматы данных в используемых файлах:
*. sdkr (текстовые файлы: судоку - 9 строк по 9 цифр, 0 - пустая ячейка, далее 48 служебных строк)
* .txt (9 строк по 9 цифр).