验证数独的pascal程序
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/09/03 05:09:26
验证数独的pascal程序
每一行都用到1,2,3,4,5,6,7,8,9,位置不限,
每一列都用到1,2,3,4,5,6,7,8,9,位置不限,
每3×3的格子(共九个这样的格子)都用到1,2,3,4,5,6,7,8,9,位置不限,
游戏的过程就是用1,2,3,4,5,6,7,8,9填充空白,并要求满足每行、每列、每个九宫格都用到1,2,3,4,5,6,7,8,9.
输入:输入n个数独,你来验证它是否违反规则.
第一行为数独个数,第二行开始为第一个数独,之后为第二个,至第n个.
注意!每个数独之间有一个回车隔开!
输出:
若正确则输出”Right”若不正确则输出”Wrong” 输出一个换一行.
1
每一行都用到1,2,3,4,5,6,7,8,9,位置不限,
每一列都用到1,2,3,4,5,6,7,8,9,位置不限,
每3×3的格子(共九个这样的格子)都用到1,2,3,4,5,6,7,8,9,位置不限,
游戏的过程就是用1,2,3,4,5,6,7,8,9填充空白,并要求满足每行、每列、每个九宫格都用到1,2,3,4,5,6,7,8,9.
输入:输入n个数独,你来验证它是否违反规则.
第一行为数独个数,第二行开始为第一个数独,之后为第二个,至第n个.
注意!每个数独之间有一个回车隔开!
输出:
若正确则输出”Right”若不正确则输出”Wrong” 输出一个换一行.
1
var
\x09n:integer;
\x09a:array[1..9,1..9] of byte;
\x09f:text;
\x09i,j,k,m:integer;
begin
\x09assign(f,'数独.in');
\x09reset(f);
\x09readln(f,n);
\x09for k:=1 to n do begin
\x09\x09m:=0;
\x09\x09while not seekeof(f) do begin
\x09\x09\x09for i:=1 to 9 do begin
\x09\x09\x09\x09for j:=1 to 9 do read(f,a[i,j]);
\x09\x09\x09\x09readln(f);
\x09\x09\x09end;
\x09\x09end;
\x09\x09
\x09\x09for i:=1 to 9 do if a[i,1]+a[i,2]+a[i,3]+a[i,4]+a[i,5]+a[i,6]+a[i,7]+a[i,8]+a[i,9]45 then inc(m);
\x09\x09for j:=1 to 9 do if a[1,j]+a[2,j]+a[3,j]+a[4,j]+a[5,j]+a[6,j]+a[7,j]+a[8,j]+a[9,j]45 then inc(m);
\x09\x09for i:=1 to 3 do for j:=1 to 3 do
\x09\x09\x09if a[(i-1)*3+1,(j-1)*3+1]+a[(i-1)*3+1,(j-1)*3+2]+a[(i-1)*3+1,(j-1)*3+3]+
\x09\x09\x09 a[(i-1)*3+2,(j-1)*3+1]+a[(i-1)*3+2,(j-1)*3+2]+a[(i-1)*3+2,(j-1)*3+3]+
\x09\x09\x09 a[(i-1)*3+3,(j-1)*3+1]+a[(i-1)*3+3,(j-1)*3+2]+a[(i-1)*3+3,(j-1)*3+3]45
\x09\x09\x09then inc(m);
\x09\x09if m=0 then writeln(k:5,' right') else writeln(k:5,' wrong');
\x09end;
\x09close(f);
end.
\x09n:integer;
\x09a:array[1..9,1..9] of byte;
\x09f:text;
\x09i,j,k,m:integer;
begin
\x09assign(f,'数独.in');
\x09reset(f);
\x09readln(f,n);
\x09for k:=1 to n do begin
\x09\x09m:=0;
\x09\x09while not seekeof(f) do begin
\x09\x09\x09for i:=1 to 9 do begin
\x09\x09\x09\x09for j:=1 to 9 do read(f,a[i,j]);
\x09\x09\x09\x09readln(f);
\x09\x09\x09end;
\x09\x09end;
\x09\x09
\x09\x09for i:=1 to 9 do if a[i,1]+a[i,2]+a[i,3]+a[i,4]+a[i,5]+a[i,6]+a[i,7]+a[i,8]+a[i,9]45 then inc(m);
\x09\x09for j:=1 to 9 do if a[1,j]+a[2,j]+a[3,j]+a[4,j]+a[5,j]+a[6,j]+a[7,j]+a[8,j]+a[9,j]45 then inc(m);
\x09\x09for i:=1 to 3 do for j:=1 to 3 do
\x09\x09\x09if a[(i-1)*3+1,(j-1)*3+1]+a[(i-1)*3+1,(j-1)*3+2]+a[(i-1)*3+1,(j-1)*3+3]+
\x09\x09\x09 a[(i-1)*3+2,(j-1)*3+1]+a[(i-1)*3+2,(j-1)*3+2]+a[(i-1)*3+2,(j-1)*3+3]+
\x09\x09\x09 a[(i-1)*3+3,(j-1)*3+1]+a[(i-1)*3+3,(j-1)*3+2]+a[(i-1)*3+3,(j-1)*3+3]45
\x09\x09\x09then inc(m);
\x09\x09if m=0 then writeln(k:5,' right') else writeln(k:5,' wrong');
\x09end;
\x09close(f);
end.