Crea una soluzione Sudoku CHECKER
Ci sono un sacco di Sudoku SOLVERS qui, ma voglio che tu crei una soluzione CHECKER il più piccolo possibile umanamente (code-golf).
Una voce valida sarà in grado di prendere un array 9x9 come argomento (passato per riferimento, serializzato sulla riga di comando, o comunque tu voglia prenderlo) o accettare un file di input che è nove righe di nove numeri per la griglia finale . Vedi esempi di input di seguito.
I valori validi devono essere numeri di base 10 (1-9)
Le posizioni mancanti, vuote, extra, non numeriche o le posizioni con numeri al di fuori di 1-9 devono essere rifiutate come input non validi restituendo un risultato diverso da zero, stampando un errore o entrambi.
Il tuo programma deve verificare se ogni numero appare una volta per colonna, una volta per riga e una volta per sub-griglia 3x3. Se passa, restituisce "0" e, in caso contrario, restituisce un risultato diverso da zero.
L'uso di risorse esterne (siti Web, ecc.) Deve essere evitato.
Se la tua soluzione è un programma autonomo, uscire con uno stato di uscita o stampare "0" o diverso da zero per "Pass" o "Fail", rispettivamente, va bene.
Lascia vincere la risposta più piccola!
Esempi di input:
matrice 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}
};
file:
123456789
456789123
789123456
231564897
564897231
897231564
312645978
645978312
978312645
Le 9 griglie secondarie:
+---+---+---+
|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
o-1