1

ペアのリストを取得するスキームの手順があり、このリストをペアの2番目の要素で降順にソートする必要があります。このような:

((1 . 1) (2 . 3) (3 . 2)) --> ((2 . 3) (3 . 2) (1 . 1))
((1 . 1) (x . 3) (2 . 1) (3 . 1)) --> ((x . 3) (1 . 1) (2 . 1) (3 . 1))
((1 . 3) (3 . 4) (2 . 2)) --> ((3 . 4) (1 . 3) (2 . 2))

これにソートをどのように使用すればよいかわかりません。

4

1 に答える 1

5

組み込みのsortプロシージャを使用するだけです。

(define (sort-desc-by-second lst)
  (sort lst
        (lambda (x y) (> (cdr x) (cdr y)))))

(sort-desc-by-second '((1 . 1) (2 . 3) (3 . 2)))
=> '((2 . 3) (3 . 2) (1 . 1))

ここでのコツはsort、2 番目のパラメーターとして適切な比較手順に渡すことです。

于 2012-11-27T18:37:15.413 に答える