Створіть рішення судоку CHECKER
Тут є одул Sudoku SOLVERS, але я хочу, щоб ви створили рішення CHECKER якомога меншим по-людськи (code-golf).
Дійсний запис зможе або взяти масив розміром 9x9 як аргумент (переданий за посиланням, серіалізований у командному рядку, або, якщо ви хочете взяти його), або прийняти вхідний файл, який становить дев'ять рядків з дев'яти чисел, для остаточної сітки . Дивіться приклади введення нижче.
Дійсне введення має бути базовим числом 10 (1-9)
Пропущені, порожні, зайві, нечислові позиції або позиції з цифрами поза 1-9 повинні бути відхилені як недійсні введення шляхом повернення ненульового результату, друку помилки або обох.
Вашій програмі потрібно перевірити, чи відображається кожне число один раз у стовпчику, один раз у рядку та один раз у підмережі 3х3. Якщо він пройде, поверніть "0", а якщо ні, поверніть ненульовий результат.
Використання зовнішніх ресурсів (веб-сайтів тощо) слід уникати.
Якщо ваше рішення - це автономна програма, вихід із статусом виходу або друк "0" або не нульовий для "Pass" або "Fail" відповідно, нормально.
Нехай виграє найменша відповідь!
Приклади введення:
c масив:
int input[9][9]={{1,2,3,4,5,6,7,8,9},
{4,5,6,7,8,9,1,2,3},
{7,8,9,1,2,3,4,5,6},
{2,3,1,5,6,4,8,9,7},
{5,6,4,8,9,7,2,3,1},
{8,9,7,2,3,1,5,6,4},
{3,1,2,6,4,5,9,7,8},
{6,4,5,9,7,8,3,1,2},
{9,7,8,3,1,2,6,4,5}
};
файл:
123456789
456789123
789123456
231564897
564897231
897231564
312645978
645978312
978312645
9 підмереж:
+---+---+---+
|123|456|789|
|456|789|123|
|789|123|456|
+---+---+---+
|231|564|897|
|564|897|231|
|897|231|564|
+---+---+---+
|312|645|978|
|645|978|312|
|978|312|645|
+---+---+---+
1
або-1