A* search algorithm: Difference between revisions

Content added Content deleted
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 by-y ((y y) (map level))
(let ((line (lref level y)))
(cond
(if (pair? line)
((< y 0) #true)
(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))