ListTools[FindMaximalElement] - リスト内で最大の要素を求める
ListTools[FindMinimalElement] - リスト内で最小の要素を求める
|
使い方
|
|
FindMaximalElement(L)
FindMaximalElement(L, comparison, position)
FindMinimalElement(L)
FindMinimalElement(L, comparison, position)
|
|
パラメータ
|
|
L
|
-
|
リスト
|
comparison
|
-
|
(オプション)プロシージャが true または false を返します。
|
|
|
|
|
モデルの説明
|
|
•
|
FindMaximalElement(L) 関数は max と類似した形でリスト L 内の最大の要素を返します。
|
•
|
FindMinimalElement(L) 関数は、min と類似した形でリスト L 内の最小の要素を返します。
|
•
|
オプションの引数 comparison が与えられると、デフォルトの `<` の代わりに与えられたプロシージャを使用して要素の比較を実行します。
|
•
|
オプションのキーワードパラメータ position が与えられると、式列が返されます。返された式列の 1 番目の要素は最大値(または最小値)であり、2 番目の要素は、比較が狭義である(たとえば、`<`)か狭義でない(たとえば、`<=`)かにより、リスト内の最初の最大値(または最小値)あるいは最後の最大値(または最小値)のいずれかの位置です。
|
•
|
sort とは異なり、L の要素を`<` を使用して比較できない場合は、2 番目の引数が必要となります。
|
|
|
アプリケーションと例題
|
|
>
|
FindMaximalElement([3,2,1,2,1]);
|
| (4.1) |
>
|
FindMinimalElement([3,2,1,2,1]);
|
| (4.2) |
>
|
FindMaximalElement([1/2, 1, sqrt(2), sqrt(11), exp(1)]);
|
| (4.3) |
>
|
FindMaximalElement([3,2,1,2,1], position);
|
| (4.4) |
>
|
FindMinimalElement([3,2,1,2,1], position);
|
| (4.5) |
>
|
FindMaximalElement([3,2,1,2,1], `>`, position);
|
| (4.6) |
>
|
FindMaximalElement([1/2, 1, sqrt(2), sqrt(11), exp(1)], position);
|
| (4.7) |
L の要素を < を使用して比較できない場合、エラーが返されます。
>
|
FindMaximalElement([3*a, 2]);
|
エラー、(ListTools:-FindMaximalElement 内で) リストの要素を `<` を使用して比較することができません。
| |
>
|
FindMinimalElement([[1,a,4],[2,b,3],[3,c,2],[4,a,1]]);
|
エラー、(ListTools:-FindMaximalElement 内で) リストの要素を `<` を使用して比較することができません。
| |
>
|
FindMinimalElement([[1,a,4],[2,b,3],[3,c,2],[4,a,1]], length);
|
エラー、(ListTools:-FindMaximalElement 内で) 2 番目の引数は必ず true または false を返す関数である必要があります。
| |
2 番目の要素によるソート。lexorder は狭義でない比較であるため、最後の最小値が返されます。
>
|
FindMinimalElement([[1,a,4],[2,b,3],[3,c,2],[4,a,1]], (x,y)->lexorder(x[2],y[2]));
|
| (4.8) |
|
|