Usando el operador each con la función sin en APL

Aug 21 2020

Tengo una matriz anidada con los siguientes datos:

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

Me gustaría eliminar los números de cada uno, para que se vea así:

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

Intenté usar la función sin (~) con cada operador (¨) y un argumento correcto de '0123456789' pero obtengo un error de longitud. También intenté poner cada número en su propia matriz de esta manera:

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

pero esto también resultó en un error de longitud. Cualquier ayuda sería apreciada.

Respuestas

3 TessellatingHeckler Aug 21 2020 at 11:11

Suponiendo Dyalog APL, podría probar una función directa que elimine los dígitos ( ⎕D) de las cadenas, aplicados a cada cadena en su matriz, por ejemplo

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

Lo que busca es restar conjuntos ("sin-ing") el conjunto completo de dígitos ( ⎕D) de cada uno. Así que adjuntamos el conjunto de dígitos para actuar sobre él como un todo:

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

¡Pruébelo en línea!

Observe que esto se parece mucho a lo que quiere:

Sus datos ( 'ABC12' 'DEF34') sin ( ~) cada ( ¨) del conjunto completo ( ) de dígitos ( ⎕D).