网络上最大的论坛postpost ++决定制作一个新的论坛游戏。在此游戏中,目标是发布单词,但是单词必须添加,删除或更改一个字母。您的老板希望您编写一个程序来获取单词,并使用UNIX词典,因为您在一家拥有更智能论坛和更智能论坛游戏的公司工作,并想破坏竞争(嘿,这是您的老板,不要与他讨论,无论如何您都会从工作中获得很多现金)。
您的程序将获得两个参数,单词和字典。由于管理程序的用户(是的,用户,您的公司没有资源来运行机器人)并不完美,因此您应该对两种情况都进行规范化处理。词典中的单词可能具有ASCII字母(大写和小写,但在比较时应将其忽略),破折号,撇号和中间的非连续空格。它们不能超过78个字符。您必须输出游戏中可以接受的单词列表,以打破手动思考单词的人们的乐趣。
这是您期望的程序的示例,检查与相似的词golf
。
> ./similar golf /usr/share/dict/words
Goff
Wolf
gold
golfs
goof
gulf
wolf
的/usr/share/dict/words
是单词的列表,每个后换行符。例如,您可以使用fgets()轻松阅读该内容。
您工作的公司没有很多打孔卡(是的,这是2014年,他们仍然使用打孔卡),所以请不要浪费它们。编写尽可能短的程序。哦,您被要求不要使用Levenshtein距离的内置或外部实现或任何类似算法。关于“此处未发明”或显然是供应商插入该语言的后门的东西(您没有这些的证明,但不与老板讨论)。因此,如果您需要距离,则必须自己实现。
您可以自由使用任何语言。即使有了打孔卡,该公司也可以使用最现代的编程语言,例如Cobol Ruby或Haskell或任何您想要的东西。他们甚至拥有GolfScript,如果您认为它对字符串操作很有用(我不知道,也许...)。
获胜者会从我那里获得15个声誉点,并可能从社区中获得许多其他积分。其他好的答案将获得10分,社区也将获得分。您听说积分不值钱,但是很有可能在2050年取代美元。但是,这还没有得到证实,但是无论如何要获得积分是一个好主意。