Методы РешенияДанные методы решения написаны по степени сложности - если поле решения было изменено, то программа решения возвращается к методу А и начинает новый поиск решения. Каждый раз, когда используется определённый метод решения, программа записывает очки по шкале сложности, давая общую оценку сложности судоку.
Метод Решения 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-чисел. Спасибо Пэту Бренисер за совет по выходу из программы решения шаг за шагом. |