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 regresarfoobarbaz? ¿Hay alguna segunda parte?Respuestas:
Java 8 (782 bytes)
Sin golf:
fuente
Perl 5 , 142 bytes
Código de 130 bytes + 12 para
-F(?=[A-Z]).Esto ahora coincide correctamente con todos los casos de prueba proporcionados.
Pruébalo en línea!
Nota : TIO incluye
-lejecutar todas las pruebas a la vez.fuente
Kotlin 1.1 -
494492 bytesSumisión
Prueba
Corriendo
Funciona en KotlinLang, pero no en TryItOnline ya que 1.1 no es compatible
Corrí a través de mi compresor, guardé 2 bytes
fuente
Python 3 ,
234281270248246 bytesPruébalo en línea!
Se agregaron 47 bytes, gracias al Sr. Xcoder;)
Guardado 11 bytes gracias a Jonathan Frech
Guardado 22 bytes gracias a Halvard Hummel
Ahorré 2 bytes más gracias al Sr. Xcoder
fuente
foobar.