In Dyalog APL Extended di @Adám , l' operatore (sotto) significa coniugazione: applica una funzione, quindi una seconda funzione, quindi l'inverso della prima. È divertente pensare alle azioni della vita reale in termini di coniugazione:⍢
Un problema viene trasformato da g in un altro dominio in cui viene risolto più facilmente da f, quindi trasformato nuovamente nel dominio originale. Un esempio della vita reale è "sotto anestetici":
apply anesthetics perform surgery wake up from anesthetics
Sfida
L'inverso di una linea g
è "un" anteposto a g
, e viceversa. Definisci qualsiasi linea tra s
e il suo inverso, in quell'ordine, come "sotto" s
. Per ogni riga f
in input nell'ordine:
- Se
f
e il suo inverso si verificano entrambi, non fare nulla - Se
f
non è "sotto" qualsiasi altra azione, stampaf
- Se
f
è "sotto" una lineag
, stampaf + " under " + g
dove si+
trova la concatenazione.
Ingresso
Una stringa multilinea non vuota, o un elenco di stringhe, ecc., Costituito da spazi e lettere minuscole (è possibile utilizzare invece lettere maiuscole). Esattamente una riga inizierà con "un"; e sarà l'inverso di qualche altra linea. Nessuna riga sarà vuota.
Produzione
Output nello stesso formato in cui è stato immesso, o come consentito dall'I / O standard.
Casi test:
Input:
apply anesthetics
perform surgery
unapply anesthetics
Output:
perform surgery under apply anesthetics
Input:
unite asia
establish the silk road
ite asia
Output:
establish the silk road under unite asia
Input:
desire a book
walk to store
take the book
pay for the book
unwalk to store
read the book
Output:
desire a book
take the book under walk to store
pay for the book under walk to store
read the book
Input:
drink excessively
undrink excessively
Output:
[empty string]