Menu

[r376]: / XMAZE.MPL  Maximize  Restore  History

Download this file

35 lines (27 with data), 602 Bytes

/*
  MAZE SOLVING - MPL VERSION
  HTTPS://ROSETTACODE.ORG/WIKI/MAZE_SOLVING#C
*/

##LIBHDR

MAZE=0

WALK(X,Y) [
  MAZE!Y%X=='*S' ? [
    MAZE!Y%X='**';
    WALK(X,Y-1); WALK(X,Y+1); WALK(X-2,Y); WALK(X+2,Y);
    MAZE!Y%X='*S'
  ] : MAZE!Y%X=='E' ? [
    Y=0; Y<VLEN(MAZE) @ WRITEF("%S*N",MAZE!Y++)
  ]
]

SOLVE(;X,Y) [
  Y=0; Y < VLEN(MAZE) @ [
    (X=SCHR(MAZE!Y,'S')) ? [ MAZE!Y%X='*S'; WALK(X,Y); =0 ];
    ++Y
  ]
]

.() [
  (MAZE=VGET("XMAZE.TXT")) ? [ SOLVE(); WEND(MAZE) ]
    : WRITES("MAZE FILE NOT FILE*N");
  WRITEF("*NMEMORY LEAK = %N*N", VUSE());
  0
]

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.