0

APLXを使用してビットマスクから単一の1を削除する方法を知っている人はいますか? 例: 1 0 1 1 1 0 0 1 0 1 ~ 0 0 1 1 1 0 0 0 0 0

ヒントは大歓迎です。

4

2 に答える 2

1

これは 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 になります。

于 2014-03-09T23:57:07.983 に答える
0

これが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
于 2014-03-09T16:36:30.627 に答える