🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

2 total messages Started by Takashi Sato Tue, 09 Dec 1997 00:00
魔法陣
#70
Author: Takashi Sato
Date: Tue, 09 Dec 1997 00:00
162 lines
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
#69
Author: Hiroshi OGAWA
Date: Mon, 08 Dec 1997 00:00
16 lines
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