Какие есть варианты проверить, что у судоку только одно решение?

Пишу судоку. Какие есть варианты проверить, что у судоку только одно решение? Самый простой вариант посчитать количество возможных решений. Может быть существуют какие-то другие, менее затратные и более простые, варианты?
  • Вопрос задан
  • 588 просмотров
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
Вариант проверить, что у головоломки есть только одно решение, только один.
Написать решатель такой головоломки и скормить ему задание. Если он успешно ее решает - результат единственный. Если упирается в "вилки" - значит, головоломка составлена неправильно.
Все подобные головоломки составляются на компьютере именно таким образом:
- заполняется готовое поле решения
- убирается по одной цифре, после чего запускается решатель
- если он не смог решить головоломку, цифра возвращается на место
- цикл повторяется до перебора всех цифр (или не всех, если нужно составить головоломку меньшего уровня сложности).
Например, в наборе головоломок от Simon Tatham судоку тоже есть (под названием Solo), и составляется она именно так.
Ответ написан
Делаешь прямоугольный массив, загоняешь исходные данные, затем рекурсивно пробегаешься по всем "заполненным" клеткам и отмечаешь по строке, столбцу и квадрату 3*3, каке решения могут быть в каждой ячейке. Таким образом, если возможное решение в данной ячейке только 1, то это оно и есть. Разные варианты могут появляться при разных обходах заполненных ячеек. Условие выхода из рекурсии - все ячейки заполнены. Результаты сравниваешь, если есть хотя бы 2 различных, вылетаешь с результатом false
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы