Wyzwanie:
W mojej kolekcji muzycznej mam tysiące piosenek i na szczęście mój ulubiony odtwarzacz ma funkcję wyszukiwania. Mam też świetną pamięć - pamiętam tytuł każdej piosenki w mojej kolekcji. Jestem jednak bardzo leniwy i nie lubię pisać na klawiaturze - każde dodatkowe naciśnięcie klawisza jest obowiązkiem!
- Jaki jest najkrótszy ciąg, którego muszę szukać, aby wyodrębnić jedną piosenkę? Pomóż mi zapamiętać listę klawiszy, których mogę użyć, aby zminimalizować pisanie podczas wyszukiwania!
To jest golf golfowy , więc wygrywa najkrótszy kod.
Zasady:
Biorąc pod uwagę listę tytułów utworów, wygeneruj listę kluczy wyszukiwania z zastrzeżeniem następujących ograniczeń:
- Każdy tytuł utworu powinien mieć klawisz wyszukiwania.
- Całkowita liczba znaków na liście wyników musi być jak najmniejsza.
- Mój ulubiony odtwarzacz muzyki to foobar2000 :
- Funkcja wyszukiwania nie rozróżnia wielkości liter. (
apple
jest taki sam jakaPpLE
). - Każdy klucz wyszukiwania musi składać się z jednego lub więcej „słów”, w dowolnej kolejności, oddzielonych spacjami:
- Każde słowo musi być podciągiem odpowiedniego tytułu piosenki.
- Jeśli ten sam podciąg zostanie podany wiele razy, to musi wystąpić wiele razy w odpowiednim tytule utworu.
- Jeśli sam podciąg zawiera spację, to ten podciąg musi być otoczony cudzysłowami.
- Funkcja wyszukiwania nie rozróżnia wielkości liter. (
Poradnik:
- Często w przypadku niektórych tytułów utworów istnieje kilka klawiszy wyszukiwania spełniających zasadę 2. W takim przypadku wystarczy jeden klawisz, ale otrzymasz punkty brownie za ich listę.
- Możesz założyć, że na liście wejściowej będą tylko znaki ASCII, ale punkty brownie zostaną przyznane za zgodność UTF-8.
- Czy przestrzeganie zasady 3 było trudne? Oto jak to działa:
Przykład:
Jeśli moja kolekcja muzyczna składała się tylko z dwóch albumów, Off the Wall i Thriler Michaela Jacksona :
Możesz użyć powyższych list do przetestowania swojego programu. Oto surowa wersja drugiej listy:
["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"]
?