-汎用アルゴリズムSAORI-
目次
説明
いくつかの汎用アルゴリズムを提供するSAORI。
ダウンロード
SAORI引数解説
ソート
- Sort
-
Argument0 "sort" Argument1 後述される書式によって与えられた対象データ。 Argument2 オプション文字列[ソート基準|出力順序|出力内容|出力形式] Result オプションの出力形式に依存 Value0以降 オプションの出力形式に依存 主に複数の配列、あるいは連想配列の組に格納されたデータのソートを行う。副次的に単純なソートも行える。
集合演算
以下は比較方式が全て「文字列」に固定されている。処理の関係上データ内の各要素は一定の基準で並び替えられる。比較対象が要素のうちkey部分のみであることは同じ。
STLアルゴリズムのset_*に相当する。
- Intersection
Argument0 "intersection" Argument1 後述される書式によって与えられた対象データA
Argument2 後述される書式によって与えられた対象データB
Argument3 オプション文字列[出力内容|出力形式] Result オプションの出力形式に依存 Value0以降 オプションの出力形式に依存 集合A,Bに共通する要素を抽出する。
- Union
Argument0 "union" Argument1 後述される書式によって与えられた対象データA
Argument2 後述される書式によって与えられた対象データB
Argument3 オプション文字列[出力内容|出力形式] Result オプションの出力形式に依存 Value0以降 オプションの出力形式に依存 Aの全要素と、Bの要素のうちAに存在しないものの和を抽出する。
- Difference
Argument0 "difference" Argument1 後述される書式によって与えられた対象データA
Argument2 後述される書式によって与えられた対象データB
Argument3 オプション文字列[出力内容|出力形式] Result オプションの出力形式に依存 Value0以降 オプションの出力形式に依存 Aに存在してBに存在しない要素を抽出
- SymmetricDifference
Argument0 "symmetric_difference" Argument1 後述される書式によって与えられた対象データA
Argument2 後述される書式によって与えられた対象データB
Argument3 オプション文字列[出力内容|出力形式] Result オプションの出力形式に依存 Value0以降 オプションの出力形式に依存 A,Bに共通しない要素を抽出。
その他
- Shuffle
-
Argument0 "shuffle" Argument1 バイト値2で区切られた対象データ Argument2 オプション文字列[出力形式] Result オプションの出力形式に依存 Value0以降 オプションの出力形式に依存 与えられた集合をランダムにシャッフルする。keyとvalueとしては扱わない点に注意。
- Unique
-
Argument0 "unique" Argument1 後述される書式によって与えられた対象データ。 Argument2 オプション文字列[出力内容|出力形式] Result オプションの出力形式に依存 Value0以降 オプションの出力形式に依存 与えられた集合から重複する要素を取り除く。
- MakePair
-
Argument0 "make_pair" Argument1 バイト値2で区切られたKeyの配列 Argument2 バイト値2で区切られたValueの配列 Argument3 オプション文字列[出力形式] Result オプションの出力形式に依存 Value0以降 オプションの出力形式に依存 Argument0,Argument1の項目数が一致する場合に、(Key0[1]Value0[2]Key1[1]Value2[2]...Keyn[1]Value[2])という形式に変換する。
データフォーマット
key[1]value[2]
という形式でバイト値1とバイト値2で区切られたkeyとvalueの対の並びとして扱われる。
valueは省略可能で、その場合は
key[2]
となる。
keyとなる部分の文字列は、オプションでソート基準が指定可能な場合には、当然そこで指定された形式として解釈できる必要がある。
オプション文字列
オプション文字列に特定の文字を含めることでいくつかの動作を制御できる。オプション文字はグループ化され、同一グループ内の複数の文字が文字列に存在した場合の動作は全くの未定義である。省略時にはそれぞれのグループのデフォルトとなる。
- ソート基準
-
I 整数。デフォルト F 実数。 S 文字列。Unicodeにおける辞書順。 L 文字列長。 - 出力順序
-
N 正順。デフォルト R 逆順。 - 出力内容
K keyだけを出力する。デフォルト V valueだけを出力する。 P バイト値1で区切られたkeyとvalueの対。つまり入力そのまま。 A Auto index。入力データ内の順番を整数として出力する。
Sortでのみ有効。- 出力形式
v Valuesに出力。デフォルト s バイト値2で区切られたものをResultに出力。
制限事項・既知の問題点
- 今後仕様が変わる確率が高いため現段階ではβリリース。特にバグの多寡、安定性などは関係ない。
逆にいえば、正式版になったところでバグが減るというわけではない。
付録
Mizdkiによる宣言例。
[saori: Khiva : "Khiva.dll"] { vector Sort("sort", $data, $opt); vector Shuffle("shuffle", $data); vector Union("union", $arg1, $arg2, $opt); vector Intersection("intersection", $arg1, $arg2, $opt); vector Difference("difference", $arg1, $arg2, $opt); vector SymmetricDifference("symmetric_difference", $arg1, $arg2, $opt); vector Unique("unique", $arg, $opt); vector MakePair("make_pair", $keys, $values, $opt); }
履歴
- '05/01/14 β公開。