Utwórz kontroler sudoku
Jest tu mnóstwo Sudoku SOLVERS, ale chcę, żebyś stworzył narzędzie KONTROLER tak małe, jak to tylko możliwe (kod-golf).
Prawidłowy wpis będzie mógł przyjąć tablicę 9x9 jako argument (przekazany przez odniesienie, zserializowany w wierszu polecenia lub jakkolwiek chcesz go wziąć) lub zaakceptować plik wejściowy, który składa się z dziewięciu wierszy po dziewięć liczb dla ostatecznej siatki . Zobacz przykłady danych wejściowych poniżej.
Prawidłowe dane wejściowe powinny być liczbami podstawowymi 10 (1-9)
Brakujące, puste, dodatkowe, nienumeryczne pozycje lub pozycje o liczbach spoza 1-9 należy odrzucić jako nieprawidłowe dane wejściowe, zwracając wynik niezerowy, drukując błąd lub oba.
Twój program musi sprawdzić, czy każda liczba pojawia się raz na kolumnę, raz na linię i raz na podsiatkę 3x3. Jeśli przejdzie pomyślnie, zwróć „0”, a jeśli nie, zwróć wynik niezerowy.
Należy unikać korzystania z zasobów zewnętrznych (stron internetowych itp.).
Jeśli Twoje rozwiązanie jest samodzielnym programem, wyjście ze statusem wyjścia lub drukowanie, „0” lub niezerowe odpowiednio dla „Pass” lub „Fail” jest w porządku.
Niech wygra najmniejsza odpowiedź!
Przykłady wprowadzania:
tablica 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}
};
plik:
123456789
456789123
789123456
231564897
564897231
897231564
312645978
645978312
978312645
9 podsiatek:
+---+---+---+
|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
lub-1