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 Zs, depois um ou mais Is, As ou Os (a mesma letra) e, em seguida, um ou mais Ps (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 Zs e Ps, bem como o sufixo exatamente como recebido, mas depois alterar Is para As, As para Os ou Os para Is, 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!
ze as primeiras p. O sufixo pode conter qualquer coisa.