Sudoku çözümü CHECKER oluşturun
Burada Sudoku SOLVERS'ın omletleri var, ama insanca olabildiğince küçük bir çözüm CHECKER (kod-golf) oluşturmanızı istiyorum.
Geçerli bir giriş, 9x9 dizisini bağımsız değişken olarak alabilir (referansla iletilir, komut satırında serileştirilmiş veya yine de almak isterseniz) veya son ızgara için dokuz satırlık dokuz satırlık bir giriş dosyasını kabul edebilir . Aşağıdaki girdi örneklerine bakın.
Geçerli giriş 10-rakamlı (1-9) olmalıdır.
Eksik, boş, ekstra, sayısal olmayan pozisyonlar veya 1-9 dışında sayıları olan pozisyonlar sıfır olmayan bir sonuç döndürülerek, bir hata yazdırılarak veya her ikisiyle de geçersiz giriş olarak reddedilmelidir.
Programınızın, her sayının sütun başına bir kez, satır başına bir kez ve 3x3 alt ızgara başına bir kez görünüp görünmediğini test etmesi gerekir. Geçerse, "0" döndür ve eğer değilse sıfır olmayan bir sonuç döndür.
Dış kaynakların (web siteleri vb.) Kullanımından kaçınılmalıdır.
Çözümünüz bağımsız bir programsa, "0" veya "Pass" veya "Fail" için sırasıyla "0" veya sıfır olmayan bir çıkış durumundan çıkılması veya yazdırılması tamamdır.
En küçük cevabı kazansın!
Giriş Örnekleri:
c dizisi:
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}
};
dosya:
123456789
456789123
789123456
231564897
564897231
897231564
312645978
645978312
978312645
9 alt ızgara:
+---+---+---+
|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
ya da daha anlamlı olmasını seviyorum-1