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