Desafio:
Eu tenho milhares de músicas na minha coleção de músicas e, felizmente, meu player favorito tem uma função de pesquisa. Eu também tenho uma ótima memória - lembro o título de todas as músicas da minha coleção. No entanto, sou muito preguiçoso e não gosto de digitar - cada pressionamento de tecla extra é uma tarefa árdua!
- Qual é a string mais curta que devo procurar para isolar uma música? Ajude-me a memorizar uma lista de teclas que posso usar para minimizar a digitação ao pesquisar!
Isso é código-golfe , então o código mais curto vence.
Regras:
Dada uma lista de entrada de títulos de músicas, gere uma lista de chaves de pesquisa sujeitas às seguintes restrições:
- Cada título da música deve ter uma tecla de pesquisa.
- O número total de caracteres na lista de saída deve ser o menor possível.
- Meu music player favorito é foobar2000 :
- A função de pesquisa não diferencia maiúsculas de minúsculas. (
apple
é o mesmo queaPpLE
). - Cada chave de pesquisa deve consistir em uma ou mais "palavras", em qualquer ordem, separadas por espaços:
- Cada palavra deve ser uma substring do título da música correspondente.
- Se a mesma substring for especificada várias vezes, deverá ocorrer várias vezes no título da música correspondente.
- Se uma subcadeia em si contiver um espaço, ela deverá estar entre aspas.
- A função de pesquisa não diferencia maiúsculas de minúsculas. (
Dicas:
- Geralmente, para alguns títulos de músicas, há várias chaves de pesquisa que cumprem a regra 2. Nesse caso, qualquer tecla serve, mas você obtém pontos brownie por listar todas elas.
- Você pode supor que a lista de entrada terá apenas caracteres ASCII, mas os pontos brownie serão concedidos pela compatibilidade UTF-8.
- A Regra 3 foi difícil de seguir? Veja como funciona:
Exemplo:
Se minha coleção de músicas consistisse em apenas dois álbuns, Off the Wall and Thriler , de Michael Jackson :
Você pode usar as listas acima para testar seu programa. Aqui está a versão bruta da 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"]
?