Dans Dyalog APL Extended @ Adám , l' opérateur (sous) signifie la conjugaison: appliquer une fonction, puis une deuxième fonction, puis l'inverse de la première. C'est amusant de penser aux actions réelles en termes de conjugaison:⍢
Un problème est transformé par g dans un autre domaine où il est plus facilement résolu par f, puis retransformé dans le domaine d'origine. Un exemple tiré de la vie réelle est «sous anesthésie»:
apply anesthetics perform surgery wake up from anesthetics
Défi
L'inverse d'une ligne gest "non" précédé de g, et vice versa. Définissez une ligne entre set son inverse, dans cet ordre, comme étant "sous" s. Pour chaque ligne fen entrée dans l'ordre:
- Si
fet son inverse se produisent, ne faites rien - Si
fn'est "sous" aucune autre action, imprimezf - Si
fest "sous" une ligneg, imprimezf + " under " + goù se+trouve la concaténation.
Contribution
Une chaîne multiligne non vide, ou une liste de chaînes, etc., composée d'espaces et de lettres minuscules (vous pouvez utiliser à la place des majuscules). Exactement une ligne commencera par "un"; et ce sera l'inverse d'une autre ligne. Aucune ligne ne sera vide.
Production
Sortie dans le même format que celui utilisé pour l'entrée, ou comme autorisé par les E / S standard.
Cas de 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]