В этом задании вы напишите программу, которая принимает две строки, разделенные символом новой строки, s1 (первая строка) и s2 (вторая строка), в качестве входных данных (STDIN или ближайший). Вы можете предположить, что длина s1 всегда будет меньше 30 и больше, чем длина s2. Затем программа должна выводить каждый шаг на расстоянии Левенштейна от s1 до s2.
Чтобы уточнить, что означает каждый шаг расстояния Левенштейна, программа напечатает n строк, где n - расстояние Левенштейна между s1 и s2, а расстояние Левенштейна между двумя соседними строками всегда будет равно единице. Порядок не имеет значения. Выходные данные должны быть разделены новой строкой и не включать s1, только промежуточные и s2. Программа также должна работать менее чем за одну минуту на современном компьютере.
Примеры:
Входные данные:
Programming
Codegolf
Выход:
rogramming
Cogramming
Coramming
Coamming
Codmming
Codeming
Codeging
Codegong
Codegolg
Codegolf
Входные данные:
Questions
Answers
Выход:
uestions
Aestions
Anstions
Ansions
Answons
Answens
Answers
Входные данные:
Offline
Online
Выход:
Ofline
Online
Входные данные:
Saturday
Sunday
Выход:
Sturday
Surday
Sunday
Вот ссылка на скрипт Python, который распечатывает расстояние и шаги.
Дополнительные правила:
- Нет пользования интернетом
- Применяются стандартные лазейки
Это код-гольф, поэтому держите код коротким; самый короткий код выигрывает!
s1(newline)s2
, однако, еще раз просмотрев вопрос, мне интересно, если бы вместо этого вы хотели, чтобы программа выбрала s1 и s2 на основе длины 2 введенных строк, приходя в любом порядке, не могли бы вы уточнить этот момент? То есть мы предполагаем, что на входе s1 следует s2, или мы выбираем s1 и s2 на основе длины двух входов?