Há um pequeno jogo de aquecimento improvisado em que você se organiza em círculo e envia zips, zaps e zops por aí, apontando para uma pessoa e dizendo a próxima palavra na sequência; eles fazem o mesmo até que todos estejam aquecidos ou tanto faz.
Sua tarefa é criar um programa que dê a próxima palavra em sequência, dada uma palavra de entrada. (Zip -> Zap -> Zop -> Zip) Como existem várias maneiras diferentes de dizer essas três palavras e emoções que podem ser adicionadas a elas, seu programa deve imitar a duplicação de maiúsculas e minúsculas e carregar sufixos.
Para elaborar, sua entrada será um ou mais Z
s, depois um ou mais I
s, A
s ou O
s (a mesma letra) e, em seguida, um ou mais P
s (todas as letras até este ponto podem estar em maiúsculas e minúsculas) seguidas por algum sufixo arbitrário (que pode estar vazio). Você deve deixar as execuções de Z
s e P
s, bem como o sufixo exatamente como recebido, mas depois alterar I
s para A
s, A
s para O
s ou O
s para I
s, preservando o caso a cada etapa.
Casos de teste de exemplo
zip ==> zap
zAp ==> zOp
ZOP ==> ZIP
ZiiP ==> ZaaP
ZZaapp ==> ZZoopp
zzzzOoOPppP ==> zzzzIiIPppP
Zipperoni ==> Zapperoni
ZAPsky ==> ZOPsky
ZoPtOn ==> ZiPtOn
zipzip ==> zapzip
zapzopzip ==> zopzopzip
zoopzaap ==> ziipzaap
Regras e Notas
- Você pode usar qualquer codificação de caracteres conveniente para entrada e saída, desde que ela suporte todas as letras ASCII e tenha sido criada antes deste desafio.
- Você pode assumir que a palavra de entrada é alguma variante de Zip, Zap ou Zop. Todas as outras entradas resultam em comportamento indefinido.
- Entradas válidas corresponderão totalmente à regex
Z+(I+|A+|O+)P+.*
(em caso misto)
- Entradas válidas corresponderão totalmente à regex
Golfe feliz!
z
e as primeiras p
. O sufixo pode conter qualquer coisa.