Использование оператора «каждый» с функцией «без» в APL

У меня есть вложенный массив со следующими данными:

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

Я хотел бы удалить цифры из каждого, чтобы это выглядело так:

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

Я попытался использовать функцию без (~) с каждым оператором (¨) и правым аргументом «0123456789», но получаю ошибку длины. Я также попытался поместить каждое число в свой собственный массив следующим образом:

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

но это тоже привело к ошибке длины. Любая помощь будет оценена по достоинству.


person icicle    schedule 21.08.2020    source источник


Ответы (2)


Предполагая Dyalog APL, вы можете попробовать прямую функцию, которая удаляет цифры (⎕D) из строк, применяемые к каждой строке в вашем массиве, например.

      yourData
┌→────────────────┐
│ ┌→────┐ ┌→────┐ │
│ │ABC12│ │DEF34│ │
│ └─────┘ └─────┘ │
└∊────────────────┘
      {⍵~⎕D}¨yourData
┌→────────────┐
│ ┌→──┐ ┌→──┐ │
│ │ABC│ │DEF│ │
│ └───┘ └───┘ │
└∊────────────┘
person TessellatingHeckler    schedule 21.08.2020

То, что вы ищете, это набор-вычитание (без ввода) всего набора цифр (⎕D) из каждого. Итак, мы заключаем набор цифр, чтобы воздействовать на него в целом:

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

Try it online!< /а>

Обратите внимание, как это очень похоже на то, что вы хотите:

Ваши данные ('ABC12' 'DEF34') без (~) каждого (¨) всего () набора цифр (⎕D).

person Adám    schedule 21.08.2020