この課題には、RubyのAbbrevモジュールをできるだけ少ないコードで実装する必要があります。
チャレンジ
入力は、文字列の配列(配列、リスト、シーケンスなど)として言語が持つものです。関数を記述することも、STDINでコンマ区切りの単語を受け入れることもできます。
次に、これらの文字列の明確なプレフィックスのセットを計算する必要があります。これは、略語のハッシュ(またはマップ、オブジェクトなど)を元の文字列に返す必要があることを意味します。
「プレフィックス」は、文字列の先頭から始まる元の文字列の部分文字列です。たとえば、「pref」は「prefix」という単語のプレフィックスです。
明確なプレフィックスは1ワードのみを意味することができるものです。あなたの入力がある場合たとえば、
car,cat、その後、caそれは「車」またはいずれかを意味する可能性があるため、明確な接頭辞ではありません「猫。」この規則の例外は、単語は常にそれ自身の接頭辞であるということです。たとえば、次のような入力を持っている場合は
car,carpet、car:carあなたの出力でなければなりません。
その後、hash / map / object / etcを返すことができます。あなたの関数から(またはあなたの言語で同等のことをする)、または
key:valueの形式でペアでSTDOUTに出力しますf:foo,fo:foo,...。(キーと値のペアは、コードを短くする場合、空白文字で区切られることもあります。)
テストケース
Input code,golf,going
Output c:code,co:code,cod:code,code:code,gol:golf,golf:golf,goi:going,goin:going,going:going
Input pie
Output p:pie,pi:pie,pie:pie
Input pie,pier,pierre
Output pie:pie,pier:pier,pierr:pierre,pierre:pierre
Input a,dog
Output a:a,d:dog,do:dog,dog:dog
ルール
入力には重複した要素は含まれません。
出力の順序は任意です。ソートする必要はありません。
AbbrevRubyのような組み込みのモジュール/関数/ものを使用することはできません。これはcode-golfなので、バイト単位の最短コードが勝ちます!
key:value\nkey:value\nkey:value…?