Créer une solution Sudoku CHECKER
Il y a des tas de SOLUTIONS Sudoku ici, mais je veux que vous créiez une solution CHECKER aussi petite que possible (code-golf).
Une entrée valide pourra soit prendre un tableau 9x9 comme argument (passé par référence, sérialisé sur la ligne de commande, ou comme vous voulez le prendre), soit accepter un fichier d'entrée composé de neuf lignes de neuf chiffres pour la grille finale . Voir des exemples de saisie ci-dessous.
Les entrées valides doivent être des nombres en base 10 (1-9)
Les positions manquantes, vides, supplémentaires, non numériques ou les positions avec des nombres en dehors de 1-9 doivent être rejetées en tant qu'entrée non valide en renvoyant un résultat différent de zéro, en imprimant une erreur ou les deux.
Votre programme doit tester si chaque numéro apparaît une fois par colonne, une fois par ligne et une fois par sous-grille 3x3. S'il passe, retournez "0" et sinon, retournez un résultat différent de zéro.
L'utilisation de ressources externes (sites Web, etc.) doit être évitée.
Si votre solution est un programme autonome, la sortie avec un état de sortie de, ou l'impression, "0" ou différent de zéro pour "Pass" ou "Fail", respectivement, est correcte.
Laissez gagner la plus petite réponse!
Exemples d'entrée:
tableau 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}
};
fichier:
123456789
456789123
789123456
231564897
564897231
897231564
312645978
645978312
978312645
Les 9 sous-grilles:
+---+---+---+
|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
ou-1