home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / sharew / exoten / rec / maze.cnv < prev    next >
Encoding:
Text File  |  1990-07-09  |  1.3 KB  |  39 lines

  1. [MAZE.CNV]
  2. [G. Cisneros, 6.6.84; adapted from Proc. IEEE, 55, 1525 (1967)]
  3. [[
  4. All paths in a maze:
  5. (ni nf (na (na1 na2 ... nak) ... nz (nz1 ... nzj)))]]
  6.  
  7. [compute the paths]
  8. (()()(0 1 2 3 4)(
  9.     (<(>(and,<:n:>,<0>) <0> <-->/<1>,<1>(I)<0><)>);
  10.     (<(>(and,<:n:>,<0>) (and,<:n:>,<1>) <2><<
  11.      >>(or, <0>,<0>) <(><3><)>(or, ,)<4>,<<
  12.       >>(WHILE,(5 6),<3>,(and,<:n:>,<5>)(or, ,)<6>,<<
  13.         >>(if,(M,<(><5> <1> <2><4>(I)<0>),$,),<6>));
  14.     (,$);
  15. )) M
  16.  
  17. [validate data, call M]
  18. ((    [list pattern definitions:]
  19.     ((or,(IVL,A,Z,),(IVL,a,z,),(IVL,0,9,))) a    [alphanum]
  20.     (<:a:>(ITR,<:a:>)) n                [node name]
  21.     (<(>(or,<:n:>(ITR, <:n:>),)<)>) l        [list]
  22.     (<:n:> <:l:>) p                    [connections]
  23. )(    [list skeleton definitions:]
  24.     ((if,<0>,<9><>,, )) I                [null/space]
  25. )(0 8 9)(
  26.     [rule set:]
  27.     ((^Z),);
  28.     ((and,<(>(and,<:n:>,<9>) (and,<:n:>,<8>)<<
  29.      >> <(><:p:>(ITR, <:p:>)<)><)>,<0>),<<
  30.       >>(%t,Initial: <9>; final: <8>)<<
  31.       >>(%t,(WHILE,(1 2),<<
  32.         >><(>(if,(M,<0>/<(>),$,)<)>,<<
  33.         >>(and,<[65]><--><)>,<1>)<2>,<<
  34.         >><1>(^MJ),<2>,<=>(^MJ)))(%r)):
  35.     (<>,(%t,<(>ni nf <(>na <(>na1 na2 ... nak<)> ... <<
  36.         >>nz <(>nz1 ... nzj<)><)><)>)(%r)):
  37.     (,(%t,not a maze)):
  38. ))
  39. [end]