1

FinnAPL ライブラリの 3 番目の項目は、「X で示される Y のサブベクトルの累積最大値 (⌈)」と呼ばれます。ここで、X はバイナリ ベクトルであり、Y は数値のベクトルです。使用例を次に示します。

X←1 0 0 0 1 0 0 0
Y←9 78 3 2 50 7 69 22
Y[A⍳⌈\A←⍋A[⍋(+\X)[A←⍋Y]]]       ⍝ output 9 78 78 78 50 50 69 69

X 配列の先頭または任意の 1 の値から開始して、X で別の 1 が見つかるまで、Y の対応するすべての桁の累積最大値が見つかることがわかります。与えられた例では、X は配列を 2 つに分割しています。それぞれ4つの数字の等しい部分。最初の部分では、78 に遭遇するまでは 9 が最大値であり、2 番目の部分では、69 に遭遇するまでは 50 が最大値です。

それは理解するのに十分簡単で、盲目的にそのまま使用することもできますが、APL イディオムは本質的に演算子と関数で構成されるアルゴリズムであるため、どのように機能するかを理解したいと思います。APL をよく理解するには、マスターがどのようにして APL をコンパクトでエレガントなコード行にまとめることができたのかを理解することが重要です。

この特定のイディオムは、インデックス作成が 2 層深くネストされているため、特に理解しにくいと思います。だから私の質問は、このイディオムを動かしているのは何ですか?

4

2 に答える 2

2
于 2013-07-03T12:11:29.770 に答える