En Dyalog APL Extended de @ Adám , el operador (debajo) significa conjugación: aplique una función, luego una segunda función, luego la inversa de la primera. Es divertido pensar en acciones de la vida real en términos de conjugación:⍢
Un problema es transformado por g en otro dominio donde f resuelto más fácilmente por f, y luego transformado nuevamente en el dominio original. Un ejemplo de la vida real es "bajo anestesia":
apply anesthetics perform surgery wake up from anesthetics
Desafío
El inverso de una línea g
es "un" antepuesto g
y viceversa. Defina cualquier línea entre s
y su inverso, en ese orden, como "debajo" s
. Para cada línea f
de entrada en orden:
- Si
f
y su inverso ocurren, no haga nada - Si
f
no está "bajo" ninguna otra acción, imprimaf
- Si
f
está "debajo" de una líneag
, imprimaf + " under " + g
dónde+
está la concatenación.
Entrada
Una cadena de varias líneas no vacía, o una lista de cadenas, etc., que consta de espacios y letras minúsculas (en su lugar, puede usar mayúsculas). Exactamente una línea comenzará con "un"; y será el inverso de alguna otra línea. Ninguna línea estará vacía.
Salida
Salida en el mismo formato en el que ingresó, o según lo permitido por E / S estándar.
Casos de prueba:
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]