Sudoku Solver .. с помощью логики логотип

Методы Решения

Данные методы решения написаны по степени сложности - если поле решения было изменено, то программа решения возвращается к методу А и начинает новый поиск решения.

Каждый раз, когда используется определённый метод решения, программа записывает очки по шкале сложности, давая общую оценку сложности судоку.

Метод Решения А

Просмотрите строку игрового поля, встречаются ли все числа только один раз в строке. Если нет, то клтка, в которой повторяются числа, должна быть решением. Это правило повторяется для столбцов и квадратов.

Уровень сложности=4

Метод Решения В

Просмотрите строку игрового поля, повторяются ли числа в определённом квадрате. Число должно быть только в строке, поэтому удалите повторяющиеся числа из квадрата. Повторите это правило для столбцов.

Теперь в обратном направлении - посмотрите на квадрат в игровом поле, есть ли в нём числа, которые повторяются в определённой строке или столбце. Это число должно быть только в квадрате, поэтому удалите числа из других клеток в строке или столбце, находящихся вне квадрата.

Уровень сложности=8

Метод Решения С

Посмотрите на строку игрового поля, все ли числа встречаются один раз в строке. Если клетки, где они встречаются, совпадают с другим числом по этим же критериям, то эти клетки должны содержать эту пару чисел - поэтому удалите остальные варианты в тех клетках. Опять повторите это правило для столбцов и квадратов. Этот метод также повторяется для троек и выше.

Уровень слоности=16

Метод Решения D ДОПОЛНЕН!

Дополненный метод был запрограммирован Эланом Чэмерс - спасибо Эл!

Посмотрите на строку игрового поля, есть ли в поле группа N клеток, в которых возможны только N числа. Если такая связь есть, то эти клетки должны содержать данные цифры, поэтому можно удалить эти числа из других клеток в строке.

Это правило повторяется для столбцов и квадратов.

Например, в строке

1         2         3         4         5         6         7         8         9
---------------------------------------------------------------------------------
378       38        6789      37        458       2         34568     489       1

Столбцы 1,2, и 4 содержат цифры 3, 7, и 8.

Поэтому можно удалить [78] из столбца 3, [8] из столбца 5, [38] из столбца 7 и [8] из столбца 8.

После этого строка выглядит вот так:

1         2         3         4         5         6         7         8         9
---------------------------------------------------------------------------------
378       38        69        37        45        2         456       49        1

Для практики попробуйте эту страницу.

Уровень сложности=32, 48 или 64 для чисел N=2,3 и 4 соответственно.

Метод Решения Е - ещё не запраграммирован.

У нас есть новый Метод Решения, предложенный для решения наших Сложных Судоку... но пока этот метод не закодирован. Чтобы увидеть новое правило или если Вы надумали сделать кодировку, нажмите сюда.

Метод Решения F ДОПОЛНЕН!

Этот метод несложный вначале, но усложняется к концу описания.

Вот лёгкая часть: Посмотрите на строку и найдите места, где число появляется только в двух клетках. Если есть другие ряды, которые также совпадают с описанием с тем же числом, и также совпадают столбцы клеток в обоих случаях, значит число должно быть в двух из этих четырёх клеток. Потом можно удалить это число из совпадающих столбцов. Повторите это правило для столбцов.

Этот метод известен среди мастеров как "X-wing".

Ниже то же правило для квадратов:

Если в каждой строке две клетки находятся в тех же двух квадратах, то можно удалить другие случаи в совпадающих квадратах. Повторите для столбцов относящихся к строкам и для столбцов относящихся к квадратам. Потом повторите для квадратов - если в двух квадратах есть строки или столбцы и число, которое появляется только в двух клетках каждого квадрата, в совпадающих строках и столбцах, тогда другие случаи с данным числом можно удалить в этих стоках и столбцах. (довольно сложно, да? не знаю, понимаю ли я это всё сам.)

Далее ещё сложнее с три-на-три эквивалентом, называемым Swordfish.

В конце идёт решение проблемы четырёх клеток и так далее. Эл Чэмберс ещё раз выступил вперёд и закодировал общую версию Метода Решения F, которая доходит до сложности N клеток. Потрясающе. Он назвал эту версию, где N=4 - Jellyfish, потому что, я предполагаю, от неё подкашиваются коленки. Нельзя не согласиться, Эл.

Уровень сложности=48 (для X-wing) или 64 (Swordfish и вышеупомянутое)

Другие методы решения

Другие методы можно посмотреть здесь John Perry's website. Эти методы довольно сложные, но, возможно, они будут способствовать тому, чтобы Вы зашли на страницу написания Javascript кода!

Что такое "Допустить предположения-и-проверку"?

Здесь используется так называемая "путеводная нить". Если все варианты исчерпаны, программа предлагает какое-то число за ответ и, применяя методы решения к предположенному числу, пытается найти решение. Если в результате получается неверное судоку, программа предлагает другое число. Если были использованы не все числа, то программа продолжает подбирать ответ. Является ли этот метод логичным - вопрос спорный, поэтому это дополнительная функция.

Вернуться к Первому Решению

Если Вы используете метод "предположения-и-проверка", то всегда есть возможность того, что есть и другое решение для данной судоку. Если галочка не поставлена в поле "Вернуться к первому решению", то программа проверит, является ли ваше решение единственно возможным.

Выражение Благодарности

Большое спасибо 'rubylips' на сайте http://www.act365.com/sudoku/ за советы и помощь в создании путеводной нити и другой полезный вклад.

Также спасибо r.e.s за обеспечение proof that Sudokus are NP-hard и за тестирование программы решения.

Спасибо Питу Форман за обновление метод решения B о просмотре квадратов.

Спасибо Колин Хьюгз за нахождение ошибки в методе установки.

Спасибо Кевину Кук за нахождение ошибки в окне сообщений.

Спасибо Тим Линдсэй за пример, нерешаемый с помощью логики, - это вдохновение для нашей страницы сложных судоку.

Спасибо Билу Гайлз за идею программы решения Шаг за Шагом.

Спасибо Марку Суммервилль за логические правила для методов решения E и F.

Спасибо Кевину Лосон за предложение другой слоной головоломки.

Спасибо Джону МакЛеод за переработанную версию метода D.

Спасибо Дэвиду Баджет и Джону МакЛеод (снова!) за объяснение версии "квадрата" в методе F.

Спасибо Тиму Нобель и Майклу Лоренс за предложения новых правил.

Спасибо Элу Чэмберс за кодировку его обновлённого метода D - молодец!

Спасибо Крэгу Оакли за Swordfish.

Спасибо снова Элу за метод F .. это выше моего понятия!

Спасибо Николасу Леутре за перевод веб-сайта на французский язык.

Спасибо Сернину Ван дэ Крол за перевод сайта на голландский язык.

Спасибо Риккардо Рива за перевод сайта на итальянский язык.

Спасибо Гордону Ройял за соединение нашего сайта с его судоку из 17-чисел.

Спасибо Пэту Бренисер за совет по выходу из программы решения шаг за шагом.





©2006 sudokusolver.co.uk - Sudoku Solver является собственностью Shopping.net Limited