2
シェルグロブゴルフ
このタスクは、グロブ拡張後にファイルへの最短パスを出力することです。 シェルグロビングとは何ですか?ほとんどのシェルで*は、パス内の文字を使用して、その位置にある任意の文字を表すことができます。たとえば、ディレクトリfooにファイルbar bazとが含まれている場合asdf、foo/b*に展開されfoo/bar foo/bazます。 ここで、現在のディレクトリにというファイルだけが含まれているとしましょうihavealongname。このファイルを参照する場合は*、完全な名前を入力するのではなく、と入力します。これは、その1つのファイルのみを表します。 ディレクトリにというファイルも含まれている場合、両方のファイルに一致するialsohavealongnameため*、実行できません。私は少なくともしなければならないでしょうih*。 この*パターンは、探しているファイルの上のディレクトリに一致する場合にも機能します。そこに2つだけのディレクトリがある場合fooとbarが、fooファイルのみが含まれているbazとbar、ファイルが含まれているasdf、私は一致させることができますfoo/bazし*/baz。それとも、もっと簡潔に、*/b*。場合はbar空だった、*/*働くだろう。 あなたのタスク:「現在のディレクトリ」を表すパスの文字列配列と単一のターゲットパスを指定して、* sを展開した後、そのターゲットパスのみに展開される最短の文字列を出力します。 ターゲットパスは、それ自体の文字列として、パスの配列へのインデックスとして、渡されたパスの配列の最初の項目として、またはハードコーディングされていない他の便利な方法として取得できます。わからない場合はコメント欄で尋ねてください。 ターゲットパスは、「現在のディレクトリ」に存在することが保証されています。 すべてのパスに英数字のASCII(および/s)のみが含まれていると想定できます。入力パスとして、ルート(で始まる/)または相対(で始めない)を取ることができます/。 等しく短い可能性が複数ある場合は、それらのいずれかまたはすべてを返します。 これはコードゴルフで、最少バイトが勝ちます! Kevin Cruijssenのおかげで、テストケース。