No Dyalog APL Extended de @ Adám , o operador (sub) significa conjugação: aplique uma função, depois uma segunda função e o inverso da primeira. É divertido pensar em ações da vida real em termos de conjugação:⍢
Um problema é transformado por g em outro domínio, onde é mais facilmente resolvido por f e, em seguida, transformado novamente no domínio original. Um exemplo da vida real é "sob anestesia":
apply anesthetics perform surgery wake up from anesthetics
Desafio
O inverso de uma linha g
é "un" anexado g
e vice-versa. Defina qualquer linha entre s
e sua inversa, nessa ordem, como "abaixo" s
. Para cada linha f
na entrada, em ordem:
- Se
f
e seu inverso ocorrerem, não faça nada - Se
f
não estiver "sob" nenhuma outra ação, imprimaf
- Se
f
estiver "abaixo" de uma linhag
, imprimaf + " under " + g
onde+
está a concatenação.
Entrada
Uma sequência multilinha não vazia, ou lista de sequências, etc., consistindo em espaços e letras minúsculas (você pode usar maiúsculas). Exatamente uma linha começará com "un"; e será o inverso de alguma outra linha. Nenhuma linha estará vazia.
Resultado
Saída no mesmo formato em que você inseriu ou conforme permitido pela E / S padrão.
Casos de teste:
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]