Due ambasciatori in una conferenza delle Nazioni Unite vogliono parlarsi, ma sfortunatamente ognuno parla solo una lingua e non sono la stessa lingua. Fortunatamente, hanno accesso a numerosi traduttori, ognuno dei quali capisce e parla poche lingue. Il tuo compito è determinare la catena più corta di traduttori (dal momento che vuoi perdere il meno possibile nella traduzione) che consenta ai due ambasciatori di parlare tra loro.
Coding
Input: due lingue come stringhe minuscole di 2 lettere (ogni lingua dell'ambasciatore) e un elenco di elenchi di lingue (un elenco per traduttore disponibile)
In alternativa, puoi inserire numeri interi anziché codici a 2 lettere.
Output: una sequenza di traduttori per indice o valore che rappresenta una delle catene più corte di traduttori che consente ai due ambasciatori di comunicare. Se non esiste una catena valida di traduttori, il comportamento non è definito. (È possibile che si verifichi un arresto anomalo, che generi un valore arbitrario o che indichi un errore)
Una catena di traduttori valida è quella in cui il primo traduttore parla la lingua di un ambasciatore, il secondo e i traduttori successivi condividono almeno una lingua con il traduttore precedente e l'ultimo traduttore parla la lingua dell'altro ambasciatore.
Esempi
Utilizzando l'indicizzazione in base zero:
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]
Regole e presupposti
- Si applicano le regole IO standard (utilizzare qualsiasi formato I / O conveniente) e le scappatoie vietate.
- Si può presumere che parlare e comprendere le lingue sia perfettamente simmetrico e che tutte le possibili traduzioni tra le lingue siano ugualmente efficienti.
- Non esiste un concetto di lingue "abbastanza vicine". Non è abbastanza buono usare il portoghese da un lato dove è richiesto lo spagnolo, per esempio.
- Se ci sono più catene di traduttori più brevi, ognuna di esse lo farà.
- Se gli ambasciatori parlano la stessa lingua, l'elenco dei traduttori dovrebbe essere vuoto
- Quale degli ambasciatori è il primo, non importa; l'elenco dei traduttori può essere in avanti o indietro.
- Gli ambasciatori parlano solo una lingua per il bene di questa sfida
- I traduttori parlano almeno due lingue
- I codici di lingua a 2 lettere non devono corrispondere a lingue reali
- Puoi presumere che esista una sequenza valida di traduttori
- Se si emette la sequenza in base al valore, includere l'intero set di lingue disponibili, non solo quelle pertinenti.
Buon golf!
en,fr,sp;en,gr;gr,fr