「Vl-sort-i」の版間の差分
(ページの作成: ; 構文 : (vl-sort-i ''list'' ''comparison-function'') ; 機能 : 指定された比較関数にしたがってリスト内の要素をソートし、要素のインデック…) |
編集の要約なし |
||
(同じ利用者による、間の2版が非表示) | |||
5行目: | 5行目: | ||
; 機能 | ; 機能 | ||
: 指定された比較関数にしたがってリスト内の要素をソートし、要素のインデックス番号を返す。 | : 指定された比較関数にしたがってリスト内の要素をソートし、要素のインデックス番号を返す。 | ||
; 引数 | ; 引数 | ||
20行目: | 21行目: | ||
; サンプル | ; サンプル | ||
: 文字のリストを降順にソート。 | <pre class="brush:autolisp;"> | ||
; 文字のリストを降順にソート。 | |||
(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 つ存在していることに注意。 | |||
</pre> | |||
----- | ----- | ||
関連事項 | 関連事項 | ||
* | * [[vl-sort]] | ||
* [[vl-sort-i]] | |||
[[Category:AutoLISP]] | [[Category:AutoLISP]] |
2020年8月20日 (木) 15:43時点における最新版
- 構文
- (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 つ存在していることに注意。
関連事項