Vl-sort-i

提供:GizmoLabs - だいたい CAD LISP なサイト
2009年10月21日 (水) 16:11時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成: ; 構文 : (vl-sort-i ''list'' ''comparison-function'') ; 機能 : 指定された比較関数にしたがってリスト内の要素をソートし、要素のインデック…)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vl-sort-i list comparison-function)


機能
指定された比較関数にしたがってリスト内の要素をソートし、要素のインデックス番号を返す。
引数
  • list : 任意のリスト。
  • comparison-function : 比較関数。 これは、2 つの引数を受け入れ、第 1 引数が第 2 引数よりもソート順が前の場合は T(または nil 以外の任意の値)を返すような任意の関数。
comparison-function 引数の値は、次の形式のいずれかが指定可能。
シンボル(関数名)
'(LAMBDA (A1 A2) ...)
(FUNCTION (LAMBDA (A1 A2) ...))


戻り値
comparison-function 引数で指定された順序で並べ替えた list の要素のインデックスの値を含んだリスト。 重複した要素は、結果でも保持される。


サンプル
文字のリストを降順にソート。
(vl-sort-i '("a" "d" "f" "c") '>)
(2 1 3 0)
ソートされたリストの順序は "f" "d" "c" "a" で、"f" は元のリストの第 3 要素(インデックス 2)、"d" はリストの第 2 要素(インデックス 1)、以下のサンプルも同様。
---
数値のリストを昇順にソート。
(vl-sort-i '(3 2 1 3) '<)
(2 1 3 0) ; 結果のリスト内に「3」が 2 つ存在していることに注意。
---
2D 点のリストを Y 座標でソート。
(vl-sort-i '((1 3) (2 2) (3 1))
(function (lambda (e1 e2)
(< (cadr e1) (cadr e2)) ) ) )
(2 1 0)
---
シンボルのリストをソート。
(vl-sort-i
'(a d c b a)
'(lambda (s1 s2)
(< (vl-symbol-name s1) (vl-symbol-name s2)) ) )
(4 0 3 2 1)  ; 結果のリスト内に「a」が 2 つ存在していることに注意。

関連事項