暗号化された英語の文章を復号するという問題に挑戦しています。
復号化された文章が正しい英単語から構成されていることを確認するために、単語が辞書に存在するかどうかをチェックする機能を実装しました。Ubuntuの場合は、/usr/share/dict/american-englishにアメリカ英語の単語リストが存在するので、それを使いました。
#include <iostream> #include <fstream> #include <set> using namespace std; class dictionary { set<string> container; public: void load(const string &path) { ifstream fs(path); string word; while (fs >> word) container.insert(word); } bool contains(const string &word) { return container.count(word); } }; int main(int argc, char **argv) { dictionary dict; dict.load("/usr/share/dict/american-english"); for (string s; cin >> s; ) { if (dict.contains(s)) cout << s << " is in the dictionary." << endl; else cout << s << " is not in the dictionary." << endl; } return 0; }以下実行結果です。固有名詞も辞書に含まれているみたいです。
hello hello is in the dictionary. world world is in the dictionary. soccer soccer is in the dictionary. Linux Linux is in the dictionary. Beatles Beatles is in the dictionary. Fibonacci Fibonacci is in the dictionary. totient totient is not in the dictionary. Yankees Yankees is in the dictionary.
0 件のコメント:
コメントを投稿