1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| program test;
uses wincrt;
type
short = 1..9;
var
i, k, j, n,s,o, l, p, q, limk1, limk2, limi1, limi2,c,w: short;
ch, num: string[1];
x, y, no: integer;
b, t: boolean;
key: char;
M: array [1..9, 1..9] of string[1];
xy: array [1..2, 1..81] of integer;
label
theend, randoms, repeatative;
begin
for k:=1 to 9 do
for i:=1 to 9 do
M[i,k]:='*';
randomize;
for k := 1 to 9 do
begin
if k in [1..3] then
begin
limk1 := 1;
limk2 := 3;
end
else if k in [4..6] then
begin
limk1 := 4;
limk2 := 6;
end
else
begin
limk1 := 7;
limk2 := 9;
end;
repeatative:
for i := 1 to 9 do
begin
if i in [1..3] then
begin
limi1 := 1;
limi2 := 3;
end
else if i in [4..6] then
begin
limi1 := 4;
limi2 := 6;
end
else
begin
limi1 := 7;
limi2 := 9;
end;
no:=0;
randoms:
no:=no+1;
str(random(9) + 1, ch);
b := True;
for j := 1 to 9 do
b := b and (ch <> M[j, k]);
for l := 1 to 9 do
b := b and (ch <> M[i, l]);
for p := limk1 to limk2 do
for q := limi1 to limi2 do
b := b and (ch <> M[q, p]);
if b = True then
M[i,k] := ch
else
begin
if no=200 then
begin
for o:=1 to 9 do
M[o,k]:='*';
goto repeatative
end;
goto randoms
end;
end;
end;
clrscr;
for c:=1 to 9 do
for w:=1 to 9 do
if w=9 then
writeln(M[c,w])
else
write(M[c,w]);
readln;
end. |
Partager