Ich habe diese Funktion in Lisp:Lisp - Sortierung mit benutzerdefinierter Funktion
(defun AddtoQueue (queue method)
(cond
((eq method 'DFS) (append (growPath (car queue) (findCh (caar queue))) (cdr queue)))
((eq method 'BFS) (append (cdr queue) (growPath (car queue)(findCh (caar queue)))))
((eq method 'A) (SORT (append (cdr queue) (growPath (car queue) (findCh (caar queue)))) #'> :key #'pathLength ))
(T "not implemented")
)
)
Ich habe eine Liste zu sortieren, eine benutzerdefinierte Funktion (hier pathLength
genannt). Ich lese Lisp Dokumentation über sort
, aber ich kann nichts verstehen. Meine Frage ist was genau füttere ich meine Vergleichsfunktion?
Vergleichsfunktion:
(defun pathLength(point)
;;distance from origin point
(setq x (- (length queue) 1))
;;distance from end(manhattan distance) by subtracting the coords.
;;calc lists is adding or subtracting lists.
(setq y (calcLists (cadr (assoc (car point) coords)) (cadr (assoc terminal coords)) 'sub))
(setq y (+ (car y) (cadr y)))
;;sum of distance from start and end.
(+ x y)
)
perfekte Antwort, danken Sie. Du hast mehr Dinge gezeigt, auf die ich gewartet habe. Benutze Lisp erst seit einem Monat. – Segmentation