Drunk Uncle(リージョンロックで申し訳ありませんがMEとAUS)は、Saturday Night Liveの架空のキャラクターです。彼はしばしば彼らのように聞こえる他の人の言葉を混同します。この課題では、通常のスピーチを酔っぱらいに変換する必要があります。
アルゴリズム
drunkspeakに翻訳するには、テキスト内の単語の順序を入れ替える必要があります。スワッピングは、2つの単語の酔いの類似性に基づいています。酔いの類似性は、2つの単語が同じインデックスで発生した文字の数として定義されます。ただし、2つの同一の単語の酔いの類似度は-1です。例えば、tree
そしてfriend
それらはインデックス1、インデックス3で「E」で「R」が両方のために、2の酩酊類似性を有します。
あなたがしなければならないのは、最も酔っている類似性を持つテキストの2つの単語を見つけて、それらを交換することだけです。2つの用語を交換すると、それらは移動しなくなります。次に、残りの入れ替え可能な用語を確認し、酔いの類似性が最も高い2つを入れ替えます。スワップできなくなるまでこれを続けます。次に、更新されたテキストを出力(または関数の場合はリターン)します。
詳細
- 簡単にするために、入力は[A-Za-z]の文字で構成される単語のリストです
- すべての入力に少なくとも1つの単語が含まれています
- :文字のマッチングは大文字と小文字を区別しないである
A
と一致したa
(注:この規則に起因Dog
とdog
同一であり、したがって、のDSを有する-1) - 複数のペアが最も高い酔いの類似性を持っている場合:
- 単語の中で、それは酔いの類似性を最大にすることができます、リストで最も低いインデックスを持つものを選びます
- その単語を、酔いの類似性を最大化する最低インデックスの単語とペアにします
例
Drunk Uncle needs your help
(題名)- S 1:酔って<=>あなた(DS:1)
your Uncle needs Drunk help
- S 2:ヘルプが必要<=>(DS:1)
your Uncle help Drunk needs
- 出力:
your Uncle help Drunk needs
- S 1:酔って<=>あなた(DS:1)
I love fidget spinners
(退屈な例)- S 1:I <=>愛(DS:0)
love I fidget spinners
- S 2:fidget <=>スピナー(DS:0)
love I spinners fidget
- S 1:I <=>愛(DS:0)
dog eat dog ear
- S 1:食べる<=>耳(DS:2)
dog ear dog eat
- S 2:dog <=> dog(DS:-1)
dog ear dog eat
(この手順は形式的です)
- S 1:食べる<=>耳(DS:2)
Let me tell you a story
- S 1:Let <=> me(DS:1)
me Let tell you a story
- S 2:あなたに伝える<=>あなた(DS:0)
me Let you tell a story
- S 3:a <=>ストーリー(DS:0)
me Let you tell story a
- S 1:Let <=> me(DS:1)
Too many money and purple people
- S 1:紫<=>人(DS:4)
Too many money and people purple
- S 2:多く<=>お金(DS:2)
Too money many and people purple
- S 3:あまりにも<=>および(DS:0)
and money many Too people purple
- S 1:紫<=>人(DS:4)
取り上げたい例が他にもある場合はお知らせください。