Чейнджер слов - это игра, в которой вы пытаетесь превратить одно слово в другое с помощью односимвольных правок, причем каждый шаг - это свое слово. Для этой задачи изменения могут быть заменами, вставками или удалениями. Например, WINNER → LOSER может быть сделано с этим маршрутом (могут быть другие):
WINNER
DINNER
DINER
DINE
LINE
LONE
LOSE
LOSER
Иными словами, вы должны быть в состоянии найти одно слово из другого, проходя только через другие слова на расстоянии Левенштейна 1 каждый раз.
кодирование
Вам будет предоставлен список слов и два слова, и вы должны вывести действительный маршрут от одного слова к другому, если маршрут существует, или отдельное постоянное значение или согласованное поведение, если маршрут не существует.
- Вы можете предположить, что оба входных слова находятся в списке слов
- Список слов может быть взят через любой удобный плоский формат.
- Списки, наборы, попытки, строки, разделенные пробелами, и файлы, разделенные строками, являются действительными (например), но предварительно вычисленный граф смежности Левенштейна - нет.
- Выходной маршрут должен включать оба входных слова, но начало и конец не имеют значения.
- Если маршрут не найден, вы можете вывести определенную константу, ложное значение, пустой список, выбросить исключение, выйти с ненулевым кодом или выполнить любое другое поведение за конечное время.
- Маршрут не обязательно должен быть оптимальным, и нет требования о том, какой маршрут выбрать.
- Сложность вычислений не имеет значения, однако ваша программа должна быть гарантированно завершена за конечное время. (даже если это выйдет за пределы тепловой смерти вселенной)
- Вы можете предположить, что все слова полностью состоят из букв в одном и том же случае
Примеры тестовых случаев
- КПП → СОБАКА; [CAT, DOG, COG, COT, FROG, GROG, BOG]
- CAT, COT, COG, DOG
- ВАННА → ДУШ; [ВАННА, ДУШ, ХАТ, ШАП, БАТ, САТ, ПИЛА, СОУ, ШОУ, КАК]
- Маршрут не найден
- BREAK → FIX; [BREAK, FIX, BEAK, BREAD, READ, BAD, RED, BED, BAD, BID, FAD, FAX]
- ПЕРЕРЫВ, ХЛЕБ, БУС, ПЛОХО, ФАД, ФАКС, ИСПРАВИТЬ
- СТРОЙ → УНИЧТОЖЕНИЕ; [СТРОИТЬ, УНИЧТОЖИТЬ, СТРОИТЬ, ВИНОВАТЬ, ГИЛЬДИЯ, ЗОЛОТО, ГИЛЛ, БИЛЛ, УКЛ, ЗАПОЛНИТЬ, УНИЧТОЖИТЬ, СТРУКТУРУ, СТРОИТЕЛЬСТВО]
- Маршрут не найден
- КАРТА → СОВЕТ; [КАРТА, СОВЕТ, БАРД]
- КАРТА, БАРД, ДОСКА
- ДЕМОН → АНГЕЛ; [ДЕМОН, АНГЕЛ]
- Маршрут не найден
- ПОСЛЕДНО → ПРОШЛОЕ; [ПОСЛЕДНЕЕ, ПРОШЛОЕ, БЛАСТ, БЫСТРО, ЧЕРНЫЙ, ПРИЗРАК, ПОСТ, БАСТ
- ПОСЛЕДНО, ПРОШЛОЕ
- ВСТАВИТЬ → УДАЛИТЬ; Этот список слов
- INSERT, INVERT, INVENT, INBENT, UNBENT, UNBEND, UNBIND, UNKIND, UNKING, INKING, IRKING, DIRKING, DARING, ARLING, AILING, SIRING, SERING, SERINE, NERINE, NERITE, CERITE, CERATE, DERATE, DELATE, DELATE, DELATE УДАЛЯТЬ