チャレンジ:
私の音楽コレクションには何千もの曲があり、幸運なことに、私のお気に入りのプレーヤーには検索機能があります。また、素晴らしい思い出があります。コレクションのすべての曲のタイトルを思い出すことができます。しかし、私はとても怠け者で、タイプするのが好きではありません。それぞれの余分なキーストロークは面倒です!
- 1曲を分離するために検索する必要がある最短文字列は何ですか?検索時に入力を最小限に抑えるために使用できるキーのリストを記憶してください。
これはcode-golfなので、最短のコードが優先されます。
ルール:
曲のタイトルの入力リストが与えられたら、次の制約に従って検索キーのリストを生成します。
- 各曲のタイトルには検索キーが必要です。
- 出力リストの文字の総数は、できるだけ少なくする必要があります。
- 私の好きな音楽プレーヤーはfoobar2000です。
- 検索機能では大文字と小文字は区別されません。(
apple
はと同じですaPpLE
)。 - 各検索キーは、スペースで区切られた任意の順序の1つ以上の「単語」で構成する必要があります。
- 各単語は、対応する曲のタイトルのサブストリングである必要があります。
- 同じ部分文字列が複数回指定されている場合、対応する曲のタイトルで何度も発生する必要があります。
- 部分文字列自体にスペースが含まれる場合、その部分文字列を引用符で囲む必要があります。
- 検索機能では大文字と小文字は区別されません。(
ヒント:
- 多くの場合、一部の曲のタイトルには、ルール2を満たす複数の検索キーがあります。このような場合、いずれかのキーが機能しますが、すべてをリストするとブラウニーポイントが得られます。
- 入力リストはASCII文字のみであると想定できますが、ブラウニーポイントはUTF-8互換性のために与えられます。
- ルール3は従うのが難しかったですか?仕組みは次のとおりです。
例:
私の音楽コレクションが、マイケルジャクソンのOff the WallとThrilerの2枚のアルバムだけで構成されている場合:
上記のリストを使用して、プログラムをテストできます。次に、2番目のリストの未加工バージョンを示します。
["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"]
?