国連会議の2人の大使はお互いに話したいと思っていますが、残念なことにそれぞれが1つの言語しか話せません。彼らは同じ言語ではありません。幸いなことに、彼らはそれぞれが少数の言語を理解し話す複数の翻訳者にアクセスできます。あなたの仕事は、2人の大使が互いに話すことを可能にする翻訳者の最短チェーンを決定することです(できるだけ翻訳で失われないようにするため)。
コーディング
入力: 2文字の小文字の文字列としての2つの言語(各大使の言語)と言語のリストのリスト(利用可能な翻訳者ごとに1つのリスト)
または、2文字のコードの代わりに整数を使用することもできます。
出力: 2人の大使が通信できる最短の翻訳者チェーンのいずれかであるインデックスまたは値による翻訳者のシーケンス。有効な翻訳者のチェーンがない場合、動作は未定義です。(クラッシュしたり、任意の値を出力したり、エラーを示したりする場合があります)
有効な翻訳者チェーンとは、最初の翻訳者が1人の大使の言語を話し、2番目以降の翻訳者が少なくとも1つの言語を前の翻訳者と共有し、最後の翻訳者がもう1人の大使の言語を話すものです。
例
ゼロベースのインデックス作成の使用:
es, en, [
[es, en]
] ==> [0]
en, en, [] ==> []
en, jp, [
[en, zh, ko, de],
[jp, ko]
] ==> [0, 1]
es, ru, [
[gu, en, py],
[po, py, ru],
[po, es]
] ==> [2, 1]
fr, gu, [
[it, fr, de, es, po, jp],
[en, ru, zh, ko],
[jp, th, en],
[th, gu]
] ==> [0, 2, 3]
fr, ru, [
[fr, en],
[en, ko, jp],
[en, ru]
] ==> [0, 2]
de, jp, [
[en, fr],
[ko, jp, zh],
[fr, po],
[es, ko, zh],
[de, en, th],
[en, es],
[de, fr]
] ==> [4, 5, 3, 1]
ルールと仮定
- 標準のIOルール(便利なI / O形式を使用)および禁止された抜け穴が適用されます。
- 言語を話すことと理解することは完全に対称的であり、言語間で可能なすべての翻訳は同等に効率的であると仮定することができます。
- 「十分に近い」言語という概念はありません。たとえば、スペイン語が必要な一端でポルトガル語を使用するのは十分ではありません。
- 最短の翻訳者チェーンが複数ある場合は、どれでもかまいません。
- アンバサダーが偶然同じ言語を話す場合、翻訳者リストは空でなければなりません
- 最初のアンバサダーはどれでもかまいません。翻訳者リストは順方向または逆方向になります。
- 大使はこの課題のために1つの言語しか話せません
- 翻訳者は少なくとも2つの言語を話す
- 2文字の言語コードは、実際の言語に対応する必要はありません
- あなたは翻訳者の有効なシーケンスがあると仮定するかもしれません
- 値でシーケンスを出力する場合は、関連する言語だけでなく、使用可能な言語の完全なセットを含めます。
ハッピーゴルフ!
en,fr,sp;en,gr;gr,fr