Défi:
J'ai des milliers de chansons dans ma collection de musique, et heureusement pour moi, mon lecteur préféré a une fonction de recherche. J'ai également une excellente mémoire - je me souviens du titre de chaque chanson de ma collection. Cependant, je suis très paresseux et je n'aime pas taper - chaque frappe supplémentaire est une corvée!
- Quelle est la chaîne la plus courte que je dois rechercher pour isoler une chanson? Aidez-moi à mémoriser une liste de touches que je peux utiliser pour minimiser la saisie lors de la recherche!
C'est le code-golf , donc le code le plus court l'emporte.
Règles:
Étant donné une liste d'entrée de titres de chansons, générez une liste de clés de recherche soumises aux contraintes suivantes:
- Chaque titre de chanson doit avoir une clé de recherche.
- Le nombre total de caractères dans la liste de sortie doit être le plus petit possible.
- Mon lecteur de musique préféré est foobar2000 :
- La fonction de recherche n'est pas sensible à la casse. (
apple
est le même queaPpLE
). - Chaque clé de recherche doit être constituée d'un ou plusieurs "mots", dans n'importe quel ordre, séparés par des espaces:
- Chaque mot doit être une sous - chaîne du titre de chanson correspondant.
- Si la même sous-chaîne est spécifiée plusieurs fois, il doit se produire autant de fois dans son titre de chanson correspondant.
- Si une sous-chaîne elle-même contient un espace, cette sous-chaîne doit être entourée de guillemets.
- La fonction de recherche n'est pas sensible à la casse. (
Conseils:
- Souvent, pour certains titres de chansons, il existe plusieurs clés de recherche répondant à la règle 2. Dans ce cas, n'importe quelle clé fera l'affaire, mais vous obtenez des points brownie pour toutes les répertorier.
- Vous pouvez supposer que la liste de saisie ne comportera que des caractères ASCII, mais des points brownie seront attribués pour la compatibilité UTF-8.
- La règle 3 était-elle difficile à suivre? Voici comment ça fonctionne:
Exemple:
Si ma collection de musique ne comprenait que deux albums, Michael Jackson's Off the Wall et Thriler :
Vous pouvez utiliser les listes ci-dessus pour tester votre programme. Voici la version brute de la deuxième liste:
["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"]
?