VI SOLVES MAZE (commented macros)

Greg McFarlane gregm at otc.otca.oz.au
Mon Feb 11 10:31:02 AEST 1991


Submitted-by: gregm at otc.otca.oz.au
Archive-name: maze_solving_vi_macros

A real working model. See it walk the maze in front of your very own eyes.

To prove that you can do anything in vi, I wrote a couple of macros that
allows vi to solve mazes. It will solve any maze produced by maze.c
that was posted to the alt.sources last month. (Maze.c is also included
in this posting as well as an example of its output.)

The uncommented version of the macros was sent to alt.sources last month.
However, so many people mailed me requesting the commented version of the
macros that I decided to post it. I have made some modifications to the
original macros to make them easier to follow and also after I learnt
that you can escape the special meaning of '|' in macros by using '^V|'.

Save this article and unshar it. Then read maze.README.

After studying these macros, anyone who cannot write an emacs emulator
in vi macros should just curl up and :q!.

Coming soon to a newsgroup near you: "Vi macros solve Tower of Hanoi",
and a repost of the original "Turing Machine implemented in Vi macros"

Anyone who has a version of these macros for edlin or nroff, please post.

---- Cut Here and unpack ----
#!/bin/sh
# This is maze_solving_vi_macros, a shell archive (shar 3.32)
# made 02/07/1991 14:24 UTC by gregm at otc.otca.oz.au
# Source directory /n/arrakis/u/sysdev/gregm/vi.macros
#
# existing files will NOT be overwritten
#
# This shar contains:
# length  mode       name
# ------ ---------- ------------------------------------------
#   1666 -rw-rw-r-- maze.README
#  16793 -rw-rw-r-- maze.vi.macros.uu
#    481 -rw-rw-r-- maze.out
#    441 -rw-rw-r-- maze.c
#    441 -rw-rw-r-- maze.ansi.c
#
if touch 2>&1 | fgrep 'amc' > /dev/null
 then TOUCH=touch
 else TOUCH=true
fi
# ============= maze.README ==============
if test X"$1" != X"-c" -a -f 'maze.README'; then
	echo "File already exists: skipping 'maze.README'"
else
echo "x - extracting maze.README (Text)"
sed 's/^X//' << 'SHAR_EOF' > maze.README &&
XTo prove that you can do anything in vi, I wrote a couple of macros that
Xallows vi to solve mazes. It will solve any maze produced by maze.c
Xthat was posted to the net recently.
X
XJust follow this recipe and SEE FOR YOURSELF.
X	1. run uudecode on the file "maze.vi.macros.uu" to
X		produce the file "maze.vi.macros"
X	(If you can't wait to see the action, jump to step 4)
X	2. compile maze.c with "cc -o maze maze.c"
X	3. run maze > maze.out and input a small number (for example 10 if
X		you are on a fast machine, 3-5 if slow) which
X		is the size of the maze to produce
X	4. edit the maze (vi maze.out)
X	5. include the macros with the vi command:
X		:so maze.vi.macros
X	6. type the letter "g" (for "go") and watch vi solve the maze
X	7. when vi solves the maze, you will see why it lies
X	8. now look at maze.vi.macros and all will be revealed
X
XTested on a sparc, a sun and a pyramid (although maze.c will not compile
Xon the pyramid).
X
XAnyone who can't get the maze.c file to compile, get a new compiler,
Xtry maze.ansi.c which was also posted to the net.
XIf you can get it to compile but the maze comes out looking like a fence
Xand not a maze and you are using SysV or DOS replace the "27" on the
Xlast line of maze.c by "11"
XThanks to John Tromp (tromp at piring.cwi.nl) for maze.c.
XThanks to antonyc at nntp-server.caltech.edu (Bill T. Cat) for maze.ansi.c.
X
XAny donations should be in unmarked small denomination bills :^)=.
X
X                   ACSnet:  gregm at otc.otca.oz.au
XGreg McFarlane       UUCP:  {uunet,mcvax}!otc.otca.oz.au!gregm
X|||| OTC ||         Snail:  OTC R&D GPO Box 7000, Sydney 2001, Australia
X                    Phone:  +61 2 287 3139    Fax: +61 2 287 3299
X
X
SHAR_EOF
$TOUCH -am 0208005691 maze.README &&
chmod 0664 maze.README ||
echo "restore of maze.README failed"
set `wc -c maze.README`;Wc_c=$1
if test "$Wc_c" != "1666"; then
	echo original size 1666, current size $Wc_c
fi
fi
# ============= maze.vi.macros.uu ==============
if test X"$1" != X"-c" -a -f 'maze.vi.macros.uu'; then
	echo "File already exists: skipping 'maze.vi.macros.uu'"
else
echo "x - extracting maze.vi.macros.uu (Text)"
sed 's/^X//' << 'SHAR_EOF' > maze.vi.macros.uu &&
Xbegin 664 maze.vi.macros
XM(B!4:&5S92!M86-R;W,@)W-O;'9E)R!A;GD@;6%Z92!P<F]D=6-E9"!B>2!T
XM:&4 at 82UM87IE+6EN9R!M87IE+F,@<')O9W)A;2X*(B *(B!&:7)S="P at 82!B
XM:70@;V8@;6%Z92!T:&5O<GDN"B(@268@>6]U('=E<F4@<'5T(&EN=&\@82!M
XM87IE+"!A(&=U87)A;G1E960@;65T:&]D(&]F(&9I;F1I;F<@>6]U<B!W87D*
XM(B!O=70@;V8@=&AE(&UA>F4@:7,@=&\@<'5T('EO=7(@;&5F="!H86YD(&]N
XM=&\@82!W86QL(&%N9"!J=7-T(&ME97 @=V%L:VEN9RP*(B!N979E<B!T86MI
XM;F<@>6]U<B!H86YD(&]F9B!T:&4@=V%L;"X at 5&AI<R!T96-H;FEQ=64@:7,@
XM;VYL>2!G=6%R86YT965D('1O"B(@=V]R:R!I9B!T:&4@;6%Z92!D;V5S(&YO
XM="!H879E(&%N>2 G:7-L86YD<R<L(&]R(&EF('1H92 G97AI="<@:7,@;VX@
XM=&AE"B(@<V%M92!I<VQA;F0 at 87,@>6]U<B!S=&%R=&EN9R!P;VEN="X at 5&AE
XM<V4 at 8V]N9&ET:6]N<R!H;VQD(&9O<B!T:&4@;6%Z97,*(B!U;F1E<B!C;VYS
XM:61E<F%T:6]N+ at HB( HB($%S<W5M:6YG('1H870@=&AE(&UA>F4@:7,@;6%D
XM92!U<"!O9B!H;W)I>F]N=&%L(&%N9"!V97)T:6-A;"!W86QL<R!S<&%C960*
XM(B!O;F4@<W1E<"!A<&%R="!A;F0@=&AA="!Y;W4 at 8V%N(&UO=F4 at 96ET:&5R
XM(&YO<G1H+"!S;W5T:"P at 96%S="!O<B!W97-T+ HB('1H96X@>6]U(&-A;B!A
XM=71O;6%T92!T:&ES('!R;V-E9'5R92!B>2!C87)R>6EN9R!O=70@=&AE(&9O
XM;&QO=VEN9R!S=&5P<RX*(B *(B Q+B!0=70@>6]U<G-E;&8@<V]M97=H97)E
XM(&EN('1H92!M87IE(&YE87(@82!W86QL+ at HB(#(N($-H96-K(&EF('EO=2!H
XM879E(&$@=V%L;"!O;B!Y;W5R(&QE9G0N($EF('-O+"!G;R!T;R!S=&5P(#0N
XM"B(@,RX at 5&AE<F4@:7,@;F\@=V%L;"!O;B!Y;W5R(&QE9G0L('-O('1U<FX@
XM;VX@=&AE('-P;W0@=&\@>6]U<B!L969T(&%N9"!S=&5P"B(@(" @9F]R=V%R
XM9"!B>2!O;F4@<W1E<"!A;F0@<F5P96%T('-T97 @,BX*(B T+B!#:&5C:R!W
XM:&%T(&ES(&1I<F5C=&QY(&EN(&9R;VYT(&]F('EO=2X at 268@:70@:7, at 82!W
XM86QL+"!T=7)N(&]N('1H90HB(" @('-P;W0@=&\@>6]U<B!R:6=H="!B>2 Y
XM,"!D96=R965S(&%N9"!R97!E870@<W1E<" T+ at HB(#4N(%1H97)E(&ES(&YO
XM('=A;&P@:6X at 9G)O;G0@;V8@>6]U+"!S;R!S=&5P(&9O<G=A<F0@;VYE('-T
XM97 @86YD"B(@(" @9V\@=&\@<W1E<" R+ at HB( HB($EN('1H:7,@=V%Y('EO
XM=2!W:6QL(&-O=F5R(&%L;"!T:&4 at 8V]R<FED;W)S(&]F('1H92!M87IE("AU
XM;G1I;"!Y;W4 at 9V5T(&)A8VL*(B!T;R!W:&5R92!Y;W4@<W1A<G1E9"!F<F]M
XM+"!I9B!Y;W4 at 9&\@;F]T('-T;W I+ at HB( HB($)Y(&5X86UI;FEN9R!A(&UA
XM>F4@<')O9'5C960 at 8GD@=&AE(&UA>F4N8R!P<F]G<F%M('EO=2!W:6QL('-E
XM92!T:&%T( HB(&5A8V@@<W%U87)E(&]F('1H92!M87IE(&ES(&]N92!C:&%R
XM86-T97(@:&EG:"!A;F0@='=O(&-H87)A8W1E<G,@=VED92X*(B!4;R!G;R!N
XM;W)T:"!O<B!S;W5T:"P@>6]U(&UO=F4 at 8GD@82!O;F4 at 8VAA<F%C=&5R('-T
XM97 L(&)U="!T;R!M;W9E(&5A<W0@;W(*(B!W97-T('EO=2!M;W9E(&)Y(&$@
XM='=O(&-H87)A8W1E<B!S=&5P+B!!;'-O(&YO=&4@=&AA="!I;B!A;GD@<&]S
XM:71I;VX*(B!T:&5R92!A<F4 at 9F]U<B!P;&%C97,@=VAE<F4@=V%L;', at 8V]U
XM;&0 at 8F4@<'5T("T@=&\@=&AE(&YO<G1H+"!T;R!T:&4@<V]U=&@L"B(@=&\@
XM=&AE(&5A<W0 at 86YD('1O('1H92!W97-T+ at HB($$@=V%L;"!E>&ES=',@=&\@
XM=&AE(&YO<G1H(&]F('EO=2!I9B!T:&4 at 8VAA<F%C=&5R('1O('1H92!N;W)T
XM:"!O9 at HB('EO=2!I<R!A(%\@*&]T:&5R=VES92!I="!I<R!A('-P86-E*2X*
XM(B!!('=A;&P at 97AI<W1S('1O('1H92!E87-T(&]F('EO=2!I9B!T:&4 at 8VAA
XM<F%C=&5R('1O('1H92!E87-T(&]F('EO=0HB(&ES(&$@?" H;W1H97)W:7-E
XM(&ET(&ES(&$@+BDN"B(@02!W86QL(&5X:7-T<R!T;R!T:&4@=V5S="!O9B!Y
XM;W4@:68@=&AE(&-H87)A8W1E<B!T;R!T:&4@=V5S="!O9B!Y;W4*(B!I<R!A
XM('P@*&]T:&5R=VES92!I="!I<R!A("XI+ at HB($$@=V%L;"!E>&ES=',@=&\@
XM=&AE('-O=71H(&]F('EO=2!I9B!T:&4 at 8VAA<F%C=&5R('=H97)E('EO=2!A
XM<F4*(B!I<R!A(%\@*&]T:&5R=VES92!I="!I<R!A('-P86-E*2X*(B *(B!.
XM;W1E('1H92!D:69F97)E;F-E(&9O<B!D:7)E8W1I;VX@<V]U=&@L('=H97)E
XM('=E(&UU<W0 at 97AA;6EN92!T:&4 at 8VAA<F%C=&5R"B(@=VAE<F4@=&AE(&-U
XM<G-O<B!I<R!R871H97(@=&AA;B!A;B!A9&IA8V5N="!C96QL+ at HB( HB($EF
XM('EO=2!W97)E(&EM<&QE;65N=&EN9R!T:&4 at 86)O=F4@<')O8V5D=7)E(&ES
XM(&$@;F]R;6%L(&-O;7!U=&5R(&QA;F=U86=E"B(@>6]U(&-O=6QD('5S92!A
XM(&QO;W @=VET:"!I9B!S=&%T96UE;G1S(&%N9"!C;VYT:6YU92!S=&%T96UE
XM;G1S+" *(B!(;W=E=F5R+"!T:&5S92!C;VYS=')U8W1S(&%R92!N;W0 at 879A
XM:6QA8FQE(&EN('9I(&UA8W)O<R!S;R!)(&AA=F4@=7-E9 HB(&$@<W1A=&4@
XM;6%C:&EN92!W:71H(#@@<W1A=&5S+B!%86-H('-T871E('-I9VYI9FEE<R!T
XM:&4 at 9&ER96-T:6]N('EO=0HB(&%R92!G;VEN9R!I;B!A;F0@=VAE=&AE<B!O
XM<B!N;W0@>6]U(&AA=F4 at 8VAE8VME9"!I9B!T:&5R92!I<R!A('=A;&P@;VX*
XM(B!Y;W5R(&QE9G0N"B(@"B(@5&AE('1R86YS:71I;VX at 9G)O;2!S=&%T92!T
XM;R!S=&%T92!A;F0@=&AE(&%C=&EO;G,@=&%K96X@;VX at 96%C:"!T<F%N<VET
XM:6]N"B(@87)E(&=I=F5N(&EN('1H92!S=&%T92!T86)L92!B96QO=RX*(B!4
XM:&4@;F%M97,@;V8@=&AE('-T871E<R!A<F4 at 3C$L($XR+"!3,2P at 4S(L($4Q
XM+"!%,BP at 5S$L(%<R+"!W:&5R92!E86-H(&QE='1E<@HB('-T86YD<R!F;W(@
XM82!D:7)E8W1I;VX@;V8@=&AE(&-O;7!A<W,L('1H92!N=6UB97(@,2!I;F1I
XM8V%T97,@=&AA="!T:&4@=V4*(B!H879E(&YO="!Y970 at 8VAE8VME9"!T;R!S
XM964@:68@=&AE<F4@:7, at 82!W86QL(&]N(&]U<B!L969T(&%N9"!T:&4@;G5M
XM8F5R(#(*(B!I;F1I8V%T97,@=&AA="!W92!H879E(&-H96-K960 at 86YD('1H
XM97)E(&ES(&$@=V%L;"!O;B!O=7(@;&5F="X*(B *(B!&;W(@96%C:"!S=&%T
XM92!W92!M=7-T(&-O;G-I9&5R('1H92!E>&ES=&5N8V4@;W(@;F]T(&]F(&$@
XM=V%L;"!I;B!A"B(@<&%R=&EC=6QA<B!D:7)E8W1I;VXN(%1H:7, at 9&ER96-T
XM:6]N(&ES(&=I=F5N(&EN('1H92!F;VQL;W=I;F<@=&%B;&4N"B(@"B(@3F5X
XM=$-H87(@=&%B;&4Z"B(@<W1A=&4@(" @(" @(&1I<F5C=&EO;B @(" @("!V
XM:2!C;VUM86YD<PHB("!.,2 @(" @(" @(" @(" @5R @(" @(" @(" @(" @
XM(&A&"B(@($XR(" @(" @(" @(" @("!.(" @(" @(" @(" @(" @:T8*(B @
XM4S$@(" @(" @(" @(" @($4@(" @(" @(" @(" @("!L1 at HB("!3,B @(" @
XM(" @(" @(" @4R @(" @(" @(" @(" @($8*(B @13$@(" @(" @(" @(" @
XM($X@(" @(" @(" @(" @("!K1 at HB("!%,B @(" @(" @(" @(" @12 @(" @
XM(" @(" @(" @(&Q&"B(@(%<Q(" @(" @(" @(" @("!3(" @(" @(" @(" @
XM(" @1 at HB("!7,B @(" @(" @(" @(" @5R @(" @(" @(" @(" @(&A&"B(@
XM"B(@=VAE<F4 at 1B!I<R!A(&UA8W)O('=H:6-H('EA;FMS('1H92!C:&%R86-T
XM97(@=6YD97(@=&AE(&-U<G-O<B!I;G1O"B(@=&AE($YE>'1#:&%R(')E9VES
XM=&5R("AN*2X*(B *(B!3=&%T92!T86)L93H*(B!);B!T:&4@)W9I(&-O;6UA
XM;F1S)R!C;VQU;6X@:7, at 9VEV96X@=&AE(&%C=&EO;G,@=&\@8V%R<GD@;W5T
XM('=H96X@:6X*(B!T:&ES('-T871E(&%N9"!T:&4 at 3F5X=$-H87(@:7, at 87,@
XM9VEV96XN(%1H92!C;VUM86YD<R!K+"!J+"!L;"P@:&@@;6]V90HB('1H92!C
XM=7)R96YT('!O<VET:6]N(&YO<G1H+"!S;W5T:"P at 96%S="!A;F0@=V5S="!R
XM97-P96-T:79E;'DN(%1H90HB(&-O;6UA;F0@;6T@:7,@=7-E9"!A<R!A(&YO
XM+6]P(&-O;6UA;F0N"B(@26X@=&AE("=N97AT('-T871E)R!C;VQU;6X@:7,@
XM9VEV96X@=&AE(&YE=R!S=&%T92!O9B!T:&4@;6%C:&EN92!A9G1E<@HB('1H
XM92!A8W1I;VX@:7, at 8V%R<FEE9"!O=70N"B(@"B(@8W5R<F5N="!S=&%T92 @
XM(" @(" @3F5X=$-H87(@(" @=FD at 8V]M;6%N9',@(&YE>'0@<W1A=&4*(B @
XM(" @($XQ(" @(" @(" @(" @(" @(" N(" @(" @(" @(" @:&@@(" @(" @
XM(" @5S$*(B @(" @($XQ(" @(" @(" @(" @(" @("!\(" @(" @(" @(" @
XM;6T@(" @(" @(" @3C(*(B @(" @($XR(" @(" @(" @(" @(" @("!?(" @
XM(" @(" @(" @;6T@(" @(" @(" @13$*(B @(" @($XR(" @(" @(" @(" @
XM(" @<W!A8V4@(" @(" @(" @:R @(" @(" @(" @3C$*(B @(" @(%,Q(" @
XM(" @(" @(" @(" @(" N(" @(" @(" @(" @;&P@(" @(" @(" @13$*(B @
XM(" @(%,Q(" @(" @(" @(" @(" @("!\(" @(" @(" @(" @;6T@(" @(" @
XM(" @4S(*(B @(" @(%,R(" @(" @(" @(" @(" @("!?(" @(" @(" @(" @
XM;6T@(" @(" @(" @5S$*(B @(" @(%,R(" @(" @(" @(" @(" @<W!A8V4@
XM(" @(" @(" @:B @(" @(" @(" @4S$*(B @(" @($4Q(" @(" @(" @(" @
XM(" @<W!A8V4@(" @(" @(" @:R @(" @(" @(" @3C$*(B @(" @($4Q(" @
XM(" @(" @(" @(" @("!?(" @(" @(" @(" @;6T@(" @(" @(" @13(*(B @
XM(" @($4R(" @(" @(" @(" @(" @("!\(" @(" @(" @(" @;6T@(" @(" @
XM(" @4S$*(B @(" @($4R(" @(" @(" @(" @(" @(" N(" @(" @(" @(" @
XM;&P@(" @(" @(" @13$*(B @(" @(%<Q(" @(" @(" @(" @(" @<W!A8V4@
XM(" @(" @(" @:B @(" @(" @(" @4S$*(B @(" @(%<Q(" @(" @(" @(" @
XM(" @("!?(" @(" @(" @(" @;6T@(" @(" @(" @5S(*(B @(" @(%<R(" @
XM(" @(" @(" @(" @("!\(" @(" @(" @(" @;6T@(" @(" @(" @3C$*(B @
XM(" @(%<R(" @(" @(" @(" @(" @(" N(" @(" @(" @(" @:&@@(" @(" @
XM(" @5S$*(@HB( HB($-O;7!L86EN="!A8F]U="!V:2!M86-R;W,Z"B(@270@
XM<V5E;7,@=&AA="!Y;W4 at 8V%N;F]T(&AA=F4@;6]R92!T:&%N(&]N92 G=6YD
XM;RUA8FQE)R!V:2!C;VUM86YD"B(@:6X@=&AE(&]N92!M86-R;RP@<V\@>6]U
XM(&AA=F4@=&\@;6%K92!L;W1S(&]F(&QI='1L92!M86-R;W, at 86YD"B(@<'5T
XM('1H96T@=&]G971H97(N"B(*(B!))VQL(&5X<&QA:6X@=VAA="!)(&UE86X@
XM8GD at 86X@97AA;7!L92X at 161I="!A(&9I;&4 at 86YD"B(@='EP92 G.FUA<"!1
XM(')862<N(%1H:7,@<VAO=6QD(&UA<"!T:&4 at 42!K97D@=&\@)W)E<&QA8V4@
XM=&AE"B(@8VAA<F%C=&5R('5N9&5R('1H92!C=7)S;W(@=VET:"!8(&%N9"!Y
XM86YK('1H92!L:6YE)RX*(B!"=70@=VAE;B!)('1Y<&4 at 42P@=FD@=&5L;',@
XM;64@)T-A;B=T('EA;FL@:6YS:61E(&=L;V)A;"]M86-R;R<@86YD"B(@9V]E
XM<R!I;G1O(&5X(&UO9&4N($AO=V5V97(@:68 at 22!T>7!E("<Z;6%P(%$@<EA4
XM)R!A;F0@)SIM87 @5"!9)RP*(B!E=F5R>71H:6YG(&ES($]++B!)8&T at 9&]I
XM;F<@86QL('1H:7,@;VX at 82!3<&%R8W-T871I;VXN"B(@268 at 86YY;VYE(')E
XM861I;F<@=&AI<R!H87, at 86X@86YS=V5R('1O('1H:7,@<')O8FQE;2P@=&AE
XM(&%U=&AO<B!W;W5L9 HB(&QO=F4@=&\@9FEN9"!O=70N($UA:6P@=&\@9W)E
XM9VU ;W1C+F]T8V$N;WHN874N"B(*(B!4:&4@;6%C<F]S. at HB(%1H92!M86-R
XM;R!T;R!R=6X@=&AE(&UA>F4@<V]L=F5R(&ES("=G)RX at 5&AI<R!S:6UP;'D@
XM8V%L;',@='=O(&]T:&5R"B(@;6%C<F]S.B!)+"!T;R!I;FET:6%L:7-E(&5V
XM97)Y=&AI;F<L(&%N9"!,+"!T;R!L;V]P(&9O<F5V97(@<G5N;FEN9PHB('1H
XM<F]U9V@@=&AE('-T871E('1A8FQE+ at HB($)O=&@@;V8@=&AE<V4@;6%C<F]S
XM(&%R92!L;VYG('-E<75E;F-E<R!O9B!C86QL<R!T;R!O=&AE<B!M86-R;W,N
XM($%L; HB(&]F('1H97-E(&]T:&5R(&UA8W)O<R!A<F4@<75I=&4@<VEM<&QE
XM(&%N9"!S;R!T;R!U;F1E<G-T86YD(&AO=R!T:&ES"B(@=V]R:W,L(&%L;"!Y
XM;W4@;F5E9"!T;R!D;R!I<R!E>&%M:6YE(&UA8W)O<R!)(&%N9"!,(&%N9"!L
XM96%R;B!W:&%T('1H97D*(B!D;R H82!S:6UP;&4@<V5Q=65N8V4@;V8@=FD@
XM86-T:6]N<RD at 86YD(&AO=R!,(&QO;W!S("AB>2!C86QL:6YG(%4L('=H:6-H
XM"B(@<VEM<&QY(&-A;&QS($P at 86=A:6XI+ at HB"B(@36%C<F\@22!S971S('5P
XM('1H92!S=&%T92!T86)L92!A;F0 at 3F5X=$-H87(@=&%B;&4 at 870@=&AE(&5N
XM9"!O9B!T:&4 at 9FEL92X*(B!-86-R;R!,('1H96X@<V5A<F-H97,@=&AE<V4@
XM=&%B;&5S('1O(&9I;F0@;W5T('=H870 at 86-T:6]N<R!T;R!P97)F;W)M(&%N
XM9 HB('=H870@<W1A=&4 at 8VAA;F=E<R!T;R!M86ME+ at HB"B(@5&AE(&5N=')I
XM97,@:6X@=&AE('-T871E('1A8FQE(&%L;"!B96=I;B!W:71H(&$@:V5Y(&-O
XM;G-I<W1I;F<@;V8@=&AE"B(@;&5T=&5R("=S)RP@=&AE(&-U<G)E;G0@<W1A
XM=&4 at 86YD('1H92!.97AT0VAA<BX@($%F=&5R('1H:7,@:7,@=&AE"B(@86-T
XM:6]N('1O('1A:V4@:6X@=&AI<R!S=&%T92!A;F0 at 869T97(@=&AI<R!I<R!T
XM:&4@;F5X="!S=&%T92!T;R!C:&%N9V4@=&\N"B(*(B!4:&4 at 96YT<FEE<R!I
XM;B!T:&4 at 3F5X=$-H87(@=&%B;&4 at 8F5G:6X@=VET:"!A(&ME>2!C;VYS:7-T
XM:6YG(&]F('1H90HB(&QE='1E<B G;B<@86YD('1H92!C=7)R96YT('-T871E
XM+B!!9G1E<B!T:&ES(&ES('1H92!A8W1I;VX@=&\@=&%K92!T;PHB(&]B=&%I
XM;B!.97AT0VAA<B M('1H92!C:&%R86-T97(@=&AA="!M=7-T(&)E(&5X86UI
XM;F5D('1O(&-H86YG92!S=&%T92X*(@HB($]N92!W87D@=&\@<V5E('=H870@
XM96%C:"!P87)T(&]F('1H92!M86-R;W,@:7, at 9&]I;F<@:7,@=&\@='EP92!I
XM;B!T:&4*(B!B;V1Y(&]F('1H92!M86-R;W, at 22!A;F0 at 3"!M86YU86QL>2 H
XM:6YS=&5A9"!O9B!T>7!I;F<@)V<G*2!A;F0@<V5E"B(@=VAA="!H87!P96YS
XM(&%T(&5A8V@@<W1E<"X*(@HB($=O;V0@;'5C:RX*(@HB(%)E9VES=&5R<R!U
XM<V5D(&)Y('1H92!M86-R;W,Z"B(@<R H4W1A=&4I(" @(" @(" M(&AO;&1S
XM('1H92!S=&%T92!T:&4@;6%C:&EN92!I<R!I;@HB(&,@*$-H87(I(" @(" @
XM(" @+2!H;VQD<R!T:&4 at 8VAA<F%C=&5R('5N9&5R('1H92!C=7)R96YT('!O
XM<VET:6]N"B(@;2 H36%C<F\I(" @(" @(" M(&AO;&1S(&$@=FD at 8V]M;6%N
XM9"!S=')I;F<@=&\@8F4 at 97AE8W5T960@;&%T97(*(B!N("A.97AT0VAA<BD@
XM(" @("T@:&]L9',@=&AE(&-H87)A8W1E<B!W92!M=7-T(&5X86UI;F4@=&\@
XM8VAA;F=E('-T871E"B(@<B H4V5C;VYD($UA8W)O*2 M(&AO;&1S(&$@<V5C
XM;VYD('9I(&-O;6UA;F0@<W1R:6YG('1O(&)E(&5X96-U=&5D(&QA=&5R"B(*
XM<V5T(')E;6%P"G-E="!N;VUA9VEC"G-E="!N;W1E<G-E"G-E="!W<F%P<V-A
XM;@HB"B(]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]"B(@9R M(&=O(')U;G,@=&AE('=H
XM;VQE('-H;W<*(B @(" @(" @22 M(&EN:71I86QI<V4*(B @(" @(" @3" M
XM('1H96X@;&]O<"!F;W)E=F5R"FUA<"!G(" @24P*(@HB/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/0HB($D at +2!I;FET:6%L:7-E(&5V97)Y=&AI;F<@8F5F;W)E(')U
XM;FYI;F<@=&AE(&QO;W *(B @($<D/RY>32 M(&9I;F0@=&AE(&QA<W0 at +B!I
XM;B!T:&4@;6%Z90HB(" @(" @("!>("T@<F5P;&%C92!I="!W:71H(&%N(%@@
XM*'1H92!G;V%L*0HB(" @1UE+9410("T@<')I;G0@=&AE('-T871E('1A8FQE
XM(&%N9"!N97AT(&-H87(@=&%B;&4 at 870@=&AE(&5N9"!O9B!T:&4 at 9FEL90HB
XM(" @(" @(#!3("T@:6YI=&EA;&ES92!T:&4@<W1A=&4@;V8@=&AE(&UA8VAI
XM;F4@=&\@13$*(B @(" @(#)';" M(&UO=F4@=&\@=&AE('1O<"!L969T(&-E
XM;&P@;V8@=&AE(&UA>F4*;6%P($D@("!')#\N#5Y'64ME1% P4S)'; HB"B(]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]"B(@3" M('1H92!L;V]P('=H:6-H(&ES(&5X
XM96-U=&5D(&9O<F5V97(*(B @(" @(" @42 M('-A=F4@=&AE(&-U<G)E;G0@
XM8VAA<F%C=&5R(&EN('1H92!#:&%R(')E9VES=&5R"B(@(" @(" @($$@+2!R
XM97!L86-E('1H92!C=7)R96YT(&-H87)A8W1E<B!W:71H(&%N("=/)PHB(" @
XM(" @(&UA("T@;6%R:R!T:&4 at 8W5R<F5N="!P;W-I=&EO;B!W:71H(&UA<FL@
XM)V$G"B(@(" @("!'3D(@+2!O;B!B;W1T;VT@;&EN92P at 8W)E871E(&$@8V]M
XM;6%N9"!T;R!S96%R8V@@=&AE($YE>'1#:&%R('1A8FQE"B(@(" @(" @(" @
XM("!F;W(@=&AE(&-U<G)E;G0@<W1A=&4*(B P33!%0&U>32 M('EA;FL@=&AE
XM(&-O;6UA;F0@:6YT;R!T:&4 at 36%C<F\@<F5G:7-T97(@86YD(&5X96-U=&4@
XM:70*(B @(" @("!W6" M('=E(&AA=F4@;F]W(&9O=6YD('1H92!E;G1R>2!I
XM;B!T:&4@=&%B;&4L(&YO=R!Y86YK('1H90HB(" @(" @(" @(" @9F]L;&]W
XM:6YG('=O<F0@:6YT;R!T:&4 at 36%C<F\@<F5G:7-T97(*(B @(" @8&% ;2 M
XM(&=O(&)A8VL@=&\@=&AE(&-U<G)E;G0@<&]S:71I;VX at 86YD(&5X96-U=&4@
XM=&AE(&UA8W)O+"!T:&ES('=I;&P*(B @(" @(" @(" @('EA;FL@=&AE($YE
XM>'1#:&%R(&EN(')E9VES=&5R(&X*(B @($=4)$(D4B M(&]N(&)O='1O;2!L
XM:6YE+"!C<F5A=&4 at 82!C;VUM86YD('1O('-E87)C:"!T:&4@<W1A=&4@=&%B
XM;&4*(B @(" @(" @(" @(&9O<B!T:&4 at 8W5R<F5N="!S=&%T92!A;F0 at 3F5X
XM=$-H87(*(B P33!%0&U>32 M('EA;FL@=&AE(&-O;6UA;F0@:6YT;R!T:&4@
XM36%C<F\@<F5G:7-T97(@86YD(&5X96-U=&4@:70*(B @(" @(#)74R M('=E
XM(&AA=F4@;F]W(&9O=6YD('1H92!E;G1R>2!I;B!T:&4@=&%B;&4L(&YO=R!Y
XM86YK('1H90HB(" @(" @(" @(" @;F5X="!S=&%T92!I;G1O('1H92!3=&%T
XM92!M86-R;PHB(" @(" @(&)8("T at 86YD('EA;FL@=&AE(&%C=&EO;B!C;W)R
XM97-P;VYD:6YG('1O('1H:7,@<W1A=&4@=&%B;&4 at 96YT<GD*(B @(" @(" @
XM(" @(&EN=&\@=&AE($UA8W)O(')E9VES=&5R"B(@(" @("!'5DH at +2!O;B!B
XM;W1T;VT@;&EN92P at 8W)E871E(&$@8V]M;6%N9"!T;R!R97-T;W)E('1H92!C
XM=7)R96YT(&-H87)A8W1E<@HB(" @(" @(#!(("T at 86YD('-A=F4@=&AE(&-O
XM;6UA;F0@:6YT;R!T:&4@<V5C;VYD($UA8W)O(')E9VES=&5R"B(@(" @(&!A
XM0'(@+2!G;R!B86-K('1O('1H92!C=7)R96YT('!O<VET:6]N(&%N9"!E>&5C
XM='5T92!T:&4@;6%C<F\@=&\@<F5S=&]R90HB(" @(" @(" @(" @=&AE(&-U
XM<G)E;G0 at 8VAA<F%C=&5R"B(@(" @(" @0&T at +2!E>&5C=71E('1H92!A8W1I
XM;VX at 87-S;V-I871E9"!W:71H('1H:7,@<W1A=&4*(B @(" @(" @52 M(&%N
XM9"!R97!E870*;6%P($P@("!106UA1TY",$TP14!M#7=88&% ;4=4)$(D4C!-
XM,$5 ;0TR5U-B6$=62C!(8&% <D!M50HB"B(]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM"B(@52 M(&YO('1A:6P@<F5C=7)S:6]N(&%L;&]W960@:6X@=FD@;6%C<F]S
XM('-O(&-H96%T(&%N9"!S970 at 52 ]($P*;6%P(%4@("!,"B(*(CT]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T*(B!3("T@>6%N:R!T:&4@;F5X="!T=V\@8VAA<F%C=&5R
XM<R!I;G1O('1H92!3=&%T92!R96=I<W1E<@IM87 @4R @(")S>3)L"B(*(CT]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T*(B!1("T@<V%V92!T:&4 at 8W5R<F5N="!C:&%R
XM86-T97(@:6X@=&AE($-H87(@<F5G:7-T97(*;6%P(%$@(" B8WEL"B(*(CT]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T*(B!!("T@<F5P;&%C92!T:&4 at 8W5R<F5N="!C
XM:&%R86-T97(@=VET:"!A;B G3R<*;6%P($$@("!R3PHB"B(]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]"B(@3B M(')E<&QA8V4@=&AI<R!L:6YE('=I=&@@=&AE('-T
XM<FEN9R G;B<*;6%P($X@("!#+VX;"B(*(CT]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T*
XM(B!"("T@<'5T('1H92!C=7)R96YT('-T871E"FUA<"!"(" @(G-P"B(*(CT]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T*(B!-("T@>6%N:R!T:&ES(&QI;F4@:6YT;R!T
XM:&4 at 36%C<F\@<F5G:7-T97(*;6%P($T@(" B;7DD"B(*(CT]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T*(B!%("T at 9&5L971E('1O('1H92!E;F0@;V8@=&AE(&QI;F4*
XM;6%P($4@("!D) HB"B(]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]"B(@6" M('EA;FL@
XM=&AI<R!W;W)D(&EN=&\@=&AE($UA8W)O(')E9VES=&5R"FUA<"!8(" @(FUY
XM=" *(@HB/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/0HB(%0 at +2!R97!L86-E('1H:7,@
XM;&EN92!W:71H('1H92!S=')I;F<@)W,G"FUA<"!4(" @0R]S&PHB"B(]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]"B(@4B M('!U="!.97AT0VAA<@IM87 @4B @(")N
XM< HB"B(]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]"B(@5B M(&%D9"!T:&4@;&5T=&5R
XM("=R)R H=&AE(')E<&QA8V4@=FD at 8V]M;6%N9"D*;6%P(%8@("!A<AL*(@HB
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/0HB($H at +2!R97-T;W)E('1H92!C=7)R96YT
XM(&-H87)A8W1E<@IM87 @2B @(")C< HB"B(]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM"B(@2" M('EA;FL@=&AI<R!L:6YE(&EN=&\@=&AE('-E8V]N9"!-86-R;R!R
XM96=I<W1E<@IM87 @2" @(")R>20*(@HB/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/0HB
XM($8 at +2!Y86YK($YE>'1#:&%R("AT:&ES(&UA8W)O(&ES(&-A;&QE9"!F<F]M
XM('1H92!-86-R;R!R96=I<W1E<BD*;6%P($8@(" B;GEL"B(*(CT]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T*(B!>("T@<F5P;&%C92!T:&4 at 8W5R<F5N="!C:&%R86-T
XM97(@=VET:"!A;B G6"<*;6%P(%X@("!R6 HB"B(]/3T]/3T]/3T]/3T]/3T]
XM/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
XM/3T]"B(@64ME1% @+2!C<F5A=&4@=&AE('-T871E('1A8FQE+"!.97AT0VAA
XM<B!T86)L92!A;F0@:6YI=&EA;"!S=&%T90HB($YO=&4@=&AA="!Y;W4@:&%V
XM92!T;R!E<V-A<&4@=&AE(&)A<B!C:&%R86-T97(L('-I;F-E(&ET(&ES('-P
XM96-I86P@=&\*(B!T:&4@;6%P(&-O;6UA;F0@*&ET(&EN9&EC871E<R!A(&YE
XM=R!L:6YE*2X*;6%P(%D@("!O<T4Q("!K("!.,2 @(" @("!S13%?(&UM($4R
XM(" @(" @('-%,A9\(&UM(%,Q(" @(" @('-%,BX@;&P at 13$;"FUA<"!+(" @
XM;W-7,2 @:B @4S$@(" @(" @<U<Q7R!M;2!7,B @(" @("!S5S(6?"!M;2!.
XM,2 @(" @("!S5S(N(&AH(%<Q&PIM87 @92 @(&]S3C$N(&AH(%<Q(" @(" @
XM('-.,19\(&UM($XR(" @(" @('-.,B @:R @3C$@(" @(" @<TXR7R!M;2!%
XM,1L*;6%P($0@("!O<U,Q+B!L;"!%,2 @(" @("!S4S$6?"!M;2!3,B @(" @
XM("!S4S(@(&H@(%,Q(" @(" @('-3,E\@;6T at 5S$;"FUA<"!0(" @;VY%,2!K
XM1B!N13(@;$8@;E<Q($<D2D8@;E<R(&A&(&Y.,2!H1B!N3C(@:T8@;E,Q(&Q&
X/(&Y3,B!')$I&( U%,1L*
X 
Xend
SHAR_EOF
$TOUCH -am 0208003691 maze.vi.macros.uu &&
chmod 0664 maze.vi.macros.uu ||
echo "restore of maze.vi.macros.uu failed"
set `wc -c maze.vi.macros.uu`;Wc_c=$1
if test "$Wc_c" != "16793"; then
	echo original size 16793, current size $Wc_c
fi
fi
# ============= maze.out ==============
if test X"$1" != X"-c" -a -f 'maze.out'; then
	echo "File already exists: skipping 'maze.out'"
else
echo "x - extracting maze.out (Text)"
sed 's/^X//' << 'SHAR_EOF' > maze.out &&
X._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
X| ._| . . ._| | |_._._. . ._|_._._._._. ._|_. ._|_._. ._| | . ._|_. | . ._._. |
X| ._|_| |_. | | | | ._._|_._|_._. . |_. | | | ._._| |_._._._| | ._. ._| . . |_|
X|_._._._. | ._|_. ._._._. | | ._. |_._. . | ._._| |_. | . ._._._. |_. | |_|_| |
X| | . |_._| . ._._._| ._._. ._._| | | |_| . | |_. . ._|_|_| ._._. |_._|_| . | |
X|_._|_._._._|_._._._|_|_._._._|_._|_._._._|_._._._|_._._._._|_._._._._._._|_._|
X|
SHAR_EOF
$TOUCH -am 0208012491 maze.out &&
chmod 0664 maze.out ||
echo "restore of maze.out failed"
set `wc -c maze.out`;Wc_c=$1
if test "$Wc_c" != "481"; then
	echo original size 481, current size $Wc_c
fi
fi
# ============= maze.c ==============
if test X"$1" != X"-c" -a -f 'maze.c'; then
	echo "File already exists: skipping 'maze.c'"
else
echo "x - extracting maze.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > maze.c &&
Xchar*M,A,Z,E=40,J[40],T[40];main(C){for(*J=A=scanf(M="%d",&C);
X--            E;             J[              E]             =T
X[E   ]=  E)   printf("._");  for(;(A-=Z=!Z)  ||  (printf("\n|"
X)    ,   A    =              39              ,C             --
X)    ;   Z    ||    printf   (M   ))M[Z]=Z[A-(E   =A[J-Z])&&!C
X&    A   ==             T[                                  A]
X|6<<27<rand()||!C&!Z?J[T[E]=T[A]]=E,J[T[A]=A-Z]=A,"_.":" |"];}
SHAR_EOF
$TOUCH -am 0109150191 maze.c &&
chmod 0664 maze.c ||
echo "restore of maze.c failed"
set `wc -c maze.c`;Wc_c=$1
if test "$Wc_c" != "441"; then
	echo original size 441, current size $Wc_c
fi
fi
# ============= maze.ansi.c ==============
if test X"$1" != X"-c" -a -f 'maze.ansi.c'; then
	echo "File already exists: skipping 'maze.ansi.c'"
else
echo "x - extracting maze.ansi.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > maze.ansi.c &&
Xchar*M,A,Z,E=40,J[80],T[3];main(C){for(M=J+E,*J=A=scanf("%d",&
XC)            ;--            E;J             [E            ]=M
X[E   ]=  E)   printf("._");  for(;(A-=Z=!Z)  ||  (printf("\n|"
X)    ,   A    =              39              ,C             --
X)    ;   Z    ||    printf   (T   ))T[Z]=Z[A-(E   =A[J-Z])&&!C
X&    A   ==             M[                                  A]
X|6<<11<rand()||!C&!Z?J[M[E]=M[A]]=E,J[M[A]=A-Z]=A,"_.":" |"];}
SHAR_EOF
$TOUCH -am 0125132891 maze.ansi.c &&
chmod 0664 maze.ansi.c ||
echo "restore of maze.ansi.c failed"
set `wc -c maze.ansi.c`;Wc_c=$1
if test "$Wc_c" != "441"; then
	echo original size 441, current size $Wc_c
fi
fi
exit 0

-- 

                   ACSnet:  gregm at otc.otca.oz.au
Greg McFarlane       UUCP:  {uunet,mcvax}!otc.otca.oz.au!gregm
|||| OTC ||         Snail:  OTC R&D GPO Box 7000, Sydney 2001, Australia
                    Phone:  +61 2 287 3139    Fax: +61 2 287 3299
$B%$%C%U(J $B%f!<(J $B%+%s(J $B%j!<%C%I(J $B%:%#%9(J $B!<(J $B%9%^%$%k(J



More information about the Alt.sources mailing list