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 wicka
s e wub
s. O número de wicka
s deve ser igual ao comprimento da primeira parte da lista de entrada (ou seja ["D", "J"] -> ["wicka", "wicka"]
), e o número de s wubs
deve 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
/ wub
lista 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-wub
string 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 M
seria repetido duas vezes, depois as c
três vezes e as próximas M
quatro 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
wicka
ouwub
nesse 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
5
letras maiúsculas?foobarbaz
Simplesmente deveria retornarfoobarbaz
? Existe uma segunda parte?Respostas:
Java 8 (782 bytes)
Ungolfed:
fonte
Perl 5 , 142 bytes
Código de 130 bytes + 12 para
-F(?=[A-Z])
.Agora, isso corresponde corretamente a todos os casos de teste fornecidos.
Experimente online!
Nota : O TIO inclui
-l
a execução de todos os testes de uma só vez.fonte
Kotlin 1.1 -
494492 bytesSubmissão
Teste
Corrida
Funciona no KotlinLang, mas não no TryItOnline, pois o 1.1 não é suportado
Percorreu o meu compressor, salvou 2 bytes
fonte
Python 3 ,
234281270248246 bytesExperimente online!
Adicionado 47 bytes, graças ao Sr. Xcoder;)
Economizou 11 bytes graças a Jonathan Frech
Economizou 22 bytes graças a Halvard Hummel
Economizou mais 2 bytes graças ao Sr. Xcoder
fonte
foobar
.