Utilizzando l'operatore each con la funzione senza in APL

Aug 21 2020

Ho un array nidificato con i seguenti dati:

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

Vorrei rimuovere i numeri da ciascuno, in modo che assomigli a questo:

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

Ho provato a utilizzare la funzione senza (~) con l'operatore each (¨) e un argomento a destra di "0123456789" ma ottengo un errore di lunghezza. Ho anche provato a mettere ogni numero nel proprio array in questo modo:

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

ma anche questo ha provocato un errore di lunghezza. Qualsiasi aiuto sarebbe apprezzato.

Risposte

3 TessellatingHeckler Aug 21 2020 at 11:11

Supponendo Dyalog APL, potresti provare una funzione diretta che rimuove le cifre ( ⎕D) dalle stringhe, applicata a ciascuna stringa nel tuo array, ad es.

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

Quello che stai cercando è sottrarre set ("senza ing") l' intero set di cifre ( ⎕D) da ciascuno. Quindi racchiudiamo il set di cifre per agire su di esso nel suo insieme:

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

Provalo online!

Nota come questo si legge molto come quello che vuoi:

I tuoi dati ( 'ABC12' 'DEF34') senza ( ~) ogni ( ¨) dell'intero ( ) insieme di cifre ( ⎕D).