我正在尝试编写一个程序,根据它们与原点的距离(0.0)
按升序对新列表中的点进行排序。所以,我首先说(define origin (cons 0 0))
然后,我写了一个程序,将最小距离值带到原点:
(define (min-distance-origin p pt-list)
(if (null? pt-list)
0
(min (distance (get-first-point pt-list) origin)
(min-distance-origin (get-rest-points pt-list) origin)))
然后我采取的下一步实际上是编写排序点列表的过程,尽管我不太确定如何去做。
(define (make-sorted-pt-list p pt-list)
(if (null? pt-list)
0
(min (min-distance-origin p origin) ; need something that can do (cons min ())
(make-sorted-pt-list (car (cdr pt-list)) origin)))) ; recursive call
我遇到的问题是我需要一些可以从最小值构造列表的东西,然后从点列表中消除该值,然后重复。