17 lines
643 B
Plaintext
17 lines
643 B
Plaintext
(de shortestPath (Goal This Maze)
|
|
(let (Path NIL Best NIL Dir " > ")
|
|
(recur (This Path Dir)
|
|
(when (and This (not (: mark)))
|
|
(push 'Path (cons This Dir))
|
|
(if (== Goal This)
|
|
(unless (and Best (>= (length Path) (length Best)))
|
|
(setq Best Path) )
|
|
(=: mark T)
|
|
(recurse (: west) Path " > ")
|
|
(recurse (: east) Path " < ")
|
|
(recurse (: south) Path " \^ ")
|
|
(recurse (: north) Path " v ")
|
|
(=: mark NIL) ) ) )
|
|
(disp Maze 0
|
|
'((Fld) (if (asoq Fld Best) (cdr @) " ")) ) ) )
|