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!
quelle
en,fr,sp;en,gr;gr,fr
Antworten:
Python 2 ,
138126120117113 BytesProbieren Sie es online!
3 Bytes danke an ArBo
Gibt eine minimale Länge Liste der Übersetzer als
set
s von Sprachen, dh ‚nach Wert‘ ausT
, mit denena
zu redenb
.quelle
if t not in U and a in t
kann geändert werdenif(a in t)>U.count(t)
, um 4 Bytes zu sparen.*args
NotationJelly ,
1917 BytesProbieren Sie es online!
Ein dyadischer Link, der die Liste der Übersetzer als linkes Argument und die Liste der Botschafter (jeweils doppelt in eine Liste eingeschlossen) als rechtes Argument verwendet. Gibt eine Liste von Übersetzern zurück, von denen jeder eine Liste der Sprachen ist, die sie sprechen.
Vielen Dank an @KevinCruijssen für das Speichern von 2 Bytes!
Erläuterung
quelle
LÞ
, da das Powerset + Permurationen bereits zu einer Liste führt, die nach Länge sortiert ist.05AB1E ,
1817 BytesInspiriert von der Antwort von @NickKennedy 's Jelly , solltest du ihn also unbedingt unterstützen!
Gibt die Listen selbst anstelle ihrer Indizes aus.
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
JavaScript (ES6),
123121 ByteErwartet ganze Zahlen anstelle von 2-Buchstaben-Codes.
Probieren Sie es online!
quelle