-汎用アルゴリズムSAORI-

目次

説明

いくつかの汎用アルゴリズムを提供するSAORI。

ダウンロード

Khiva.dll

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逆順。
出力内容
Kkeyだけを出力する。デフォルト
Vvalueだけを出力する。
Pバイト値1で区切られたkeyとvalueの対。つまり入力そのまま。
AAuto index。入力データ内の順番を整数として出力する。
Sortでのみ有効。
出力形式
vValuesに出力。デフォルト
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);
}

履歴