APLXを使用してビットマスクから単一の1を削除する方法を知っている人はいますか? 例: 1 0 1 1 1 0 0 1 0 1 ~ 0 0 1 1 1 0 0 0 0 0
ヒントは大歓迎です。
APLXを使用してビットマスクから単一の1を削除する方法を知っている人はいますか? 例: 1 0 1 1 1 0 0 1 0 1 ~ 0 0 1 1 1 0 0 0 0 0
ヒントは大歓迎です。
これは 1 つの方法です。
b←1 0 1 1 1 0 0 1 0 1
1↓e∧(¯1⌽e)∨1⌽e←0,b
0 0 1 1 1 0 0 0 0 0
元のベクトルに 1 があり、その後または前に 1 がある場合は 1 になります。
これが1つの方法です。最初に、find 関数を使用して 2 つの連続する 1 の発生をすべて見つけ、次にシフトおよび比較手法を使用して、1 のすべての実行を 1 ずつ拡張します。
a←1 0 1 1 1 0 0 1 0 1
b←1 1⍷a
b
0 0 1 1 0 0 0 0 0 0
b∨0,¯1↓b
0 0 1 1 1 0 0 0 0 0