Судоку - инструкция. Решение стандартного судоку
Советую взять лист в клетку, перенести туда картинку с представленным на Рис. 20 судоку и заполнять её пошагово в соответствии с описанием решения.
При этом вы будете фиксировать промежуточные картинки и словно бы прорабатывать этапы решения самостоятельно.
Начнём с лёгких приёмов - проверка положения цифр в клетке по пересечению строк и столбцов. Но это не значит, что этому алгоритму надо следовать неукоснительно. По мере заполнения поля цифрами будут возникать ситуации, где быстрое решение может быть найдено с помощью более сложных рассуждений - будем ими пользоваться, а затем снова продолжать проверку очередных цифр простыми методами.
Итак, начнем с приёма 1 - определение ячеек для каждой цифры.
Для цифры 1 в верхней левой клетке: этой цифрой занят столбец 1 и строки A и C, то есть возможная ячейка только B2.
В центральной клетке отмечаем возможные положения цифры 1 в ячейках D5, F5. А в нижней клетке, поскольку столбцы 4, 5 заняты, цифра 1 может появиться в ячейках G6, H6, что мы и отмечаем парой чёрточек.
Цифра 2 точно оказывается в ячейке C8, так как строки A, и столбцы 7, 9 заняты этой цифрой. А в нижней клетке по центру её положение G6. Но поскольку она занимает позицию цифры 1, то вписываем 1 в парную ячейку H6.
Сразу, в связи с заполнением цифр 1 и 2 делаем дополнительные отметки для цифры 1 в ячейках G3, I3; а для цифры 2 в ячейках I1, I3.
Цифра 3 сразу определяется в ячейке C4, так как строки A, B и столбцы 5, 6 заняты. И отмечаем парами чёрточек возможные позиции цифры 3 в ячейках A1, A3, а также G8, I9.
Цифра 4. Даёт возможные позиции в парных ячейках B8, B9; C2, C3; D5, F5 - отметим их чёрточками.
Тут можно сделать остановку в переборе цифр и заполнить ячейки, решение по которым очевидно. Так, в ячейке E5 ставим 8 как единственную незаполненную. В столбце 6 проставляем недостающие цифры 6 и 8 в ячейках B6, C6. А также в центральной клетке можно заменить пары указателей на 1 и 4 крестиками, так как это связанные ячейки и никакие другие цифры не могут там находиться.
Вернёмся к перебору цифр.
Цифра 5. Заполняем ячейки с её точным расположением: H4, затем A5, затем B8. И так как в ячейке B8 мы заняли место возможной цифры 4, то проставляем 4 в парную ячейку B9. Также отмечаем возможную пару ячеек с цифрой 5: D3, F3.
Тут можно снова приостановиться и проверить столбец 4 и строку B, поскольку там остались по две незаполненные ячейки.
В столбце 4 не хватает двух цифр 7 и 8. Вписываем их соответственно в ячейки B4, G4. В строку B записываем недостающую цифру 9 в ячейку B1.
Во второй клетке сверху не достаёт цифры 9, записывает её в ячейку C5.
И просмотрим столбец 5, где недостаёт четырёх цифр: 1, 4, 6 и 7. Но цифры 1 и 4 определены в сцепке в ячейках D5, F5. Значит недостающие цифры 6 и 7 записываем в нижнюю клетку в ячейки G5, I5 соответственно.
Обратим внимание на строку E. Там не достаёт цифр 3 и 9. Отмечаем их положение крестиками, указывающими на связанные ячейки.
Вернёмся к перебору цифр.
Цифра 6. Отмечаем возможное её расположение в паре ячеек A1, C2.
Цифра 7. Её точное расположение в ячейке C2. При этом она заняла парную ячейку для цифр 4 и 6, проставляем их соответственно в ячейках C3 и A1. И поскольку цифра 6 заняла парную ячейку цифры 3, то записываем 3 в ячейку A3.
Снова делаем отступление.
В строке C не хватает одной цифры 6, записываем её в ячейку C7.
В строке A не хватает двух цифр 8 и 9. Обозначаем крестиками как связанные ячейки.
Продолжим перебор цифр.
Цифра 8. Она не даёт каких-либо уточнений по расположению.
Цифра 9. Также не даёт уточнений.
Итак, мы прошли первый цикл проверки всех цифр, поле частично заполнилось, ситуация изменилась. На этом этапе не лишним будет снова пробежаться по всем цифрам от 1 до 9-ти, могут появиться новые определённости.
По цифрам 1,2 нет уточнений.
Цифру 3 отметим парой чёрточек в ячейках G2, I1.
Цифру 4 отметим парой чёрточек в ячейках G8, H8.
Цифру 5 отметим парой чёрточек (точек) в ячейках D7, F7.
Цифру 6 отметим парой чёрточек в ячейках D2, F2, а также D9, F9.
Цифру 7 заполняем в ячейке H9 (там заняты строки G, I и столбец 8).
После этого определяется ячейка F7, вписываем туда цифру 7. Тут начинается заполнение цифрами по цепочке. Поскольку Цифра 7 заняла ячейку с указателями на цифру 5, то вписываем 5 в ячейку D7.
Снова проверим цифру 5 в левой клетке - вписываем её в парную ячейку F3. Но она заняла место цифры 2, вписываем 2 в парную ячейку F1.
Теперь уточним позицию цифры 2 - место для неё в ячейке I3. Здесь двойка заняла ячейку для цифры 1, вписываем 1 в парную ячейку G3.
Видим, что 1 заняла ячейку с указателем на цифру 3. Вписываем 3 в парную ячейку I1.
Обратим внимание, что строка I почти заполнена, там не хватает цифр 1 и 8, вписываем их соответственно в ячейки I7, I9.
Продолжаем далее перепроверять цифры.
Цифра 8. Для неё ставим парные чёрточки в ячейках H1, H2.
Также видим, что позиция цифры 8 определилась в верхней строке, заполняем 8 и 9 в ячейках A7 и A9 соответственно. Затем ставим парные чёрточки для цифры 8 в ячейках D8, F8.
Проверяем цифру 9. Ставим для неё пару чёрточек в ячейках G2, H2. Видим, что столбцы 1 и 2 для этой цифры заняты, значит определяется её место в ячейке D3. Следом мы можем вписать цифры 3 и 9 в ячейки E2 и E8 соответственно.
Последние недостающие цифры 9 вписываются в ячейки G7 затем H2.
Видим, что в ячейке H2 Цифра 9 заняла место с указателем на цифру 8, вставляем 8 в парную ячейку H1.
В этой клетке осталась незаполненная цифра 4, вписываем её в ячейку G2.
В строку H вписываем парную 4 в ячейку H8, а в строку G оставшуюся цифру 3 в ячейку G8.
Замечаем, что в столбце 1 осталась незаполненной цифра 4, ставим её в ячейку D1.
Мы прошли второй цикл проверки всех цифр. Теперь нет надобности начинать третий цикл, так как поле само показывает приёмы, по которым можно искать решение. А именно: когда мы вносим в ячейку очередную цифру, то следом проверяем позиции именно этой цифры в других клетках.
Проверяем цифру 4 - Заносим в ячейку F5, а в парной, связанной с ней D5 ставим цифру 1. Проверяем цифру 1, находим для неё место в ячейке F8.
Теперь в столбце 8 остаётся одна незаполненная цифра 8 в ячейке D8.
По цепочке проверяем цифру 8, записываем её в ячейку F2. Поскольку она занимает ячейку с указателем на цифру 6, записываем 6 в парную ячейку D2.
Затем проверяем цифру 6, поскольку строка D уже занята, вписываем 6 в парную ячейку F9.
И в последнюю незаполненную ячейку D9 вписываем последнюю недостающую цифру 3.
Задача решена.
Как мы видим, на каждом шаге мы продвигались не по строгой схеме использования приёмов по мере их усложнения, а ситуационно, используя сложившиеся расклады с очевидными решениями, а затем снова и снова возвращаясь к самым простым проверкам. И на каждом шаге по мере заполнения поля цифрами, снова и снова получали точное указание цифры или сужение неопределённости.
Также мы видим, что служебные значки хотя и несколько засоряют поле, однако помощь от них очевидная, и они не затеняют цифр, так что очень рекомендую ими пользоваться.
Свидетельство о публикации №224120900954
допускаете ли возможность их существования?
(я не имею в виду варианты где мало заполненных полей)
заранее признателен!
Виктор По 09.12.2024 14:16 Заявить о нарушении
Я пока не занималась теорией судоку, но это есть в планах.
Что касается случаев, когда я не могла найти решение - то такое бывает. каждый раз оказывается, что это мои собственные ошибки, совершённые по невнимательности. И позже, на свежую голову, всё получалось.
Но меня в данной работе интересовали именно типовые приёмы разрешения неопределённости. Если описанных окажется недостаточно, если выявлю какие-то новые, то добавлю к работе.
Спасибо за рец!
Галина Ларина 09.12.2024 15:12 Заявить о нарушении
вы тот человек, кто мне нужен.
буду ждать результата вашей работы по теории.
однако я считал что нерешаемые есть, то есть ест варианты,
когда нельзя детерминировано предложить продолжение,
но только стохастически
спасибо!
Виктор По 09.12.2024 18:52 Заявить о нарушении
Галина Ларина 09.12.2024 22:15 Заявить о нарушении
что не говорит о решабельности
Виктор По 09.12.2024 23:17 Заявить о нарушении