Herausforderung:
Ich habe Tausende von Songs in meiner Musiksammlung und zum Glück hat mein Lieblingsspieler eine Suchfunktion. Ich habe auch ein tolles Gedächtnis - ich kann mich an den Titel jedes Songs in meiner Sammlung erinnern. Ich bin jedoch sehr faul und tippe nicht gerne - jeder zusätzliche Tastendruck ist eine lästige Pflicht!
- Was ist die kürzeste Zeichenfolge, nach der ich suchen muss, um ein Lied zu isolieren? Hilf mir, eine Liste mit Schlüsseln zu speichern, mit denen ich das Tippen bei der Suche minimieren kann!
Das ist Code-Golf , also gewinnt der kürzeste Code.
Regeln:
Erstellen Sie anhand einer eingegebenen Liste mit Songtiteln eine Liste mit Suchschlüsseln, die den folgenden Einschränkungen unterliegen:
- Jeder Songtitel sollte einen Suchschlüssel haben.
- Die Gesamtzahl der Zeichen in der Ausgabeliste muss so gering wie möglich sein.
- Mein Lieblings-Musikplayer ist foobar2000 :
- Die Suchfunktion unterscheidet nicht zwischen Groß- und Kleinschreibung. (
apple
ist dasselbe wieaPpLE
). - Jeder Suchbegriff muss aus einem oder mehreren "Wörtern" in beliebiger Reihenfolge bestehen, die durch Leerzeichen getrennt sind:
- Jedes Wort muss eine Teilzeichenfolge des entsprechenden Songtitels sein .
- Wenn derselbe Teilstring mehrmals angegeben wird, muss er im entsprechenden Songtitel so oft vorkommen.
- Wenn eine Teilzeichenfolge selbst ein Leerzeichen enthält, muss diese Teilzeichenfolge in Anführungszeichen gesetzt werden.
- Die Suchfunktion unterscheidet nicht zwischen Groß- und Kleinschreibung. (
Hinweise:
- Oft gibt es für einige Songtitel mehrere Suchschlüssel, die Regel 2 erfüllen. In einem solchen Fall reicht jeder Schlüssel aus, aber Sie erhalten Brownie-Punkte, wenn Sie alle auflisten.
- Sie können davon ausgehen, dass die Eingabeliste nur ASCII-Zeichen enthält, für die UTF-8-Kompatibilität werden jedoch Brownie-Punkte vergeben.
- War es schwierig, Regel 3 zu befolgen? So funktioniert das:
Beispiel:
Wenn meine Musiksammlung nur aus zwei Alben bestand, Michael Jacksons Off the Wall und Thriler :
Sie können die obigen Listen verwenden, um Ihr Programm zu testen. Hier ist die Rohversion der zweiten 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"]
?