Найти в Дзене

Убираем лишние кандидаты судоку (правило 1).

Всем привет, меня зовут Андрей! Напомню о том, что есть несколько правил по сортировке кандидатов судоку. Первое из этих правил звучит так: Если в одном квадратике-блоке все одинаковые кандидаты находятся в пределах одной строки, то все другие кандидаты этой строки – лишние. Итак, приведем пример. Пусть есть какое-то судоку: Уровень этого судоку – средний. Если мы заполним все очевидные, или однозначные, кандидаты, то мы получим вот какое судоку: Данное судоку уже не содержит очевидных кандидатов, а потому оно нуждается в сортировке, или фильтрации, кандидатов. Сортировать кандидаты, то есть отбрасывать лишние, мы будем в несколько этапов. И первый этап будет происходить согласно тому правилу, о котором мы уже говорили в начале этой статьи. Напомним это правило: если в одном квадратике-блоке все одинаковые кандидаты находятся в пределах одной строки, то все другие кандидаты этой строки – лишние. Начнем с кандидатов-единичек: Хотя в нашем примере среди кандидатов-единичек нет таких «лиш

Всем привет, меня зовут Андрей!

Напомню о том, что есть несколько правил по сортировке кандидатов судоку. Первое из этих правил звучит так:

Если в одном квадратике-блоке все одинаковые кандидаты находятся в пределах одной строки, то все другие кандидаты этой строки – лишние.

Итак, приведем пример. Пусть есть какое-то судоку:

Рис. 1. Судоку.
Рис. 1. Судоку.

Уровень этого судоку – средний. Если мы заполним все очевидные, или однозначные, кандидаты, то мы получим вот какое судоку:

Рис. 2. Судоку после заполнения очевидных кандидатов.
Рис. 2. Судоку после заполнения очевидных кандидатов.

Данное судоку уже не содержит очевидных кандидатов, а потому оно нуждается в сортировке, или фильтрации, кандидатов.

Сортировать кандидаты, то есть отбрасывать лишние, мы будем в несколько этапов. И первый этап будет происходить согласно тому правилу, о котором мы уже говорили в начале этой статьи.

Напомним это правило: если в одном квадратике-блоке все одинаковые кандидаты находятся в пределах одной строки, то все другие кандидаты этой строки – лишние.

Начнем с кандидатов-единичек:

Рис. 3. Кандидаты-единички.
Рис. 3. Кандидаты-единички.

Хотя в нашем примере среди кандидатов-единичек нет таких «лишних» кандидатов, которые подходили бы под наше первое правило, мы должны создать такие формулы, которые будут универсальны для любых ситуаций. Попадись другое судоку под эти формулы – произойдет сортировка «лишних» кандидатов. Кстати, цифры вне основного квадрата – это число кандидатов внутри строк, столбцов и блоков. Более подробно мы про это уже говорили в других статьях нашего канала. А теперь – продолжим писать формулы для сортировки кандидатов.

Итак, этап первый. Делим каждый блок на три части по горизонтали и считаем, сколько кандидатов окажется в каждой из частей:

Рис 4. "Счет по строкам"...
Рис 4. "Счет по строкам"...
Здесь внутри основного квадрата – число кандидатов в каждой из тех «троек», на которые мы разбивали каждый из блоков; справа от основного квадрата – число нолей в каждой из строк нашего квадрата; под квадратом: строка 12 – число нолей в каждом из блоков; строка 13 – номера тех блоков судоку, для которых в 12-й строке предоставлено число нолей. Кстати, о нумерации «блоков» мы уже говорили на нашем канале, но можно один раз напомнить: левый верхний блок будет первым, правый нижний последний, верхний средний будет вторым. Нумерация аналогична предоставлению информации в книгах, но не по арабскому, а по нашему, русскому, принципу. Левый верхний угол любой страницы – это начало, и мы читаем именно «по строчкам», то есть сначала первую (верхнюю) строчку читаем слева направо, а потом переходим к левой части второй строчки. Мы здесь не рассматриваем разные методы быстрого чтения, поскольку наша статья по другой теме. В любом случае, как бы мы ни читали текст, начало страницы будет в левом верхнем углу, ну и так далее. Надеемся, что этот пример поможет быстро присваивать номера квадратикам-блокам судоку, и запомнить, где какой блок расположен.

Итак, продолжим. Следующий квадрат – утроение основных цифр:

Рис. 5. Утроение основных цифр.
Рис. 5. Утроение основных цифр.

Этот квадрат почти ничем не отличается от предыдущего. Если там мы объединяли тройки ячеек судоку, то тут мы их не объединяем, а просто утраиваем те цифры, что были там. Смысл цифр внутри этого квадрата прост – просто мы показываем, сколько есть кандидатов в пределах отдельно взятой трети блока. Ноль означает, что вся треть блока пуста, единица – что в этой трети блока есть только один кандидат.

Затем нужно будет заполнить парочку квадратов. Первый будет называться «Есть два ноля в блоке», и второй – «В тройке есть хотя бы что-то». Вот как будут выглядеть эти квадраты:

Рис. 6. Фрагмент листа Excel.
Рис. 6. Фрагмент листа Excel.
Здесь все достаточно просто. «Левый» квадрат означает, что если в блоке есть два ноля, то в пределах блока все кандидаты будут расположены только в пределах одной строки. А это значит, что выполняется правило 1 сортировки судоку, и надо убрать из этой строки все те кандидаты, что не принадлежат этому блоку. В нашем примере этот квадрат состоит только из нулей, но это справедливо, поскольку у кандидатов-единичек нет ни одного случая, при котором все кандидаты в пределах одного блока принадлежали бы только одной строке.

«Правый» квадрат тоже довольно прост. Ноль – значит в этой тройке нет ничего, единица – есть что-то, то есть один, два или три кандидата.

И, наконец, еще два квадрата:

Рис. 7. Фрагмент листа Excel.
Рис. 7. Фрагмент листа Excel.
Здесь тоже всё достаточно просто. «Левый» квадрат будет содержать единицы только в том случае, если «есть два ноля в блоке» и «в тройке есть хотя бы что-то» (а эти два пункта мы выяснили в предыдущих квадратах). Числа справа от левого квадрата – это суммы по строкам от этого квадрата. «Правый» квадрат – это уже новые кандидаты. Правило их вычисления простое: если в какой-то строке квадрата «надо точно оставить» будет ноль в сумме этой строки – тогда берем те же кандидаты, что у нас были до сортировки; если же эта сумма строки не нулевая, тогда возникает второе условие «если», и звучит оно так: если в квадрате «надо точно оставить» будет единица, то оставляем тот кандидат, что был до сортировки, если же не единица – то в новом квадрате кандидатов будет пустое место.

С кандидатами-единичками все понятно. Для вычисления остальных кандидатов нужно перед копированием всего блока от AX1 до BS36 заменить все формулы, удалив из них значки $. После этого можно смело, один раз скопировав весь этот блок, вставлять его в другие фрагменты листа Excel. Так, например, будут выглядеть первые квадратики для кандидатов-двоек:

Лист 8. Фрагмент листа Excel.
Лист 8. Фрагмент листа Excel.

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

Если мы отфильтруем все кандидаты, но увидим, что «лишние» кандидаты – это только тройки в А8 и А9. Вот какими были кандидаты-тройки до фильтрации:

Рис. 9. Кандидаты-тройки до фильтрации.
Рис. 9. Кандидаты-тройки до фильтрации.

И вот кандидаты-тройки после фильтрации:

Рис. 10. Кандидаты-тройки после фильтрации.
Рис. 10. Кандидаты-тройки после фильтрации.
Хотя даже после этого у нас нет «однозначных» кандидатов, мы совершили только первый этап фильтрации кандидатов. Есть много других этапов, о них мы и расскажем в следующих статьях нашего канала, так что приглашаю всех на мой канал!

В этой статье не было формул Excel, только объяснения. Дорогие друзья, подписчики и просто любители судоку – приглашаю всех вас к дискуссии. Если вы считаете, что лучше будет, если рядом с объяснениями будут и формулы, то мы учтем это замечание в будущем. Если кто-то хочет узнать формулы для тех квадратиков, что содержатся в этой статье, то напишите об этом в комментариях.

А пока всё, и до новых встреч!