求助,验证数独的pascal程序

2025-02-26 05:48:40
推荐回答(1个)
回答1:

var
n:integer;
a:array[1..9,1..9] of byte;
f:text;
i,j,k,m:integer;
begin
assign(f,'数独.in');
reset(f);
readln(f,n);
for k:=1 to n do begin
m:=0;
while not seekeof(f) do begin
for i:=1 to 9 do begin
for j:=1 to 9 do read(f,a[i,j]);
readln(f);
end;
end;

for 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);
for 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);
for i:=1 to 3 do for j:=1 to 3 do
if 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]+
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]+
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
then inc(m);
if m=0 then writeln(k:5,' right') else writeln(k:5,' wrong');
end;
close(f);
end.