Для данного файла словаря (текстовый файл, содержащий слово или фразу в каждой строке, с возможной пунктуацией, но без цифр; строки располагаются в алфавитном порядке), вы должны вывести каждую комбинацию слов, где одна буква может быть удалена из слова для создания другой; удаленное письмо должно быть заключено в скобки.
Например, вход
cat
cart
code
golf
ode
verify
versify
должен дать вывод
ca(r)t
(c)ode
ver(s)ify
Несколько способов получить одну и ту же пару должны отображаться только один раз. Вы можете вывести scra(p)ped
или scrap(p)ed
, но не оба.
Вывод должен быть упорядочен в алфавитном порядке по более длинной записи;
mart
mar
mat
ma
должен иметь выход
ma(r)
ma(t)
ma(r)t
mar(t)
и последние два могут быть в любом порядке.
Файл словаря может содержать заглавные буквы, пробелы, дефисы или апострофы; это следует игнорировать. Например,
inlay
in-play
должен производить in(p)lay
. Ваш вывод должен быть в одном и том же случае. Дополнительные пробелы разрешены.
Ввод может быть STDIN или из файла; это разделено новыми строками. Вывод может быть возвращаемым значением функции или STDOUT (или записываться в файл, если вы хотите).
Это код-гольф , поэтому выигрывает самый короткий код в байтах.
(Это мой первый вызов на PPCG - дайте мне знать, если я сделал что-то не так, и я это исправлю.)
mart mar mat ma
? Это будетmar(t) ma(r)t ma(r) ma(t)
?