A* search algorithm: Difference between revisions
Content added Content deleted
m (→Extra credit) |
m (small ol simplification) |
||
Line 1,551: | Line 1,551: | ||
; naive test for "is the cell is empty?" |
; naive test for "is the cell is empty?" |
||
(define (floor? x y) |
(define (floor? x y) |
||
(let |
(let ((line (lref level y))) |
||
( |
(if (pair? line) |
||
(( |
(eq? (lref line x) 0)))) |
||
((null? map) #true) |
|||
((= y 0) |
|||
(let by-x ((x x) (map (car map))) |
|||
(if (< x 0) #true |
|||
(if (null? map) #true |
|||
(if (= x 0) |
|||
(not (eq? (car map) 1)) |
|||
(by-x (- x 1) (cdr map))))))) |
|||
(else |
|||
(by-y (- y 1) (cdr map)))))) |
|||
(unless (equal? from to) ; search not finished yet |
(unless (equal? from to) ; search not finished yet |
||
Line 1,589: | Line 1,579: | ||
(parent-of-parent (ref (get c-list-set (hash parent) #f) 2))) |
(parent-of-parent (ref (get c-list-set (hash parent) #f) 2))) |
||
(if parent-of-parent (rev parent) |
(if parent-of-parent (rev parent) |
||
(cons |
(cons |
||
(- (car xy) (car parent)) |
(- (car xy) (car parent)) |
||
(- (cdr xy) (cdr parent)) |
(- (cdr xy) (cdr parent)))))) |
||
;c-list-set |
|||
;o-list-set |
|||
)))) |
|||
(let*((x (car xy)) |
(let*((x (car xy)) |