(define get-maze '( (w w w w w w w) (w 0 0 1 1 w w) (w w 0 1 1 0 w) (w w w w w w w) ) ) (define program '( (procedure add (sub-one turn-180 go turn-right step turn-right turn-right add-one turn-180 go turn-left turn-left step turn-left add ) ) (procedure add-one (if mark? (get-mark step add-one turn-180 step turn-180) (put-mark) ) ) (procedure sub-one (if mark? (get-mark) (put-mark step sub-one turn-180 step turn-180) ) ) (procedure turn-180 (turn-left turn-left turn-left) ) (procedure turn-right (turn-left turn-left turn-left turn-left turn-left) ) (procedure go (if wall? () (step go)) ) ) ) (newline) (simulate (list get-maze (list 4 1) 'west) 'add program 100)