Это простой переборщик. Он начинается сверху слева, работает слева направо построчно, пытается поместить каждое возможное число в каждый квадрат и продолжается с помощью рекурсивного вызова. В случае неудачи он возвращается и пытается использовать другую альтернативу.
Функция с именем safe
определяет, допустимо ли в настоящее время помещать значение n
в определенную ячейку, проверяя, какие значения уже помещены в строку, столбец и поле.
Это один из самых простых (и самых медленных) способов решить судоку.