「Vl-sort」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
(ページの作成: ; 構文 : (vl-sort ''list'' ''comparison-function'') ; 機能 : 指定された比較関数にしたがってリスト内の要素をソートする。 ; 引数 :* list : …)
 
編集の要約なし
 
(同じ利用者による、間の7版が非表示)
1行目: 1行目:
{{AutoLISP}}
; 構文
; 構文
: (vl-sort ''list'' ''comparison-function'')  
: (vl-sort ''list'' ''comparison-function'')  
5行目: 6行目:
; 機能
; 機能
: 指定された比較関数にしたがってリスト内の要素をソートする。
: 指定された比較関数にしたがってリスト内の要素をソートする。


; 引数
; 引数
17行目: 19行目:
; 戻り値
; 戻り値
: comparison-function 引数で指定された順序で並べ替えた list の要素を含んだリスト。 重複した要素がリストから削除されることがある。  
: comparison-function 引数で指定された順序で並べ替えた list の要素を含んだリスト。 重複した要素がリストから削除されることがある。  


; サンプル
; サンプル
: 数値のリストをソート。
<pre class="brush:autolisp;">
::  (vl-sort '(3 2 1 3) '<)  
; 数値のリストをソート。
:: '''(1 2 3)''' ; 結果のリストに 3 が 1 つしか含まれていないことに注意。
(vl-sort '(3 2 1 3) '<)  
: ---
(1 2 3) ; 結果のリストに 3 が 1 つしか含まれていないことに注意。
: 2D 点のリストを Y 座標でソート。
 
:: (vl-sort '((1 3) (2 2) (3 1))  
; 文字をソート(文字コードによるので注意が必要)
::  (function (lambda (e1 e2)  
(vl-sort '("3" "2" "1" "3") '<)
::  (< (cadr e1) (cadr e2)) ) ) )  
("1" "2" "3" "3") ; 結果のリストに "3" 2つ含まれていることに注意。AutoCAD・BricsCAD では文字の重複は削除されない。
:: '''((3 1) (2 2) (1 3))'''
("1" "2" "3") ; IJCADでは重複削除されてしまう。
: ---
 
: シンボルのリストをソート。
(vl-sort '("甲" "乙" "丙" "甲" "丁") '<)
:: (vl-sort   
("丙" "乙" "甲" "甲") ; AutoCAD, BricsCAD。ユニコード順(標準)
:: '(a d c b a)  
("乙" "甲" "丙") ; IJCAD では文字の重複が削除され。JISコード順
:: '(lambda (s1 s2)  
 
:: (< (vl-symbol-name s1) (vl-symbol-name s2)) ) )  
;---
:: '''(A B C D)''' ; 結果のリストに A が 1 つしか残っていないことに注意  
; 2D 点のリストを Y 座標でソート。
(vl-sort '((1 3) (2 2) (3 1))  
  (function (lambda (e1 e2)  
    (< (cadr e1) (cadr e2)) ) ) )  
  ((3 1) (2 2) (1 3))
; ---
; シンボルのリストをソート。
(vl-sort   
  '(a d c b a)  
  '(lambda (s1 s2)  
  (< (vl-symbol-name s1) (vl-symbol-name s2)) ) )  
(A B C D) ; 結果のリストに A が 1 つしか残っていないことに注意  
 
</pre>
 
-----
関連
* [[Vl-sort-i]]
 


[[Category:AutoLISP]]
[[Category:AutoLISP]]

2023年5月10日 (水) 08:25時点における最新版

構文
(vl-sort 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 '(3 2 1 3) '<) 
(1 2 3) ; 結果のリストに 3 が 1 つしか含まれていないことに注意。

; 文字をソート(文字コードによるので注意が必要)
(vl-sort '("3" "2" "1" "3") '<) 
("1" "2" "3" "3") ; 結果のリストに "3" が 2つ含まれていることに注意。AutoCAD・BricsCAD では文字の重複は削除されない。
("1" "2" "3") ; IJCADでは重複削除されてしまう。

(vl-sort '("甲" "乙" "丙" "甲" "丁") '<)
("丙" "乙" "甲" "甲") ; AutoCAD, BricsCAD。ユニコード順(標準)
("乙" "甲" "丙") ; IJCAD では文字の重複が削除され。JISコード順

;---
; 2D 点のリストを Y 座標でソート。
(vl-sort '((1 3) (2 2) (3 1)) 
  (function (lambda (e1 e2) 
    (< (cadr e1) (cadr e2)) ) ) ) 
  ((3 1) (2 2) (1 3))
; ---
; シンボルのリストをソート。
(vl-sort  
 '(a d c b a) 
 '(lambda (s1 s2) 
 (< (vl-symbol-name s1) (vl-symbol-name s2)) ) ) 
(A B C D) ; 結果のリストに A が 1 つしか残っていないことに注意 


関連