В судоку я не профессионал, однако случилось так, что я разработал некоторые собственные подходы к решению этих задач. Не специально это делал, а в порядке иллюстрации общих подходов к решению проблем. Основной мой подход к не решаемым обычными приемами задачам судоку – это методы, основанные на своеобразной модели механизма вращения цифр. Если привыкнуть к нему, то получается не так уж и сложно: цифры переходят по трем строкам или трем столбцам, как бы вращаясь в левом или правом направлении. Могут вращаться тремя тройками - триплетами – или тремя парами и тремя одиночками. В последнем случае одиночки вращаются в направлении, противоположном вращению пар. Это вращение наиболее удобно проследить на рабочей таблице, в которой первоначально пустые ячейки заполняются числами 123456789, а затем по обычным и широко известным правилам производится удаление ("вычеркивание") лишних цифр.
Я уже написал раньше свою заключительную статью по судоку и вам придется ознакомиться с ней, иначе трудно будет разобраться с содержанием данной статьи, которая дополняет предыдущую статью.
Первое, что меня озадачило, когда я занимался судоку, это отсутствие очень сложных задач судоку, кроме известной "самой сложной в мире" задачи Арто Инкала. Я предложил несколько своих вариантов, а потом подумал: ведь судоку – это игра, а если сделать задачи очень сложными, то ими, помимо проявления разового интереса, никто не будет заниматься. Так что больше очень сложных вариантов я и не предлагаю, тем более что занятие это очень утомительное при отсутствии у меня специально разработанных для этой цели программ. Впрочем, и простых вариантов я тоже не предлагаю, поскольку у меня сейчас иной род занятий.
Второй момент, я не мог для себя решить: достаточно ли разработанных мною приемов "вращения" и обычных средств "вычеркивания" цифр, чтобы решить любую, действительно очень сложную, задачу судоку.
Итак, я взял достаточно сложную задачу, сопоставимую по сложности с известной задачей Арто Инкала, и попробовал ее решить своими методами "вращения" и обычными приемами "вычеркивания" цифр. Вот этими "логическими" приемами мне удалось решить задачу более чем на 90%. Остаток задачи легко решался простым подбором – всего лишь оставалось выбрать одну цифру из двух возможных. Можно было также сделать выбор нужной цифры по оценке ее вероятности быть нужной цифрой. Действительно, один раз вероятностный метод сработал с запасом: предсказал даже более чем одну из нужных цифр, но другой раз – самый вероятный вариант как раз и оказался не правильным. То есть, вероятностные методы работают, но иногда случаются и маловероятные события, которые порой мы понимаем как чудеса.
Но все же я закончил задачу так сказать логическим путем. Однако здесь мне пришлось обратиться уже к иной схеме, которую я для себя назвал "длинный взгляд". Суть его в том, чтобы выбрать два альтернативных варианта, например пару единственно возможных цифр, затем умозрительно проследить цепочку следствий каждого выбора и обнаружить совпадающие результаты в этих двух взаимоисключающих вариантах выбора. Затем в рабочую таблицу подставляется этот совпадающий результат и далее она обрабатывается прежними методами.
Можно ли расширить и дополнить приемы решения судоку введением метода "длинного взгляда", соответственно доведя его до состояния некоторого стандартного подхода? Я подумал над этим, но засомневался: стоит ли это делать. Во-первых, этот метод был бы еще сложнее, чем "вращение" цифр, так что реально им пользоваться будет пожалуй сложнее, чем решать задачу простым подбором. А во-вторых, дальнейшее усложнение методов решения судоку – это уже получается нечто вроде научной работы, не входящей в мои цели и не интересной обычному кругу решателей судоку.
А теперь я представляю задачу и ее решение, чтобы желающие могли оценить ситуацию с решением судоку и составить об этом свое мнение, возможно отличное от того, что я по этому поводу уже сказал.
Итак, задача:
И рабочая таблица к задаче:
Теперь ближайшая локальная задача в задаче (я же не виноват, что в нашем языке всегда не хватает нужных и разом с этим точных слов) – это найти те строки или столбцы, начиная с которых и "раскручивается" решение исходной задачи. Опуская гору трудоемких и пустых вариантов анализа, которые мне пришлось "прокрутить", остановимся лишь на продуктивных раскладках в строках 4, 5 и 6:
R3:(46789+3+4689)+(689+3+7)+(3+12678+9)>R(3+6789)+12+4, R3+(7+689)+(9+12678)+(468+468)>R3+(7+68)+(9+12)+(468+468)
R5:(24689+5+1)+(168+5+146)+(5+1678+1468)>R(5+1468)+2+7, R5+(1+24689)+(68+4)+(678+468)>R5+(1+29)+(4+68)+(7+68)
Читается это так: цифра три при вращении в правом порядке R3 проходит сочетания цифр (46789+3+4689)+(689+3+7)+(3+12678+9), в чем вы можете убедиться, просматривая строки 4, 5 и 6. Из чего следует (знак ">"), что цифра 3 может образовывать R(3+6789)+12+4, т.е. пару правого вращения из цифры 3 и одной из цифр в 6789, и возможные одиночки левого вращения: (1 либо 2) и 4. Другое возможное следствие этого расклада следует после запятой: R3+(7+689)+(9+12678)+(468+468). То есть, если 3 не параобразующая, а одиночка правого вращения, то она при своем вращении должна встретить пары (7+689)+(9+12678)+(468+468), анализ которых приводит (знак ">") к ситуации R3+(7+68)+(9+12)+(468+468).
Фрагмент с R5 расшифровывается аналогично.
Совместный анализ раскладов R3 и R5 приводит к ситуации:
R(3+6789)+12+4, R3+(7+68)+(9+12)+(468+468)>R3+(7+68)+(9+1)+(4+68)
R(5+1468)+2+7, R5+(1+29)+(4+68)+(7+68)>R5+(1+9)+(4+68)+(7+68)
Если имеют место R(3+6789)+12+4 и R(5+1468)+2+7>L2+?7+?4, то не складывается ни одна из возможных групп Lодиночек, что означает, что R3 и R5 - не параобразующие, а одиночки.
Далее следует: если R3 и R5 - одиночки, то 2 – Rодиночка, так как ее нет в Lпарах.
Итог этого анализа: L(1+9)+(4+68)+(7+68)+R(2+3+5)
Подставляем в 456 (т.е. в строки 4, 5 и 6) группу L(1+9)+(4+68)+(7+68)+R(2+3+5) согласно правилам вращения:
Далее продолжим обработку всей таблицы обычным методом "вычеркивания" лишних цифр:
Далее переходим к анализу строк 123.
L4:(234+49+7)+(4+27+6)+(127+4+12)>L(4+27)+3+1+6
L5:(5+169+26)+(29+1+5)+(127+59+35)>L(5+129)+6+7+3
L8:(123+8+23)+(279+8+3)+(6+89+38)>L(8+3)+1+6+7
R6:(5+169+26)+(4+27+6)+(6+89+38)>R(6+???)
Получается что для 6 нет пары, т.е. 6 – Rодиночка.
R6+(5+169)+(4+27)+(89+38)
Итог: L(4+27)+(5+19)+(8+3)+R6>B3-19,C3-6,I2-3,H2-8. То есть, по сути единственная дополнительная информация, которую мы можем извлечь из этого анализа заключается в результате: H2-8. Однако подставим полученный итог в строки 123:
И далее продолжим, обычным "вычеркиванием", обработку всей таблицы
Далее продолжим с анализа столбцов GHI. Здесь теперь просматривается R вращение трех пар:
R(3+5)+R9+R7
R(3+5)+12+248+26>R(3+5)+1+48+6
R7+126+126+12468>R(7+126)+8
R9+48+2468+1248>R(9+48)+6
Итог: R(3+5)+R(7+126)+R(9+48)+?
То есть, по сути здесь не смогли ни доопределить Rпары, ни определить хотя бы одну Lодиночку, так что и в таблицу нам нечего подставлять, кроме, разве что, оценочного или вероятностного результата. Самым вероятным кандидатом на одиночку по частоте появления его в этом качестве является 6, затем 8 и наименее вероятный 1. Так оно и в действительности получается: 6 и 8 – одиночки, 1 – параобразующая. Если подставим в таблицу L6, то задача будет быстро решена. Довольно быстро также можно дорешить задачу и простым подбором нужных цифр.
Однако я все же решил завершить задачу "логическим" путем. Самый подробный дополнительных анализ столбцов GHI никакой новой информации не дал. Тогда я снова обратился к анализу строк 123. Здесь, кроме очевидной R6-одиночки, получился следующий расклад по количеству появлений цифр в качестве кандидатов на одиночки: 1 – 3 раза, 2 – 4 раза, 7 – 1 раз, 9 – 2 раза. По вероятностям получалось, что 7 – кандидат на параобразующую, а не на одиночку, однако в реальности 7 все же одиночка. В общем, статистика на этот раз не сработала. Возможно потому, что выборка была все же небольшой.
Тогда мне пришлось прибегнуть к новому "логическому" приему "длинный взгляд", не относящийся ни к технологии "вращения", ни к технологии "вычеркивания" цифр.
Рассмотрим альтернативу: либо D3=7, либо E1=7, и проследим цепочки возможных следствий выбора одного из двух взаимоисключающих вариантов:
D3=7>G3=I3=12>B3-9
E1=7>E8-4>G8-1>I3-1>B3-9
В любом из двух вариантов мы имеем совпадающий результат B3=9, который мы можем поместить в обрабатываемую таблицу и завершить решение задачи простым "вычеркиванием" лишних цифр:
В заключение приведу вкратце корректное решение задачи (видимо это задача Арто Инкала за 2012 год), которую в предыдущей основной статье я первоначально принял за нерешаемую.
Задача (видимо это задача Арто Инкала за 2012 год) имеет следующий вид:
Рабочая таблица к ней
Триплеты в строках 456 не получаются: например, потому, что 1 не сохраняет постоянное соседство ни с 5, ни с 7.
Не знаю почему, но подсознание (накопленный ранее опыт) сразу подсказывает что есть R(4+5), R(7+x) - скорее (7+8), и L1 и похоже L3. Однако делаем проверку:
R5+123469+23489+234689>R(5+2349)+L1
R7+24689+23689+12689>R(7+2689)+L1+L3+L4
R4+123569+23589+35689>R(4+359)+L1
3 и 4 - возможные кандидаты в (5+2349), а L1 - без возражений
L1+(5+2469)+(268+2689)+(7+289)>L1+(5+4)+(268+2689)+(7+289)>L1+(4+5)+(6+289)+(7+289)+L3
L4+(268+2679)+(5+2389)+(1689+12689)>L4+(7+268)+(5+3)+(1+2689)
Пояснение: 4 встречается только раз с одиночкой, значит она параобразующая, после уточнения ">" уже 6 встречается лишь раз с L1, поэтому 6 - тоже параобразующая, L3 появляется в качестве одиночки как не вошедшая в пары.
В любом сочетании с R4 и L4 имеем 5 и 7 Rпараобразующие, где 1 не входит ни в одну из возможных Rпар и следовательно может быть лишь L1 одиночкой с вышеприведенными последствиями R(4+5)+(6+289)+(7+289)+L(1+3+289), которые подставим в строки 456 с последующей обычной обработкой всей таблицы:
Далее рассматриваем столбцы ABC:
L1:(1246+124+7)+(1+2369+279)+(1+8+267)>L(1+267)+4+39+8,L1+(7+246)+(2369+279)+(8+267)>L1+(7+4)+(3+29)+(8+26)
R8:(8+249+46)+(5+2368+28)+(1+8+267)>R(8+26)+1+5
Итог ABC: R(7+4)+(3+29)+(8+26)+L(1+5+269)
Чтобы не растягивать нашу дополнительную статью, остановимся на нем, подставим в таблицу и путем обычного "вычеркивания" лишних цифр завершим задачу:
P.S. Стыдно сознаться, но я запутался в задачах Арто Инкала: сколько их у него и когда какую он изобрел. В интернете путаные сведения на русском, а в финском языке я не силен.
Последняя из вышеприведенных задача – это, видимо, была более ранняя из самых трудно-сложных в мире задач судоку. Но в качестве компенсации за свою некомпетентность я приведу для вас набросок решения задачи, которая "самая сложная в мире" даже против "самой трудной в мире" задачи судоку.
Итак снова задача Арто Инкала:
Рабочая таблица к ней:
Я ее (задачу) сначала решил, правда не в первый раз, а потом сверил с известным ответом, но не наоборот.
Начал на сей раз с анализа строк 123:
R5:(1269+249+5)+(4679+5+467)+(5+469+348)>R(5+469)+12+7+8, R5+(1269+249)+(4679+467)+(469+348)
L1: L1+(5+249)+(2468+4689)+(2+34679)>L1+(5+49)+(468+4689)+(2+34679)
Далее решил, что все сходится на варианте L1+(5+49)+(468+4689)+(2+34679) и подставил его в таблицу с дальнейшей ее обычной обработкой:
Здесь мы имеем:
L1+(5+49)+(468+4689)+(2+34679)
R3:(2369+7+269)+(3+24689+24678)+(1469+2+1347)>R(3+2679)
L3:L3+(8+469)+(24678+24689)+(5+469)>L3+(8+469)+(2+4679)+(5+49)
По совокупности теперь мы имеем L3 и R8, что подставляем в таблицу:
Продолжим анализ все тех же строк 123
R7+269+269+269>R(7+2)
L7+(269+269)+(5+469)+(2+169)>L7+(6+9)+(5+4)+(2+1)>/L1,L7
Окончание второй строчки означает, что две одиночки 1 и 7 не могут находиться в одной паре. Отсюда следует результат
R(7+2),
который мы подставляем в таблицу, и после обычной ее обработки "вычеркиванием", т.е. удалением лишних цифр, завершаем задачу:
Вот, пожалуй, и все у меня по теме судоку. Метод "вращения" цифр он, конечно, не простой. Но, как я уже не раз говорил об этом, при желании сложное можно освоить и сделать не очень сложным, а далее, при настойчивости, даже простым и тривиальным. После чего откроются горизонты для еще более высокого уровня решения проблем.
Таков испытанный подход в решении всех проблем. И об этом были мои статьи, касающиеся, в частности, задач судоку.
Удачи вам на этом пути!
Список и краткий обзор статей, касающихся судоку