Desafío:
Tengo miles de canciones en mi colección de música y, por suerte, mi reproductor favorito tiene una función de búsqueda. También tengo un gran recuerdo: puedo recordar el título de cada canción de mi colección. Sin embargo, soy muy vago y no me gusta escribir, ¡cada pulsación de tecla adicional es una tarea!
- ¿Cuál es la cadena más corta que debo buscar para aislar una canción? ¡Ayúdame a memorizar una lista de teclas que puedo usar para minimizar la escritura al buscar!
Este es el código de golf , por lo que gana el código más corto.
Reglas:
Dada una lista de entrada de títulos de canciones, genere una lista de claves de búsqueda sujetas a las siguientes restricciones:
- El título de cada canción debe tener una clave de búsqueda.
- El número total de caracteres en la lista de salida debe ser el menor posible.
- Mi reproductor de música favorito es foobar2000 :
- La función de búsqueda no distingue entre mayúsculas y minúsculas. (
apple
es lo mismo queaPpLE
) - Cada clave de búsqueda debe constar de una o más "palabras", en cualquier orden, separadas por espacios:
- Cada palabra debe ser una subcadena del título de la canción correspondiente.
- Si la misma subcadena se especifica varias veces, entonces debe ocurrir tantas veces en el título de la canción correspondiente.
- Si una subcadena en sí contiene un espacio, entonces esa subcadena debe estar entre comillas.
- La función de búsqueda no distingue entre mayúsculas y minúsculas. (
Consejos:
- A menudo, para algunos títulos de canciones, hay varias claves de búsqueda que cumplen con la regla 2. En tal caso, cualquier clave servirá, pero obtienes puntos de brownie por enumerarlas todas.
- Puede suponer que la lista de entrada solo tendrá caracteres ASCII, pero se otorgarán puntos brownie por compatibilidad con UTF-8.
- ¿Fue difícil seguir la Regla 3? Así es como funciona:
Ejemplo:
Si mi colección de música consistiera solo en dos álbumes, Off the Wall y Thriler de Michael Jackson :
Puede usar las listas anteriores para probar su programa. Aquí está la versión en bruto de la segunda lista:
["Don't Stop 'Til You Get Enough","Rock with You","Working Day and Night","Get on the Floor","Off the Wall","Girlfriend","She's out of My Life","I Can't Help It","It's the Falling in Love","Burn This Disco Out","Wanna Be Startin' Somethin'","Baby Be Mine","The Girl Is Mine","Thriller","Beat It","Billie Jean","Human Nature","P.Y.T. (Pretty Young Thing)"]
["Wanta Be A Wanna B","Wanta Bea A Wanna B","Wanna Be A Wanna Bea"]
?