;;; maze.scm Dave Reed ;;; state space representation of a maze: (row-index col-index) (define MAZE '("*********" "S *" "* ** * *" "* ** *" "* * *****" "* * *" "* * ** E" "*********")) (define (GET-MOVES state) (define (prune-illegal statelist) (cond ((null? statelist) '()) ((or (< (caar statelist) 0) (>= (caar statelist) (length MAZE)) (< (cadar statelist) 0) (>= (cadar statelist) (string-length (car MAZE))) (equal? (string-ref (list-ref MAZE (caar statelist)) (cadar statelist)) #\*)) (prune-illegal (cdr statelist))) (else (cons (car statelist) (prune-illegal (cdr statelist)))))) (prune-illegal (list (list (- (car state) 1) (cadr state)) (list (+ (car state) 1) (cadr state)) (list (car state) (- (cadr state) 1)) (list (car state) (+ (cadr state) 1))))) (define (HEURISTIC state goal) (- 0 (+ (abs (- (car state) (car goal))) (abs (- (cadr state) (cadr goal))))))