创建Sudoku解决方案CHECKER
这里有Sudoku SOLVERS的面条,但是我希望您创建一个尽可能小巧的解决方案CHECKER(代码高尔夫球)。
一个有效的条目将能够采用9x9数组作为参数(通过引用传递,在命令行上序列化,或者您要采用它),或者接受输入文件,该文件是最后一行网格的九行九位数。请参阅下面的输入示例。
有效输入应以10为底的数字(1-9)
缺失,空,多余,非数字的位置或数字在1-9之外的位置应通过返回非零结果,打印错误或同时拒绝这两种方法而被视为无效输入。
您的程序需要测试每个数字是否在每列,每行一次和每个3x3子网格中出现一次。如果通过,则返回“ 0”,否则,返回非零结果。
避免使用外部资源(网站等)。
如果您的解决方案是独立程序,则退出状态为退出或打印时,“通过”或“失败”分别为“ 0”或非零是可以的。
让最小的答案赢!
输入示例:
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}
};
文件:
123456789
456789123
789123456
231564897
564897231
897231564
312645978
645978312
978312645
9个子网格:
+---+---+---+
|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
或“ 正义”更有意义-1