Исходник программы, показывающей пример разработки программы-помощника для решения головоломки Судоку.
Судоку требует заполнения сетки ячеек 9x9 с цифрами от 1 до 9 таким образом, чтобы все 9 значений были включены в каждый столбец, строку и блок 3x3. Некоторые из начальных значений используются в качестве подсказок.
В пример включено несколько примеров головоломок. Вы также можете создавать дополнительные головоломки, вводя начальные значения и сохраняя их в программе. Флажок «Подсказка» будет отображать числа, которые могут быть помещены в каждую ячейку без дублирования числа в этом столбце, строке или блоке. Это значения, которые могут быть размещены без нарушения правил, описанных ниже.
Также есть кнопки для заполнения одной или всех ячеек, где есть только один выбор значения.
Применяются два теста, чтобы определить, есть ли только один выбор:
1: Правило «Без дубликатов» удаляет числа, которые уже существуют в столбце, строке или блоке ячейки.
2: Правило «Полноты», которое требует, чтобы каждое значение встречалось в каждом столбце, строке и блоке. Если одно из значений, которое может быть помещено в ячейку, не может быть помещено в какую-либо другую ячейку без нарушения правила 1, то это должно быть значение, помещенное в эту ячейку.
Один из примеров (оцененный как «Злой») требует ручной версии «Проб и ошибок». Правильное предположение в правильной ячейке и нажатие кнопки «Заполнить все возможные варианты» обычно позволяет найти решение. Если нет, при этом доска выглядит нормально, выбирайте другую ячейку только с двумя вариантами, выберите те, попробуйте кнопку «Заполнить все» еще раз. Если доска недействительна (строка, столбец или блок не могут быть завершены), l «Отменить» последний набор ходов или использовать кнопку «Перезапустить головоломку» и попробовать следующее предположение. Это ручной способ реализовать то, что мы, компьютерщики, называем «поиск в глубину с возвратом», но нормальные люди назвали бы «метод проб и ошибок».