Inspirado por isso.
Dada uma string como entrada que consiste apenas em caracteres do alfabeto maiúsculas e minúsculas, faça um wicka-wub .
Como faço para wicka-wub uma string?
O texto de exemplo usado é "DJMcMayhem".
Divida a string antes de cada letra maiúscula, para obter ["D", "J", "Mc", "Mayhem"].
Em seguida, tome as duas metades da lista como sublistas. Isso nos dá [["D", "J"],["Mc", "Mayhem"]]. Se a lista tiver um comprimento ímpar (ou seja, 3), a primeira sub-lista conterá a substring do meio (ou seja [[a,b], [c]]).
Criar uma lista de wickas e wubs. O número de wickas deve ser igual ao comprimento da primeira parte da lista de entrada (ou seja ["D", "J"] -> ["wicka", "wicka"]), e o número de s wubsdeve ser igual ao comprimento da segunda parte da lista de entrada. No nosso caso, isso dá ["wicka", "wicka", "wub", "wub"].
Agora junte as sublistas da lista de entrada em cadeias simples e achatadas.
Atualmente, temos ["DJ", "McMayhem"]e ["wicka", "wicka", "wub", "wub"].
Junte-se à wicka/ wublista com -s: wicka-wicka-wub-wub. Anexar a -. Se houver mais de uma letra maiúscula na entrada, acrescente outra -.
Agora nós temos ["DJ", "McMayhem"]e "-wicka-wicka-wub-wub-".
Anexe a wicka-wubstring ao final do primeiro item na lista de entrada, para obter ["DJ-wicka-wicka-wub-wub-","McMayhem"].
Por fim, repita os caracteres na segunda parte da sequência pelo valor indexado em 0 na sequência de entrada original. No nosso exemplo, isso significa que o primeiro Mseria repetido duas vezes, depois as ctrês vezes e as próximas Mquatro vezes. Entre na lista, para que a segunda parte (a parte em que você acabou de repetir as letras) seja anexada à primeira parte ( "DJ-wicka-wicka-wub-wub-").
Resultado final da entrada:
"DJ-wicka-wicka-wub-wub-MMcccMMMMaaaaayyyyyyhhhhhhheeeeeeeemmmmmmmmm"
Processo total:
["D", "J", "Mc", "Mayhem"] =>
[["D", "J"], ["Mc", "Mayhem"]] =>
["DJ", "McMayhem"] and ["wicka", "wicka", "wub", "wub"] =>
["DJ", "McMayhem"] and "-wicka-wicka-wub-wub-" =>
["DJ-wicka-wicka-wub-wub-", "McMayhem"] =>
"DJ-wicka-wicka-wub-wub-MMcccMMMMaaaaayyyyyyhhhhhhheeeeeeeemmmmmmmmm"
Sua tarefa
Sua tarefa é, dada uma sequência que consiste apenas em caracteres do alfabeto maiúsculas e minúsculas, produza a versão em wicka-wubbed dessa sequência.
Algumas regras
- A entrada pode consistir inteiramente em letras minúsculas ou inteiramente em letras maiúsculas ou em qualquer número de cada um, mas nenhum outro caractere.
- Se a entrada consistir em letras minúsculas, a saída correta deve ser simplesmente o estágio final (a sequência com os caracteres repetidos de acordo com a posição indexada em 0). Não deve haver
wickaouwubnesse caso. - As regras padrão se aplicam, programas ou funções completos, até você.
- Este é um código de golfe, portanto o código mais curto vence.
GoodLuck-wicka-wicka-wub-GGGGGGGGooooooooollllllllllfffffffffffeeeeeeeeeeerrrrrrrrrrrrrssssssssssssss
Casos de teste
input => output
DJMcMayhem => DJ-wicka-wicka-wub-wub-MMcccMMMMaaaaayyyyyyhhhhhhheeeeeeeemmmmmmmmm
PPCG => PP-wicka-wicka-wub-wub-CCGGG
foobarbaz => fooooobbbbaaaaarrrrrrbbbbbbbaaaaaaaazzzzzzzzz
FooBarBaz => FooBar-wicka-wicka-wub-BBBBBBaaaaaaazzzzzzzz
HelloWorld => Hello-wicka-wub-WWWWWoooooorrrrrrrllllllllddddddddd
Test => Test-wicka
UPPER => UPP-wicka-wicka-wicka-wub-wub-EEERRRR
fooBarBaz => fooBar-wicka-wicka-wub-BBBBBBaaaaaaazzzzzzzz
5letras maiúsculas?
foobarbazSimplesmente deveria retornar foobarbaz? Existe uma segunda parte?