Zwei Botschafter auf einer UN-Konferenz wollen miteinander sprechen, aber leider spricht jeder nur eine Sprache - und sie sprechen nicht dieselbe Sprache. Glücklicherweise haben sie Zugang zu mehreren Übersetzern, die jeweils einige Sprachen verstehen und sprechen. Ihre Aufgabe ist es, die kürzeste Kette von Übersetzern zu bestimmen (da Sie möchten, dass bei der Übersetzung so wenig wie möglich verloren geht), damit die beiden Botschafter miteinander sprechen können.
Codierung
Eingabe: zwei Sprachen als 2-Buchstaben-Kleinbuchstaben (Sprache jedes Botschafters) und eine Liste mit Sprachenlisten (eine Liste pro verfügbarem Übersetzer)
Sie können alternativ ganze Zahlen anstelle von 2-Buchstaben-Codes eingeben.
Ausgabe: Eine Folge von Übersetzern nach Index oder Wert, die eine der kürzesten Ketten von Übersetzern darstellt, mit denen die beiden Botschafter kommunizieren können. Wenn es keine gültige Übersetzerkette gibt, ist das Verhalten undefiniert. (Sie können abstürzen, einen beliebigen Wert ausgeben oder einen Fehler anzeigen.)
Eine gültige Übersetzerkette ist eine, bei der der erste Übersetzer die Sprache eines Botschafters spricht, der zweite und nachfolgende Übersetzer mindestens eine Sprache mit dem vorherigen Übersetzer teilen und der letzte Übersetzer die Sprache des anderen Botschafters spricht.
Beispiele
Nullbasierte Indizierung verwenden:
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]
Regeln und Annahmen
- Es gelten Standard-E / A-Regeln (verwenden Sie ein beliebiges praktisches E / A-Format) und verbotene Regelungslücken.
- Sie können davon ausgehen, dass das Sprechen und Verstehen von Sprachen perfekt symmetrisch ist und dass alle möglichen Übersetzungen zwischen Sprachen gleich effizient sind.
- Es gibt kein Konzept für "nahe genug" Sprachen. Es ist nicht gut genug, Portugiesisch an einem Ende zu verwenden, wenn beispielsweise Spanisch erforderlich ist.
- Wenn es mehrere kürzeste Übersetzerketten gibt, kann eine von ihnen verwendet werden.
- Wenn die Botschafter dieselbe Sprache sprechen, sollte die Übersetzerliste leer sein
- Welcher der Botschafter der erste ist, spielt keine Rolle; Die Übersetzerliste kann vorwärts oder rückwärts sein.
- Botschafter sprechen für diese Herausforderung nur eine Sprache
- Übersetzer sprechen mindestens zwei Sprachen
- Die 2-Buchstaben-Sprachcodes müssen nicht mit echten Sprachen übereinstimmen
- Sie können davon ausgehen, dass es eine gültige Folge von Übersetzern gibt
- Wenn Sie die Sequenz nach Wert ausgeben, müssen Sie den vollständigen Satz der verfügbaren Sprachen einbeziehen, nicht nur die relevanten.
Viel Spaß beim Golfen!
en,fr,sp;en,gr;gr,fr