APLで関数なしで各演算子を使用する

Aug 21 2020

次のデータを含むネストされた配列があります。

┌→────────────────┐
│ ┌→────┐ ┌→────┐ │
│ │ABC12│ │DEF34│ │
│ └─────┘ └─────┘ │
└∊────────────────┘

それぞれから番号を削除して、次のようにします。

┌→────────────┐
│ ┌→──┐ ┌→──┐ │
│ │ABC│ │DEF│ │
│ └───┘ └───┘ │
└∊────────────┘

各演算子(¨)と「0123456789」の右引数を指定して関数なし(〜)を使用しようとしましたが、長さエラーが発生します。また、次のように各番号を独自の配列に入れてみました。

┌→────────────────────────────────────────┐
│ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ │
│ │0│ │1│ │2│ │3│ │4│ │5│ │6│ │7│ │8│ │9│ │
│ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ │
└∊────────────────────────────────────────┘

しかし、これも長さエラーになりました。どんな助けでもいただければ幸いです。

回答

3 TessellatingHeckler Aug 21 2020 at 11:11

Dyalog APLを想定すると⎕D、配列内の各文字列に適用される、文字列から数字()を削除する直接関数を試すことができます。

      yourData
┌→────────────────┐
│ ┌→────┐ ┌→────┐ │
│ │ABC12│ │DEF34│ │
│ └─────┘ └─────┘ │
└∊────────────────┘
      {⍵~⎕D}¨yourData
┌→────────────┐
│ ┌→──┐ ┌→──┐ │
│ │ABC│ │DEF│ │
│ └───┘ └───┘ │
└∊────────────┘
3 Adám Aug 21 2020 at 12:52

あなたが探しているのは、それぞれから数字のセット()全体をセット減算(「なし」)すること⎕Dです。したがって、全体として機能するように数字セットを囲みます。

      'ABC12' 'DEF34'~¨⊂⎕D
┌→────────────┐
│ ┌→──┐ ┌→──┐ │
│ │ABC│ │DEF│ │
│ └───┘ └───┘ │
└∊────────────┘

オンラインでお試しください!

これがあなたが望むものと非常によく似ていることに注意してください:

数字のセット全体()の各()を含ま'ABC12' 'DEF34'ない(~)データ()。¨⎕D