postcount ++と呼ばれるウェブ上の最大のフォーラムは、新しいフォーラムゲームを作成することを決定しました。このゲームでは、目標は単語を投稿することですが、単語には1文字追加、削除、または変更する必要があります。あなたの上司は、あなたがよりインテリジェントなフォーラムゲームを備えたよりインテリジェントなフォーラムを持ち、競争を破壊したい会社で働いているときに、単語とUNIX辞書を取得するプログラムを書くことを望んでいました(ちょっと、それはあなたの上司です彼と話し合うと、とにかくあなたの仕事からたくさんの現金を得ることができます)。
プログラムは、単語と辞書という2つの引数を取得します。プログラムを管理するユーザー(はい、ユーザー、会社にはボットを実行するリソースがない)は完全ではないため、両方のケースを正規化する必要があります。辞書内の単語には、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や、明らかにベンダーが言語に挿入したバックドアについての何か(それらの証拠はありませんが、上司と話し合ってはいけません)。したがって、距離が必要な場合は、距離を自分で実装する必要があります。
任意の言語を自由に使用できます。パンチカードを使用していても、同社はCobol RubyやHaskell などの最新のプログラミング言語にアクセスできます。文字列操作に適していると思われる場合は、GolfScriptを使用することもできます(おそらく...わかりません)。
勝者は私から15の評判ポイントを獲得し、おそらくコミュニティから他の多くのポイントを獲得します。他の良い答えは10ポイントを獲得し、同様にコミュニティからもポイントを獲得します。ポイントは価値がないと聞きましたが、2050年にドーラーに取って代わる可能性が最も高いと聞きました。