99 процентов судоку уровня Экспертный реашаются простыми способами - уже не уверен
- Каждая строка, столбец и блок 3×3 должны содержать цифры 1–9 без повторений.
- Каждая клетка должна отличаться от всех своих «соседей» (peers).
- Инициализация 1.1. Проверяем условие задачи на ошибки 1.2. Создаем массив с 1-9 значениями 1.3. Если клетка фиксирована, то удаляем кандидатов у соседей - eliminate
- Распространение ограничений 2.2. Если кандидат один, то - assign+eliminate 2.3. Если значение в рамках соседей единственное, то - assign+eliminate
- Глубокий поиск
- Init() - Фиксация исходных значений и установка ограничений
- Assign() + eliminate() - Инструмент фиксации и установки ограничений
- Check.Singles() - Обнаружение одиночных значений ранее не зафиксированных
- Check.HiddenSingles() - Обнаружение скрытых одиночек
- Check.Voids() - Определение решения задачи
- ValidateTask() - Проверка исходной задачи
- Инициализация 0.
- Обнаружение одиночек. ЕСЛИ были зафиксированы значения, ТО возвращаем true, иначе false
- ЕСЛИ 2=true И 4=true, ТО 3. ЕСЛИ 2=true И 4=false, ТО КОНЕЦ. ЕСЛИ 2=false И 4=true, ТО 3. ЕСЛИ 2=false И 4=false, !!!ТО КОНЕЦ.
- Обнаружение скрытых одиночек. ЕСЛИ были зафиксированы значения, ТО возвращаем true, иначе false
- ЕСЛИ 3=true и 4=true, ТО 2. ЕСЛИ 3=true и 4=false, ТО КОНЕЦ. ЕСЛИ 3=false и 4=true, ТО DeepSearch. ЕСЛИ 3=false и 4=false, !!!ТО КОНЕЦ.
Naked Singles - выполнено Hidden Singles - выполнено Naked Pair Hidden Pair Pointing Pair Box-Line Reduction X-Wing Swordfish