Inspirado por esto.
Dada una cadena como entrada que consta solo de caracteres del alfabeto en mayúsculas y minúsculas, wicka-wub it.
¿Cómo hago wicka-wub una cadena?
El texto de ejemplo utilizado es "DJMcMayhem".
Divide la cadena antes de cada letra mayúscula, para obtener ["D", "J", "Mc", "Mayhem"].
A continuación, tome las dos mitades de la lista como sublistas. Esto nos da [["D", "J"],["Mc", "Mayhem"]]. Si la lista tiene una longitud impar (es decir, 3), la primera sublista contendrá la subcadena central (es decir [[a,b], [c]]).
Crea una lista de wickasy wubs. El número de wickas debe ser tan largo como la longitud de la primera parte de la lista de entrada (es decir ["D", "J"] -> ["wicka", "wicka"]), y el número de s wubsdebe ser tan largo como la longitud de la segunda parte de la lista de entrada. En nuestro caso, esto da ["wicka", "wicka", "wub", "wub"].
Ahora une las sublistas de la lista de entrada en cadenas individuales y aplana.
Actualmente tenemos ["DJ", "McMayhem"]y ["wicka", "wicka", "wub", "wub"].
Unirse a la wicka/ wublista con -s: wicka-wicka-wub-wub. Anteponer a -. Si hay más de una letra mayúscula en la entrada, agregue otra -.
Ahora tenemos ["DJ", "McMayhem"]y "-wicka-wicka-wub-wub-".
Agregue la wicka-wubcadena al final del primer elemento en la lista de entrada, para obtener ["DJ-wicka-wicka-wub-wub-","McMayhem"].
Por último, repita los caracteres en la segunda parte de la cadena por su valor indexado 0 en la cadena de entrada original. En nuestro ejemplo, eso significa que el primero Mse repetiría dos veces, luego las ctres veces y las siguientes Mcuatro veces. Únase a la lista, de modo que la segunda parte (la parte en la que acaba de repetir letras) se agrega a la primera parte ( "DJ-wicka-wicka-wub-wub-").
Resultado final de la entrada:
"DJ-wicka-wicka-wub-wub-MMcccMMMMaaaaayyyyyyhhhhhhheeeeeeeemmmmmmmmm"
Proceso 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"
Tu tarea
Su tarea es, dada una cadena que consta de solo caracteres alfabéticos en mayúscula y minúscula, generar la versión wicka-wubbed de esa cadena.
Algunas reglas
- La entrada puede consistir completamente en letras minúsculas, o letras mayúsculas, o cualquier número de cada una, pero no otros caracteres.
- Si la entrada consta de letras minúsculas enteras, la salida correcta debería ser simplemente la etapa final (la cadena con los caracteres repetidos según su posición indexada en 0). No debería haber
wickaowuben ese caso. - Aplican reglas estándar, programas completos o funciones, depende de usted.
- Este es un código de golf, por lo que gana el código más corto.
GoodLuck-wicka-wicka-wub-GGGGGGGGooooooooollllllllllfffffffffffeeeeeeeeeeerrrrrrrrrrrrrssssssssssssss
Casos de prueba
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 mayúsculas?
foobarbazsimplemente regresar foobarbaz? ¿Hay alguna segunda parte?