Tạo một giải pháp Sudoku KIỂM TRA
Có rất nhiều GIẢI PHÁP Sudoku ở đây, nhưng tôi muốn bạn tạo ra một giải pháp CHECKER nhỏ nhất có thể như con người (code-golf).
Một mục nhập hợp lệ sẽ có thể lấy một mảng 9x9 làm đối số (được truyền bằng tham chiếu, được xê-ri hóa trên dòng lệnh hoặc tuy nhiên bạn muốn lấy nó) hoặc chấp nhận một tệp đầu vào gồm chín dòng chín số cho lưới cuối cùng . Xem ví dụ về đầu vào bên dưới.
Đầu vào hợp lệ phải là số cơ sở 10 (1-9)
Các vị trí bị thiếu, trống, thêm, không phải là số hoặc các vị trí có số ngoài 1-9 phải được loại bỏ làm đầu vào không hợp lệ bằng cách trả về kết quả khác không, in lỗi hoặc cả hai.
Chương trình của bạn cần kiểm tra xem mỗi số xuất hiện một lần trên mỗi cột, một lần trên mỗi dòng và một lần trên mỗi lưới con 3x3. Nếu nó vượt qua, trả về "0" và nếu không, trả về kết quả khác không.
Sử dụng các nguồn lực bên ngoài (trang web, vv) là phải tránh.
Nếu giải pháp của bạn là một chương trình độc lập, thoát ra với trạng thái thoát hoặc in, "0" hoặc khác không cho "Đạt" hoặc "Không", tương ứng, là ok.
Hãy để câu trả lời nhỏ nhất giành chiến thắng!
Ví dụ đầu vào:
mảng 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}
};
tập tin:
123456789
456789123
789123456
231564897
564897231
897231564
312645978
645978312
978312645
9 lưới con:
+---+---+---+
|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
hoặc-1