Thread View: fj.lang.pascal
2 messages
2 total messages
Started by Takashi Sato
Tue, 09 Dec 1997 00:00
魔法陣
Author: Takashi Sato
Date: Tue, 09 Dec 1997 00:00
Date: Tue, 09 Dec 1997 00:00
162 lines
4256 bytes
4256 bytes
$B:4F#!wEl9)Bg$H$b$&$7$^$9!#(B
$B@hF|$N=gNs$N%W%m%0%i%`$r1~MQ$7$F!"$"$kF~NO(Bn$B$KBP$7$F!"(B
n*n$B$NKbK!?X(B(n*n$B$^$9$NCf$K#1$+$i(Bn*n$B$^$G$N?t;z$rF~$l$F$$$-(B
$B=D!"2#!"<P$a$N?t;z$N9g7W$,$9$Y$FEy$7$$$b$N$r8@$&(B)
$B$r=PNO$9$k%W%m%0%i%`$r:n$m$&$H;W$$!"(B
$B$J$s$H$+<!$N$h$&$J%W%m%0%i%`$r40@.$5$;$^$7$?!#(B
program parmutation(input,output);
{n*n$B$NKbK!?X$r=PNO$9$k%W%m%0%i%`(B}
const Max = 10;
type Range = 1..Max;
NumData = array [Range] of integer;
BooData = array [Range] of Boolean;
var
n,count : integer;$B!!(B{count$B$O(Bperm$B$r8F$S=P$7$?2s?t!#7W;;NL$NL\0B(B}
p : NumData;
Empty : BooData;{$B$=$N?t;z$,;H$o$l$F$$$k$+(B}
found : Boolean;{$BKbK!?X$,8+$D$+$C$?$+(B}
procedure shokika;
{$B$J$K$b;H$o$l$F$$$J$$>uBV$K$9$k(B}
var i : integer;
begin
for i:=1 to n*n do
Empty[i]:=true
end; { shokika }
procedure Print;
{$B$G$-$"$,$C$?KbK!?X$r=PNO$9$k(B}
var i,j : integer;
begin
for j:= 0 to n-1 do begin
for i:=1 to n do write(p[j*n+i]:3);
writeln;
end;
writeln
end;{Print}
function Line(n : integer):integer;
{1$B9T!"$^$?$O(B1$BNsEv$?$j$N9g7W(B}
var i,j : integer;
begin
j:=0;
for i:=1 to n*n do
j:=j+i;
j:=j div n;
Line:=j
end; { Line }
procedure search;
{$B9g7W$rD4$Y$k!#(B}
var i,j,tmp : integer;
hurdle : array [1..4] of Boolean;
procedure col;
{$B9T$N9g7W$rD4$Y$k(B}
begin
for i:=0 to n-1 do
begin
tmp:=0;
for j:=1 to n do
tmp:=tmp+p[i*n+j];
if not (tmp = Line(n)) then hurdle[1]:=false
end;
end; { col }
procedure row;
{$BNs$N9g7W$rD4$Y$k!#(B}
begin
for j:=1 to n do begin
tmp:=0;
for i:=0 to n-1 do
tmp:=tmp+p[i*n+j];
if not (tmp = Line(n)) then hurdle[2]:=false
end
end; { row }
procedure diagonal;
{$BBP3Q@~$N9g7W$rD4$Y$k!#(B}
begin
tmp:=0;
for i:=1 to n do
tmp:=tmp+p[i*(n+1)-n];
if not (tmp = Line(n)) then hurdle[3]:=false;
tmp:=0;
for j:=1 to n do
tmp:=tmp+p[(n-j)*n+j];
if not (tmp = Line(n)) then hurdle[4]:=false
end; { diagonal }
begin
found:=false;
for i:=1 to 4 do hurdle[i]:=true;
col;
if hurdle[1]=true then
begin
row;
if hurdle[2]=true then
begin
diagonal;
if (hurdle[3]=true) and (hurdle[4]=true) then
found:=true;
end
end
end; { search }
procedure perm(level:integer);
{$B=gNs$r:n$k(B}
var i,row : integer;
begin
if level >= n*n then begin
search;
if found then Print
end
else begin
row := level+1;
for i:=1 to n*n do
if Empty[i] then begin
Empty[i]:=false;
p[row]:=i;
count:=count+1;
perm(level+1);
Empty[i]:=true
end;
end;
end; { perm }
begin
writeln('3$B$+$i(B',Max);
readln(n);
writeln(Line(n));
count:=0;
shokika;
perm(0);
write('count=',count);
writeln
end.
$B$H$3$m$,$3$N%W%m%0%i%`$O(Bn=3$B$N;~$O$&$^$/$$$/$N$G$9$,!"(B
n=4$B0J>e$K$J$k$H;~4V$,$+$+$j$9$.$F$&$^$/$$$-$^$;$s!#(B
$B860x$H$7$F$O#1$+$i(Bn*n$B$^$G$N?t;z$r#p$H$$$&G[Ns$K(B
$B#1DL$jJB$Y$F$+$i!"$?$F!"2#!"<P$a$N9g7W$r(B
$BD4$Y$F$$$k$?$a$K(Bn=4$B0J>e$G$O;~4V$,$+$+$k$H$$$&(B
$B8=>]$,5/$3$C$F$7$^$&$h$&$G$9!#(B
$B%P%C%/%H%i%C%/$H$$$&<jK!$r<*$K$7$?$3$H$,$"$j$^$9$,!"(B
$B$=$l$r;H$C$?!"=$@5%W%m%0%i%`$r9M$($F$$$^$9$,!"(B
$B9T$-5M$^$C$F$$$^$9!#(B
$B2~NIE@!"$b$7$/$O%R%s%H$J$I$r65$($F$$$?$@$1$J$$$G$7$g$&$+!#(B
$B8@MU$,B-$j$J$1$l$P!"$I$s$I$sDI2C$7$F$$$-$^$9!#(B
$B;d$b:#0l@87|L?9M$($F$*$j$^$9!#(B
$B$h$m$7$/$*4j$$$7$^$9!#(B
$BEl5~9)6HBg3X9)3XIt>pJs9)3X2J#2G/(B
$B:4F#!!5.(B
E-mail address aem29351@biglobe.ne.jp
Home Page http://www2s.biglobe.ne.jp/~sattak/index.html
Re: $BKbK!?X(B
Author: Hiroshi OGAWA
Date: Mon, 08 Dec 1997 00:00
Date: Mon, 08 Dec 1997 00:00
16 lines
1089 bytes
1089 bytes
In article <66hc29$add$1@meshsv230.tk.mesh.ad.jp> "Takashi Sato" <aem29351@biglobe.ne.jp> writes: >> >> $B%P%C%/%H%i%C%/$H$$$&<jK!$r<*$K$7$?$3$H$,$"$j$^$9$,!"(B >> $B$=$l$r;H$C$?!"=$@5%W%m%0%i%`$r9M$($F$$$^$9$,!"(B >> $B9T$-5M$^$C$F$$$^$9!#(B >> backtrack$B$r;H$C$F<B:]$K=q$$$?%W%m%0%i%`$,F0$+$J$$$H$$$&$J$i(B $B$H$b$+$/!"$=$b$=$b$I$&$$$&$b$N$+$4B8CN$G$J$$$N$G$7$?$i!"(B $B$^$:%"%k%4%j%:%`$NK\$r?^=q4[$GC5$7$FFI$_$^$7$g$&!#(B $BKbJ}?X<+BN$b7k9=C5$;$P$"$j$=$&$J5$$O$7$^$9$1$I$M!#(B -- OGAWA, Hiroshi(santa@kangaku-u.ac.jp) Associate Professor(Labour Economics) Department of Economics, Kanto-Gakuen Univ. Gunnma, Japan
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads