Схема сортировки списка различных критериев - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть конечный список четверок, например,

(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.

Пожалуйста, помогите, если можете.

1 Ответ

1 голос
/ 29 декабря 2011

Насколько я могу судить, ваши упорядоченные критерии - это порядок сортировки. Если это так, то следующая программа должна выполнить эту сортировку.

(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)))))))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...