Вызов:
У меня есть тысячи песен в моей музыкальной коллекции, и, к счастью для меня, у моего любимого плеера есть функция поиска. У меня также прекрасная память - я помню название каждой песни в моей коллекции. Тем не менее, я очень ленивый и не люблю печатать - каждое дополнительное нажатие - это рутина!
- Какую самую короткую строку я должен искать, чтобы выделить одну песню? Помогите мне запомнить список клавиш, которые я могу использовать, чтобы минимизировать ввод при поиске!
Это код-гольф , поэтому выигрывает самый короткий код.
Правила:
С учетом входного списка названий песен сгенерируйте список ключей поиска с учетом следующих ограничений:
- Каждое название песни должно иметь поисковый ключ.
- Общее количество символов в списке вывода должно быть как можно меньше.
- Мой любимый музыкальный проигрыватель - foobar2000 :
- Функция поиска не чувствительна к регистру. (так
apple
же, какaPpLE
). - Каждый ключ поиска должен состоять из одного или нескольких «слов» в любом порядке, разделенных пробелами:
- Каждое слово должно быть подстрокой соответствующего названия песни.
- Если одна и та же подстрока указана несколько раз, то это должно происходить столько раз в соответствующем названии песни.
- Если подстрока сама содержит пробел, то эта подстрока должна быть заключена в кавычки.
- Функция поиска не чувствительна к регистру. (так
подсказки:
- Зачастую для некоторых названий песен существует несколько ключей поиска, соответствующих правилу 2. В таком случае подойдет любой один ключ, но вы получаете баллы за перечисление их всех.
- Вы можете предположить, что в списке ввода будут только символы ASCII, но за совместимость с UTF-8 будут начислены баллы.
- Было ли трудно следовать правилу 3? Вот как это работает:
Пример:
Если бы моя музыкальная коллекция состояла только из двух альбомов, Майкла Джексона Off the Wall и Thriler :
Вы можете использовать списки выше для проверки вашей программы. Вот сырая версия второго списка:
["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"]
?