introduzione
Un popolare puzzle di parole è quello di convertire una parola in un'altra tramite una serie di passaggi che sostituiscono solo una lettera e che risultano sempre in una parola valida. Ad esempio, BAG può essere convertito in DOG tramite un percorso di cinque passaggi:
BORSA -> BAT -> CAT -> COT -> COG -> CANE
In questo caso esistono anche percorsi più brevi; per esempio:
BORSA -> BOG -> CANE
Se uno disegnasse un grafico i cui vertici erano etichettati da parole, con un bordo tra una coppia di parole che differiscono di una lettera, allora il percorso più breve da "BORSA" a "CANE" sarebbe costituito da due bordi.
Sfida
Devi scrivere un programma che riceve come input un "dizionario" di parole che hanno tutte la stessa lunghezza, che rappresentano tutte le parole consentite che possono apparire come passi lungo un percorso. Dovrebbe generare almeno un "percorso più lungo più breve", ovvero un percorso tra due delle parole che è:
non più di qualsiasi altro percorso tra quelle due parole;
almeno fino a quando il percorso più breve possibile tra qualsiasi altra coppia di parole nell'elenco.
Nel contesto del grafico sopra descritto, la lunghezza di tale percorso è il diametro del grafico.
Nel caso degenerato in cui nessuna delle parole di input può essere trasformata in nessuna delle altre, emettere almeno un percorso di lunghezza zero, cioè una singola parola.
Esempi
L'input ["bag", "bat", "cat", "cot", "dot", "dog"] dovrebbe generare un percorso che attraversa tutte e sei le parole in quell'ordine (o ordine inverso), poiché il percorso più breve da " borsa "a" cane "all'interno di questo dizionario è il più lungo possibile, cinque passaggi.
L'input ["bag", "bat", "bot", "cat", "cot", "dot", "dog"] dovrebbe fornire il percorso "bag, bat, bot, dot, dog" e / o il suo inversione.
L'ingresso ["codice", "golf", "maschio", "ronzio", "talpa", "ruolo", "muffa", "freddo", "oro", "modalità"] dovrebbe generare un percorso tra "codice e "golf".
L'ingresso ["uno", "due", "sei", "dieci"] corrisponde a un grafico senza spigoli, quindi emette uno o più percorsi a parola singola (lunghezza zero).
Se l'input contiene due parole di lunghezza diversa, l'output non è definito.
Regole
- Si applicano le regole standard per il golf
- Ci saranno più percorsi "più brevi". Devi produrne almeno uno, ma sei libero di produrne quanti ne desideri.
- Sei libero di decidere come passare il dizionario di input nel tuo programma.
- Vince il codice più breve in byte.
[]o [[]])?