Article View: fj.lang.postscript
Article #764Re: pentomino in Postscript
From: Yuji Hatakeyama
Date: Fri, 12 Jan 1996 00:00
Date: Fri, 12 Jan 1996 00:00
414 lines
10183 bytes
10183 bytes
$BH+;3!w#O#T#S#L$G$9!#(J
$B0JA0!$;{ED$5$s(J<terada@sanpo.t.u-tokyo.ac.jp (Minoru TERADA)>$B$N(J
$B:n$i$l$?%Z%s%H%_(J$B%N%W%m%0%i%`$r8+$F46F0$7$F$7$^$$$^$7$?!#(J
$B$G$b0u:~$9$k$K$O!$(J
> $B<j85$N=iBe(J LaserWriter $B$G>/$7;n$_$?$H$3(J$B$m(J, $BA4It$r(J
> $B=PNO$9$k$K$O(J 20$BF|DxEY$+$+$k8+9~$_$K$J$j$^$7$?(J.
> SS5 $B$N(J gs $B$G$O(J, $B?t;~4V$/$i$$$@$C$?$C$1(J?
> $B$3$l$O$$$o$f$k>iCL%W%m%0%i%`$G$9$+$i(J, $B$^$A$,$C$F$b(J
> $B8x6&$N%W%j%s%?$KAw$C$?$j$J$5$i$J$$$h$&$K(J...
$B$H$$$&$3$H$GFq$7$$!JIT2DG=$J!K$N$G!$=PNO7k2L$@$1$r(J
$B%U%!%$%k$KMn$7$F$7$^$*$&$H$$$&$N$,0J2<$N%W%m%0%i%`(J$B$G$9!#(J
$B:n<T$K7I0U$rI=$7$F%3%a%s%H$4$H(J PostScript $B%U%!%$%k$K$7$F$"$j$^$9!#(J
$B0J2<$N%W%m%0%i%`$r(J pent.ps $B$H$$$&L>A0$G%;!<%V$7$F!$(J
% gs -q -dNODISPLAY -dNOPAUSE pent.ps
$B$r<B9T$9$k$H!$?t;~4V!J==?t;~4V!)(J$B!K$9$k$H%+%l%s%H%G%#%l%/%H%j$K(J
$B#1#5#M%P%$%HDx$N(J pent.output $B%U%!%$%k$,@8@.$5$l$^$9!#(J
$B$3$N%U%!%$%k<+?H(J$B$,(J PostScript $B%U%!%$%k$K$J$C$F$$$k$N$GM&5$$N(J
$B$"$kJ}$O0u:~$9$k$3$H$b$G$-$k$G$7$g$&!#(J
$B$J$*!$$3$l$r<B9T(J$B$9$k$3$H$K$h$C$F(JCPU$B$KIi2Y$,$+$+$j;E;v$K;Y>c$r(J
$B$-$?$9$3$H$K$J$C$F$b!$EvJ}$O0l:]4XCN$7$^$;$s!#(J
----
($B3t(J) $B2-%F%/%N%7%9%F%`%:%i%\%i%H%j(J $BH+;3(J $BM5<!(J(Hatakeyama Yuji)
$B!z(JNON SANZ DROICT$B!z(J hatakeya@otsl.oki.co.jp
--- pent.ps $B%U%!%$%k(J $B$N;O$^$j(J -----
%!PS-Adobe-2.0
% From: terada@sanpo.t.u-tokyo.ac.jp (Minoru TERADA)
% Newsgroups: fj.org.ptt,fj.lang.postscript
% Subject: pentomino in Postscript
% Date: 1 May 1995 08:42:36 GMT
% Organization: Dpt. of Mechano-Informatics, Univ. of Tokyo
% Lines: 331
% Distribution: fj
% Message-ID: <TERADA.95May1174215@tora.sanpo.t.u-tokyo.ac.jp>
% NNTP-Posting-Host: tora.sanpo.t.u-tokyo.ac.jp
% $B;{ED$H$b$&$7$^$9(J.
% $B0JA0$I$3$+$N%K%e!<%9%0%k!<%W$G(J, Postscript printer $B$K(J
% $B7W;;$r$5$;$k(J, $B$H$$$&OC$,$"$j$^$7$?(J.
% $B0J2<$K<($9$N$O(J, $B@hF|$N(J PTT $B$N$"$H$N:)?F2q$N@J>e(J$B$GOCBj$K$J$C$?(J,
% Postscript $B$G5-=R$7$?%Z%s%H%_%N$N%W%m%0%i%`$G$9(J.
% ($B$H$$$&M}M3$G(J fj.org.ptt $B$K$b%]%9(J$B%H$7$F$$$^$9(J. $B8OLZ$b;3$N(J..)
% $B2>$K$3$l$r(J postscript printer $B$K$*$/$k$H(J, $B!V0u:~Cf!W$H$+(J
% $B$$$C$?$^$^L[(J$B$C$F%Z%s%H%_%N$N2r(J(2339$BDL$j$G$7$?$C$1(J)$B$r(J
% $B7W;;$7$F(J, $B$D$$$G$K%W%j%s%H$7$F$/$l$^$9(J.
% $B<j85$N=iBe(J LaserWriter $B$G>/$7;n$_$?$H$3$m(J, $BA4It$r(J
% $B=PNO$9$k$K$O(J 20$BF|DxEY$+$+$k8+9~$_$K$J$j$^$7$?(J.
% SS5 $B$N(J gs $B$G$O(J, $B?t;~4V$/$i$$$@$C$?$C$1(J?
% $B$3$l$O$$$o$f$k>iCL%W%m%0%i%`$G$9$+$i(J, $B$^$A$,$C$F$b(J
% $B8x6&$N%W%j%s%?$KAw$C(J$B$?$j$J$5$i$J$$$h$&$K(J...
/OUT (pent.output) (w) file def
/Z { OUT exch writestring OUT 10 write } def
/pagenum 1 def
% ---------------------------------------------------
%!PS-Adobe-2.0
/W 6 def
/A {
exch W 1 add mul add
} def
/koma
[
0 1 A 0 2 A 0 3 A 0 4 A
1 0 A 2 0 A 3 0 A 4 0 A
0
0 1 A 0 2 A 0 3 A 1 0 A
%0 1 A 0 2 A 0 3 A 1 3 A
0 1 A 1 0 A 2 0 A 3 0 A
%0 1 A 1 1 A 2 1 A 3 1 A
%1 -3 A 1 -2 A 1 -1 A 1 0 A
%1 0 A 1 1 A 1 2 A 1 3 A
%1 0 A 2 0 A 3 -1 A 3 0 A
%1 0 A 2 0 A 3 0 A 3 1 A
0
0 1 A 0 2 A 0 3 A 1 1 A
0 1 A 0 2 A 0 3 A 1 2 A
1 -2 A 1 -1 A 1 0 A 1 1 A
1 -1 A 1 0 A 1 1 A 1 2 A
1 -1 A 1 0 A 2 0 A 3 0 A
1 0 A 1 1 A 2 0 A 3 0 A
1 0 A 2 -1 A 2 0 A 3 0 A
1 0 A 2 0 A 2 1 A 3 0 A
0
0 1 A 0 2 A 1 -1 A 1 0 A
0 1 A 0 2 A 1 2 A 1 3 A
0 1 A 1 -2 A 1 -1 A 1 0 A
0 1 A 1 1 A 1 2 A 1 3 A
1 -1 A 1 0 A 2 -1 A 3 -1 A
1 0 A 1 1 A 2 1 A 3 1 A
1 0 A 2 -1 A 2 0 A 3 -1 A
1 0 A 2 0 A 2 1 A 3 1 A
0
0 1 A 0 2 A 1 0 A 1 1 A
0 1 A 0 2 A 1 1 A 1 2 A
0 1 A 1 -1 A 1 0 A 1 1 A
0 1 A 1 0 A 1 1 A 1 2 A
0 1 A 1 0 A 1 1 A 2 0 A
0 1 A 1 0 A 1 1 A 2 1 A
1 -1 A 1 0 A 2 -1 A 2 0 A
1 0 A 1 1 A 2 0 A 2 1 A
0
0 1 A 0 2 A 1 0 A 1 2 A
0 1 A 1 0 A 2 0 A 2 1 A
0 1 A 1 1 A 2 0 A 2 1 A
0 2 A 1 0 A 1 1 A 1 2 A
0
0 1 A 0 2 A 1 0 A 2 0 A
0 1 A 0 2 A 1 2 A 2 2 A
1 0 A 2 -2 A 2 -1 A 2 0 A
1 0 A 2 0 A 2 1 A 2 2 A
0
0 1 A 0 2 A 1 1 A 2 1 A
1 -2 A 1 -1 A 1 0 A 2 0 A
1 0 A 1 1 A 1 2 A 2 0 A
1 0 A 2 -1 A 2 0 A 2 1 A
0
0 1 A 1 -1 A 1 0 A 2 -1 A
0 1 A 1 1 A 1 2 A 2 2 A
1 -1 A 1 0 A 2 -2 A 2 -1 A
1 0 A 1 1 A 2 1 A 2 2 A
0
0 1 A 1 -1 A 1 0 A 2 0 A
0 1 A 1 1 A 1 2 A 2 1 A
1 -2 A 1 -1 A 1 0 A 2 -1 A
1 -1 A 1 0 A 1 1 A 2 -1 A
1 -1 A 1 0 A 1 1 A 2 1 A
1 -1 A 1 0 A 2 0 A 2 1 A
1 0 A 1 1 A 1 2 A 2 1 A
1 0 A 1 1 A 2 -1 A 2 0 A
0
0 1 A 1 0 A 2 -1 A 2 0 A
0 1 A 1 1 A 2 1 A 2 2 A
1 -2 A 1 -1 A 1 0 A 2 -2 A
1 0 A 1 1 A 1 2 A 2 2 A
0
1 -1 A 1 0 A 1 1 A 2 0 A
0
] def
/kstart
[
0
0
dup 2 4 mul 1 add add
dup 2 4 mul 1 add add
dup 8 4 mul 1 add add
dup 8 4 mul 1 add add
dup 8 4 mul 1 add add
dup 4 4 mul 1 add add
dup 4 4 mul 1 add add
dup 4 4 mul 1 add add
dup 4 4 mul 1 add add
dup 8 4 mul 1 add add
dup 4 4 mul 1 add add
] def
/used
[
false false false false
false false false false
false false false false
false
] def
/board
[
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
] def
/p_ok % pos kindex p_ok bool
{
board
2 index % pos
koma
3 index % kindex
get % koma[kindex]
add
get % board[pos + koma[kindex]]
0
eq
board 3 index koma 4 index 1 add get add get 0 eq and
board 3 index koma 4 index 2 add get add get 0 eq
board 4 index koma 5 index 3 add get add get 0 eq and and
exch pop exch pop
} def
/p_place % pos kindex k p_place -
{
board 3 index 2 index put % board[pos] = k
board
3 index % pos
koma
4 index % kindex
get % koma[kindex]
add
2 index % k
put
board 3 index koma 4 index 1 add get add 2 index put
board 3 index koma 4 index 2 add get add 2 index put
board 3 index koma 4 index 3 add get add 2 index put
pop pop pop
} def
/p_advance % pos p_advance newpos
{
{
1 add
dup board exch get 0 eq { exit } if
} loop
dup 70 gt { pop 0 } if
} def
/unit 20 def
/xorg 20 def
/yorg 30 def
/xlim 570 unit W mul sub def
/ylim 810 unit 60 W div mul sub def
/curx xorg def
/cury yorg def
0.5 setlinewidth
/p_vline
{
unit mul cury add exch 1 add unit mul curx add exch moveto
0 unit rlineto
( unit mul cury add exch 1 add unit mul curx add exch moveto 0 unit rlineto)Z
} def
/p_hline
{
1 add unit mul cury add exch unit mul curx add exch moveto
unit 0 rlineto
( 1 add unit mul cury add exch unit mul curx add exch moveto unit 0 rlineto)Z
} def
/p_print
{
% board ==
% countexecstack =
(curx cury moveto unit W mul 0 rlineto)Z
(curx cury moveto 0 unit 60 W div mul rlineto)Z
curx cury moveto unit W mul 0 rlineto
curx cury moveto 0 unit 60 W div mul rlineto
0 {
0 {
dup 2 index W 1 add mul add
board 1 index get
board 2 index 1 add get
ne
{ 1 index dup 8 string cvs OUT exch writestring
OUT ( ) writestring
3 index dup 8 string cvs OUT exch writestring
p_vline
}
if
board 1 index get
board 2 index W 1 add add get
ne
{ 1 index dup 8 string cvs OUT exch writestring
OUT ( ) writestring
3 index dup 8 string cvs OUT exch writestring
p_hline }
if
pop
1 add
dup W ge { pop exit } if
} loop
1 add
dup 60 W div ge { pop exit } if
} loop
stroke
(stroke)Z
/curx unit W 1 add mul curx add def
(/curx unit W 1 add mul curx add def)Z
curx xlim ge {
/curx xorg def
(/curx xorg def)Z
/cury unit 60 W div 1 add mul cury add def
(/cury unit 60 W div 1 add mul cury add def)Z
cury ylim ge {
showpage
(showpage)Z
/pagenum pagenum 1 add def
OUT (%%Page: ) writestring
pagenum 8 string cvs dup OUT exch writestring
OUT ( ) writestring
OUT exch writestring
OUT 10 write
/curx xorg def
(/curx xorg def)Z
/cury yorg def
(/cury yorg def)Z
} if
} if
OUT flushfile
% showpage
} def
/p_answer
{
/nans nans 1 add def
% nans = flush
p_print
} def
/p_try % freepos p_try -
{
% countexecstack =
1 0 {
used 2 index get not {
2 index 1 index p_ok {
2 index 1 index 3 index p_place
used 2 index true put
% countexecstack =
% p_print
2 index p_advance
dup 0 eq
{ pop p_answer }
{ p_try }
ifelse
2 index 1 index 0 p_place
used 2 index false put
} if
4 add
dup koma exch get 0 eq {
pop 1 add
dup 12 gt { exit } if
dup kstart exch get
} if
} {
pop 1 add
dup 12 gt { exit } if
dup kstart exch get
} ifelse
dup koma exch get 0 eq { exit } if
} loop
pop pop
} def
/p_init
{
W W 1 add 75 { board exch EDGE put } for
75 -1 75 W sub { board exch EDGE put } for
} def
/p_main
{
p_init
0 p_try
showpage
(showpage) Z
(%%Trailer)Z
} def
/nans 0 def
/EDGE 13 def
(%!PS-Adobe-2.0)Z
(/W 6 def)Z
(/unit 20 def)Z
(/xorg 20 def)Z
(/yorg 30 def)Z
(0.5 setlinewidth)Z
(%%Page: 1 1)Z
(/curx xorg def)Z
(/cury yorg def)Z
p_main
OUT closefile
quit
Technical Details
Message-ID:
<HATAKEYA.96Jan12163644@shizuka.otsl.oki.co.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: fa2ca,2e3f10baccd366f1,start X-Google-Attributes: gidfa2ca,public From: hatakeya@otsl.oki.co.jp (Yuji Hatakeyama) Subject: Re: pentomino in Postscript Date: 1996/01/12 Message-ID: <HATAKEYA.96Jan12163644@shizuka.otsl.oki.co.jp> X-Deja-AN: 134931670 distribution: fj sender: news@lion.otsl.oki.co.jp organization: Oki Technosystems Laboratory, Inc., Nagoya, Japan. newsgroups: fj.lang.postscript