Sfida:
Ho migliaia di canzoni nella mia collezione musicale e fortunatamente per me il mio lettore preferito ha una funzione di ricerca. Ho anche un grande ricordo: ricordo il titolo di ogni canzone della mia collezione. Tuttavia, sono molto pigro e non mi piace digitare: ogni sequenza di tasti in più è un lavoro ingrato!
- Qual è la stringa più corta che devo cercare per isolare una canzone? Aiutami a memorizzare un elenco di tasti che posso usare per ridurre al minimo la digitazione durante la ricerca!
Questo è code-golf , quindi vince il codice più corto.
Regole:
Dato un elenco di input di titoli di brani, genera un elenco di tasti di ricerca soggetti ai seguenti vincoli:
- Ogni titolo del brano deve avere una chiave di ricerca.
- Il numero totale di caratteri nell'elenco di output deve essere il meno possibile.
- Il mio lettore musicale preferito è foobar2000 :
- La funzione di ricerca non fa distinzione tra maiuscole e minuscole. (
apple
è uguale aaPpLE
). - Ogni chiave di ricerca deve essere composta da una o più "parole", in qualsiasi ordine, separate da spazi:
- Ogni parola deve essere una sottostringa del titolo del brano corrispondente.
- Se la stessa sottostringa viene specificata più volte, è necessario che ciò avvenga più volte nel titolo del brano corrispondente.
- Se una sottostringa stessa contiene uno spazio, tale sottostringa deve essere racchiusa tra virgolette.
- La funzione di ricerca non fa distinzione tra maiuscole e minuscole. (
suggerimenti:
- Spesso, per alcuni titoli di brani, ci sono più chiavi di ricerca che soddisfano la regola 2. In tal caso, ogni tasto lo farà, ma otterrai punti brownie per elencarli tutti.
- Si può presumere che l'elenco di input includerà solo caratteri ASCII, ma i punti brownie verranno assegnati per la compatibilità UTF-8.
- La Regola 3 è stata difficile da seguire? Ecco come funziona:
Esempio:
Se la mia collezione musicale consisteva solo di due album, Off the Wall e Thriler di Michael Jackson :
È possibile utilizzare gli elenchi sopra per testare il programma. Ecco la versione non elaborata del secondo elenco:
["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"]
?