Buat CHECKER solusi Sudoku
Ada banyak sekali SOLOTER Sudoku di sini, tapi saya ingin Anda membuat CHECKER solusi sekecil mungkin secara manusiawi (kode-golf).
Entri yang valid akan dapat mengambil array 9x9 sebagai argumen (disahkan oleh referensi, diserialisasi pada baris perintah, atau bagaimanapun Anda ingin mengambilnya) atau menerima file input sembilan baris dari sembilan angka untuk kisi terakhir . Lihat contoh input di bawah ini.
Masukan yang valid harus berupa angka dasar-10 (1-9)
Posisi yang hilang, kosong, ekstra, non-numerik, atau posisi dengan angka di luar 1-9 harus ditolak sebagai input yang tidak valid dengan mengembalikan hasil yang tidak nol, mencetak kesalahan, atau keduanya.
Program Anda perlu menguji apakah setiap angka muncul satu kali per kolom, sekali per baris, dan sekali per 3x3 sub-grid. Jika lolos, kembalikan "0" dan jika tidak, kembalikan hasil yang tidak nol.
Penggunaan sumber daya eksternal (situs web, dll.) Harus dihindari.
Jika solusi Anda adalah program yang berdiri sendiri, keluar dengan status keluar dari, atau mencetak, "0" atau tidak nol untuk "Pass" atau "Fail", masing-masing, ok.
Biarkan jawaban terkecil menang!
Contoh Input:
c array:
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}
};
mengajukan:
123456789
456789123
789123456
231564897
564897231
897231564
312645978
645978312
978312645
9 sub-grid:
+---+---+---+
|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
atau-1