O trocador de palavras é um jogo em que você está tentando transformar uma palavra em outra através de edições de um único caractere, sendo cada etapa sua própria palavra. Para esse desafio, as edições podem ser substituições, inserções ou exclusões. Por exemplo, WINNER → LOSER pode ser feito com esta rota (pode haver outras):
WINNER
DINNER
DINER
DINE
LINE
LONE
LOSE
LOSER
Em outro sentido, você deve conseguir alcançar uma palavra da outra, passando apenas por outras palavras a uma distância de Levenshtein de 1 a cada vez.
Codificação
Você receberá uma lista de palavras e duas palavras e deverá gerar uma rota válida de uma palavra para outra se existir uma rota ou um valor constante distinto ou um comportamento consistente se não houver uma rota.
- Você pode assumir que as palavras de entrada estão na lista de palavras
- A lista de palavras pode ser obtida através de qualquer formato plano conveniente.
- Listas, conjuntos, tentativas, seqüências separadas por espaço e arquivos separados por linha são todos válidos (por exemplo), mas um gráfico pré-calculado da adjacência de Levenshtein não é.
- A rota de saída deve incluir as duas palavras de entrada, mas que começa e termina não importa.
- Se nenhuma rota for encontrada, você poderá gerar uma constante específica, um valor falso, uma lista vazia, lançar uma exceção, sair com um código diferente de zero ou qualquer outro comportamento que ocorra em tempo finito.
- A rota não precisa ser ótima e não há exigência de qual rota deve ser seguida.
- A complexidade computacional não importa, no entanto, seu programa deve ter a garantia de término em um período finito de tempo. (mesmo que fosse além da morte por calor do universo)
- Você pode assumir que todas as palavras são compostas inteiramente de letras no mesmo caso
Casos de teste de exemplo
- CAT → CÃO; [CAT, CÃO, COG, COT, SAPO, GRÃO, BOG]
- GATO, COT, COG, CÃO
- BANHO → CHUVEIRO; [BANHO, CHUVEIRO, CHAPÉU, CHAPÉU, BAT, SAT, SERRA, SOW, MOSTRA, COMO]
- Nenhuma rota encontrada
- BREAK → CORRIGIR; .
- QUEBRA, PÃO, CARGA, RUIM, FAD, FAX, CORRIGIR
- CONSTRUIR → DESTRUIR; [CONSTRUIR, DESTRUIR, CONSTRUIR, CULPAR, CULPA, GILD, GILL, BILL, DILL, PILL, Preencher, DESTRUIR, ESTRUTURA, CONSTRUIR]
- Nenhuma rota encontrada
- CARTÃO → PLACA; [CARTÃO, PLACA, BARRA]
- CARTÃO, BARBA, PLACA
- DEMÔNIO → ANJO; [Demônio, anjo]
- Nenhuma rota encontrada
- ÚLTIMO → PASSADO; [ÚLTIMO, PASSADO, EXPLOSÃO, MOLDE, PRETO, FANTASMA, PÓS, BOAST]
- ÚLTIMO, PASSADO
- INSERIR → EXCLUIR; Esta lista de palavras
- INSERIR, INVERSAR, INVENTAR, INVENTAR, INVENTAR, DESVENDAR, DESVENDER, DESENVOLVER, DESBATAR, INKING, IRKING, SUBIR, ESCURECER, ESCREVER, ARLING, PRESTAR, SIRING, SERING, SERINE, NERINE, NERITE, CERITE, CERETE, DERTE EXCLUIR