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 g
est "non" précédé de g
, et vice versa. Définissez une ligne entre s
et son inverse, dans cet ordre, comme étant "sous" s
. Pour chaque ligne f
en entrée dans l'ordre:
- Si
f
et son inverse se produisent, ne faites rien - Si
f
n'est "sous" aucune autre action, imprimezf
- Si
f
est "sous" une ligneg
, imprimezf + " under " + g
où 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]