Крупнейший форум в Интернете под названием postcount ++ решил создать новую форумную игру. В этой игре цель состоит в том, чтобы опубликовать слово, но слово должно быть добавлено, удалено или изменено. Ваш босс хотел, чтобы вы написали программу, которая получит слово, и словарь UNIX, поскольку вы работаете в компании, которая имеет более интеллектуальный форум с более интеллектуальными играми на форумах и хочет уничтожить конкурентов (эй, это ваш босс, не надо обсудить с ним, вы получите много денег с вашей работы в любом случае).
Ваша программа получит два аргумента, слово и словарь. Поскольку пользователь, управляющий программой (да, пользователь, у вашей компании нет ресурсов для запуска ботов) не идеален, вам следует нормализовать ситуацию в обоих случаях. Слова в словаре могут иметь буквы ASCII (как в верхнем, так и в нижнем регистре, но это следует игнорировать при сравнении), тире, апострофы и непоследовательные пробелы в середине. Они не будут длиннее 78 символов. Вы должны вывести список слов, которые будут приняты в игре, чтобы развлечь людей, которые думают о словах вручную.
Это пример вашей ожидаемой программы, проверяющей похожие слова на golf
.
> ./similar golf /usr/share/dict/words
Goff
Wolf
gold
golfs
goof
gulf
wolf
/usr/share/dict/words
Список слов, с разрывом строки после каждого. Вы можете легко прочитать это, например, с помощью fgets ().
Компания, в которой вы работаете, не имеет много перфокарт (да, это 2014, и они все еще используют перфокарты), поэтому не тратьте их впустую. Напишите как можно более короткую программу. О, и вас попросили не использовать встроенную или внешнюю реализацию расстояния Левенштейна или любой подобный алгоритм. Что-то о не изобретенном здесь или бэкдорах, которые, по-видимому, продавец вставил в язык (у вас нет доказательств этого, но вы не обсуждаете это со своим боссом). Так что, если вам нужно расстояние, вам придется реализовать его самостоятельно.
Вы можете свободно использовать любой язык. Даже с перфокартами у компании есть доступ к самым современным языкам программирования, таким как Cobol Ruby или Haskell, или что угодно. У них даже есть GolfScript, если вы думаете, что он хорош для манипуляции со строками (я не знаю, возможно ...).
Победитель получает 15 очков репутации от меня и, вероятно, множество других очков от сообщества. Другие хорошие ответы получат 10 баллов, а также баллы от сообщества. Вы слышали, что очки бесполезны, но, скорее всего, они заменят доларов в 2050 году. Однако это не подтвердилось, но в любом случае неплохо получать очки.