(define get-maze '( (w w w w w w w w w) (w 3 0 w 0 0 0 0 w) (w w 0 w 0 w w 0 w) (w 0 1 0 0 0 0 8 w) (w w 0 0 0 w w 0 w) (w 0 5 0 w 0 1 0 w) (w 4 w 0 w 1 7 0 w) (w w w w w w w w w) ) ) (define program '( (procedure add-mark-to-maze (if mark? (get-mark (if mark? (put-mark) ( put-mark put-mark (if wall? () (step add-mark-to-maze step-back)) turn-left (if wall? () (step add-mark-to-maze step-back)) turn-left (if wall? () (step add-mark-to-maze step-back)) turn-left turn-left (if wall? () (step add-mark-to-maze step-back)) turn-left (if wall? () (step add-mark-to-maze step-back)) turn-left get-mark )) ) (put-mark add-mark-to-maze get-mark) )) (procedure step-back (turn-left turn-left turn-left step turn-left turn-left turn-left) ) ) ) (newline) (simulate (list get-maze (list 4 1) 'west) 'add-mark-to-maze program 20)