方案排序列表不同的标准

时间:2011-12-27 20:32:53

标签: scheme

我有一个有限的四重列表,例如

(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)表示每个元素。

请帮我写一个提供的排序功能 根据以下标准创建的“增加”列表:

  1. 数字a2,
  2. 后来差异(a3 - a4),
  3. 以及后来的数字a3。
  4. 如果可以,请帮忙。

1 个答案:

答案 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)))))))))