我有一个有限的四重列表,例如
(list (list 1 3 5 5) (list 2 3 4 9) (list 3 4 4 6)(list 4 7 10 3)).
我用(a1 a2 a3 a4)表示每个元素。
请帮我写一个提供的排序功能 根据以下标准创建的“增加”列表:
如果可以,请帮忙。
答案 0 :(得分:1)
据我所知,您订购的标准是排序的顺序。如果是这种情况,那么以下程序应该执行该排序。
(define (strange-sort quadruples)
(define (a2 quad)
(cadr quad))
(define (a3 quad)
(caddr quad))
(define (a4 quad)
(cadddr quad))
(sort quadruples
(lambda (x y)
(cond ((< (a2 x) (a2 y))
#t)
((> (a2 x) (a2 y))
#f)
(else
(cond ((< (- (a3 x) (a4 x))
(- (a3 y) (a4 y)))
#t)
((> (- (a3 x) (a4 x))
(- (a3 y) (a4 y)))
#f)
(else
(cond ((< (a3 x) (a3 y))
#t)
(else #f)))))))))