Usted está proporcionando soporte técnico a la Bruce Dickenson ya que produce una sesión de grabación Blue Öyster Cult. Cuando pide más cencerro , puedes dárselo.
Tu tarea
Escriba un programa o función que tome una cadena (o equivalente en su idioma) como entrada y genere una cadena relacionada que contenga un cencerro más.
¿Cuántos cencerros contiene una cuerda?
El número de cencerros que contiene una cadena es igual al número máximo de copias distintas de "cencerro" que se pueden obtener al permutar los caracteres de la cadena. Por ejemplo, "bbbccceeellllllooowwwwwwwww"
consta de 3 cowbells, mientras que "bbccceeellllllooowwwwwwwww"
y "bbbccceeelllllooowwwwwwwww"
contienen cada uno 2 cencerros, y "cowbel"
contiene 0 cowbells.
¿Cómo debe relacionarse la salida con la entrada?
La salida debe consistir en la concatenación, en este orden, de la cadena de entrada y el prefijo más corto de la cadena de entrada necesaria para aumentar el número de cencerros.
Por ejemplo, "bbbccceeelllllooowwwwwwwww"
solo necesita uno adicional "l"
para contener 3 cencerros en lugar de 2; el prefijo más corto que contiene ese "l"
es "bbbccceeel"
. Por lo tanto, si la entrada es "bbbccceeelllllooowwwwwwwww"
, entonces la salida debería ser "bbbccceeelllllooowwwwwwwwwbbbccceeel"
.
Tecnicismos
- Puede suponer que la entrada contiene solo caracteres ASCII imprimibles. Si hay uno o dos caracteres que son molestos para el procesamiento de cadenas de su idioma (como líneas nuevas o
\
), puede suponer que la entrada no los contiene, solo mencione esta restricción. - Además, puede suponer que los caracteres alfabéticos en la entrada están en minúsculas o en mayúsculas. Si elige no asumir uno de estos, cuente los cencerros sin distinción entre mayúsculas y minúsculas.
- Se puede suponer, además, que la entrada contiene al menos una copia de cada uno de los personajes
b
,c
,e
,l
,o
, yw
. Esto es equivalente a suponer que se puede concatenar algún prefijo de la cadena para producir una cadena que contenga más cencerro. (Tenga en cuenta que la cadena de entrada en sí no necesita contener un cencerro). - Si su idioma tiene una solución integrada que resuelve este problema ... entonces úsela totalmente, en serio, cuán increíble es eso.
Pañales bañados en oro
Como el tiempo de grabación en el estudio es costoso, su código debe ser lo más breve posible. ¡La entrada con la menor cantidad de bytes es la ganadora!
Casos de prueba
( enlace de pastebin para copiar / pegar más fácilmente)
Entrada de prueba n. ° 1: "christopher walken begs for more cowbell!"
Salida de prueba n. ° 1: "christopher walken begs for more cowbell!christopher wal"
Entrada de prueba # 2: "the quick brown fox jumps over the lazy dog"
Prueba de salida # 2: "the quick brown fox jumps over the lazy dogthe quick brown fox jumps over the l"
Entrada de prueba # 3: "cowbell"
Prueba de salida # 3: "cowbellcowbell"
Entrada de prueba # 4: "cowbell cowbell cowbell"
Prueba de salida # 4: "cowbell cowbell cowbellcowbell"
Entrada de prueba # 5: "cowbell cowbell cowbel"
Prueba de salida # 5: "cowbell cowbell cowbelcowbel"
Entrada de prueba # 6: "bcelow"
Prueba de salida # 6: "bcelowbcel"
Entrada de prueba # 7: "abcdefghijklmnopqrstuvwxyz"
Prueba de salida # 7: "abcdefghijklmnopqrstuvwxyzabcdefghijkl"
Entrada de prueba # 8: "cccowwwwbbeeeeelllll"
Prueba de salida # 8: "cccowwwwbbeeeeelllllccco"
Entrada de prueba # 9: "be well, programming puzzles & code golf"
Prueba de salida # 9: "be well, programming puzzles & code golfbe well, programming puzzles & c"
Entrada de prueba # 10: "lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. wow!"
Prueba de salida # 10: "lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. wow!lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lab"
Entrada de prueba # 11:
"c-c-b-c
i have a cow, i have a bell.
uh! bell-cow!
i have a cow, i have a cowbell.
uh! cowbell-cow!
bell-cow, cowbell-cow.
uh! cow-cowbell-bell-cow.
cow-cowbell-bell-cow!
"
Prueba de salida # 11:
"c-c-b-c
i have a cow, i have a bell.
uh! bell-cow!
i have a cow, i have a cowbell.
uh! cowbell-cow!
bell-cow, cowbell-cow.
uh! cow-cowbell-bell-cow.
cow-cowbell-bell-cow!
c-c-b-c
i have a cow, i have a bell"
test case -> result
en un gran bloque de código preformateado. Es mucho más agradable estéticamente y más fácil copiar y pegar.
L
s en la palabra, esto no es lo que pide el desafío.