aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOran Juice <oranjuices@hotmail.com>2014-10-02 18:15:18 +0530
committerOran Juice <oranjuices@hotmail.com>2014-10-02 21:43:28 +0530
commit4517bac7f3493bd369a05d5a1587765ef72a73da (patch)
tree9472daaa6e238ee2ef22b1894bdb09bfaffef66b
parentSeparated word lists to header files (diff)
downloadmonero-4517bac7f3493bd369a05d5a1587765ef72a73da.tar.xz
Restructured language sources to be singletons
-rw-r--r--src/mnemonics/electrum-words.cpp382
-rw-r--r--src/mnemonics/electrum-words.h40
-rw-r--r--src/mnemonics/english.h4156
-rw-r--r--src/mnemonics/japanese.h4156
-rw-r--r--src/mnemonics/language_base.h61
-rw-r--r--src/mnemonics/old_english.h3312
-rw-r--r--src/mnemonics/portuguese.h3313
-rw-r--r--src/mnemonics/singleton.h16
-rw-r--r--src/mnemonics/spanish.h4156
-rw-r--r--src/simplewallet/simplewallet.cpp49
-rw-r--r--src/simplewallet/simplewallet.h3
-rw-r--r--src/wallet/wallet2.cpp9
-rw-r--r--src/wallet/wallet2.h6
13 files changed, 9791 insertions, 9868 deletions
diff --git a/src/mnemonics/electrum-words.cpp b/src/mnemonics/electrum-words.cpp
index 334bc578f..7caa3f72b 100644
--- a/src/mnemonics/electrum-words.cpp
+++ b/src/mnemonics/electrum-words.cpp
@@ -41,6 +41,7 @@
#include <map>
#include <cstdint>
#include <vector>
+#include <unordered_map>
#include <boost/algorithm/string.hpp>
#include "crypto/crypto.h" // for declaration of crypto::secret_key
#include <fstream>
@@ -55,97 +56,93 @@
#include "portuguese.h"
#include "japanese.h"
#include "old_english.h"
+#include "language_base.h"
+#include "singleton.h"
namespace
{
- int num_words = 0;
const int seed_length = 24;
- std::map<std::string,uint32_t> words_map;
- std::vector<std::string> words_array;
-
- bool is_old_style_word_list = false;
-
- const std::string WORD_LISTS_DIRECTORY = "wordlists";
- const std::string LANGUAGES_DIRECTORY = "languages";
- const std::string OLD_WORD_FILE = "old-word-list";
-
- const int unique_prefix_length = 4;
/*!
- * \brief Tells if the module hasn't been initialized with a word list file.
- * \return true if the module hasn't been initialized with a word list file false otherwise.
+ * \brief Finds the word list that contains the seed words and puts the indices
+ * where matches occured in matched_indices.
+ * \param seed List of words to match.
+ * \param has_checksum If word list passed checksum test, we need to only do a prefix check.
+ * \param matched_indices The indices where the seed words were found are added to this.
+ * \return true if all the words were present in some language false if not.
*/
- bool is_uninitialized()
+ bool find_seed_language(const std::vector<std::string> &seed,
+ bool has_checksum, std::vector<uint32_t> &matched_indices, uint32_t &word_list_length,
+ std::string &language_name)
{
- return num_words == 0 ? true : false;
- }
-
- /*!
- * \brief Create word list map and array data structres for use during inter-conversion between
- * words and secret key.
- * \param word_file Path to the word list file from pwd.
- * \param has_checksum True if checksum was supplied false if not.
- */
- void create_data_structures(const std::string &word_file, bool has_checksum)
- {
- words_array.clear();
- words_map.clear();
- num_words = 0;
- std::ifstream input_stream;
- input_stream.open(word_file.c_str(), std::ifstream::in);
-
- if (!input_stream)
- throw std::runtime_error("Word list file couldn't be opened.");
-
- std::string word;
- while (input_stream >> word)
+ // If there's a new language added, add an instance of it here.
+ std::vector<Language::Base*> language_instances({
+ Language::Singleton<Language::English>::instance(),
+ Language::Singleton<Language::Spanish>::instance(),
+ Language::Singleton<Language::Portuguese>::instance(),
+ Language::Singleton<Language::Japanese>::instance(),
+ Language::Singleton<Language::OldEnglish>::instance()
+ });
+ // To hold trimmed seed words in case of a checksum being present.
+ std::vector<std::string> trimmed_seed;
+ if (has_checksum)
{
- if (word.length() == 0 || word[0] == '#')
- {
- // Skip empty and comment lines
- continue;
- }
- words_array.push_back(word);
- if (has_checksum)
+ // If it had a checksum, we'll just compare the unique prefix
+ // So we create a list of trimmed seed words
+ for (std::vector<std::string>::const_iterator it = seed.begin(); it != seed.end(); it++)
{
- // Only if checksum was passed should we stick to just 4 char checks to be lenient about typos.
- words_map[word.substr(0, unique_prefix_length)] = num_words;
+ trimmed_seed.push_back(it->length() > Language::unique_prefix_length ?
+ it->substr(0, Language::unique_prefix_length) : *it);
}
- else
- {
- words_map[word] = num_words;
- }
- num_words++;
}
- input_stream.close();
- }
-
- /*!
- * \brief Tells if all the words passed in wlist was present in current word list file.
- * \param wlist List of words to match.
- * \param has_checksum If word list passed checksum test, we need to only do a 4 char check.
- * \return true if all the words were present false if not.
- */
- bool word_list_file_match(const std::vector<std::string> &wlist, bool has_checksum)
- {
- for (std::vector<std::string>::const_iterator it = wlist.begin(); it != wlist.end(); it++)
+ std::unordered_map<std::string, uint32_t> word_map;
+ std::unordered_map<std::string, uint32_t> trimmed_word_map;
+ // Iterate through all the languages and find a match
+ for (std::vector<Language::Base*>::iterator it1 = language_instances.begin();
+ it1 != language_instances.end(); it1++)
{
- if (has_checksum)
+ word_map = (*it1)->get_word_map();
+ trimmed_word_map = (*it1)->get_trimmed_word_map();
+ // To iterate through seed words
+ std::vector<std::string>::const_iterator it2;
+ // To iterate through trimmed seed words
+ std::vector<std::string>::iterator it3;
+ bool full_match = true;
+
+ // Iterate through all the words and see if they're all present
+ for (it2 = seed.begin(), it3 = trimmed_seed.begin();
+ it2 != seed.end() && it3 != trimmed_seed.end(); it2++, it3++)
{
- if (words_map.count(it->substr(0, unique_prefix_length)) == 0)
+ if (has_checksum)
{
- return false;
+ // Use the trimmed words and map
+ if (trimmed_word_map.count(*it3) == 0)
+ {
+ full_match = false;
+ break;
+ }
+ matched_indices.push_back(trimmed_word_map[*it3]);
}
- }
- else
- {
- if (words_map.count(*it) == 0)
+ else
{
- return false;
+ if (word_map.count(*it2) == 0)
+ {
+ full_match = false;
+ break;
+ }
+ matched_indices.push_back(word_map[*it2]);
}
}
+ if (full_match)
+ {
+ word_list_length = (*it1)->get_word_list().size();
+ language_name = (*it1)->get_language_name();
+ return true;
+ }
+ // Some didn't match. Clear the index array.
+ matched_indices.clear();
}
- return true;
+ return false;
}
/*!
@@ -155,16 +152,43 @@ namespace
*/
uint32_t create_checksum_index(const std::vector<std::string> &word_list)
{
- std::string four_char_words = "";
+ std::string trimmed_words = "";
for (std::vector<std::string>::const_iterator it = word_list.begin(); it != word_list.end(); it++)
{
- four_char_words += it->substr(0, unique_prefix_length);
+ if (it->length() > 4)
+ {
+ trimmed_words += it->substr(0, Language::unique_prefix_length);
+ }
+ else
+ {
+ trimmed_words += *it;
+ }
}
boost::crc_32_type result;
- result.process_bytes(four_char_words.data(), four_char_words.length());
+ result.process_bytes(trimmed_words.data(), trimmed_words.length());
return result.checksum() % seed_length;
}
+
+ /*!
+ * \brief Does the checksum test on the seed passed.
+ * \param seed Vector of seed words
+ * \return True if the test passed false if not.
+ */
+ bool checksum_test(std::vector<std::string> seed)
+ {
+ // The last word is the checksum.
+ std::string last_word = seed.back();
+ seed.pop_back();
+
+ std::string checksum = seed[create_checksum_index(seed)];
+
+ std::string trimmed_checksum = checksum.length() > 4 ? checksum.substr(0, Language::unique_prefix_length) :
+ checksum;
+ std::string trimmed_last_word = checksum.length() > 4 ? last_word.substr(0, Language::unique_prefix_length) :
+ last_word;
+ return trimmed_checksum == trimmed_last_word;
+ }
}
/*!
@@ -182,114 +206,62 @@ namespace crypto
namespace ElectrumWords
{
/*!
- * \brief Called to initialize it to work with a word list file.
- * \param language Language of the word list file.
- * \param has_checksum True if the checksum was passed false if not.
- * \param old_word_list true it is to use the old style word list file false if not.
- */
- void init(const std::string &language, bool has_checksum, bool old_word_list)
- {
- if (old_word_list)
- {
- // Use the old word list file if told to.
- create_data_structures(WORD_LISTS_DIRECTORY + '/' + OLD_WORD_FILE, has_checksum);
- is_old_style_word_list = true;
- }
- else
- {
- create_data_structures(WORD_LISTS_DIRECTORY + '/' + LANGUAGES_DIRECTORY + '/' + language, has_checksum);
- is_old_style_word_list = false;
- }
- if (num_words == 0)
- {
- throw std::runtime_error(std::string("Word list file is empty: ") +
- (old_word_list ? OLD_WORD_FILE : (LANGUAGES_DIRECTORY + '/' + language)));
- }
- }
-
- /*!
* \brief Converts seed words to bytes (secret key).
- * \param words String containing the words separated by spaces.
- * \param dst To put the secret key restored from the words.
- * \return false if not a multiple of 3 words, or if word is not in the words list
+ * \param words String containing the words separated by spaces.
+ * \param dst To put the secret key restored from the words.
+ * \param language_name Language of the seed as found gets written here.
+ * \return false if not a multiple of 3 words, or if word is not in the words list
*/
- bool words_to_bytes(const std::string& words, crypto::secret_key& dst)
+ bool words_to_bytes(const std::string& words, crypto::secret_key& dst,
+ std::string &language_name)
{
- std::vector<std::string> wlist;
+ std::vector<std::string> seed;
- boost::split(wlist, words, boost::is_any_of(" "));
+ boost::split(seed, words, boost::is_any_of(" "));
- // If it is seed with a checksum.
- bool has_checksum = (wlist.size() == seed_length + 1);
+ // error on non-compliant word list
+ if (seed.size() != seed_length/2 && seed.size() != seed_length &&
+ seed.size() != seed_length + 1)
+ {
+ return false;
+ }
+ // If it is seed with a checksum.
+ bool has_checksum = seed.size() == (seed_length + 1);
if (has_checksum)
{
- // The last word is the checksum.
- std::string last_word = wlist.back();
- wlist.pop_back();
-
- std::string checksum = wlist[create_checksum_index(wlist)];
-
- if (checksum.substr(0, unique_prefix_length) != last_word.substr(0, unique_prefix_length))
+ if (!checksum_test(seed))
{
// Checksum fail
return false;
}
}
- // Try to find a word list file that contains all the words in the word list.
- std::vector<std::string> languages;
- get_language_list(languages);
-
- std::vector<std::string>::iterator it;
- for (it = languages.begin(); it != languages.end(); it++)
- {
- init(*it, has_checksum);
- if (word_list_file_match(wlist, has_checksum))
- {
- break;
- }
- }
- // If no such file was found, see if the old style word list file has them all.
- if (it == languages.end())
+
+ std::vector<uint32_t> matched_indices;
+ uint32_t word_list_length;
+ if (!find_seed_language(seed, has_checksum, matched_indices, word_list_length, language_name))
{
- init("", has_checksum, true);
- if (!word_list_file_match(wlist, has_checksum))
- {
- return false;
- }
+ return false;
}
- int n = num_words;
-
- // error on non-compliant word list
- if (wlist.size() != 12 && wlist.size() != 24) return false;
- for (unsigned int i=0; i < wlist.size() / 3; i++)
+ for (unsigned int i=0; i < seed.size() / 3; i++)
{
uint32_t val;
uint32_t w1, w2, w3;
+ w1 = matched_indices[i*3];
+ w2 = matched_indices[i*3 + 1];
+ w3 = matched_indices[i*3 + 2];
- if (has_checksum)
- {
- w1 = words_map.at(wlist[i*3].substr(0, unique_prefix_length));
- w2 = words_map.at(wlist[i*3 + 1].substr(0, unique_prefix_length));
- w3 = words_map.at(wlist[i*3 + 2].substr(0, unique_prefix_length));
- }
- else
- {
- w1 = words_map.at(wlist[i*3]);
- w2 = words_map.at(wlist[i*3 + 1]);
- w3 = words_map.at(wlist[i*3 + 2]);
- }
+ val = w1 + word_list_length * (((word_list_length - w1) + w2) % word_list_length) +
+ word_list_length * word_list_length * (((word_list_length - w2) + w3) % word_list_length);
- val = w1 + n * (((n - w1) + w2) % n) + n * n * (((n - w2) + w3) % n);
-
- if (!(val % n == w1)) return false;
+ if (!(val % word_list_length == w1)) return false;
memcpy(dst.data + i * 4, &val, 4); // copy 4 bytes to position
}
std::string wlist_copy = words;
- if (wlist.size() == 12)
+ if (seed.size() == seed_length/2)
{
memcpy(dst.data, dst.data + 16, 16); // if electrum 12-word seed, duplicate
wlist_copy += ' ';
@@ -301,23 +273,44 @@ namespace crypto
/*!
* \brief Converts bytes (secret key) to seed words.
- * \param src Secret key
- * \param words Space delimited concatenated words get written here.
- * \return true if successful false if not. Unsuccessful if wrong key size.
+ * \param src Secret key
+ * \param words Space delimited concatenated words get written here.
+ * \param language_name Seed language name
+ * \return true if successful false if not. Unsuccessful if wrong key size.
*/
- bool bytes_to_words(const crypto::secret_key& src, std::string& words)
+ bool bytes_to_words(const crypto::secret_key& src, std::string& words,
+ const std::string &language_name)
{
- if (is_uninitialized())
+
+ if (sizeof(src.data) % 4 != 0 || sizeof(src.data) == 0) return false;
+
+ std::vector<std::string> word_list;
+ Language::Base *language;
+ if (language_name == "English")
{
- init("english", true);
+ language = Language::Singleton<Language::English>::instance();
}
-
+ else if (language_name == "Spanish")
+ {
+ language = Language::Singleton<Language::Spanish>::instance();
+ }
+ else if (language_name == "Portuguese")
+ {
+ language = Language::Singleton<Language::Portuguese>::instance();
+ }
+ else if (language_name == "Japanese")
+ {
+ language = Language::Singleton<Language::Japanese>::instance();
+ }
+ else
+ {
+ return false;
+ }
+ word_list = language->get_word_list();
// To store the words for random access to add the checksum word later.
std::vector<std::string> words_store;
- int n = num_words;
-
- if (sizeof(src.data) % 4 != 0 || sizeof(src.data) == 0) return false;
+ uint32_t word_list_length = word_list.size();
// 8 bytes -> 3 words. 8 digits base 16 -> 3 digits base 1626
for (unsigned int i=0; i < sizeof(src.data)/4; i++, words += ' ')
{
@@ -327,19 +320,19 @@ namespace crypto
memcpy(&val, (src.data) + (i * 4), 4);
- w1 = val % n;
- w2 = ((val / n) + w1) % n;
- w3 = (((val / n) / n) + w2) % n;
+ w1 = val % word_list_length;
+ w2 = ((val / word_list_length) + w1) % word_list_length;
+ w3 = (((val / word_list_length) / word_list_length) + w2) % word_list_length;
- words += words_array[w1];
+ words += word_list[w1];
words += ' ';
- words += words_array[w2];
+ words += word_list[w2];
words += ' ';
- words += words_array[w3];
+ words += word_list[w3];
- words_store.push_back(words_array[w1]);
- words_store.push_back(words_array[w2]);
- words_store.push_back(words_array[w3]);
+ words_store.push_back(word_list[w1]);
+ words_store.push_back(word_list[w2]);
+ words_store.push_back(word_list[w3]);
}
words.pop_back();
@@ -353,31 +346,18 @@ namespace crypto
*/
void get_language_list(std::vector<std::string> &languages)
{
- languages.clear();
- boost::filesystem::path languages_directory("wordlists/languages");
- if (!boost::filesystem::exists(languages_directory) ||
- !boost::filesystem::is_directory(languages_directory))
- {
- throw std::runtime_error("Word list languages directory is missing.");
- }
- boost::filesystem::directory_iterator end;
- for (boost::filesystem::directory_iterator it(languages_directory); it != end; it++)
- {
- languages.push_back(it->path().filename().string());
- }
- }
-
- /*!
- * \brief Tells if the module is currenly using an old style word list.
- * \return true if it is currenly using an old style word list false if not.
- */
- bool get_is_old_style_word_list()
- {
- if (is_uninitialized())
+ std::vector<Language::Base*> language_instances({
+ Language::Singleton<Language::English>::instance(),
+ Language::Singleton<Language::Spanish>::instance(),
+ Language::Singleton<Language::Portuguese>::instance(),
+ Language::Singleton<Language::Japanese>::instance(),
+ Language::Singleton<Language::OldEnglish>::instance()
+ });
+ for (std::vector<Language::Base*>::iterator it = language_instances.begin();
+ it != language_instances.end(); it++)
{
- throw std::runtime_error("ElectrumWords hasn't been initialized with a word list yet.");
+ languages.push_back((*it)->get_language_name());
}
- return is_old_style_word_list;
}
/*!
@@ -387,9 +367,9 @@ namespace crypto
*/
bool get_is_old_style_seed(const std::string &seed)
{
- std::vector<std::string> wlist;
- boost::split(wlist, seed, boost::is_any_of(" "));
- return wlist.size() != (seed_length + 1);
+ std::vector<std::string> word_list;
+ boost::split(word_list, seed, boost::is_any_of(" "));
+ return word_list.size() != (seed_length + 1);
}
}
diff --git a/src/mnemonics/electrum-words.h b/src/mnemonics/electrum-words.h
index 95c420562..1535fff1b 100644
--- a/src/mnemonics/electrum-words.h
+++ b/src/mnemonics/electrum-words.h
@@ -36,6 +36,9 @@
* that method of "backing up" one's wallet keys.
*/
+#ifndef ELECTRUM_WORDS_H
+#define ELECTRUM_WORDS_H
+
#include <string>
#include <cstdint>
#include <map>
@@ -55,29 +58,26 @@ namespace crypto
*/
namespace ElectrumWords
{
- /*!
- * \brief Called to initialize it to work with a word list file.
- * \param language Language of the word list file.
- * \param has_checksum True if the checksum was passed false if not.
- * \param old_word_list true it is to use the old style word list file false if not.
- */
- void init(const std::string &language, bool has_checksum=true, bool old_word_list=false);
-
+
/*!
* \brief Converts seed words to bytes (secret key).
- * \param words String containing the words separated by spaces.
- * \param dst To put the secret key restored from the words.
- * \return false if not a multiple of 3 words, or if word is not in the words list
+ * \param words String containing the words separated by spaces.
+ * \param dst To put the secret key restored from the words.
+ * \param language_name Language of the seed as found gets written here.
+ * \return false if not a multiple of 3 words, or if word is not in the words list
*/
- bool words_to_bytes(const std::string& words, crypto::secret_key& dst);
+ bool words_to_bytes(const std::string& words, crypto::secret_key& dst,
+ std::string &language_name);
/*!
* \brief Converts bytes (secret key) to seed words.
- * \param src Secret key
- * \param words Space delimited concatenated words get written here.
- * \return true if successful false if not. Unsuccessful if wrong key size.
+ * \param src Secret key
+ * \param words Space delimited concatenated words get written here.
+ * \param language_name Seed language name
+ * \return true if successful false if not. Unsuccessful if wrong key size.
*/
- bool bytes_to_words(const crypto::secret_key& src, std::string& words);
+ bool bytes_to_words(const crypto::secret_key& src, std::string& words,
+ const std::string &language_name);
/*!
* \brief Gets a list of seed languages that are supported.
@@ -86,12 +86,6 @@ namespace crypto
void get_language_list(std::vector<std::string> &languages);
/*!
- * \brief If the module is currenly using an old style word list.
- * \return true if it is currenly using an old style word list false if not.
- */
- bool get_is_old_style_word_list();
-
- /*!
* \brief Tells if the seed passed is an old style seed or not.
* \param seed The seed to check (a space delimited concatenated word list)
* \return true if the seed passed is a old style seed false if not.
@@ -99,3 +93,5 @@ namespace crypto
bool get_is_old_style_seed(const std::string &seed);
}
}
+
+#endif
diff --git a/src/mnemonics/english.h b/src/mnemonics/english.h
index f1bd3fb64..9c6dc281b 100644
--- a/src/mnemonics/english.h
+++ b/src/mnemonics/english.h
@@ -1,2098 +1,2074 @@
+#ifndef ENGLISH_H
+#define ENGLISH_H
+
#include <vector>
#include <unordered_map>
+#include "language_base.h"
+#include <string>
-std::vector<std::string>& word_list_english()
-{
- static std::vector<std::string> word_list(
- "abandon",
- "ability",
- "able",
- "about",
- "above",
- "absent",
- "absorb",
- "abstract",
- "absurd",
- "abuse",
- "access",
- "accident",
- "account",
- "accuse",
- "achieve",
- "acid",
- "acoustic",
- "acquire",
- "across",
- "act",
- "action",
- "actor",
- "actress",
- "actual",
- "adapt",
- "add",
- "addict",
- "address",
- "adjust",
- "admit",
- "adult",
- "advance",
- "advice",
- "aerobic",
- "affair",
- "afford",
- "afraid",
- "again",
- "age",
- "agent",
- "agree",
- "ahead",
- "aim",
- "air",
- "airport",
- "aisle",
- "alarm",
- "album",
- "alcohol",
- "alert",
- "alien",
- "all",
- "alley",
- "allow",
- "almost",
- "alone",
- "alpha",
- "already",
- "also",
- "alter",
- "always",
- "amateur",
- "amazing",
- "among",
- "amount",
- "amused",
- "analyst",
- "anchor",
- "ancient",
- "anger",
- "angle",
- "angry",
- "animal",
- "ankle",
- "announce",
- "annual",
- "another",
- "answer",
- "antenna",
- "antique",
- "anxiety",
- "any",
- "apart",
- "apology",
- "appear",
- "apple",
- "approve",
- "april",
- "arch",
- "arctic",
- "area",
- "arena",
- "argue",
- "arm",
- "armed",
- "armor",
- "army",
- "around",
- "arrange",
- "arrest",
- "arrive",
- "arrow",
- "art",
- "artefact",
- "artist",
- "artwork",
- "ask",
- "aspect",
- "assault",
- "asset",
- "assist",
- "assume",
- "asthma",
- "athlete",
- "atom",
- "attack",
- "attend",
- "attitude",
- "attract",
- "auction",
- "audit",
- "august",
- "aunt",
- "author",
- "auto",
- "autumn",
- "average",
- "avocado",
- "avoid",
- "awake",
- "aware",
- "away",
- "awesome",
- "awful",
- "awkward",
- "axis",
- "baby",
- "bachelor",
- "bacon",
- "badge",
- "bag",
- "balance",
- "balcony",
- "ball",
- "bamboo",
- "banana",
- "banner",
- "bar",
- "barely",
- "bargain",
- "barrel",
- "base",
- "basic",
- "basket",
- "battle",
- "beach",
- "bean",
- "beauty",
- "because",
- "become",
- "beef",
- "before",
- "begin",
- "behave",
- "behind",
- "believe",
- "below",
- "belt",
- "bench",
- "benefit",
- "best",
- "betray",
- "better",
- "between",
- "beyond",
- "bicycle",
- "bid",
- "bike",
- "bind",
- "biology",
- "bird",
- "birth",
- "bitter",
- "black",
- "blade",
- "blame",
- "blanket",
- "blast",
- "bleak",
- "bless",
- "blind",
- "blood",
- "blossom",
- "blouse",
- "blue",
- "blur",
- "blush",
- "board",
- "boat",
- "body",
- "boil",
- "bomb",
- "bone",
- "bonus",
- "book",
- "boost",
- "border",
- "boring",
- "borrow",
- "boss",
- "bottom",
- "bounce",
- "box",
- "boy",
- "bracket",
- "brain",
- "brand",
- "brass",
- "brave",
- "bread",
- "breeze",
- "brick",
- "bridge",
- "brief",
- "bright",
- "bring",
- "brisk",
- "broccoli",
- "broken",
- "bronze",
- "broom",
- "brother",
- "brown",
- "brush",
- "bubble",
- "buddy",
- "budget",
- "buffalo",
- "build",
- "bulb",
- "bulk",
- "bullet",
- "bundle",
- "bunker",
- "burden",
- "burger",
- "burst",
- "bus",
- "business",
- "busy",
- "butter",
- "buyer",
- "buzz",
- "cabbage",
- "cabin",
- "cable",
- "cactus",
- "cage",
- "cake",
- "call",
- "calm",
- "camera",
- "camp",
- "can",
- "canal",
- "cancel",
- "candy",
- "cannon",
- "canoe",
- "canvas",
- "canyon",
- "capable",
- "capital",
- "captain",
- "car",
- "carbon",
- "card",
- "cargo",
- "carpet",
- "carry",
- "cart",
- "case",
- "cash",
- "casino",
- "castle",
- "casual",
- "cat",
- "catalog",
- "catch",
- "category",
- "cattle",
- "caught",
- "cause",
- "caution",
- "cave",
- "ceiling",
- "celery",
- "cement",
- "census",
- "century",
- "cereal",
- "certain",
- "chair",
- "chalk",
- "champion",
- "change",
- "chaos",
- "chapter",
- "charge",
- "chase",
- "chat",
- "cheap",
- "check",
- "cheese",
- "chef",
- "cherry",
- "chest",
- "chicken",
- "chief",
- "child",
- "chimney",
- "choice",
- "choose",
- "chronic",
- "chuckle",
- "chunk",
- "churn",
- "cigar",
- "cinnamon",
- "circle",
- "citizen",
- "city",
- "civil",
- "claim",
- "clap",
- "clarify",
- "claw",
- "clay",
- "clean",
- "clerk",
- "clever",
- "click",
- "client",
- "cliff",
- "climb",
- "clinic",
- "clip",
- "clock",
- "clog",
- "close",
- "cloth",
- "cloud",
- "clown",
- "club",
- "clump",
- "cluster",
- "clutch",
- "coach",
- "coast",
- "coconut",
- "code",
- "coffee",
- "coil",
- "coin",
- "collect",
- "color",
- "column",
- "combine",
- "come",
- "comfort",
- "comic",
- "common",
- "company",
- "concert",
- "conduct",
- "confirm",
- "congress",
- "connect",
- "consider",
- "control",
- "convince",
- "cook",
- "cool",
- "copper",
- "copy",
- "coral",
- "core",
- "corn",
- "correct",
- "cost",
- "cotton",
- "couch",
- "country",
- "couple",
- "course",
- "cousin",
- "cover",
- "coyote",
- "crack",
- "cradle",
- "craft",
- "cram",
- "crane",
- "crash",
- "crater",
- "crawl",
- "crazy",
- "cream",
- "credit",
- "creek",
- "crew",
- "cricket",
- "crime",
- "crisp",
- "critic",
- "crop",
- "cross",
- "crouch",
- "crowd",
- "crucial",
- "cruel",
- "cruise",
- "crumble",
- "crunch",
- "crush",
- "cry",
- "crystal",
- "cube",
- "culture",
- "cup",
- "cupboard",
- "curious",
- "current",
- "curtain",
- "curve",
- "cushion",
- "custom",
- "cute",
- "cycle",
- "dad",
- "damage",
- "damp",
- "dance",
- "danger",
- "daring",
- "dash",
- "daughter",
- "dawn",
- "day",
- "deal",
- "debate",
- "debris",
- "decade",
- "december",
- "decide",
- "decline",
- "decorate",
- "decrease",
- "deer",
- "defense",
- "define",
- "defy",
- "degree",
- "delay",
- "deliver",
- "demand",
- "demise",
- "denial",
- "dentist",
- "deny",
- "depart",
- "depend",
- "deposit",
- "depth",
- "deputy",
- "derive",
- "describe",
- "desert",
- "design",
- "desk",
- "despair",
- "destroy",
- "detail",
- "detect",
- "develop",
- "device",
- "devote",
- "diagram",
- "dial",
- "diamond",
- "diary",
- "dice",
- "diesel",
- "diet",
- "differ",
- "digital",
- "dignity",
- "dilemma",
- "dinner",
- "dinosaur",
- "direct",
- "dirt",
- "disagree",
- "discover",
- "disease",
- "dish",
- "dismiss",
- "disorder",
- "display",
- "distance",
- "divert",
- "divide",
- "divorce",
- "dizzy",
- "doctor",
- "document",
- "dog",
- "doll",
- "dolphin",
- "domain",
- "donate",
- "donkey",
- "donor",
- "door",
- "dose",
- "double",
- "dove",
- "draft",
- "dragon",
- "drama",
- "drastic",
- "draw",
- "dream",
- "dress",
- "drift",
- "drill",
- "drink",
- "drip",
- "drive",
- "drop",
- "drum",
- "dry",
- "duck",
- "dumb",
- "dune",
- "during",
- "dust",
- "dutch",
- "duty",
- "dwarf",
- "dynamic",
- "eager",
- "eagle",
- "early",
- "earn",
- "earth",
- "easily",
- "east",
- "easy",
- "echo",
- "ecology",
- "economy",
- "edge",
- "edit",
- "educate",
- "effort",
- "egg",
- "eight",
- "either",
- "elbow",
- "elder",
- "electric",
- "elegant",
- "element",
- "elephant",
- "elevator",
- "elite",
- "else",
- "embark",
- "embody",
- "embrace",
- "emerge",
- "emotion",
- "employ",
- "empower",
- "empty",
- "enable",
- "enact",
- "end",
- "endless",
- "endorse",
- "enemy",
- "energy",
- "enforce",
- "engage",
- "engine",
- "enhance",
- "enjoy",
- "enlist",
- "enough",
- "enrich",
- "enroll",
- "ensure",
- "enter",
- "entire",
- "entry",
- "envelope",
- "episode",
- "equal",
- "equip",
- "era",
- "erase",
- "erode",
- "erosion",
- "error",
- "erupt",
- "escape",
- "essay",
- "essence",
- "estate",
- "eternal",
- "ethics",
- "evidence",
- "evil",
- "evoke",
- "evolve",
- "exact",
- "example",
- "excess",
- "exchange",
- "excite",
- "exclude",
- "excuse",
- "execute",
- "exercise",
- "exhaust",
- "exhibit",
- "exile",
- "exist",
- "exit",
- "exotic",
- "expand",
- "expect",
- "expire",
- "explain",
- "expose",
- "express",
- "extend",
- "extra",
- "eye",
- "eyebrow",
- "fabric",
- "face",
- "faculty",
- "fade",
- "faint",
- "faith",
- "fall",
- "false",
- "fame",
- "family",
- "famous",
- "fan",
- "fancy",
- "fantasy",
- "farm",
- "fashion",
- "fat",
- "fatal",
- "father",
- "fatigue",
- "fault",
- "favorite",
- "feature",
- "february",
- "federal",
- "fee",
- "feed",
- "feel",
- "female",
- "fence",
- "festival",
- "fetch",
- "fever",
- "few",
- "fiber",
- "fiction",
- "field",
- "figure",
- "file",
- "film",
- "filter",
- "final",
- "find",
- "fine",
- "finger",
- "finish",
- "fire",
- "firm",
- "first",
- "fiscal",
- "fish",
- "fit",
- "fitness",
- "fix",
- "flag",
- "flame",
- "flash",
- "flat",
- "flavor",
- "flee",
- "flight",
- "flip",
- "float",
- "flock",
- "floor",
- "flower",
- "fluid",
- "flush",
- "fly",
- "foam",
- "focus",
- "fog",
- "foil",
- "fold",
- "follow",
- "food",
- "foot",
- "force",
- "forest",
- "forget",
- "fork",
- "fortune",
- "forum",
- "forward",
- "fossil",
- "foster",
- "found",
- "fox",
- "fragile",
- "frame",
- "frequent",
- "fresh",
- "friend",
- "fringe",
- "frog",
- "front",
- "frost",
- "frown",
- "frozen",
- "fruit",
- "fuel",
- "fun",
- "funny",
- "furnace",
- "fury",
- "future",
- "gadget",
- "gain",
- "galaxy",
- "gallery",
- "game",
- "gap",
- "garage",
- "garbage",
- "garden",
- "garlic",
- "garment",
- "gas",
- "gasp",
- "gate",
- "gather",
- "gauge",
- "gaze",
- "general",
- "genius",
- "genre",
- "gentle",
- "genuine",
- "gesture",
- "ghost",
- "giant",
- "gift",
- "giggle",
- "ginger",
- "giraffe",
- "girl",
- "give",
- "glad",
- "glance",
- "glare",
- "glass",
- "glide",
- "glimpse",
- "globe",
- "gloom",
- "glory",
- "glove",
- "glow",
- "glue",
- "goat",
- "goddess",
- "gold",
- "good",
- "goose",
- "gorilla",
- "gospel",
- "gossip",
- "govern",
- "gown",
- "grab",
- "grace",
- "grain",
- "grant",
- "grape",
- "grass",
- "gravity",
- "great",
- "green",
- "grid",
- "grief",
- "grit",
- "grocery",
- "group",
- "grow",
- "grunt",
- "guard",
- "guess",
- "guide",
- "guilt",
- "guitar",
- "gun",
- "gym",
- "habit",
- "hair",
- "half",
- "hammer",
- "hamster",
- "hand",
- "happy",
- "harbor",
- "hard",
- "harsh",
- "harvest",
- "hat",
- "have",
- "hawk",
- "hazard",
- "head",
- "health",
- "heart",
- "heavy",
- "hedgehog",
- "height",
- "hello",
- "helmet",
- "help",
- "hen",
- "hero",
- "hidden",
- "high",
- "hill",
- "hint",
- "hip",
- "hire",
- "history",
- "hobby",
- "hockey",
- "hold",
- "hole",
- "holiday",
- "hollow",
- "home",
- "honey",
- "hood",
- "hope",
- "horn",
- "horror",
- "horse",
- "hospital",
- "host",
- "hotel",
- "hour",
- "hover",
- "hub",
- "huge",
- "human",
- "humble",
- "humor",
- "hundred",
- "hungry",
- "hunt",
- "hurdle",
- "hurry",
- "hurt",
- "husband",
- "hybrid",
- "ice",
- "icon",
- "idea",
- "identify",
- "idle",
- "ignore",
- "ill",
- "illegal",
- "illness",
- "image",
- "imitate",
- "immense",
- "immune",
- "impact",
- "impose",
- "improve",
- "impulse",
- "inch",
- "include",
- "income",
- "increase",
- "index",
- "indicate",
- "indoor",
- "industry",
- "infant",
- "inflict",
- "inform",
- "inhale",
- "inherit",
- "initial",
- "inject",
- "injury",
- "inmate",
- "inner",
- "innocent",
- "input",
- "inquiry",
- "insane",
- "insect",
- "inside",
- "inspire",
- "install",
- "intact",
- "interest",
- "into",
- "invest",
- "invite",
- "involve",
- "iron",
- "island",
- "isolate",
- "issue",
- "item",
- "ivory",
- "jacket",
- "jaguar",
- "jar",
- "jazz",
- "jealous",
- "jeans",
- "jelly",
- "jewel",
- "job",
- "join",
- "joke",
- "journey",
- "joy",
- "judge",
- "juice",
- "jump",
- "jungle",
- "junior",
- "junk",
- "just",
- "kangaroo",
- "keen",
- "keep",
- "ketchup",
- "key",
- "kick",
- "kid",
- "kidney",
- "kind",
- "kingdom",
- "kiss",
- "kit",
- "kitchen",
- "kite",
- "kitten",
- "kiwi",
- "knee",
- "knife",
- "knock",
- "know",
- "lab",
- "label",
- "labor",
- "ladder",
- "lady",
- "lake",
- "lamp",
- "language",
- "laptop",
- "large",
- "later",
- "latin",
- "laugh",
- "laundry",
- "lava",
- "law",
- "lawn",
- "lawsuit",
- "layer",
- "lazy",
- "leader",
- "leaf",
- "learn",
- "leave",
- "lecture",
- "left",
- "leg",
- "legal",
- "legend",
- "leisure",
- "lemon",
- "lend",
- "length",
- "lens",
- "leopard",
- "lesson",
- "letter",
- "level",
- "liar",
- "liberty",
- "library",
- "license",
- "life",
- "lift",
- "light",
- "like",
- "limb",
- "limit",
- "link",
- "lion",
- "liquid",
- "list",
- "little",
- "live",
- "lizard",
- "load",
- "loan",
- "lobster",
- "local",
- "lock",
- "logic",
- "lonely",
- "long",
- "loop",
- "lottery",
- "loud",
- "lounge",
- "love",
- "loyal",
- "lucky",
- "luggage",
- "lumber",
- "lunar",
- "lunch",
- "luxury",
- "lyrics",
- "machine",
- "mad",
- "magic",
- "magnet",
- "maid",
- "mail",
- "main",
- "major",
- "make",
- "mammal",
- "man",
- "manage",
- "mandate",
- "mango",
- "mansion",
- "manual",
- "maple",
- "marble",
- "march",
- "margin",
- "marine",
- "market",
- "marriage",
- "mask",
- "mass",
- "master",
- "match",
- "material",
- "math",
- "matrix",
- "matter",
- "maximum",
- "maze",
- "meadow",
- "mean",
- "measure",
- "meat",
- "mechanic",
- "medal",
- "media",
- "melody",
- "melt",
- "member",
- "memory",
- "mention",
- "menu",
- "mercy",
- "merge",
- "merit",
- "merry",
- "mesh",
- "message",
- "metal",
- "method",
- "middle",
- "midnight",
- "milk",
- "million",
- "mimic",
- "mind",
- "minimum",
- "minor",
- "minute",
- "miracle",
- "mirror",
- "misery",
- "miss",
- "mistake",
- "mix",
- "mixed",
- "mixture",
- "mobile",
- "model",
- "modify",
- "mom",
- "moment",
- "monitor",
- "monkey",
- "monster",
- "month",
- "moon",
- "moral",
- "more",
- "morning",
- "mosquito",
- "mother",
- "motion",
- "motor",
- "mountain",
- "mouse",
- "move",
- "movie",
- "much",
- "muffin",
- "mule",
- "multiply",
- "muscle",
- "museum",
- "mushroom",
- "music",
- "must",
- "mutual",
- "myself",
- "mystery",
- "myth",
- "naive",
- "name",
- "napkin",
- "narrow",
- "nasty",
- "nation",
- "nature",
- "near",
- "neck",
- "need",
- "negative",
- "neglect",
- "neither",
- "nephew",
- "nerve",
- "nest",
- "net",
- "network",
- "neutral",
- "never",
- "news",
- "next",
- "nice",
- "night",
- "noble",
- "noise",
- "nominee",
- "noodle",
- "normal",
- "north",
- "nose",
- "notable",
- "note",
- "nothing",
- "notice",
- "novel",
- "now",
- "nuclear",
- "number",
- "nurse",
- "nut",
- "oak",
- "obey",
- "object",
- "oblige",
- "obscure",
- "observe",
- "obtain",
- "obvious",
- "occur",
- "ocean",
- "october",
- "odor",
- "off",
- "offer",
- "office",
- "often",
- "oil",
- "okay",
- "old",
- "olive",
- "olympic",
- "omit",
- "once",
- "one",
- "onion",
- "online",
- "only",
- "open",
- "opera",
- "opinion",
- "oppose",
- "option",
- "orange",
- "orbit",
- "orchard",
- "order",
- "ordinary",
- "organ",
- "orient",
- "original",
- "orphan",
- "ostrich",
- "other",
- "outdoor",
- "outer",
- "output",
- "outside",
- "oval",
- "oven",
- "over",
- "own",
- "owner",
- "oxygen",
- "oyster",
- "ozone",
- "pact",
- "paddle",
- "page",
- "pair",
- "palace",
- "palm",
- "panda",
- "panel",
- "panic",
- "panther",
- "paper",
- "parade",
- "parent",
- "park",
- "parrot",
- "party",
- "pass",
- "patch",
- "path",
- "patient",
- "patrol",
- "pattern",
- "pause",
- "pave",
- "payment",
- "peace",
- "peanut",
- "pear",
- "peasant",
- "pelican",
- "pen",
- "penalty",
- "pencil",
- "people",
- "pepper",
- "perfect",
- "permit",
- "person",
- "pet",
- "phone",
- "photo",
- "phrase",
- "physical",
- "piano",
- "picnic",
- "picture",
- "piece",
- "pig",
- "pigeon",
- "pill",
- "pilot",
- "pink",
- "pioneer",
- "pipe",
- "pistol",
- "pitch",
- "pizza",
- "place",
- "planet",
- "plastic",
- "plate",
- "play",
- "please",
- "pledge",
- "pluck",
- "plug",
- "plunge",
- "poem",
- "poet",
- "point",
- "polar",
- "pole",
- "police",
- "pond",
- "pony",
- "pool",
- "popular",
- "portion",
- "position",
- "possible",
- "post",
- "potato",
- "pottery",
- "poverty",
- "powder",
- "power",
- "practice",
- "praise",
- "predict",
- "prefer",
- "prepare",
- "present",
- "pretty",
- "prevent",
- "price",
- "pride",
- "primary",
- "print",
- "priority",
- "prison",
- "private",
- "prize",
- "problem",
- "process",
- "produce",
- "profit",
- "program",
- "project",
- "promote",
- "proof",
- "property",
- "prosper",
- "protect",
- "proud",
- "provide",
- "public",
- "pudding",
- "pull",
- "pulp",
- "pulse",
- "pumpkin",
- "punch",
- "pupil",
- "puppy",
- "purchase",
- "purity",
- "purpose",
- "purse",
- "push",
- "put",
- "puzzle",
- "pyramid",
- "quality",
- "quantum",
- "quarter",
- "question",
- "quick",
- "quit",
- "quiz",
- "quote",
- "rabbit",
- "raccoon",
- "race",
- "rack",
- "radar",
- "radio",
- "rail",
- "rain",
- "raise",
- "rally",
- "ramp",
- "ranch",
- "random",
- "range",
- "rapid",
- "rare",
- "rate",
- "rather",
- "raven",
- "raw",
- "razor",
- "ready",
- "real",
- "reason",
- "rebel",
- "rebuild",
- "recall",
- "receive",
- "recipe",
- "record",
- "recycle",
- "reduce",
- "reflect",
- "reform",
- "refuse",
- "region",
- "regret",
- "regular",
- "reject",
- "relax",
- "release",
- "relief",
- "rely",
- "remain",
- "remember",
- "remind",
- "remove",
- "render",
- "renew",
- "rent",
- "reopen",
- "repair",
- "repeat",
- "replace",
- "report",
- "require",
- "rescue",
- "resemble",
- "resist",
- "resource",
- "response",
- "result",
- "retire",
- "retreat",
- "return",
- "reunion",
- "reveal",
- "review",
- "reward",
- "rhythm",
- "rib",
- "ribbon",
- "rice",
- "rich",
- "ride",
- "ridge",
- "rifle",
- "right",
- "rigid",
- "ring",
- "riot",
- "ripple",
- "risk",
- "ritual",
- "rival",
- "river",
- "road",
- "roast",
- "robot",
- "robust",
- "rocket",
- "romance",
- "roof",
- "rookie",
- "room",
- "rose",
- "rotate",
- "rough",
- "round",
- "route",
- "royal",
- "rubber",
- "rude",
- "rug",
- "rule",
- "run",
- "runway",
- "rural",
- "sad",
- "saddle",
- "sadness",
- "safe",
- "sail",
- "salad",
- "salmon",
- "salon",
- "salt",
- "salute",
- "same",
- "sample",
- "sand",
- "satisfy",
- "satoshi",
- "sauce",
- "sausage",
- "save",
- "say",
- "scale",
- "scan",
- "scare",
- "scatter",
- "scene",
- "scheme",
- "school",
- "science",
- "scissors",
- "scorpion",
- "scout",
- "scrap",
- "screen",
- "script",
- "scrub",
- "sea",
- "search",
- "season",
- "seat",
- "second",
- "secret",
- "section",
- "security",
- "seed",
- "seek",
- "segment",
- "select",
- "sell",
- "seminar",
- "senior",
- "sense",
- "sentence",
- "series",
- "service",
- "session",
- "settle",
- "setup",
- "seven",
- "shadow",
- "shaft",
- "shallow",
- "share",
- "shed",
- "shell",
- "sheriff",
- "shield",
- "shift",
- "shine",
- "ship",
- "shiver",
- "shock",
- "shoe",
- "shoot",
- "shop",
- "short",
- "shoulder",
- "shove",
- "shrimp",
- "shrug",
- "shuffle",
- "shy",
- "sibling",
- "sick",
- "side",
- "siege",
- "sight",
- "sign",
- "silent",
- "silk",
- "silly",
- "silver",
- "similar",
- "simple",
- "since",
- "sing",
- "siren",
- "sister",
- "situate",
- "six",
- "size",
- "skate",
- "sketch",
- "ski",
- "skill",
- "skin",
- "skirt",
- "skull",
- "slab",
- "slam",
- "sleep",
- "slender",
- "slice",
- "slide",
- "slight",
- "slim",
- "slogan",
- "slot",
- "slow",
- "slush",
- "small",
- "smart",
- "smile",
- "smoke",
- "smooth",
- "snack",
- "snake",
- "snap",
- "sniff",
- "snow",
- "soap",
- "soccer",
- "social",
- "sock",
- "soda",
- "soft",
- "solar",
- "soldier",
- "solid",
- "solution",
- "solve",
- "someone",
- "song",
- "soon",
- "sorry",
- "sort",
- "soul",
- "sound",
- "soup",
- "source",
- "south",
- "space",
- "spare",
- "spatial",
- "spawn",
- "speak",
- "special",
- "speed",
- "spell",
- "spend",
- "sphere",
- "spice",
- "spider",
- "spike",
- "spin",
- "spirit",
- "split",
- "spoil",
- "sponsor",
- "spoon",
- "sport",
- "spot",
- "spray",
- "spread",
- "spring",
- "spy",
- "square",
- "squeeze",
- "squirrel",
- "stable",
- "stadium",
- "staff",
- "stage",
- "stairs",
- "stamp",
- "stand",
- "start",
- "state",
- "stay",
- "steak",
- "steel",
- "stem",
- "step",
- "stereo",
- "stick",
- "still",
- "sting",
- "stock",
- "stomach",
- "stone",
- "stool",
- "story",
- "stove",
- "strategy",
- "street",
- "strike",
- "strong",
- "struggle",
- "student",
- "stuff",
- "stumble",
- "style",
- "subject",
- "submit",
- "subway",
- "success",
- "such",
- "sudden",
- "suffer",
- "sugar",
- "suggest",
- "suit",
- "summer",
- "sun",
- "sunny",
- "sunset",
- "super",
- "supply",
- "supreme",
- "sure",
- "surface",
- "surge",
- "surprise",
- "surround",
- "survey",
- "suspect",
- "sustain",
- "swallow",
- "swamp",
- "swap",
- "swarm",
- "swear",
- "sweet",
- "swift",
- "swim",
- "swing",
- "switch",
- "sword",
- "symbol",
- "symptom",
- "syrup",
- "system",
- "table",
- "tackle",
- "tag",
- "tail",
- "talent",
- "talk",
- "tank",
- "tape",
- "target",
- "task",
- "taste",
- "tattoo",
- "taxi",
- "teach",
- "team",
- "tell",
- "ten",
- "tenant",
- "tennis",
- "tent",
- "term",
- "test",
- "text",
- "thank",
- "that",
- "theme",
- "then",
- "theory",
- "there",
- "they",
- "thing",
- "this",
- "thought",
- "three",
- "thrive",
- "throw",
- "thumb",
- "thunder",
- "ticket",
- "tide",
- "tiger",
- "tilt",
- "timber",
- "time",
- "tiny",
- "tip",
- "tired",
- "tissue",
- "title",
- "toast",
- "tobacco",
- "today",
- "toddler",
- "toe",
- "together",
- "toilet",
- "token",
- "tomato",
- "tomorrow",
- "tone",
- "tongue",
- "tonight",
- "tool",
- "tooth",
- "top",
- "topic",
- "topple",
- "torch",
- "tornado",
- "tortoise",
- "toss",
- "total",
- "tourist",
- "toward",
- "tower",
- "town",
- "toy",
- "track",
- "trade",
- "traffic",
- "tragic",
- "train",
- "transfer",
- "trap",
- "trash",
- "travel",
- "tray",
- "treat",
- "tree",
- "trend",
- "trial",
- "tribe",
- "trick",
- "trigger",
- "trim",
- "trip",
- "trophy",
- "trouble",
- "truck",
- "true",
- "truly",
- "trumpet",
- "trust",
- "truth",
- "try",
- "tube",
- "tuition",
- "tumble",
- "tuna",
- "tunnel",
- "turkey",
- "turn",
- "turtle",
- "twelve",
- "twenty",
- "twice",
- "twin",
- "twist",
- "two",
- "type",
- "typical",
- "ugly",
- "umbrella",
- "unable",
- "unaware",
- "uncle",
- "uncover",
- "under",
- "undo",
- "unfair",
- "unfold",
- "unhappy",
- "uniform",
- "unique",
- "unit",
- "universe",
- "unknown",
- "unlock",
- "until",
- "unusual",
- "unveil",
- "update",
- "upgrade",
- "uphold",
- "upon",
- "upper",
- "upset",
- "urban",
- "urge",
- "usage",
- "use",
- "used",
- "useful",
- "useless",
- "usual",
- "utility",
- "vacant",
- "vacuum",
- "vague",
- "valid",
- "valley",
- "valve",
- "van",
- "vanish",
- "vapor",
- "various",
- "vast",
- "vault",
- "vehicle",
- "velvet",
- "vendor",
- "venture",
- "venue",
- "verb",
- "verify",
- "version",
- "very",
- "vessel",
- "veteran",
- "viable",
- "vibrant",
- "vicious",
- "victory",
- "video",
- "view",
- "village",
- "vintage",
- "violin",
- "virtual",
- "virus",
- "visa",
- "visit",
- "visual",
- "vital",
- "vivid",
- "vocal",
- "voice",
- "void",
- "volcano",
- "volume",
- "vote",
- "voyage",
- "wage",
- "wagon",
- "wait",
- "walk",
- "wall",
- "walnut",
- "want",
- "warfare",
- "warm",
- "warrior",
- "wash",
- "wasp",
- "waste",
- "water",
- "wave",
- "way",
- "wealth",
- "weapon",
- "wear",
- "weasel",
- "weather",
- "web",
- "wedding",
- "weekend",
- "weird",
- "welcome",
- "west",
- "wet",
- "whale",
- "what",
- "wheat",
- "wheel",
- "when",
- "where",
- "whip",
- "whisper",
- "wide",
- "width",
- "wife",
- "wild",
- "will",
- "win",
- "window",
- "wine",
- "wing",
- "wink",
- "winner",
- "winter",
- "wire",
- "wisdom",
- "wise",
- "wish",
- "witness",
- "wolf",
- "woman",
- "wonder",
- "wood",
- "wool",
- "word",
- "work",
- "world",
- "worry",
- "worth",
- "wrap",
- "wreck",
- "wrestle",
- "wrist",
- "write",
- "wrong",
- "yard",
- "year",
- "yellow",
- "you",
- "young",
- "youth",
- "zebra",
- "zero",
- "zone",
- "zoo"
- );
- return word_list;
-}
-
-std::unordered_map<std::string, unsigned int>& word_map_english()
+namespace Language
{
- static std::unordered_map<std::string, unsigned int> word_map;
- if (word_map.size() > 0)
+ class English: public Base
{
- return word_map;
- }
- std::vector<std::string> word_list = word_list_english();
- int ii;
- std::vector<std::string>::iterator it;
- for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
- {
- word_map[*it] = ii;
- }
- return word_map;
-}
-
-std::unordered_map<std::string, unsigned int>& trimmed_word_map_english()
-{
- static std::unordered_map<std::string, unsigned int> trimmed_word_map;
- if (trimmed_word_map.size() > 0)
- {
- return trimmed_word_map;
- }
- std::vector<std::string> word_list = word_list_english();
- int ii;
- std::vector<std::string>::iterator it;
- for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
- {
- if (it->length() > 4)
+ public:
+ English()
{
- trimmed_word_map[it->substr(0, 4)] = ii;
+ word_list = new std::vector<std::string>({
+ "abandon",
+ "ability",
+ "able",
+ "about",
+ "above",
+ "absent",
+ "absorb",
+ "abstract",
+ "absurd",
+ "abuse",
+ "access",
+ "accident",
+ "account",
+ "accuse",
+ "achieve",
+ "acid",
+ "acoustic",
+ "acquire",
+ "across",
+ "act",
+ "action",
+ "actor",
+ "actress",
+ "actual",
+ "adapt",
+ "add",
+ "addict",
+ "address",
+ "adjust",
+ "admit",
+ "adult",
+ "advance",
+ "advice",
+ "aerobic",
+ "affair",
+ "afford",
+ "afraid",
+ "again",
+ "age",
+ "agent",
+ "agree",
+ "ahead",
+ "aim",
+ "air",
+ "airport",
+ "aisle",
+ "alarm",
+ "album",
+ "alcohol",
+ "alert",
+ "alien",
+ "all",
+ "alley",
+ "allow",
+ "almost",
+ "alone",
+ "alpha",
+ "already",
+ "also",
+ "alter",
+ "always",
+ "amateur",
+ "amazing",
+ "among",
+ "amount",
+ "amused",
+ "analyst",
+ "anchor",
+ "ancient",
+ "anger",
+ "angle",
+ "angry",
+ "animal",
+ "ankle",
+ "announce",
+ "annual",
+ "another",
+ "answer",
+ "antenna",
+ "antique",
+ "anxiety",
+ "any",
+ "apart",
+ "apology",
+ "appear",
+ "apple",
+ "approve",
+ "april",
+ "arch",
+ "arctic",
+ "area",
+ "arena",
+ "argue",
+ "arm",
+ "armed",
+ "armor",
+ "army",
+ "around",
+ "arrange",
+ "arrest",
+ "arrive",
+ "arrow",
+ "art",
+ "artefact",
+ "artist",
+ "artwork",
+ "ask",
+ "aspect",
+ "assault",
+ "asset",
+ "assist",
+ "assume",
+ "asthma",
+ "athlete",
+ "atom",
+ "attack",
+ "attend",
+ "attitude",
+ "attract",
+ "auction",
+ "audit",
+ "august",
+ "aunt",
+ "author",
+ "auto",
+ "autumn",
+ "average",
+ "avocado",
+ "avoid",
+ "awake",
+ "aware",
+ "away",
+ "awesome",
+ "awful",
+ "awkward",
+ "axis",
+ "baby",
+ "bachelor",
+ "bacon",
+ "badge",
+ "bag",
+ "balance",
+ "balcony",
+ "ball",
+ "bamboo",
+ "banana",
+ "banner",
+ "bar",
+ "barely",
+ "bargain",
+ "barrel",
+ "base",
+ "basic",
+ "basket",
+ "battle",
+ "beach",
+ "bean",
+ "beauty",
+ "because",
+ "become",
+ "beef",
+ "before",
+ "begin",
+ "behave",
+ "behind",
+ "believe",
+ "below",
+ "belt",
+ "bench",
+ "benefit",
+ "best",
+ "betray",
+ "better",
+ "between",
+ "beyond",
+ "bicycle",
+ "bid",
+ "bike",
+ "bind",
+ "biology",
+ "bird",
+ "birth",
+ "bitter",
+ "black",
+ "blade",
+ "blame",
+ "blanket",
+ "blast",
+ "bleak",
+ "bless",
+ "blind",
+ "blood",
+ "blossom",
+ "blouse",
+ "blue",
+ "blur",
+ "blush",
+ "board",
+ "boat",
+ "body",
+ "boil",
+ "bomb",
+ "bone",
+ "bonus",
+ "book",
+ "boost",
+ "border",
+ "boring",
+ "borrow",
+ "boss",
+ "bottom",
+ "bounce",
+ "box",
+ "boy",
+ "bracket",
+ "brain",
+ "brand",
+ "brass",
+ "brave",
+ "bread",
+ "breeze",
+ "brick",
+ "bridge",
+ "brief",
+ "bright",
+ "bring",
+ "brisk",
+ "broccoli",
+ "broken",
+ "bronze",
+ "broom",
+ "brother",
+ "brown",
+ "brush",
+ "bubble",
+ "buddy",
+ "budget",
+ "buffalo",
+ "build",
+ "bulb",
+ "bulk",
+ "bullet",
+ "bundle",
+ "bunker",
+ "burden",
+ "burger",
+ "burst",
+ "bus",
+ "business",
+ "busy",
+ "butter",
+ "buyer",
+ "buzz",
+ "cabbage",
+ "cabin",
+ "cable",
+ "cactus",
+ "cage",
+ "cake",
+ "call",
+ "calm",
+ "camera",
+ "camp",
+ "can",
+ "canal",
+ "cancel",
+ "candy",
+ "cannon",
+ "canoe",
+ "canvas",
+ "canyon",
+ "capable",
+ "capital",
+ "captain",
+ "car",
+ "carbon",
+ "card",
+ "cargo",
+ "carpet",
+ "carry",
+ "cart",
+ "case",
+ "cash",
+ "casino",
+ "castle",
+ "casual",
+ "cat",
+ "catalog",
+ "catch",
+ "category",
+ "cattle",
+ "caught",
+ "cause",
+ "caution",
+ "cave",
+ "ceiling",
+ "celery",
+ "cement",
+ "census",
+ "century",
+ "cereal",
+ "certain",
+ "chair",
+ "chalk",
+ "champion",
+ "change",
+ "chaos",
+ "chapter",
+ "charge",
+ "chase",
+ "chat",
+ "cheap",
+ "check",
+ "cheese",
+ "chef",
+ "cherry",
+ "chest",
+ "chicken",
+ "chief",
+ "child",
+ "chimney",
+ "choice",
+ "choose",
+ "chronic",
+ "chuckle",
+ "chunk",
+ "churn",
+ "cigar",
+ "cinnamon",
+ "circle",
+ "citizen",
+ "city",
+ "civil",
+ "claim",
+ "clap",
+ "clarify",
+ "claw",
+ "clay",
+ "clean",
+ "clerk",
+ "clever",
+ "click",
+ "client",
+ "cliff",
+ "climb",
+ "clinic",
+ "clip",
+ "clock",
+ "clog",
+ "close",
+ "cloth",
+ "cloud",
+ "clown",
+ "club",
+ "clump",
+ "cluster",
+ "clutch",
+ "coach",
+ "coast",
+ "coconut",
+ "code",
+ "coffee",
+ "coil",
+ "coin",
+ "collect",
+ "color",
+ "column",
+ "combine",
+ "come",
+ "comfort",
+ "comic",
+ "common",
+ "company",
+ "concert",
+ "conduct",
+ "confirm",
+ "congress",
+ "connect",
+ "consider",
+ "control",
+ "convince",
+ "cook",
+ "cool",
+ "copper",
+ "copy",
+ "coral",
+ "core",
+ "corn",
+ "correct",
+ "cost",
+ "cotton",
+ "couch",
+ "country",
+ "couple",
+ "course",
+ "cousin",
+ "cover",
+ "coyote",
+ "crack",
+ "cradle",
+ "craft",
+ "cram",
+ "crane",
+ "crash",
+ "crater",
+ "crawl",
+ "crazy",
+ "cream",
+ "credit",
+ "creek",
+ "crew",
+ "cricket",
+ "crime",
+ "crisp",
+ "critic",
+ "crop",
+ "cross",
+ "crouch",
+ "crowd",
+ "crucial",
+ "cruel",
+ "cruise",
+ "crumble",
+ "crunch",
+ "crush",
+ "cry",
+ "crystal",
+ "cube",
+ "culture",
+ "cup",
+ "cupboard",
+ "curious",
+ "current",
+ "curtain",
+ "curve",
+ "cushion",
+ "custom",
+ "cute",
+ "cycle",
+ "dad",
+ "damage",
+ "damp",
+ "dance",
+ "danger",
+ "daring",
+ "dash",
+ "daughter",
+ "dawn",
+ "day",
+ "deal",
+ "debate",
+ "debris",
+ "decade",
+ "december",
+ "decide",
+ "decline",
+ "decorate",
+ "decrease",
+ "deer",
+ "defense",
+ "define",
+ "defy",
+ "degree",
+ "delay",
+ "deliver",
+ "demand",
+ "demise",
+ "denial",
+ "dentist",
+ "deny",
+ "depart",
+ "depend",
+ "deposit",
+ "depth",
+ "deputy",
+ "derive",
+ "describe",
+ "desert",
+ "design",
+ "desk",
+ "despair",
+ "destroy",
+ "detail",
+ "detect",
+ "develop",
+ "device",
+ "devote",
+ "diagram",
+ "dial",
+ "diamond",
+ "diary",
+ "dice",
+ "diesel",
+ "diet",
+ "differ",
+ "digital",
+ "dignity",
+ "dilemma",
+ "dinner",
+ "dinosaur",
+ "direct",
+ "dirt",
+ "disagree",
+ "discover",
+ "disease",
+ "dish",
+ "dismiss",
+ "disorder",
+ "display",
+ "distance",
+ "divert",
+ "divide",
+ "divorce",
+ "dizzy",
+ "doctor",
+ "document",
+ "dog",
+ "doll",
+ "dolphin",
+ "domain",
+ "donate",
+ "donkey",
+ "donor",
+ "door",
+ "dose",
+ "double",
+ "dove",
+ "draft",
+ "dragon",
+ "drama",
+ "drastic",
+ "draw",
+ "dream",
+ "dress",
+ "drift",
+ "drill",
+ "drink",
+ "drip",
+ "drive",
+ "drop",
+ "drum",
+ "dry",
+ "duck",
+ "dumb",
+ "dune",
+ "during",
+ "dust",
+ "dutch",
+ "duty",
+ "dwarf",
+ "dynamic",
+ "eager",
+ "eagle",
+ "early",
+ "earn",
+ "earth",
+ "easily",
+ "east",
+ "easy",
+ "echo",
+ "ecology",
+ "economy",
+ "edge",
+ "edit",
+ "educate",
+ "effort",
+ "egg",
+ "eight",
+ "either",
+ "elbow",
+ "elder",
+ "electric",
+ "elegant",
+ "element",
+ "elephant",
+ "elevator",
+ "elite",
+ "else",
+ "embark",
+ "embody",
+ "embrace",
+ "emerge",
+ "emotion",
+ "employ",
+ "empower",
+ "empty",
+ "enable",
+ "enact",
+ "end",
+ "endless",
+ "endorse",
+ "enemy",
+ "energy",
+ "enforce",
+ "engage",
+ "engine",
+ "enhance",
+ "enjoy",
+ "enlist",
+ "enough",
+ "enrich",
+ "enroll",
+ "ensure",
+ "enter",
+ "entire",
+ "entry",
+ "envelope",
+ "episode",
+ "equal",
+ "equip",
+ "era",
+ "erase",
+ "erode",
+ "erosion",
+ "error",
+ "erupt",
+ "escape",
+ "essay",
+ "essence",
+ "estate",
+ "eternal",
+ "ethics",
+ "evidence",
+ "evil",
+ "evoke",
+ "evolve",
+ "exact",
+ "example",
+ "excess",
+ "exchange",
+ "excite",
+ "exclude",
+ "excuse",
+ "execute",
+ "exercise",
+ "exhaust",
+ "exhibit",
+ "exile",
+ "exist",
+ "exit",
+ "exotic",
+ "expand",
+ "expect",
+ "expire",
+ "explain",
+ "expose",
+ "express",
+ "extend",
+ "extra",
+ "eye",
+ "eyebrow",
+ "fabric",
+ "face",
+ "faculty",
+ "fade",
+ "faint",
+ "faith",
+ "fall",
+ "false",
+ "fame",
+ "family",
+ "famous",
+ "fan",
+ "fancy",
+ "fantasy",
+ "farm",
+ "fashion",
+ "fat",
+ "fatal",
+ "father",
+ "fatigue",
+ "fault",
+ "favorite",
+ "feature",
+ "february",
+ "federal",
+ "fee",
+ "feed",
+ "feel",
+ "female",
+ "fence",
+ "festival",
+ "fetch",
+ "fever",
+ "few",
+ "fiber",
+ "fiction",
+ "field",
+ "figure",
+ "file",
+ "film",
+ "filter",
+ "final",
+ "find",
+ "fine",
+ "finger",
+ "finish",
+ "fire",
+ "firm",
+ "first",
+ "fiscal",
+ "fish",
+ "fit",
+ "fitness",
+ "fix",
+ "flag",
+ "flame",
+ "flash",
+ "flat",
+ "flavor",
+ "flee",
+ "flight",
+ "flip",
+ "float",
+ "flock",
+ "floor",
+ "flower",
+ "fluid",
+ "flush",
+ "fly",
+ "foam",
+ "focus",
+ "fog",
+ "foil",
+ "fold",
+ "follow",
+ "food",
+ "foot",
+ "force",
+ "forest",
+ "forget",
+ "fork",
+ "fortune",
+ "forum",
+ "forward",
+ "fossil",
+ "foster",
+ "found",
+ "fox",
+ "fragile",
+ "frame",
+ "frequent",
+ "fresh",
+ "friend",
+ "fringe",
+ "frog",
+ "front",
+ "frost",
+ "frown",
+ "frozen",
+ "fruit",
+ "fuel",
+ "fun",
+ "funny",
+ "furnace",
+ "fury",
+ "future",
+ "gadget",
+ "gain",
+ "galaxy",
+ "gallery",
+ "game",
+ "gap",
+ "garage",
+ "garbage",
+ "garden",
+ "garlic",
+ "garment",
+ "gas",
+ "gasp",
+ "gate",
+ "gather",
+ "gauge",
+ "gaze",
+ "general",
+ "genius",
+ "genre",
+ "gentle",
+ "genuine",
+ "gesture",
+ "ghost",
+ "giant",
+ "gift",
+ "giggle",
+ "ginger",
+ "giraffe",
+ "girl",
+ "give",
+ "glad",
+ "glance",
+ "glare",
+ "glass",
+ "glide",
+ "glimpse",
+ "globe",
+ "gloom",
+ "glory",
+ "glove",
+ "glow",
+ "glue",
+ "goat",
+ "goddess",
+ "gold",
+ "good",
+ "goose",
+ "gorilla",
+ "gospel",
+ "gossip",
+ "govern",
+ "gown",
+ "grab",
+ "grace",
+ "grain",
+ "grant",
+ "grape",
+ "grass",
+ "gravity",
+ "great",
+ "green",
+ "grid",
+ "grief",
+ "grit",
+ "grocery",
+ "group",
+ "grow",
+ "grunt",
+ "guard",
+ "guess",
+ "guide",
+ "guilt",
+ "guitar",
+ "gun",
+ "gym",
+ "habit",
+ "hair",
+ "half",
+ "hammer",
+ "hamster",
+ "hand",
+ "happy",
+ "harbor",
+ "hard",
+ "harsh",
+ "harvest",
+ "hat",
+ "have",
+ "hawk",
+ "hazard",
+ "head",
+ "health",
+ "heart",
+ "heavy",
+ "hedgehog",
+ "height",
+ "hello",
+ "helmet",
+ "help",
+ "hen",
+ "hero",
+ "hidden",
+ "high",
+ "hill",
+ "hint",
+ "hip",
+ "hire",
+ "history",
+ "hobby",
+ "hockey",
+ "hold",
+ "hole",
+ "holiday",
+ "hollow",
+ "home",
+ "honey",
+ "hood",
+ "hope",
+ "horn",
+ "horror",
+ "horse",
+ "hospital",
+ "host",
+ "hotel",
+ "hour",
+ "hover",
+ "hub",
+ "huge",
+ "human",
+ "humble",
+ "humor",
+ "hundred",
+ "hungry",
+ "hunt",
+ "hurdle",
+ "hurry",
+ "hurt",
+ "husband",
+ "hybrid",
+ "ice",
+ "icon",
+ "idea",
+ "identify",
+ "idle",
+ "ignore",
+ "ill",
+ "illegal",
+ "illness",
+ "image",
+ "imitate",
+ "immense",
+ "immune",
+ "impact",
+ "impose",
+ "improve",
+ "impulse",
+ "inch",
+ "include",
+ "income",
+ "increase",
+ "index",
+ "indicate",
+ "indoor",
+ "industry",
+ "infant",
+ "inflict",
+ "inform",
+ "inhale",
+ "inherit",
+ "initial",
+ "inject",
+ "injury",
+ "inmate",
+ "inner",
+ "innocent",
+ "input",
+ "inquiry",
+ "insane",
+ "insect",
+ "inside",
+ "inspire",
+ "install",
+ "intact",
+ "interest",
+ "into",
+ "invest",
+ "invite",
+ "involve",
+ "iron",
+ "island",
+ "isolate",
+ "issue",
+ "item",
+ "ivory",
+ "jacket",
+ "jaguar",
+ "jar",
+ "jazz",
+ "jealous",
+ "jeans",
+ "jelly",
+ "jewel",
+ "job",
+ "join",
+ "joke",
+ "journey",
+ "joy",
+ "judge",
+ "juice",
+ "jump",
+ "jungle",
+ "junior",
+ "junk",
+ "just",
+ "kangaroo",
+ "keen",
+ "keep",
+ "ketchup",
+ "key",
+ "kick",
+ "kid",
+ "kidney",
+ "kind",
+ "kingdom",
+ "kiss",
+ "kit",
+ "kitchen",
+ "kite",
+ "kitten",
+ "kiwi",
+ "knee",
+ "knife",
+ "knock",
+ "know",
+ "lab",
+ "label",
+ "labor",
+ "ladder",
+ "lady",
+ "lake",
+ "lamp",
+ "language",
+ "laptop",
+ "large",
+ "later",
+ "latin",
+ "laugh",
+ "laundry",
+ "lava",
+ "law",
+ "lawn",
+ "lawsuit",
+ "layer",
+ "lazy",
+ "leader",
+ "leaf",
+ "learn",
+ "leave",
+ "lecture",
+ "left",
+ "leg",
+ "legal",
+ "legend",
+ "leisure",
+ "lemon",
+ "lend",
+ "length",
+ "lens",
+ "leopard",
+ "lesson",
+ "letter",
+ "level",
+ "liar",
+ "liberty",
+ "library",
+ "license",
+ "life",
+ "lift",
+ "light",
+ "like",
+ "limb",
+ "limit",
+ "link",
+ "lion",
+ "liquid",
+ "list",
+ "little",
+ "live",
+ "lizard",
+ "load",
+ "loan",
+ "lobster",
+ "local",
+ "lock",
+ "logic",
+ "lonely",
+ "long",
+ "loop",
+ "lottery",
+ "loud",
+ "lounge",
+ "love",
+ "loyal",
+ "lucky",
+ "luggage",
+ "lumber",
+ "lunar",
+ "lunch",
+ "luxury",
+ "lyrics",
+ "machine",
+ "mad",
+ "magic",
+ "magnet",
+ "maid",
+ "mail",
+ "main",
+ "major",
+ "make",
+ "mammal",
+ "man",
+ "manage",
+ "mandate",
+ "mango",
+ "mansion",
+ "manual",
+ "maple",
+ "marble",
+ "march",
+ "margin",
+ "marine",
+ "market",
+ "marriage",
+ "mask",
+ "mass",
+ "master",
+ "match",
+ "material",
+ "math",
+ "matrix",
+ "matter",
+ "maximum",
+ "maze",
+ "meadow",
+ "mean",
+ "measure",
+ "meat",
+ "mechanic",
+ "medal",
+ "media",
+ "melody",
+ "melt",
+ "member",
+ "memory",
+ "mention",
+ "menu",
+ "mercy",
+ "merge",
+ "merit",
+ "merry",
+ "mesh",
+ "message",
+ "metal",
+ "method",
+ "middle",
+ "midnight",
+ "milk",
+ "million",
+ "mimic",
+ "mind",
+ "minimum",
+ "minor",
+ "minute",
+ "miracle",
+ "mirror",
+ "misery",
+ "miss",
+ "mistake",
+ "mix",
+ "mixed",
+ "mixture",
+ "mobile",
+ "model",
+ "modify",
+ "mom",
+ "moment",
+ "monitor",
+ "monkey",
+ "monster",
+ "month",
+ "moon",
+ "moral",
+ "more",
+ "morning",
+ "mosquito",
+ "mother",
+ "motion",
+ "motor",
+ "mountain",
+ "mouse",
+ "move",
+ "movie",
+ "much",
+ "muffin",
+ "mule",
+ "multiply",
+ "muscle",
+ "museum",
+ "mushroom",
+ "music",
+ "must",
+ "mutual",
+ "myself",
+ "mystery",
+ "myth",
+ "naive",
+ "name",
+ "napkin",
+ "narrow",
+ "nasty",
+ "nation",
+ "nature",
+ "near",
+ "neck",
+ "need",
+ "negative",
+ "neglect",
+ "neither",
+ "nephew",
+ "nerve",
+ "nest",
+ "net",
+ "network",
+ "neutral",
+ "never",
+ "news",
+ "next",
+ "nice",
+ "night",
+ "noble",
+ "noise",
+ "nominee",
+ "noodle",
+ "normal",
+ "north",
+ "nose",
+ "notable",
+ "note",
+ "nothing",
+ "notice",
+ "novel",
+ "now",
+ "nuclear",
+ "number",
+ "nurse",
+ "nut",
+ "oak",
+ "obey",
+ "object",
+ "oblige",
+ "obscure",
+ "observe",
+ "obtain",
+ "obvious",
+ "occur",
+ "ocean",
+ "october",
+ "odor",
+ "off",
+ "offer",
+ "office",
+ "often",
+ "oil",
+ "okay",
+ "old",
+ "olive",
+ "olympic",
+ "omit",
+ "once",
+ "one",
+ "onion",
+ "online",
+ "only",
+ "open",
+ "opera",
+ "opinion",
+ "oppose",
+ "option",
+ "orange",
+ "orbit",
+ "orchard",
+ "order",
+ "ordinary",
+ "organ",
+ "orient",
+ "original",
+ "orphan",
+ "ostrich",
+ "other",
+ "outdoor",
+ "outer",
+ "output",
+ "outside",
+ "oval",
+ "oven",
+ "over",
+ "own",
+ "owner",
+ "oxygen",
+ "oyster",
+ "ozone",
+ "pact",
+ "paddle",
+ "page",
+ "pair",
+ "palace",
+ "palm",
+ "panda",
+ "panel",
+ "panic",
+ "panther",
+ "paper",
+ "parade",
+ "parent",
+ "park",
+ "parrot",
+ "party",
+ "pass",
+ "patch",
+ "path",
+ "patient",
+ "patrol",
+ "pattern",
+ "pause",
+ "pave",
+ "payment",
+ "peace",
+ "peanut",
+ "pear",
+ "peasant",
+ "pelican",
+ "pen",
+ "penalty",
+ "pencil",
+ "people",
+ "pepper",
+ "perfect",
+ "permit",
+ "person",
+ "pet",
+ "phone",
+ "photo",
+ "phrase",
+ "physical",
+ "piano",
+ "picnic",
+ "picture",
+ "piece",
+ "pig",
+ "pigeon",
+ "pill",
+ "pilot",
+ "pink",
+ "pioneer",
+ "pipe",
+ "pistol",
+ "pitch",
+ "pizza",
+ "place",
+ "planet",
+ "plastic",
+ "plate",
+ "play",
+ "please",
+ "pledge",
+ "pluck",
+ "plug",
+ "plunge",
+ "poem",
+ "poet",
+ "point",
+ "polar",
+ "pole",
+ "police",
+ "pond",
+ "pony",
+ "pool",
+ "popular",
+ "portion",
+ "position",
+ "possible",
+ "post",
+ "potato",
+ "pottery",
+ "poverty",
+ "powder",
+ "power",
+ "practice",
+ "praise",
+ "predict",
+ "prefer",
+ "prepare",
+ "present",
+ "pretty",
+ "prevent",
+ "price",
+ "pride",
+ "primary",
+ "print",
+ "priority",
+ "prison",
+ "private",
+ "prize",
+ "problem",
+ "process",
+ "produce",
+ "profit",
+ "program",
+ "project",
+ "promote",
+ "proof",
+ "property",
+ "prosper",
+ "protect",
+ "proud",
+ "provide",
+ "public",
+ "pudding",
+ "pull",
+ "pulp",
+ "pulse",
+ "pumpkin",
+ "punch",
+ "pupil",
+ "puppy",
+ "purchase",
+ "purity",
+ "purpose",
+ "purse",
+ "push",
+ "put",
+ "puzzle",
+ "pyramid",
+ "quality",
+ "quantum",
+ "quarter",
+ "question",
+ "quick",
+ "quit",
+ "quiz",
+ "quote",
+ "rabbit",
+ "raccoon",
+ "race",
+ "rack",
+ "radar",
+ "radio",
+ "rail",
+ "rain",
+ "raise",
+ "rally",
+ "ramp",
+ "ranch",
+ "random",
+ "range",
+ "rapid",
+ "rare",
+ "rate",
+ "rather",
+ "raven",
+ "raw",
+ "razor",
+ "ready",
+ "real",
+ "reason",
+ "rebel",
+ "rebuild",
+ "recall",
+ "receive",
+ "recipe",
+ "record",
+ "recycle",
+ "reduce",
+ "reflect",
+ "reform",
+ "refuse",
+ "region",
+ "regret",
+ "regular",
+ "reject",
+ "relax",
+ "release",
+ "relief",
+ "rely",
+ "remain",
+ "remember",
+ "remind",
+ "remove",
+ "render",
+ "renew",
+ "rent",
+ "reopen",
+ "repair",
+ "repeat",
+ "replace",
+ "report",
+ "require",
+ "rescue",
+ "resemble",
+ "resist",
+ "resource",
+ "response",
+ "result",
+ "retire",
+ "retreat",
+ "return",
+ "reunion",
+ "reveal",
+ "review",
+ "reward",
+ "rhythm",
+ "rib",
+ "ribbon",
+ "rice",
+ "rich",
+ "ride",
+ "ridge",
+ "rifle",
+ "right",
+ "rigid",
+ "ring",
+ "riot",
+ "ripple",
+ "risk",
+ "ritual",
+ "rival",
+ "river",
+ "road",
+ "roast",
+ "robot",
+ "robust",
+ "rocket",
+ "romance",
+ "roof",
+ "rookie",
+ "room",
+ "rose",
+ "rotate",
+ "rough",
+ "round",
+ "route",
+ "royal",
+ "rubber",
+ "rude",
+ "rug",
+ "rule",
+ "run",
+ "runway",
+ "rural",
+ "sad",
+ "saddle",
+ "sadness",
+ "safe",
+ "sail",
+ "salad",
+ "salmon",
+ "salon",
+ "salt",
+ "salute",
+ "same",
+ "sample",
+ "sand",
+ "satisfy",
+ "satoshi",
+ "sauce",
+ "sausage",
+ "save",
+ "say",
+ "scale",
+ "scan",
+ "scare",
+ "scatter",
+ "scene",
+ "scheme",
+ "school",
+ "science",
+ "scissors",
+ "scorpion",
+ "scout",
+ "scrap",
+ "screen",
+ "script",
+ "scrub",
+ "sea",
+ "search",
+ "season",
+ "seat",
+ "second",
+ "secret",
+ "section",
+ "security",
+ "seed",
+ "seek",
+ "segment",
+ "select",
+ "sell",
+ "seminar",
+ "senior",
+ "sense",
+ "sentence",
+ "series",
+ "service",
+ "session",
+ "settle",
+ "setup",
+ "seven",
+ "shadow",
+ "shaft",
+ "shallow",
+ "share",
+ "shed",
+ "shell",
+ "sheriff",
+ "shield",
+ "shift",
+ "shine",
+ "ship",
+ "shiver",
+ "shock",
+ "shoe",
+ "shoot",
+ "shop",
+ "short",
+ "shoulder",
+ "shove",
+ "shrimp",
+ "shrug",
+ "shuffle",
+ "shy",
+ "sibling",
+ "sick",
+ "side",
+ "siege",
+ "sight",
+ "sign",
+ "silent",
+ "silk",
+ "silly",
+ "silver",
+ "similar",
+ "simple",
+ "since",
+ "sing",
+ "siren",
+ "sister",
+ "situate",
+ "six",
+ "size",
+ "skate",
+ "sketch",
+ "ski",
+ "skill",
+ "skin",
+ "skirt",
+ "skull",
+ "slab",
+ "slam",
+ "sleep",
+ "slender",
+ "slice",
+ "slide",
+ "slight",
+ "slim",
+ "slogan",
+ "slot",
+ "slow",
+ "slush",
+ "small",
+ "smart",
+ "smile",
+ "smoke",
+ "smooth",
+ "snack",
+ "snake",
+ "snap",
+ "sniff",
+ "snow",
+ "soap",
+ "soccer",
+ "social",
+ "sock",
+ "soda",
+ "soft",
+ "solar",
+ "soldier",
+ "solid",
+ "solution",
+ "solve",
+ "someone",
+ "song",
+ "soon",
+ "sorry",
+ "sort",
+ "soul",
+ "sound",
+ "soup",
+ "source",
+ "south",
+ "space",
+ "spare",
+ "spatial",
+ "spawn",
+ "speak",
+ "special",
+ "speed",
+ "spell",
+ "spend",
+ "sphere",
+ "spice",
+ "spider",
+ "spike",
+ "spin",
+ "spirit",
+ "split",
+ "spoil",
+ "sponsor",
+ "spoon",
+ "sport",
+ "spot",
+ "spray",
+ "spread",
+ "spring",
+ "spy",
+ "square",
+ "squeeze",
+ "squirrel",
+ "stable",
+ "stadium",
+ "staff",
+ "stage",
+ "stairs",
+ "stamp",
+ "stand",
+ "start",
+ "state",
+ "stay",
+ "steak",
+ "steel",
+ "stem",
+ "step",
+ "stereo",
+ "stick",
+ "still",
+ "sting",
+ "stock",
+ "stomach",
+ "stone",
+ "stool",
+ "story",
+ "stove",
+ "strategy",
+ "street",
+ "strike",
+ "strong",
+ "struggle",
+ "student",
+ "stuff",
+ "stumble",
+ "style",
+ "subject",
+ "submit",
+ "subway",
+ "success",
+ "such",
+ "sudden",
+ "suffer",
+ "sugar",
+ "suggest",
+ "suit",
+ "summer",
+ "sun",
+ "sunny",
+ "sunset",
+ "super",
+ "supply",
+ "supreme",
+ "sure",
+ "surface",
+ "surge",
+ "surprise",
+ "surround",
+ "survey",
+ "suspect",
+ "sustain",
+ "swallow",
+ "swamp",
+ "swap",
+ "swarm",
+ "swear",
+ "sweet",
+ "swift",
+ "swim",
+ "swing",
+ "switch",
+ "sword",
+ "symbol",
+ "symptom",
+ "syrup",
+ "system",
+ "table",
+ "tackle",
+ "tag",
+ "tail",
+ "talent",
+ "talk",
+ "tank",
+ "tape",
+ "target",
+ "task",
+ "taste",
+ "tattoo",
+ "taxi",
+ "teach",
+ "team",
+ "tell",
+ "ten",
+ "tenant",
+ "tennis",
+ "tent",
+ "term",
+ "test",
+ "text",
+ "thank",
+ "that",
+ "theme",
+ "then",
+ "theory",
+ "there",
+ "they",
+ "thing",
+ "this",
+ "thought",
+ "three",
+ "thrive",
+ "throw",
+ "thumb",
+ "thunder",
+ "ticket",
+ "tide",
+ "tiger",
+ "tilt",
+ "timber",
+ "time",
+ "tiny",
+ "tip",
+ "tired",
+ "tissue",
+ "title",
+ "toast",
+ "tobacco",
+ "today",
+ "toddler",
+ "toe",
+ "together",
+ "toilet",
+ "token",
+ "tomato",
+ "tomorrow",
+ "tone",
+ "tongue",
+ "tonight",
+ "tool",
+ "tooth",
+ "top",
+ "topic",
+ "topple",
+ "torch",
+ "tornado",
+ "tortoise",
+ "toss",
+ "total",
+ "tourist",
+ "toward",
+ "tower",
+ "town",
+ "toy",
+ "track",
+ "trade",
+ "traffic",
+ "tragic",
+ "train",
+ "transfer",
+ "trap",
+ "trash",
+ "travel",
+ "tray",
+ "treat",
+ "tree",
+ "trend",
+ "trial",
+ "tribe",
+ "trick",
+ "trigger",
+ "trim",
+ "trip",
+ "trophy",
+ "trouble",
+ "truck",
+ "true",
+ "truly",
+ "trumpet",
+ "trust",
+ "truth",
+ "try",
+ "tube",
+ "tuition",
+ "tumble",
+ "tuna",
+ "tunnel",
+ "turkey",
+ "turn",
+ "turtle",
+ "twelve",
+ "twenty",
+ "twice",
+ "twin",
+ "twist",
+ "two",
+ "type",
+ "typical",
+ "ugly",
+ "umbrella",
+ "unable",
+ "unaware",
+ "uncle",
+ "uncover",
+ "under",
+ "undo",
+ "unfair",
+ "unfold",
+ "unhappy",
+ "uniform",
+ "unique",
+ "unit",
+ "universe",
+ "unknown",
+ "unlock",
+ "until",
+ "unusual",
+ "unveil",
+ "update",
+ "upgrade",
+ "uphold",
+ "upon",
+ "upper",
+ "upset",
+ "urban",
+ "urge",
+ "usage",
+ "use",
+ "used",
+ "useful",
+ "useless",
+ "usual",
+ "utility",
+ "vacant",
+ "vacuum",
+ "vague",
+ "valid",
+ "valley",
+ "valve",
+ "van",
+ "vanish",
+ "vapor",
+ "various",
+ "vast",
+ "vault",
+ "vehicle",
+ "velvet",
+ "vendor",
+ "venture",
+ "venue",
+ "verb",
+ "verify",
+ "version",
+ "very",
+ "vessel",
+ "veteran",
+ "viable",
+ "vibrant",
+ "vicious",
+ "victory",
+ "video",
+ "view",
+ "village",
+ "vintage",
+ "violin",
+ "virtual",
+ "virus",
+ "visa",
+ "visit",
+ "visual",
+ "vital",
+ "vivid",
+ "vocal",
+ "voice",
+ "void",
+ "volcano",
+ "volume",
+ "vote",
+ "voyage",
+ "wage",
+ "wagon",
+ "wait",
+ "walk",
+ "wall",
+ "walnut",
+ "want",
+ "warfare",
+ "warm",
+ "warrior",
+ "wash",
+ "wasp",
+ "waste",
+ "water",
+ "wave",
+ "way",
+ "wealth",
+ "weapon",
+ "wear",
+ "weasel",
+ "weather",
+ "web",
+ "wedding",
+ "weekend",
+ "weird",
+ "welcome",
+ "west",
+ "wet",
+ "whale",
+ "what",
+ "wheat",
+ "wheel",
+ "when",
+ "where",
+ "whip",
+ "whisper",
+ "wide",
+ "width",
+ "wife",
+ "wild",
+ "will",
+ "win",
+ "window",
+ "wine",
+ "wing",
+ "wink",
+ "winner",
+ "winter",
+ "wire",
+ "wisdom",
+ "wise",
+ "wish",
+ "witness",
+ "wolf",
+ "woman",
+ "wonder",
+ "wood",
+ "wool",
+ "word",
+ "work",
+ "world",
+ "worry",
+ "worth",
+ "wrap",
+ "wreck",
+ "wrestle",
+ "wrist",
+ "write",
+ "wrong",
+ "yard",
+ "year",
+ "yellow",
+ "you",
+ "young",
+ "youth",
+ "zebra",
+ "zero",
+ "zone",
+ "zoo"
+ });
+ word_map = new std::unordered_map<std::string, uint32_t>;
+ trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
+ language_name = "English";
+ populate_maps();
}
- else
- {
- trimmed_word_map[*it] = ii;
- }
- }
- return trimmed_word_map;
+ };
}
+
+#endif
diff --git a/src/mnemonics/japanese.h b/src/mnemonics/japanese.h
index 47476e849..cfbbce787 100644
--- a/src/mnemonics/japanese.h
+++ b/src/mnemonics/japanese.h
@@ -1,2098 +1,2074 @@
+#ifndef JAPANESE_H
+#define JAPANESE_H
+
#include <vector>
#include <unordered_map>
+#include "language_base.h"
+#include <string>
-std::vector<std::string>& word_list_japanese()
-{
- static std::vector<std::string> word_list(
- "あい",
- "あいこくしん",
- "あう",
- "あお",
- "あおぞら",
- "あか",
- "あかちゃん",
- "あき",
- "あきる",
- "あく",
- "あさ",
- "あさひ",
- "あし",
- "あずき",
- "あせ",
- "あそぶ",
- "あたる",
- "あつい",
- "あな",
- "あに",
- "あね",
- "あひる",
- "あまい",
- "あみ",
- "あめ",
- "あめりか",
- "あやまる",
- "あゆむ",
- "あらいぐま",
- "あらし",
- "あり",
- "ある",
- "あれ",
- "あわ",
- "あんこ",
- "いう",
- "いえ",
- "いおん",
- "いか",
- "いがい",
- "いかいよう",
- "いけ",
- "いけん",
- "いこく",
- "いこつ",
- "いさん",
- "いし",
- "いじゅう",
- "いす",
- "いせい",
- "いせえび",
- "いせかい",
- "いせき",
- "いそうろう",
- "いそがしい",
- "いたりあ",
- "いてざ",
- "いてん",
- "いと",
- "いない",
- "いなか",
- "いぬ",
- "いね",
- "いのち",
- "いのる",
- "いはつ",
- "いはん",
- "いびき",
- "いひん",
- "いふく",
- "いへん",
- "いほう",
- "いま",
- "いみ",
- "いみん",
- "いも",
- "いもうと",
- "いもたれ",
- "いもり",
- "いや",
- "いやす",
- "いよかん",
- "いよく",
- "いらい",
- "いらすと",
- "いりぐち",
- "いりょう",
- "いりょうひ",
- "いる",
- "いれい",
- "いれもの",
- "いれる",
- "いろ",
- "いろえんぴつ",
- "いわ",
- "いわう",
- "いわかん",
- "いんげんまめ",
- "うえ",
- "うおざ",
- "うかぶ",
- "うきわ",
- "うく",
- "うくらいな",
- "うくれれ",
- "うけつぐ",
- "うけつけ",
- "うける",
- "うごく",
- "うこん",
- "うさぎ",
- "うし",
- "うしなう",
- "うしろ",
- "うしろがみ",
- "うすい",
- "うすぎ",
- "うせつ",
- "うそ",
- "うた",
- "うちあわせ",
- "うちがわ",
- "うちき",
- "うつ",
- "うなぎ",
- "うなじ",
- "うに",
- "うねる",
- "うのう",
- "うぶげ",
- "うぶごえ",
- "うま",
- "うまれる",
- "うみ",
- "うむ",
- "うめ",
- "うめる",
- "うもう",
- "うやまう",
- "うよく",
- "うら",
- "うらない",
- "うる",
- "うるさい",
- "うれしい",
- "うろこ",
- "うわき",
- "うわさ",
- "えい",
- "えいえん",
- "えいが",
- "えいぎょう",
- "えいご",
- "えおり",
- "えき",
- "えきたい",
- "えくせる",
- "えさ",
- "えしゃく",
- "えすて",
- "えつらん",
- "えと",
- "えのぐ",
- "えび",
- "えほうまき",
- "えほん",
- "えま",
- "えまき",
- "えもじ",
- "えもの",
- "えらい",
- "えらぶ",
- "えり",
- "えりあ",
- "える",
- "えん",
- "えんえん",
- "おきる",
- "おく",
- "おけ",
- "おこる",
- "おしえる",
- "おやゆび",
- "おらんだ",
- "かあつ",
- "かい",
- "かう",
- "かお",
- "かがし",
- "かき",
- "かく",
- "かこ",
- "かさ",
- "かす",
- "かち",
- "かつ",
- "かなざわし",
- "かに",
- "かね",
- "かのう",
- "かほう",
- "かほご",
- "かまぼこ",
- "かみ",
- "かむ",
- "かめれおん",
- "かも",
- "かゆい",
- "からい",
- "かるい",
- "かろう",
- "かわ",
- "かわら",
- "きあい",
- "きあつ",
- "きいろ",
- "ぎいん",
- "きうい",
- "きうん",
- "きえる",
- "きおう",
- "きおく",
- "きおち",
- "きおん",
- "きか",
- "きかい",
- "きかく",
- "きかん",
- "きかんしゃ",
- "きぎ",
- "ききて",
- "きく",
- "きくばり",
- "きくらげ",
- "きけん",
- "きけんせい",
- "きこう",
- "きこえる",
- "きこく",
- "きさい",
- "きさく",
- "きさま",
- "きさらぎ",
- "きし",
- "きしゅ",
- "きす",
- "きすう",
- "きせい",
- "きせき",
- "きせつ",
- "きそ",
- "きそう",
- "きそく",
- "きぞく",
- "ぎそく",
- "きぞん",
- "きた",
- "きたえる",
- "きち",
- "きちょう",
- "きつえん",
- "きつつき",
- "きつね",
- "きてい",
- "きどう",
- "きどく",
- "きない",
- "きなが",
- "きぬ",
- "きぬごし",
- "きねん",
- "きのう",
- "きはく",
- "きびしい",
- "きひん",
- "きふ",
- "ぎふ",
- "きふく",
- "ぎぼ",
- "きほう",
- "きぼう",
- "きほん",
- "きまる",
- "きみ",
- "きみつ",
- "ぎむ",
- "きむずかしい",
- "きめ",
- "きめる",
- "きもだめし",
- "きもち",
- "きやく",
- "きよう",
- "きらい",
- "きらく",
- "きり",
- "きる",
- "きれい",
- "きれつ",
- "きろく",
- "ぎろん",
- "きわめる",
- "ぐあい",
- "くい",
- "くいず",
- "くうかん",
- "くうき",
- "くうぐん",
- "くうこう",
- "くうそう",
- "くうふく",
- "くうぼ",
- "くかん",
- "くき",
- "くきょう",
- "くげん",
- "ぐこう",
- "くさ",
- "くさい",
- "くさき",
- "くさばな",
- "くさる",
- "くし",
- "くしゃみ",
- "くしょう",
- "くすのき",
- "くすり",
- "くすりゆび",
- "くせ",
- "くせげ",
- "くせん",
- "くたびれる",
- "くち",
- "くちこみ",
- "くちさき",
- "くつ",
- "くつした",
- "くつろぐ",
- "くとうてん",
- "くどく",
- "くなん",
- "くに",
- "くねくね",
- "くのう",
- "くふう",
- "くま",
- "くみあわせ",
- "くみたてる",
- "くむ",
- "くめる",
- "くやくしょ",
- "くらす",
- "くり",
- "くれる",
- "くろ",
- "くろう",
- "くわしい",
- "ぐんじょ",
- "けあな",
- "けいけん",
- "けいこ",
- "けいさい",
- "けいさつ",
- "げいのうじん",
- "けいれき",
- "けいれつ",
- "けいれん",
- "けいろ",
- "けおとす",
- "けおりもの",
- "けが",
- "げき",
- "げきか",
- "げきげん",
- "げきだん",
- "げきちん",
- "げきど",
- "げきは",
- "げきやく",
- "げこう",
- "げこくじょう",
- "けさ",
- "げざい",
- "けさき",
- "げざん",
- "けしき",
- "けしごむ",
- "けしょう",
- "けす",
- "げすと",
- "けた",
- "げた",
- "けたば",
- "けち",
- "けちゃっぷ",
- "けちらす",
- "けつ",
- "けつあつ",
- "けつい",
- "けつえき",
- "けっこん",
- "けつじょ",
- "けってい",
- "けつまつ",
- "げつようび",
- "げつれい",
- "けつろん",
- "げどく",
- "けとばす",
- "けとる",
- "けなげ",
- "けなす",
- "けなみ",
- "けぬき",
- "げねつ",
- "けねん",
- "けはい",
- "げひん",
- "けぶかい",
- "げぼく",
- "けまり",
- "けみかる",
- "けむし",
- "けむり",
- "けもの",
- "けらい",
- "ける",
- "げろ",
- "けろけろ",
- "けわしい",
- "けんい",
- "けんえつ",
- "けんお",
- "けんか",
- "げんき",
- "けんきゅう",
- "けんきょ",
- "けんけい",
- "けんけつ",
- "けんげん",
- "けんこう",
- "けんさ",
- "けんさく",
- "けんしゅう",
- "けんしゅつ",
- "けんしん",
- "けんすう",
- "けんそう",
- "げんそう",
- "けんそん",
- "げんち",
- "けんちく",
- "けんてい",
- "げんてい",
- "けんとう",
- "けんない",
- "けんにん",
- "げんぶつ",
- "けんま",
- "けんみん",
- "けんめい",
- "けんらん",
- "けんり",
- "けんりつ",
- "こあくま",
- "こい",
- "ごい",
- "こいびと",
- "こうい",
- "こうえん",
- "こうか",
- "こうかい",
- "こうかん",
- "こうさい",
- "こうさん",
- "こうしん",
- "こうず",
- "こうすい",
- "こうせん",
- "こうそう",
- "こうそく",
- "こうたい",
- "こうちゃ",
- "こうつう",
- "こうてい",
- "こうとうぶ",
- "こうない",
- "こうはい",
- "こうはん",
- "こうもく",
- "こえ",
- "こえる",
- "こおり",
- "ごがつ",
- "こかん",
- "こく",
- "こくご",
- "こくない",
- "こくはく",
- "こけい",
- "こける",
- "ここ",
- "こころ",
- "ごさ",
- "こさめ",
- "こし",
- "こしつ",
- "こす",
- "こすう",
- "こせい",
- "こせき",
- "こぜん",
- "こそだて",
- "こたい",
- "こたえる",
- "こたつ",
- "こちょう",
- "こっか",
- "こつこつ",
- "こつばん",
- "こつぶ",
- "こてい",
- "こてん",
- "こと",
- "ことがら",
- "ことし",
- "こなごな",
- "こねこね",
- "このまま",
- "このみ",
- "このよ",
- "こはん",
- "ごはん",
- "ごび",
- "こひつじ",
- "こふう",
- "こふん",
- "こぼれる",
- "ごま",
- "こまかい",
- "こまつし",
- "こまつな",
- "こまる",
- "こむ",
- "こむぎこ",
- "こめ",
- "こもじ",
- "こもち",
- "こもの",
- "こもん",
- "こや",
- "こやく",
- "こやま",
- "こゆう",
- "こゆび",
- "こよい",
- "こよう",
- "こりる",
- "こる",
- "これくしょん",
- "ころっけ",
- "こわもて",
- "こわれる",
- "こん",
- "こんいん",
- "こんかい",
- "こんき",
- "こんしゅう",
- "こんしゅん",
- "こんすい",
- "こんだて",
- "こんだん",
- "こんとん",
- "こんなん",
- "こんびに",
- "こんぽう",
- "こんぽん",
- "こんまけ",
- "こんや",
- "こんやく",
- "こんれい",
- "こんわく",
- "さいかい",
- "さいがい",
- "さいきん",
- "さいご",
- "さいこん",
- "さいしょ",
- "さうな",
- "さお",
- "さかいし",
- "さかな",
- "さかみち",
- "さき",
- "さく",
- "さくし",
- "さくじょ",
- "さくひん",
- "さくら",
- "さけ",
- "さこく",
- "さこつ",
- "さたん",
- "さつえい",
- "さっか",
- "さっきょく",
- "さつじん",
- "さつたば",
- "さつまいも",
- "さてい",
- "さといも",
- "さとう",
- "さとおや",
- "さとる",
- "さのう",
- "さば",
- "さばく",
- "さべつ",
- "さほう",
- "さほど",
- "さます",
- "さみしい",
- "さみだれ",
- "さむけ",
- "さめ",
- "さめる",
- "さやえんどう",
- "さゆう",
- "さよう",
- "さよく",
- "さら",
- "さらだ",
- "さる",
- "さわやか",
- "さわる",
- "さんいん",
- "さんか",
- "さんきゃく",
- "さんこう",
- "さんさい",
- "さんざん",
- "さんすう",
- "さんせい",
- "さんそ",
- "さんそん",
- "さんち",
- "さんちょう",
- "さんま",
- "さんみ",
- "さんらん",
- "しあい",
- "しあげ",
- "しあさって",
- "しあわせ",
- "しいく",
- "しいん",
- "しうち",
- "しえい",
- "しお",
- "しおけ",
- "しか",
- "しかい",
- "しかく",
- "じかん",
- "した",
- "したぎ",
- "したて",
- "したみ",
- "しちょう",
- "しちょうそん",
- "しちりん",
- "じつじ",
- "してい",
- "してき",
- "してつ",
- "してん",
- "しとう",
- "じどう",
- "しなぎれ",
- "しなもの",
- "しなん",
- "しねま",
- "しねん",
- "しのぐ",
- "しのぶ",
- "しはい",
- "しばかり",
- "しはつ",
- "じはつ",
- "しはらい",
- "しはん",
- "しひょう",
- "じふ",
- "しふく",
- "じぶん",
- "しへい",
- "しほう",
- "しほん",
- "しま",
- "しまう",
- "しまる",
- "しみ",
- "じみ",
- "しみん",
- "じむ",
- "しむける",
- "しめい",
- "しめる",
- "しもん",
- "しゃいん",
- "しゃうん",
- "しゃおん",
- "しゃかい",
- "じゃがいも",
- "しやくしょ",
- "しゃくほう",
- "しゃけん",
- "しゃこ",
- "しゃこう",
- "しゃざい",
- "しゃしん",
- "しゃせん",
- "しゃそう",
- "しゃたい",
- "しゃたく",
- "しゃちょう",
- "しゃっきん",
- "じゃま",
- "じゃり",
- "しゃりょう",
- "しゃりん",
- "しゃれい",
- "しゅうえん",
- "しゅうかい",
- "しゅうきん",
- "しゅうけい",
- "しゅうりょう",
- "しゅらば",
- "しょうか",
- "しょうかい",
- "しょうきん",
- "しょうじき",
- "しょくざい",
- "しょくたく",
- "しょっけん",
- "しょどう",
- "しょもつ",
- "しん",
- "しんか",
- "しんこう",
- "しんせいじ",
- "しんちく",
- "しんりん",
- "すあげ",
- "すあし",
- "すあな",
- "ずあん",
- "すいか",
- "すいとう",
- "すう",
- "すうがく",
- "すうじつ",
- "すうせん",
- "すおどり",
- "すき",
- "すきま",
- "すく",
- "すくう",
- "すくない",
- "すける",
- "すこし",
- "ずさん",
- "すし",
- "すずしい",
- "すすめる",
- "すそ",
- "ずっしり",
- "ずっと",
- "すで",
- "すてき",
- "すてる",
- "すな",
- "すなっく",
- "すなっぷ",
- "すね",
- "すねる",
- "すのこ",
- "すはだ",
- "すばらしい",
- "ずひょう",
- "ずぶぬれ",
- "すぶり",
- "すふれ",
- "すべて",
- "すべる",
- "ずほう",
- "すぼん",
- "すまい",
- "すみ",
- "すむ",
- "すめし",
- "すもう",
- "すやき",
- "すらいす",
- "すらいど",
- "すらすら",
- "すり",
- "する",
- "するめ",
- "すれちがう",
- "すろっと",
- "すわる",
- "すんぜん",
- "すんぽう",
- "せあぶら",
- "せいか",
- "せいかい",
- "せいかつ",
- "せおう",
- "せかい",
- "せかいかん",
- "せかいし",
- "せかいじゅう",
- "せき",
- "せきにん",
- "せきむ",
- "せきゆ",
- "せきらんうん",
- "せけん",
- "せこう",
- "せすじ",
- "せたい",
- "せたけ",
- "せっかい",
- "せっかく",
- "せっき",
- "せっきゃく",
- "せっきょく",
- "せっきん",
- "ぜっく",
- "せっけん",
- "せっこつ",
- "せっさたくま",
- "せつぞく",
- "せつだん",
- "せつでん",
- "せっぱん",
- "せつび",
- "せつぶん",
- "せつめい",
- "せつりつ",
- "せと",
- "せなか",
- "せのび",
- "せはば",
- "せぼね",
- "せまい",
- "せまる",
- "せみ",
- "せめる",
- "せもたれ",
- "せりふ",
- "せわ",
- "せん",
- "ぜんあく",
- "せんい",
- "せんえい",
- "せんか",
- "せんきょ",
- "せんく",
- "せんけつ",
- "せんげん",
- "ぜんご",
- "せんさい",
- "せんし",
- "せんしゅ",
- "せんす",
- "せんすい",
- "せんせい",
- "せんぞ",
- "せんそう",
- "せんたく",
- "せんち",
- "せんちゃ",
- "せんちゃく",
- "せんちょう",
- "せんてい",
- "せんとう",
- "せんぬき",
- "せんねん",
- "ぜんぶ",
- "せんぷうき",
- "せんぷく",
- "ぜんぽう",
- "せんむ",
- "せんめい",
- "せんめんじょ",
- "せんもん",
- "せんやく",
- "せんゆう",
- "せんよう",
- "ぜんら",
- "ぜんりゃく",
- "せんりょく",
- "せんれい",
- "せんろ",
- "そあく",
- "そいとげる",
- "そいね",
- "そう",
- "ぞう",
- "そうがんきょう",
- "そうき",
- "そうご",
- "そうなん",
- "そうび",
- "そうひょう",
- "そうめん",
- "そうり",
- "そうりょ",
- "そえもの",
- "そえん",
- "そかい",
- "そがい",
- "そぐ",
- "そげき",
- "そこう",
- "そこそこ",
- "そざい",
- "そし",
- "そしな",
- "そせい",
- "そせん",
- "そそぐ",
- "そだてる",
- "そつう",
- "そつえん",
- "そっかん",
- "そつぎょう",
- "そっけつ",
- "そっこう",
- "そっせん",
- "そっと",
- "そで",
- "そと",
- "そとがわ",
- "そとづら",
- "そなえる",
- "そなた",
- "そば",
- "そふ",
- "そふぼ",
- "そぼ",
- "そぼく",
- "そぼろ",
- "そまつ",
- "そまる",
- "そむく",
- "そむりえ",
- "そめる",
- "そもそも",
- "そよかぜ",
- "そら",
- "そらまめ",
- "そり",
- "そる",
- "そろう",
- "そんかい",
- "そんけい",
- "そんざい",
- "そんしつ",
- "そんしょう",
- "そんぞく",
- "そんちょう",
- "ぞんび",
- "ぞんぶん",
- "そんみん",
- "たあい",
- "たいいん",
- "たいうん",
- "たいえき",
- "たいおう",
- "だいおう",
- "たいか",
- "たいかい",
- "たいき",
- "たいきけん",
- "たいぐう",
- "たいくつ",
- "たいけい",
- "たいけつ",
- "たいけん",
- "たいこ",
- "たいこう",
- "たいさ",
- "たいさん",
- "たいしゅつ",
- "だいじょうぶ",
- "たいしょく",
- "だいず",
- "だいすき",
- "たいせい",
- "たいせつ",
- "たいせん",
- "たいそう",
- "たいちょう",
- "だいちょう",
- "たいとう",
- "たいない",
- "たいねつ",
- "たいのう",
- "たいは",
- "たいはん",
- "たいひ",
- "たいふう",
- "たいへん",
- "たいほ",
- "たいまつばな",
- "たいまん",
- "たいみんぐ",
- "たいむ",
- "たいめん",
- "たいやき",
- "たいやく",
- "たいよう",
- "たいら",
- "たいりょう",
- "たいりょく",
- "たいる",
- "たいわ",
- "たいわん",
- "たうえ",
- "たえる",
- "たおす",
- "たおる",
- "たかい",
- "たかね",
- "たき",
- "たきび",
- "たくさん",
- "たけ",
- "たこ",
- "たこく",
- "たこやき",
- "たさい",
- "ださい",
- "たしざん",
- "たす",
- "たすける",
- "たそがれ",
- "たたかう",
- "たたく",
- "たちば",
- "たちばな",
- "たつ",
- "だっかい",
- "だっきゃく",
- "だっこ",
- "だっしめん",
- "だっしゅつ",
- "だったい",
- "たて",
- "たてる",
- "たとえる",
- "たな",
- "たにん",
- "たぬき",
- "たね",
- "たのしみ",
- "たはつ",
- "たび",
- "たぶん",
- "たべる",
- "たぼう",
- "たほうめん",
- "たま",
- "たまご",
- "たまる",
- "だむる",
- "ためいき",
- "ためす",
- "ためる",
- "たもつ",
- "たやすい",
- "たよる",
- "たら",
- "たらす",
- "たりきほんがん",
- "たりょう",
- "たりる",
- "たる",
- "たると",
- "たれる",
- "たれんと",
- "たろっと",
- "たわむれる",
- "たん",
- "だんあつ",
- "たんい",
- "たんおん",
- "たんか",
- "たんき",
- "たんけん",
- "たんご",
- "たんさく",
- "たんさん",
- "たんし",
- "たんしゅく",
- "たんじょうび",
- "だんせい",
- "たんそく",
- "たんたい",
- "たんち",
- "だんち",
- "たんちょう",
- "たんてい",
- "たんてき",
- "たんとう",
- "だんな",
- "たんにん",
- "だんねつ",
- "たんのう",
- "たんぴん",
- "たんまつ",
- "たんめい",
- "だんれつ",
- "だんろ",
- "だんわ",
- "ちあい",
- "ちあん",
- "ちい",
- "ちいき",
- "ちいさい",
- "ちえ",
- "ちえん",
- "ちか",
- "ちかい",
- "ちきゅう",
- "ちきん",
- "ちけい",
- "ちけいず",
- "ちけん",
- "ちこく",
- "ちさい",
- "ちしき",
- "ちしりょう",
- "ちず",
- "ちせい",
- "ちそう",
- "ちたい",
- "ちたん",
- "ちちおや",
- "ちつじょ",
- "ちてき",
- "ちてん",
- "ちぬき",
- "ちぬり",
- "ちのう",
- "ちひょう",
- "ちへいせん",
- "ちほう",
- "ちまた",
- "ちみつ",
- "ちみどろ",
- "ちめいど",
- "ちゅうい",
- "ちゅうおう",
- "ちゅうおうく",
- "ちゅうがっこう",
- "ちゅうごく",
- "ちゆりょく",
- "ちょうさ",
- "ちょうし",
- "ちらし",
- "ちらみ",
- "ちり",
- "ちりがみ",
- "ちる",
- "ちるど",
- "ちわわ",
- "ちんたい",
- "ちんもく",
- "ついか",
- "つうか",
- "つうじょう",
- "つうじる",
- "つうはん",
- "つうわ",
- "つえ",
- "つかう",
- "つかれる",
- "つき",
- "つく",
- "つくね",
- "つくる",
- "つけね",
- "つける",
- "つごう",
- "つた",
- "つたえる",
- "つち",
- "つつじ",
- "つとめる",
- "つな",
- "つながる",
- "つなみ",
- "つねづね",
- "つの",
- "つのる",
- "つば",
- "つぶ",
- "つぶす",
- "つぼ",
- "つま",
- "つまらない",
- "つまる",
- "つみ",
- "つみき",
- "つむ",
- "つめたい",
- "つもる",
- "つや",
- "つよい",
- "つり",
- "つるぼ",
- "つるみく",
- "つわもの",
- "つわり",
- "てあし",
- "てあて",
- "てあみ",
- "ていか",
- "ていき",
- "ていけい",
- "ていけつ",
- "ていけつあつ",
- "ていこく",
- "ていさつ",
- "ていし",
- "ていしゃ",
- "ていせい",
- "ていたい",
- "ていど",
- "ていねい",
- "ていひょう",
- "ていへん",
- "ていぼう",
- "てうち",
- "ておくれ",
- "てき",
- "てくび",
- "てこ",
- "てさぎょう",
- "てさげ",
- "でし",
- "てすり",
- "てそう",
- "てちがい",
- "てちょう",
- "てつがく",
- "てつづき",
- "てつや",
- "でぬかえ",
- "てぬき",
- "てぬぐい",
- "てのひら",
- "てはい",
- "てふだ",
- "てほどき",
- "てほん",
- "てま",
- "てまえ",
- "てまきずし",
- "てみじか",
- "てみやげ",
- "てら",
- "てらす",
- "でる",
- "てれび",
- "てろ",
- "てわけ",
- "てわたし",
- "でんあつ",
- "てんい",
- "てんいん",
- "てんかい",
- "てんき",
- "てんぐ",
- "てんけん",
- "でんげん",
- "てんごく",
- "てんさい",
- "てんすう",
- "でんち",
- "てんてき",
- "てんとう",
- "てんない",
- "てんぷ",
- "てんぷら",
- "てんぼうだい",
- "てんめつ",
- "てんらく",
- "てんらんかい",
- "でんりゅう",
- "でんりょく",
- "でんわ",
- "どあ",
- "どあい",
- "といれ",
- "とうむぎ",
- "とおい",
- "とおす",
- "とかい",
- "とかす",
- "ときおり",
- "ときどき",
- "とくい",
- "とくてい",
- "とくてん",
- "とくべつ",
- "とけい",
- "とける",
- "とさか",
- "とし",
- "としょかん",
- "とそう",
- "とたん",
- "とち",
- "とちゅう",
- "とつぜん",
- "とつにゅう",
- "ととのえる",
- "とない",
- "となえる",
- "となり",
- "とのさま",
- "とばす",
- "とぶ",
- "とほ",
- "とほう",
- "どま",
- "とまる",
- "とら",
- "とり",
- "とる",
- "とんかつ",
- "ない",
- "ないか",
- "ないかく",
- "ないこう",
- "ないしょ",
- "ないす",
- "ないせん",
- "ないそう",
- "ないぞう",
- "なおす",
- "なく",
- "なこうど",
- "なさけ",
- "なし",
- "なす",
- "なぜ",
- "なぞ",
- "なたでここ",
- "なつ",
- "なっとう",
- "なつやすみ",
- "ななおし",
- "なにごと",
- "なにもの",
- "なにわ",
- "なは",
- "なび",
- "なふだ",
- "なべ",
- "なまいき",
- "なまえ",
- "なまみ",
- "なみ",
- "なみだ",
- "なめらか",
- "なめる",
- "なやむ",
- "ならぶ",
- "なる",
- "なれる",
- "なわ",
- "なわとび",
- "なわばり",
- "にあう",
- "にいがた",
- "にうけ",
- "におい",
- "にかい",
- "にがて",
- "にきび",
- "にく",
- "にくしみ",
- "にくまん",
- "にげる",
- "にさんかたんそ",
- "にし",
- "にしき",
- "にす",
- "にせもの",
- "にちじ",
- "にちじょう",
- "にちようび",
- "にっか",
- "にっき",
- "にっけい",
- "にっこう",
- "にっさん",
- "にっしょく",
- "にっすう",
- "にっせき",
- "にってい",
- "になう",
- "にほん",
- "にまめ",
- "にもつ",
- "にやり",
- "にゅういん",
- "にゅうか",
- "にゅうし",
- "にゅうしゃ",
- "にゅうだん",
- "にゅうぶ",
- "にら",
- "にりんしゃ",
- "にる",
- "にわ",
- "にわとり",
- "にんい",
- "にんか",
- "にんき",
- "にんげん",
- "にんしき",
- "にんしょう",
- "にんしん",
- "にんずう",
- "にんそう",
- "にんたい",
- "にんち",
- "にんてい",
- "にんにく",
- "にんぷ",
- "にんまり",
- "にんむ",
- "にんめい",
- "にんよう",
- "ぬう",
- "ぬか",
- "ぬく",
- "ぬくもり",
- "ぬし",
- "ぬの",
- "ぬま",
- "ぬめり",
- "ぬらす",
- "ぬる",
- "ぬんちゃく",
- "ねあげ",
- "ねいき",
- "ねいる",
- "ねいろ",
- "ねぎ",
- "ねぐせ",
- "ねくたい",
- "ねくら",
- "ねこ",
- "ねこぜ",
- "ねこむ",
- "ねさげ",
- "ねすごす",
- "ねそべる",
- "ねつい",
- "ねつぞう",
- "ねったい",
- "ねったいぎょ",
- "ねぶそく",
- "ねふだ",
- "ねぼう",
- "ねほりはほり",
- "ねまき",
- "ねまわし",
- "ねみみ",
- "ねむい",
- "ねもと",
- "ねらう",
- "ねる",
- "ねわざ",
- "ねんいり",
- "ねんおし",
- "ねんかん",
- "ねんき",
- "ねんきん",
- "ねんぐ",
- "ねんざ",
- "ねんし",
- "ねんちゃく",
- "ねんちょう",
- "ねんど",
- "ねんぴ",
- "ねんぶつ",
- "ねんまく",
- "ねんまつ",
- "ねんりき",
- "ねんりょう",
- "ねんれい",
- "のいず",
- "のう",
- "のおづま",
- "のがす",
- "のきなみ",
- "のこぎり",
- "のこす",
- "のせる",
- "のぞく",
- "のぞむ",
- "のたまう",
- "のちほど",
- "のっく",
- "のばす",
- "のはら",
- "のべる",
- "のぼる",
- "のむ",
- "のやま",
- "のらいぬ",
- "のらねこ",
- "のり",
- "のる",
- "のれん",
- "のんき",
- "ばあい",
- "はあく",
- "ばあさん",
- "はい",
- "ばいか",
- "ばいく",
- "はいけん",
- "はいご",
- "はいこう",
- "はいし",
- "はいしゅつ",
- "はいしん",
- "はいすい",
- "はいせつ",
- "はいせん",
- "はいそう",
- "はいち",
- "ばいばい",
- "はう",
- "はえ",
- "はえる",
- "はおる",
- "はか",
- "ばか",
- "はかい",
- "はかる",
- "はき",
- "はく",
- "はくしゅ",
- "はけん",
- "はこ",
- "はこぶ",
- "はさみ",
- "はさん",
- "はし",
- "はしご",
- "はしる",
- "ばす",
- "はせる",
- "ぱそこん",
- "はそん",
- "はたん",
- "はち",
- "はちみつ",
- "はっか",
- "はっかく",
- "はっき",
- "はっきり",
- "はっくつ",
- "はっけん",
- "はっこう",
- "はっさん",
- "はっしゃ",
- "はっしん",
- "はったつ",
- "はっちゃく",
- "はっちゅう",
- "はってん",
- "はっぴょう",
- "はっぽう",
- "はて",
- "はな",
- "はなす",
- "はなび",
- "はにかむ",
- "はね",
- "はは",
- "はぶらし",
- "はま",
- "はみがき",
- "はむ",
- "はむかう",
- "はめつ",
- "はやい",
- "はら",
- "はらう",
- "はり",
- "はる",
- "はれ",
- "はろうぃん",
- "はわい",
- "はんい",
- "はんえい",
- "はんえん",
- "はんおん",
- "はんかく",
- "はんかち",
- "はんきょう",
- "はんこ",
- "はんこう",
- "はんしゃ",
- "はんしん",
- "はんすう",
- "はんたい",
- "はんだん",
- "ぱんち",
- "ぱんつ",
- "はんてい",
- "はんてん",
- "はんとし",
- "はんのう",
- "はんぱ",
- "はんぶん",
- "はんぺん",
- "はんぼうき",
- "はんめい",
- "はんめん",
- "はんらん",
- "はんろん",
- "ひいき",
- "ひうん",
- "ひえる",
- "ひかく",
- "ひかり",
- "ひかん",
- "ひく",
- "ひくい",
- "ひけつ",
- "ひこうき",
- "ひこく",
- "ひざ",
- "ぴざ",
- "ひさい",
- "ひさしぶり",
- "ひさん",
- "ひし",
- "ひじ",
- "ひしょ",
- "ひじょう",
- "ひそか",
- "ひそむ",
- "ひたむき",
- "ひたる",
- "ひつぎ",
- "ひっこし",
- "ひっし",
- "ひっす",
- "ひつぜん",
- "ひつよう",
- "ひてい",
- "ひと",
- "ひとごみ",
- "ひな",
- "ひなん",
- "ひねる",
- "ひはん",
- "ひびく",
- "ひひょう",
- "ひふ",
- "ひほう",
- "ひま",
- "ひまん",
- "ひみつ",
- "ひめ",
- "ひめい",
- "ひめじし",
- "ひも",
- "ひやけ",
- "ひやす",
- "ひゆ",
- "ひよう",
- "びょうき",
- "ひらく",
- "ひりつ",
- "ひりょう",
- "ひる",
- "ひれい",
- "ひろい",
- "ひろう",
- "ひわ",
- "ひんかく",
- "ひんけつ",
- "ひんこん",
- "ひんし",
- "ひんしつ",
- "ひんしゅ",
- "ひんそう",
- "ぴんち",
- "ひんぱん",
- "びんぼう",
- "ふあん",
- "ふいうち",
- "ふうけい",
- "ふうせん",
- "ふうとう",
- "ふうふ",
- "ふえ",
- "ふえる",
- "ふおん",
- "ふか",
- "ふかい",
- "ふきん",
- "ふく",
- "ふくざつ",
- "ふこう",
- "ふさい",
- "ふざい",
- "ふしぎ",
- "ふじみ",
- "ふすま",
- "ふせい",
- "ふせぐ",
- "ふそく",
- "ふた",
- "ふたん",
- "ふち",
- "ふちょう",
- "ふつう",
- "ふっかつ",
- "ふっき",
- "ふっきん",
- "ふっこく",
- "ふとる",
- "ふとん",
- "ふね",
- "ふのう",
- "ふはい",
- "ふひょう",
- "ふへん",
- "ふまん",
- "ふみん",
- "ふむ",
- "ふめつ",
- "ふめん",
- "ふゆ",
- "ふよう",
- "ふりこ",
- "ふりる",
- "ふる",
- "ふるい",
- "ふろ",
- "ふんいき",
- "ふんか",
- "ぶんか",
- "ぶんぐ",
- "ふんしつ",
- "ぶんせき",
- "ふんそう",
- "へい",
- "へいき",
- "へいさ",
- "へいわ",
- "へきが",
- "へこむ",
- "へそ",
- "へた",
- "べつ",
- "べっど",
- "ぺっと",
- "へび",
- "へや",
- "へる",
- "へんか",
- "へんかん",
- "へんきゃく",
- "へんきん",
- "へんさい",
- "へんたい",
- "ほあん",
- "ほいく",
- "ほうほう",
- "ほえる",
- "ほおん",
- "ほかん",
- "ほきょう",
- "ぼきん",
- "ほくろ",
- "ほけつ",
- "ほけん",
- "ほこう",
- "ほこる",
- "ほさ",
- "ほし",
- "ほしつ",
- "ほしゅ",
- "ほしょう",
- "ほす",
- "ほせい",
- "ぼせい",
- "ほそい",
- "ほそく",
- "ほたて",
- "ほたる",
- "ぼち",
- "ほっきょく",
- "ほっさ",
- "ほったん",
- "ほとんど",
- "ほめる",
- "ほる",
- "ほんい",
- "ほんき",
- "ほんけ",
- "ほんしつ",
- "まいにち",
- "まう",
- "まかい",
- "まかせる",
- "まく",
- "まける",
- "まこと",
- "まさつ",
- "ますく",
- "まぜる",
- "まち",
- "まつ",
- "まつり",
- "まとめ",
- "まなぶ",
- "まぬけ",
- "まね",
- "まねく",
- "まひ",
- "まほう",
- "まめ",
- "まもる",
- "まゆげ",
- "まよう",
- "まる",
- "まろやか",
- "まわす",
- "まわり",
- "まんが",
- "まんかい",
- "まんきつ",
- "まんぞく",
- "みいら",
- "みうち",
- "みかた",
- "みかん",
- "みぎ",
- "みけん",
- "みこん",
- "みすい",
- "みすえる",
- "みせ",
- "みそ",
- "みち",
- "みてい",
- "みとめる",
- "みなみかさい",
- "みねらる",
- "みのう",
- "みほん",
- "みみ",
- "みもと",
- "みやげ",
- "みらい",
- "みりょく",
- "みる",
- "みわく",
- "むえき",
- "むえん",
- "むかし",
- "むく",
- "むこ",
- "むさぼる",
- "むし",
- "むすこ",
- "むすめ",
- "むせる",
- "むせん",
- "むだ",
- "むち",
- "むなしい",
- "むね",
- "むのう",
- "むやみ",
- "むよう",
- "むら",
- "むり",
- "むりょう",
- "むれ",
- "むろん",
- "もうどうけん",
- "もえる",
- "もぎ",
- "もくし",
- "もくてき",
- "もし",
- "もんく",
- "もんだい",
- "やすい",
- "やすみ",
- "やそう",
- "やたい",
- "やちん",
- "やね",
- "やぶる",
- "やま",
- "やみ",
- "やめる",
- "ややこしい",
- "やよい",
- "やり",
- "やわらかい",
- "ゆけつ",
- "ゆしゅつ",
- "ゆせん",
- "ゆそう",
- "ゆたか",
- "ゆちゃく",
- "ゆでる",
- "ゆび",
- "ゆびわ",
- "ゆめ",
- "ゆれる",
- "よう",
- "よかぜ",
- "よかん",
- "よきん",
- "よくせい",
- "よくぼう",
- "よけい",
- "よさん",
- "よそう",
- "よそく",
- "よち",
- "よてい",
- "よどがわく",
- "よねつ",
- "よむ",
- "よめ",
- "よやく",
- "よゆう",
- "よる",
- "よろこぶ",
- "らいう",
- "らくがき",
- "らくご",
- "らくさつ",
- "らくだ",
- "らくたん",
- "らしんばん",
- "らせん",
- "らぞく",
- "らたい",
- "らち",
- "らっか",
- "らっかせい",
- "られつ",
- "りえき",
- "りか",
- "りかい",
- "りきさく",
- "りきせつ",
- "りく",
- "りくぐん",
- "りくつ",
- "りけん",
- "りこう",
- "りし",
- "りす",
- "りせい",
- "りそう",
- "りそく",
- "りてん",
- "りねん",
- "りゅう",
- "りゆう",
- "りゅうがく",
- "りゅうこう",
- "りゅうし",
- "りゅうねん",
- "りよう",
- "りょうかい",
- "りょうきん",
- "りょうしん",
- "りょうて",
- "りょうど",
- "りょうほう",
- "りょうり",
- "りりく",
- "りれき",
- "りろん",
- "りんご",
- "るいじ",
- "るす",
- "れいかん",
- "れいぎ",
- "れいせい",
- "れいぞうこ",
- "れいとう",
- "れきし",
- "れきだい",
- "れんあい",
- "れんけい",
- "れんけつ",
- "れんこう",
- "れんこん",
- "れんさ",
- "れんさい",
- "れんさく",
- "れんしゃ",
- "れんしゅう",
- "れんぞく",
- "ろうか",
- "ろうご",
- "ろうじん",
- "ろうそく",
- "ろか",
- "ろくが",
- "ろこつ",
- "ろしゅつ",
- "ろせん",
- "ろてん",
- "ろめん",
- "ろれつ",
- "ろんぎ",
- "ろんぱ",
- "ろんぶん",
- "ろんり",
- "わじまし"
- );
- return word_list;
-}
-
-std::unordered_map<std::string, unsigned int>& word_map_japanese()
+namespace Language
{
- static std::unordered_map<std::string, unsigned int> word_map;
- if (word_map.size() > 0)
+ class Japanese: public Base
{
- return word_map;
- }
- std::vector<std::string> word_list = word_list_japanese();
- int ii;
- std::vector<std::string>::iterator it;
- for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
- {
- word_map[*it] = ii;
- }
- return word_map;
-}
-
-std::unordered_map<std::string, unsigned int>& trimmed_word_map_japanese()
-{
- static std::unordered_map<std::string, unsigned int> trimmed_word_map;
- if (trimmed_word_map.size() > 0)
- {
- return trimmed_word_map;
- }
- std::vector<std::string> word_list = word_list_japanese();
- int ii;
- std::vector<std::string>::iterator it;
- for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
- {
- if (it->length() > 4)
+ public:
+ Japanese()
{
- trimmed_word_map[it->substr(0, 4)] = ii;
+ word_list = new std::vector<std::string>({
+ "あい",
+ "あいこくしん",
+ "あう",
+ "あお",
+ "あおぞら",
+ "あか",
+ "あかちゃん",
+ "あき",
+ "あきる",
+ "あく",
+ "あさ",
+ "あさひ",
+ "あし",
+ "あずき",
+ "あせ",
+ "あそぶ",
+ "あたる",
+ "あつい",
+ "あな",
+ "あに",
+ "あね",
+ "あひる",
+ "あまい",
+ "あみ",
+ "あめ",
+ "あめりか",
+ "あやまる",
+ "あゆむ",
+ "あらいぐま",
+ "あらし",
+ "あり",
+ "ある",
+ "あれ",
+ "あわ",
+ "あんこ",
+ "いう",
+ "いえ",
+ "いおん",
+ "いか",
+ "いがい",
+ "いかいよう",
+ "いけ",
+ "いけん",
+ "いこく",
+ "いこつ",
+ "いさん",
+ "いし",
+ "いじゅう",
+ "いす",
+ "いせい",
+ "いせえび",
+ "いせかい",
+ "いせき",
+ "いそうろう",
+ "いそがしい",
+ "いたりあ",
+ "いてざ",
+ "いてん",
+ "いと",
+ "いない",
+ "いなか",
+ "いぬ",
+ "いね",
+ "いのち",
+ "いのる",
+ "いはつ",
+ "いはん",
+ "いびき",
+ "いひん",
+ "いふく",
+ "いへん",
+ "いほう",
+ "いま",
+ "いみ",
+ "いみん",
+ "いも",
+ "いもうと",
+ "いもたれ",
+ "いもり",
+ "いや",
+ "いやす",
+ "いよかん",
+ "いよく",
+ "いらい",
+ "いらすと",
+ "いりぐち",
+ "いりょう",
+ "いりょうひ",
+ "いる",
+ "いれい",
+ "いれもの",
+ "いれる",
+ "いろ",
+ "いろえんぴつ",
+ "いわ",
+ "いわう",
+ "いわかん",
+ "いんげんまめ",
+ "うえ",
+ "うおざ",
+ "うかぶ",
+ "うきわ",
+ "うく",
+ "うくらいな",
+ "うくれれ",
+ "うけつぐ",
+ "うけつけ",
+ "うける",
+ "うごく",
+ "うこん",
+ "うさぎ",
+ "うし",
+ "うしなう",
+ "うしろ",
+ "うしろがみ",
+ "うすい",
+ "うすぎ",
+ "うせつ",
+ "うそ",
+ "うた",
+ "うちあわせ",
+ "うちがわ",
+ "うちき",
+ "うつ",
+ "うなぎ",
+ "うなじ",
+ "うに",
+ "うねる",
+ "うのう",
+ "うぶげ",
+ "うぶごえ",
+ "うま",
+ "うまれる",
+ "うみ",
+ "うむ",
+ "うめ",
+ "うめる",
+ "うもう",
+ "うやまう",
+ "うよく",
+ "うら",
+ "うらない",
+ "うる",
+ "うるさい",
+ "うれしい",
+ "うろこ",
+ "うわき",
+ "うわさ",
+ "えい",
+ "えいえん",
+ "えいが",
+ "えいぎょう",
+ "えいご",
+ "えおり",
+ "えき",
+ "えきたい",
+ "えくせる",
+ "えさ",
+ "えしゃく",
+ "えすて",
+ "えつらん",
+ "えと",
+ "えのぐ",
+ "えび",
+ "えほうまき",
+ "えほん",
+ "えま",
+ "えまき",
+ "えもじ",
+ "えもの",
+ "えらい",
+ "えらぶ",
+ "えり",
+ "えりあ",
+ "える",
+ "えん",
+ "えんえん",
+ "おきる",
+ "おく",
+ "おけ",
+ "おこる",
+ "おしえる",
+ "おやゆび",
+ "おらんだ",
+ "かあつ",
+ "かい",
+ "かう",
+ "かお",
+ "かがし",
+ "かき",
+ "かく",
+ "かこ",
+ "かさ",
+ "かす",
+ "かち",
+ "かつ",
+ "かなざわし",
+ "かに",
+ "かね",
+ "かのう",
+ "かほう",
+ "かほご",
+ "かまぼこ",
+ "かみ",
+ "かむ",
+ "かめれおん",
+ "かも",
+ "かゆい",
+ "からい",
+ "かるい",
+ "かろう",
+ "かわ",
+ "かわら",
+ "きあい",
+ "きあつ",
+ "きいろ",
+ "ぎいん",
+ "きうい",
+ "きうん",
+ "きえる",
+ "きおう",
+ "きおく",
+ "きおち",
+ "きおん",
+ "きか",
+ "きかい",
+ "きかく",
+ "きかん",
+ "きかんしゃ",
+ "きぎ",
+ "ききて",
+ "きく",
+ "きくばり",
+ "きくらげ",
+ "きけん",
+ "きけんせい",
+ "きこう",
+ "きこえる",
+ "きこく",
+ "きさい",
+ "きさく",
+ "きさま",
+ "きさらぎ",
+ "きし",
+ "きしゅ",
+ "きす",
+ "きすう",
+ "きせい",
+ "きせき",
+ "きせつ",
+ "きそ",
+ "きそう",
+ "きそく",
+ "きぞく",
+ "ぎそく",
+ "きぞん",
+ "きた",
+ "きたえる",
+ "きち",
+ "きちょう",
+ "きつえん",
+ "きつつき",
+ "きつね",
+ "きてい",
+ "きどう",
+ "きどく",
+ "きない",
+ "きなが",
+ "きぬ",
+ "きぬごし",
+ "きねん",
+ "きのう",
+ "きはく",
+ "きびしい",
+ "きひん",
+ "きふ",
+ "ぎふ",
+ "きふく",
+ "ぎぼ",
+ "きほう",
+ "きぼう",
+ "きほん",
+ "きまる",
+ "きみ",
+ "きみつ",
+ "ぎむ",
+ "きむずかしい",
+ "きめ",
+ "きめる",
+ "きもだめし",
+ "きもち",
+ "きやく",
+ "きよう",
+ "きらい",
+ "きらく",
+ "きり",
+ "きる",
+ "きれい",
+ "きれつ",
+ "きろく",
+ "ぎろん",
+ "きわめる",
+ "ぐあい",
+ "くい",
+ "くいず",
+ "くうかん",
+ "くうき",
+ "くうぐん",
+ "くうこう",
+ "くうそう",
+ "くうふく",
+ "くうぼ",
+ "くかん",
+ "くき",
+ "くきょう",
+ "くげん",
+ "ぐこう",
+ "くさ",
+ "くさい",
+ "くさき",
+ "くさばな",
+ "くさる",
+ "くし",
+ "くしゃみ",
+ "くしょう",
+ "くすのき",
+ "くすり",
+ "くすりゆび",
+ "くせ",
+ "くせげ",
+ "くせん",
+ "くたびれる",
+ "くち",
+ "くちこみ",
+ "くちさき",
+ "くつ",
+ "くつした",
+ "くつろぐ",
+ "くとうてん",
+ "くどく",
+ "くなん",
+ "くに",
+ "くねくね",
+ "くのう",
+ "くふう",
+ "くま",
+ "くみあわせ",
+ "くみたてる",
+ "くむ",
+ "くめる",
+ "くやくしょ",
+ "くらす",
+ "くり",
+ "くれる",
+ "くろ",
+ "くろう",
+ "くわしい",
+ "ぐんじょ",
+ "けあな",
+ "けいけん",
+ "けいこ",
+ "けいさい",
+ "けいさつ",
+ "げいのうじん",
+ "けいれき",
+ "けいれつ",
+ "けいれん",
+ "けいろ",
+ "けおとす",
+ "けおりもの",
+ "けが",
+ "げき",
+ "げきか",
+ "げきげん",
+ "げきだん",
+ "げきちん",
+ "げきど",
+ "げきは",
+ "げきやく",
+ "げこう",
+ "げこくじょう",
+ "けさ",
+ "げざい",
+ "けさき",
+ "げざん",
+ "けしき",
+ "けしごむ",
+ "けしょう",
+ "けす",
+ "げすと",
+ "けた",
+ "げた",
+ "けたば",
+ "けち",
+ "けちゃっぷ",
+ "けちらす",
+ "けつ",
+ "けつあつ",
+ "けつい",
+ "けつえき",
+ "けっこん",
+ "けつじょ",
+ "けってい",
+ "けつまつ",
+ "げつようび",
+ "げつれい",
+ "けつろん",
+ "げどく",
+ "けとばす",
+ "けとる",
+ "けなげ",
+ "けなす",
+ "けなみ",
+ "けぬき",
+ "げねつ",
+ "けねん",
+ "けはい",
+ "げひん",
+ "けぶかい",
+ "げぼく",
+ "けまり",
+ "けみかる",
+ "けむし",
+ "けむり",
+ "けもの",
+ "けらい",
+ "ける",
+ "げろ",
+ "けろけろ",
+ "けわしい",
+ "けんい",
+ "けんえつ",
+ "けんお",
+ "けんか",
+ "げんき",
+ "けんきゅう",
+ "けんきょ",
+ "けんけい",
+ "けんけつ",
+ "けんげん",
+ "けんこう",
+ "けんさ",
+ "けんさく",
+ "けんしゅう",
+ "けんしゅつ",
+ "けんしん",
+ "けんすう",
+ "けんそう",
+ "げんそう",
+ "けんそん",
+ "げんち",
+ "けんちく",
+ "けんてい",
+ "げんてい",
+ "けんとう",
+ "けんない",
+ "けんにん",
+ "げんぶつ",
+ "けんま",
+ "けんみん",
+ "けんめい",
+ "けんらん",
+ "けんり",
+ "けんりつ",
+ "こあくま",
+ "こい",
+ "ごい",
+ "こいびと",
+ "こうい",
+ "こうえん",
+ "こうか",
+ "こうかい",
+ "こうかん",
+ "こうさい",
+ "こうさん",
+ "こうしん",
+ "こうず",
+ "こうすい",
+ "こうせん",
+ "こうそう",
+ "こうそく",
+ "こうたい",
+ "こうちゃ",
+ "こうつう",
+ "こうてい",
+ "こうとうぶ",
+ "こうない",
+ "こうはい",
+ "こうはん",
+ "こうもく",
+ "こえ",
+ "こえる",
+ "こおり",
+ "ごがつ",
+ "こかん",
+ "こく",
+ "こくご",
+ "こくない",
+ "こくはく",
+ "こけい",
+ "こける",
+ "ここ",
+ "こころ",
+ "ごさ",
+ "こさめ",
+ "こし",
+ "こしつ",
+ "こす",
+ "こすう",
+ "こせい",
+ "こせき",
+ "こぜん",
+ "こそだて",
+ "こたい",
+ "こたえる",
+ "こたつ",
+ "こちょう",
+ "こっか",
+ "こつこつ",
+ "こつばん",
+ "こつぶ",
+ "こてい",
+ "こてん",
+ "こと",
+ "ことがら",
+ "ことし",
+ "こなごな",
+ "こねこね",
+ "このまま",
+ "このみ",
+ "このよ",
+ "こはん",
+ "ごはん",
+ "ごび",
+ "こひつじ",
+ "こふう",
+ "こふん",
+ "こぼれる",
+ "ごま",
+ "こまかい",
+ "こまつし",
+ "こまつな",
+ "こまる",
+ "こむ",
+ "こむぎこ",
+ "こめ",
+ "こもじ",
+ "こもち",
+ "こもの",
+ "こもん",
+ "こや",
+ "こやく",
+ "こやま",
+ "こゆう",
+ "こゆび",
+ "こよい",
+ "こよう",
+ "こりる",
+ "こる",
+ "これくしょん",
+ "ころっけ",
+ "こわもて",
+ "こわれる",
+ "こん",
+ "こんいん",
+ "こんかい",
+ "こんき",
+ "こんしゅう",
+ "こんしゅん",
+ "こんすい",
+ "こんだて",
+ "こんだん",
+ "こんとん",
+ "こんなん",
+ "こんびに",
+ "こんぽう",
+ "こんぽん",
+ "こんまけ",
+ "こんや",
+ "こんやく",
+ "こんれい",
+ "こんわく",
+ "さいかい",
+ "さいがい",
+ "さいきん",
+ "さいご",
+ "さいこん",
+ "さいしょ",
+ "さうな",
+ "さお",
+ "さかいし",
+ "さかな",
+ "さかみち",
+ "さき",
+ "さく",
+ "さくし",
+ "さくじょ",
+ "さくひん",
+ "さくら",
+ "さけ",
+ "さこく",
+ "さこつ",
+ "さたん",
+ "さつえい",
+ "さっか",
+ "さっきょく",
+ "さつじん",
+ "さつたば",
+ "さつまいも",
+ "さてい",
+ "さといも",
+ "さとう",
+ "さとおや",
+ "さとる",
+ "さのう",
+ "さば",
+ "さばく",
+ "さべつ",
+ "さほう",
+ "さほど",
+ "さます",
+ "さみしい",
+ "さみだれ",
+ "さむけ",
+ "さめ",
+ "さめる",
+ "さやえんどう",
+ "さゆう",
+ "さよう",
+ "さよく",
+ "さら",
+ "さらだ",
+ "さる",
+ "さわやか",
+ "さわる",
+ "さんいん",
+ "さんか",
+ "さんきゃく",
+ "さんこう",
+ "さんさい",
+ "さんざん",
+ "さんすう",
+ "さんせい",
+ "さんそ",
+ "さんそん",
+ "さんち",
+ "さんちょう",
+ "さんま",
+ "さんみ",
+ "さんらん",
+ "しあい",
+ "しあげ",
+ "しあさって",
+ "しあわせ",
+ "しいく",
+ "しいん",
+ "しうち",
+ "しえい",
+ "しお",
+ "しおけ",
+ "しか",
+ "しかい",
+ "しかく",
+ "じかん",
+ "した",
+ "したぎ",
+ "したて",
+ "したみ",
+ "しちょう",
+ "しちょうそん",
+ "しちりん",
+ "じつじ",
+ "してい",
+ "してき",
+ "してつ",
+ "してん",
+ "しとう",
+ "じどう",
+ "しなぎれ",
+ "しなもの",
+ "しなん",
+ "しねま",
+ "しねん",
+ "しのぐ",
+ "しのぶ",
+ "しはい",
+ "しばかり",
+ "しはつ",
+ "じはつ",
+ "しはらい",
+ "しはん",
+ "しひょう",
+ "じふ",
+ "しふく",
+ "じぶん",
+ "しへい",
+ "しほう",
+ "しほん",
+ "しま",
+ "しまう",
+ "しまる",
+ "しみ",
+ "じみ",
+ "しみん",
+ "じむ",
+ "しむける",
+ "しめい",
+ "しめる",
+ "しもん",
+ "しゃいん",
+ "しゃうん",
+ "しゃおん",
+ "しゃかい",
+ "じゃがいも",
+ "しやくしょ",
+ "しゃくほう",
+ "しゃけん",
+ "しゃこ",
+ "しゃこう",
+ "しゃざい",
+ "しゃしん",
+ "しゃせん",
+ "しゃそう",
+ "しゃたい",
+ "しゃたく",
+ "しゃちょう",
+ "しゃっきん",
+ "じゃま",
+ "じゃり",
+ "しゃりょう",
+ "しゃりん",
+ "しゃれい",
+ "しゅうえん",
+ "しゅうかい",
+ "しゅうきん",
+ "しゅうけい",
+ "しゅうりょう",
+ "しゅらば",
+ "しょうか",
+ "しょうかい",
+ "しょうきん",
+ "しょうじき",
+ "しょくざい",
+ "しょくたく",
+ "しょっけん",
+ "しょどう",
+ "しょもつ",
+ "しん",
+ "しんか",
+ "しんこう",
+ "しんせいじ",
+ "しんちく",
+ "しんりん",
+ "すあげ",
+ "すあし",
+ "すあな",
+ "ずあん",
+ "すいか",
+ "すいとう",
+ "すう",
+ "すうがく",
+ "すうじつ",
+ "すうせん",
+ "すおどり",
+ "すき",
+ "すきま",
+ "すく",
+ "すくう",
+ "すくない",
+ "すける",
+ "すこし",
+ "ずさん",
+ "すし",
+ "すずしい",
+ "すすめる",
+ "すそ",
+ "ずっしり",
+ "ずっと",
+ "すで",
+ "すてき",
+ "すてる",
+ "すな",
+ "すなっく",
+ "すなっぷ",
+ "すね",
+ "すねる",
+ "すのこ",
+ "すはだ",
+ "すばらしい",
+ "ずひょう",
+ "ずぶぬれ",
+ "すぶり",
+ "すふれ",
+ "すべて",
+ "すべる",
+ "ずほう",
+ "すぼん",
+ "すまい",
+ "すみ",
+ "すむ",
+ "すめし",
+ "すもう",
+ "すやき",
+ "すらいす",
+ "すらいど",
+ "すらすら",
+ "すり",
+ "する",
+ "するめ",
+ "すれちがう",
+ "すろっと",
+ "すわる",
+ "すんぜん",
+ "すんぽう",
+ "せあぶら",
+ "せいか",
+ "せいかい",
+ "せいかつ",
+ "せおう",
+ "せかい",
+ "せかいかん",
+ "せかいし",
+ "せかいじゅう",
+ "せき",
+ "せきにん",
+ "せきむ",
+ "せきゆ",
+ "せきらんうん",
+ "せけん",
+ "せこう",
+ "せすじ",
+ "せたい",
+ "せたけ",
+ "せっかい",
+ "せっかく",
+ "せっき",
+ "せっきゃく",
+ "せっきょく",
+ "せっきん",
+ "ぜっく",
+ "せっけん",
+ "せっこつ",
+ "せっさたくま",
+ "せつぞく",
+ "せつだん",
+ "せつでん",
+ "せっぱん",
+ "せつび",
+ "せつぶん",
+ "せつめい",
+ "せつりつ",
+ "せと",
+ "せなか",
+ "せのび",
+ "せはば",
+ "せぼね",
+ "せまい",
+ "せまる",
+ "せみ",
+ "せめる",
+ "せもたれ",
+ "せりふ",
+ "せわ",
+ "せん",
+ "ぜんあく",
+ "せんい",
+ "せんえい",
+ "せんか",
+ "せんきょ",
+ "せんく",
+ "せんけつ",
+ "せんげん",
+ "ぜんご",
+ "せんさい",
+ "せんし",
+ "せんしゅ",
+ "せんす",
+ "せんすい",
+ "せんせい",
+ "せんぞ",
+ "せんそう",
+ "せんたく",
+ "せんち",
+ "せんちゃ",
+ "せんちゃく",
+ "せんちょう",
+ "せんてい",
+ "せんとう",
+ "せんぬき",
+ "せんねん",
+ "ぜんぶ",
+ "せんぷうき",
+ "せんぷく",
+ "ぜんぽう",
+ "せんむ",
+ "せんめい",
+ "せんめんじょ",
+ "せんもん",
+ "せんやく",
+ "せんゆう",
+ "せんよう",
+ "ぜんら",
+ "ぜんりゃく",
+ "せんりょく",
+ "せんれい",
+ "せんろ",
+ "そあく",
+ "そいとげる",
+ "そいね",
+ "そう",
+ "ぞう",
+ "そうがんきょう",
+ "そうき",
+ "そうご",
+ "そうなん",
+ "そうび",
+ "そうひょう",
+ "そうめん",
+ "そうり",
+ "そうりょ",
+ "そえもの",
+ "そえん",
+ "そかい",
+ "そがい",
+ "そぐ",
+ "そげき",
+ "そこう",
+ "そこそこ",
+ "そざい",
+ "そし",
+ "そしな",
+ "そせい",
+ "そせん",
+ "そそぐ",
+ "そだてる",
+ "そつう",
+ "そつえん",
+ "そっかん",
+ "そつぎょう",
+ "そっけつ",
+ "そっこう",
+ "そっせん",
+ "そっと",
+ "そで",
+ "そと",
+ "そとがわ",
+ "そとづら",
+ "そなえる",
+ "そなた",
+ "そば",
+ "そふ",
+ "そふぼ",
+ "そぼ",
+ "そぼく",
+ "そぼろ",
+ "そまつ",
+ "そまる",
+ "そむく",
+ "そむりえ",
+ "そめる",
+ "そもそも",
+ "そよかぜ",
+ "そら",
+ "そらまめ",
+ "そり",
+ "そる",
+ "そろう",
+ "そんかい",
+ "そんけい",
+ "そんざい",
+ "そんしつ",
+ "そんしょう",
+ "そんぞく",
+ "そんちょう",
+ "ぞんび",
+ "ぞんぶん",
+ "そんみん",
+ "たあい",
+ "たいいん",
+ "たいうん",
+ "たいえき",
+ "たいおう",
+ "だいおう",
+ "たいか",
+ "たいかい",
+ "たいき",
+ "たいきけん",
+ "たいぐう",
+ "たいくつ",
+ "たいけい",
+ "たいけつ",
+ "たいけん",
+ "たいこ",
+ "たいこう",
+ "たいさ",
+ "たいさん",
+ "たいしゅつ",
+ "だいじょうぶ",
+ "たいしょく",
+ "だいず",
+ "だいすき",
+ "たいせい",
+ "たいせつ",
+ "たいせん",
+ "たいそう",
+ "たいちょう",
+ "だいちょう",
+ "たいとう",
+ "たいない",
+ "たいねつ",
+ "たいのう",
+ "たいは",
+ "たいはん",
+ "たいひ",
+ "たいふう",
+ "たいへん",
+ "たいほ",
+ "たいまつばな",
+ "たいまん",
+ "たいみんぐ",
+ "たいむ",
+ "たいめん",
+ "たいやき",
+ "たいやく",
+ "たいよう",
+ "たいら",
+ "たいりょう",
+ "たいりょく",
+ "たいる",
+ "たいわ",
+ "たいわん",
+ "たうえ",
+ "たえる",
+ "たおす",
+ "たおる",
+ "たかい",
+ "たかね",
+ "たき",
+ "たきび",
+ "たくさん",
+ "たけ",
+ "たこ",
+ "たこく",
+ "たこやき",
+ "たさい",
+ "ださい",
+ "たしざん",
+ "たす",
+ "たすける",
+ "たそがれ",
+ "たたかう",
+ "たたく",
+ "たちば",
+ "たちばな",
+ "たつ",
+ "だっかい",
+ "だっきゃく",
+ "だっこ",
+ "だっしめん",
+ "だっしゅつ",
+ "だったい",
+ "たて",
+ "たてる",
+ "たとえる",
+ "たな",
+ "たにん",
+ "たぬき",
+ "たね",
+ "たのしみ",
+ "たはつ",
+ "たび",
+ "たぶん",
+ "たべる",
+ "たぼう",
+ "たほうめん",
+ "たま",
+ "たまご",
+ "たまる",
+ "だむる",
+ "ためいき",
+ "ためす",
+ "ためる",
+ "たもつ",
+ "たやすい",
+ "たよる",
+ "たら",
+ "たらす",
+ "たりきほんがん",
+ "たりょう",
+ "たりる",
+ "たる",
+ "たると",
+ "たれる",
+ "たれんと",
+ "たろっと",
+ "たわむれる",
+ "たん",
+ "だんあつ",
+ "たんい",
+ "たんおん",
+ "たんか",
+ "たんき",
+ "たんけん",
+ "たんご",
+ "たんさく",
+ "たんさん",
+ "たんし",
+ "たんしゅく",
+ "たんじょうび",
+ "だんせい",
+ "たんそく",
+ "たんたい",
+ "たんち",
+ "だんち",
+ "たんちょう",
+ "たんてい",
+ "たんてき",
+ "たんとう",
+ "だんな",
+ "たんにん",
+ "だんねつ",
+ "たんのう",
+ "たんぴん",
+ "たんまつ",
+ "たんめい",
+ "だんれつ",
+ "だんろ",
+ "だんわ",
+ "ちあい",
+ "ちあん",
+ "ちい",
+ "ちいき",
+ "ちいさい",
+ "ちえ",
+ "ちえん",
+ "ちか",
+ "ちかい",
+ "ちきゅう",
+ "ちきん",
+ "ちけい",
+ "ちけいず",
+ "ちけん",
+ "ちこく",
+ "ちさい",
+ "ちしき",
+ "ちしりょう",
+ "ちず",
+ "ちせい",
+ "ちそう",
+ "ちたい",
+ "ちたん",
+ "ちちおや",
+ "ちつじょ",
+ "ちてき",
+ "ちてん",
+ "ちぬき",
+ "ちぬり",
+ "ちのう",
+ "ちひょう",
+ "ちへいせん",
+ "ちほう",
+ "ちまた",
+ "ちみつ",
+ "ちみどろ",
+ "ちめいど",
+ "ちゅうい",
+ "ちゅうおう",
+ "ちゅうおうく",
+ "ちゅうがっこう",
+ "ちゅうごく",
+ "ちゆりょく",
+ "ちょうさ",
+ "ちょうし",
+ "ちらし",
+ "ちらみ",
+ "ちり",
+ "ちりがみ",
+ "ちる",
+ "ちるど",
+ "ちわわ",
+ "ちんたい",
+ "ちんもく",
+ "ついか",
+ "つうか",
+ "つうじょう",
+ "つうじる",
+ "つうはん",
+ "つうわ",
+ "つえ",
+ "つかう",
+ "つかれる",
+ "つき",
+ "つく",
+ "つくね",
+ "つくる",
+ "つけね",
+ "つける",
+ "つごう",
+ "つた",
+ "つたえる",
+ "つち",
+ "つつじ",
+ "つとめる",
+ "つな",
+ "つながる",
+ "つなみ",
+ "つねづね",
+ "つの",
+ "つのる",
+ "つば",
+ "つぶ",
+ "つぶす",
+ "つぼ",
+ "つま",
+ "つまらない",
+ "つまる",
+ "つみ",
+ "つみき",
+ "つむ",
+ "つめたい",
+ "つもる",
+ "つや",
+ "つよい",
+ "つり",
+ "つるぼ",
+ "つるみく",
+ "つわもの",
+ "つわり",
+ "てあし",
+ "てあて",
+ "てあみ",
+ "ていか",
+ "ていき",
+ "ていけい",
+ "ていけつ",
+ "ていけつあつ",
+ "ていこく",
+ "ていさつ",
+ "ていし",
+ "ていしゃ",
+ "ていせい",
+ "ていたい",
+ "ていど",
+ "ていねい",
+ "ていひょう",
+ "ていへん",
+ "ていぼう",
+ "てうち",
+ "ておくれ",
+ "てき",
+ "てくび",
+ "てこ",
+ "てさぎょう",
+ "てさげ",
+ "でし",
+ "てすり",
+ "てそう",
+ "てちがい",
+ "てちょう",
+ "てつがく",
+ "てつづき",
+ "てつや",
+ "でぬかえ",
+ "てぬき",
+ "てぬぐい",
+ "てのひら",
+ "てはい",
+ "てふだ",
+ "てほどき",
+ "てほん",
+ "てま",
+ "てまえ",
+ "てまきずし",
+ "てみじか",
+ "てみやげ",
+ "てら",
+ "てらす",
+ "でる",
+ "てれび",
+ "てろ",
+ "てわけ",
+ "てわたし",
+ "でんあつ",
+ "てんい",
+ "てんいん",
+ "てんかい",
+ "てんき",
+ "てんぐ",
+ "てんけん",
+ "でんげん",
+ "てんごく",
+ "てんさい",
+ "てんすう",
+ "でんち",
+ "てんてき",
+ "てんとう",
+ "てんない",
+ "てんぷ",
+ "てんぷら",
+ "てんぼうだい",
+ "てんめつ",
+ "てんらく",
+ "てんらんかい",
+ "でんりゅう",
+ "でんりょく",
+ "でんわ",
+ "どあ",
+ "どあい",
+ "といれ",
+ "とうむぎ",
+ "とおい",
+ "とおす",
+ "とかい",
+ "とかす",
+ "ときおり",
+ "ときどき",
+ "とくい",
+ "とくてい",
+ "とくてん",
+ "とくべつ",
+ "とけい",
+ "とける",
+ "とさか",
+ "とし",
+ "としょかん",
+ "とそう",
+ "とたん",
+ "とち",
+ "とちゅう",
+ "とつぜん",
+ "とつにゅう",
+ "ととのえる",
+ "とない",
+ "となえる",
+ "となり",
+ "とのさま",
+ "とばす",
+ "とぶ",
+ "とほ",
+ "とほう",
+ "どま",
+ "とまる",
+ "とら",
+ "とり",
+ "とる",
+ "とんかつ",
+ "ない",
+ "ないか",
+ "ないかく",
+ "ないこう",
+ "ないしょ",
+ "ないす",
+ "ないせん",
+ "ないそう",
+ "ないぞう",
+ "なおす",
+ "なく",
+ "なこうど",
+ "なさけ",
+ "なし",
+ "なす",
+ "なぜ",
+ "なぞ",
+ "なたでここ",
+ "なつ",
+ "なっとう",
+ "なつやすみ",
+ "ななおし",
+ "なにごと",
+ "なにもの",
+ "なにわ",
+ "なは",
+ "なび",
+ "なふだ",
+ "なべ",
+ "なまいき",
+ "なまえ",
+ "なまみ",
+ "なみ",
+ "なみだ",
+ "なめらか",
+ "なめる",
+ "なやむ",
+ "ならぶ",
+ "なる",
+ "なれる",
+ "なわ",
+ "なわとび",
+ "なわばり",
+ "にあう",
+ "にいがた",
+ "にうけ",
+ "におい",
+ "にかい",
+ "にがて",
+ "にきび",
+ "にく",
+ "にくしみ",
+ "にくまん",
+ "にげる",
+ "にさんかたんそ",
+ "にし",
+ "にしき",
+ "にす",
+ "にせもの",
+ "にちじ",
+ "にちじょう",
+ "にちようび",
+ "にっか",
+ "にっき",
+ "にっけい",
+ "にっこう",
+ "にっさん",
+ "にっしょく",
+ "にっすう",
+ "にっせき",
+ "にってい",
+ "になう",
+ "にほん",
+ "にまめ",
+ "にもつ",
+ "にやり",
+ "にゅういん",
+ "にゅうか",
+ "にゅうし",
+ "にゅうしゃ",
+ "にゅうだん",
+ "にゅうぶ",
+ "にら",
+ "にりんしゃ",
+ "にる",
+ "にわ",
+ "にわとり",
+ "にんい",
+ "にんか",
+ "にんき",
+ "にんげん",
+ "にんしき",
+ "にんしょう",
+ "にんしん",
+ "にんずう",
+ "にんそう",
+ "にんたい",
+ "にんち",
+ "にんてい",
+ "にんにく",
+ "にんぷ",
+ "にんまり",
+ "にんむ",
+ "にんめい",
+ "にんよう",
+ "ぬう",
+ "ぬか",
+ "ぬく",
+ "ぬくもり",
+ "ぬし",
+ "ぬの",
+ "ぬま",
+ "ぬめり",
+ "ぬらす",
+ "ぬる",
+ "ぬんちゃく",
+ "ねあげ",
+ "ねいき",
+ "ねいる",
+ "ねいろ",
+ "ねぎ",
+ "ねぐせ",
+ "ねくたい",
+ "ねくら",
+ "ねこ",
+ "ねこぜ",
+ "ねこむ",
+ "ねさげ",
+ "ねすごす",
+ "ねそべる",
+ "ねつい",
+ "ねつぞう",
+ "ねったい",
+ "ねったいぎょ",
+ "ねぶそく",
+ "ねふだ",
+ "ねぼう",
+ "ねほりはほり",
+ "ねまき",
+ "ねまわし",
+ "ねみみ",
+ "ねむい",
+ "ねもと",
+ "ねらう",
+ "ねる",
+ "ねわざ",
+ "ねんいり",
+ "ねんおし",
+ "ねんかん",
+ "ねんき",
+ "ねんきん",
+ "ねんぐ",
+ "ねんざ",
+ "ねんし",
+ "ねんちゃく",
+ "ねんちょう",
+ "ねんど",
+ "ねんぴ",
+ "ねんぶつ",
+ "ねんまく",
+ "ねんまつ",
+ "ねんりき",
+ "ねんりょう",
+ "ねんれい",
+ "のいず",
+ "のう",
+ "のおづま",
+ "のがす",
+ "のきなみ",
+ "のこぎり",
+ "のこす",
+ "のせる",
+ "のぞく",
+ "のぞむ",
+ "のたまう",
+ "のちほど",
+ "のっく",
+ "のばす",
+ "のはら",
+ "のべる",
+ "のぼる",
+ "のむ",
+ "のやま",
+ "のらいぬ",
+ "のらねこ",
+ "のり",
+ "のる",
+ "のれん",
+ "のんき",
+ "ばあい",
+ "はあく",
+ "ばあさん",
+ "はい",
+ "ばいか",
+ "ばいく",
+ "はいけん",
+ "はいご",
+ "はいこう",
+ "はいし",
+ "はいしゅつ",
+ "はいしん",
+ "はいすい",
+ "はいせつ",
+ "はいせん",
+ "はいそう",
+ "はいち",
+ "ばいばい",
+ "はう",
+ "はえ",
+ "はえる",
+ "はおる",
+ "はか",
+ "ばか",
+ "はかい",
+ "はかる",
+ "はき",
+ "はく",
+ "はくしゅ",
+ "はけん",
+ "はこ",
+ "はこぶ",
+ "はさみ",
+ "はさん",
+ "はし",
+ "はしご",
+ "はしる",
+ "ばす",
+ "はせる",
+ "ぱそこん",
+ "はそん",
+ "はたん",
+ "はち",
+ "はちみつ",
+ "はっか",
+ "はっかく",
+ "はっき",
+ "はっきり",
+ "はっくつ",
+ "はっけん",
+ "はっこう",
+ "はっさん",
+ "はっしゃ",
+ "はっしん",
+ "はったつ",
+ "はっちゃく",
+ "はっちゅう",
+ "はってん",
+ "はっぴょう",
+ "はっぽう",
+ "はて",
+ "はな",
+ "はなす",
+ "はなび",
+ "はにかむ",
+ "はね",
+ "はは",
+ "はぶらし",
+ "はま",
+ "はみがき",
+ "はむ",
+ "はむかう",
+ "はめつ",
+ "はやい",
+ "はら",
+ "はらう",
+ "はり",
+ "はる",
+ "はれ",
+ "はろうぃん",
+ "はわい",
+ "はんい",
+ "はんえい",
+ "はんえん",
+ "はんおん",
+ "はんかく",
+ "はんかち",
+ "はんきょう",
+ "はんこ",
+ "はんこう",
+ "はんしゃ",
+ "はんしん",
+ "はんすう",
+ "はんたい",
+ "はんだん",
+ "ぱんち",
+ "ぱんつ",
+ "はんてい",
+ "はんてん",
+ "はんとし",
+ "はんのう",
+ "はんぱ",
+ "はんぶん",
+ "はんぺん",
+ "はんぼうき",
+ "はんめい",
+ "はんめん",
+ "はんらん",
+ "はんろん",
+ "ひいき",
+ "ひうん",
+ "ひえる",
+ "ひかく",
+ "ひかり",
+ "ひかん",
+ "ひく",
+ "ひくい",
+ "ひけつ",
+ "ひこうき",
+ "ひこく",
+ "ひざ",
+ "ぴざ",
+ "ひさい",
+ "ひさしぶり",
+ "ひさん",
+ "ひし",
+ "ひじ",
+ "ひしょ",
+ "ひじょう",
+ "ひそか",
+ "ひそむ",
+ "ひたむき",
+ "ひたる",
+ "ひつぎ",
+ "ひっこし",
+ "ひっし",
+ "ひっす",
+ "ひつぜん",
+ "ひつよう",
+ "ひてい",
+ "ひと",
+ "ひとごみ",
+ "ひな",
+ "ひなん",
+ "ひねる",
+ "ひはん",
+ "ひびく",
+ "ひひょう",
+ "ひふ",
+ "ひほう",
+ "ひま",
+ "ひまん",
+ "ひみつ",
+ "ひめ",
+ "ひめい",
+ "ひめじし",
+ "ひも",
+ "ひやけ",
+ "ひやす",
+ "ひゆ",
+ "ひよう",
+ "びょうき",
+ "ひらく",
+ "ひりつ",
+ "ひりょう",
+ "ひる",
+ "ひれい",
+ "ひろい",
+ "ひろう",
+ "ひわ",
+ "ひんかく",
+ "ひんけつ",
+ "ひんこん",
+ "ひんし",
+ "ひんしつ",
+ "ひんしゅ",
+ "ひんそう",
+ "ぴんち",
+ "ひんぱん",
+ "びんぼう",
+ "ふあん",
+ "ふいうち",
+ "ふうけい",
+ "ふうせん",
+ "ふうとう",
+ "ふうふ",
+ "ふえ",
+ "ふえる",
+ "ふおん",
+ "ふか",
+ "ふかい",
+ "ふきん",
+ "ふく",
+ "ふくざつ",
+ "ふこう",
+ "ふさい",
+ "ふざい",
+ "ふしぎ",
+ "ふじみ",
+ "ふすま",
+ "ふせい",
+ "ふせぐ",
+ "ふそく",
+ "ふた",
+ "ふたん",
+ "ふち",
+ "ふちょう",
+ "ふつう",
+ "ふっかつ",
+ "ふっき",
+ "ふっきん",
+ "ふっこく",
+ "ふとる",
+ "ふとん",
+ "ふね",
+ "ふのう",
+ "ふはい",
+ "ふひょう",
+ "ふへん",
+ "ふまん",
+ "ふみん",
+ "ふむ",
+ "ふめつ",
+ "ふめん",
+ "ふゆ",
+ "ふよう",
+ "ふりこ",
+ "ふりる",
+ "ふる",
+ "ふるい",
+ "ふろ",
+ "ふんいき",
+ "ふんか",
+ "ぶんか",
+ "ぶんぐ",
+ "ふんしつ",
+ "ぶんせき",
+ "ふんそう",
+ "へい",
+ "へいき",
+ "へいさ",
+ "へいわ",
+ "へきが",
+ "へこむ",
+ "へそ",
+ "へた",
+ "べつ",
+ "べっど",
+ "ぺっと",
+ "へび",
+ "へや",
+ "へる",
+ "へんか",
+ "へんかん",
+ "へんきゃく",
+ "へんきん",
+ "へんさい",
+ "へんたい",
+ "ほあん",
+ "ほいく",
+ "ほうほう",
+ "ほえる",
+ "ほおん",
+ "ほかん",
+ "ほきょう",
+ "ぼきん",
+ "ほくろ",
+ "ほけつ",
+ "ほけん",
+ "ほこう",
+ "ほこる",
+ "ほさ",
+ "ほし",
+ "ほしつ",
+ "ほしゅ",
+ "ほしょう",
+ "ほす",
+ "ほせい",
+ "ぼせい",
+ "ほそい",
+ "ほそく",
+ "ほたて",
+ "ほたる",
+ "ぼち",
+ "ほっきょく",
+ "ほっさ",
+ "ほったん",
+ "ほとんど",
+ "ほめる",
+ "ほる",
+ "ほんい",
+ "ほんき",
+ "ほんけ",
+ "ほんしつ",
+ "まいにち",
+ "まう",
+ "まかい",
+ "まかせる",
+ "まく",
+ "まける",
+ "まこと",
+ "まさつ",
+ "ますく",
+ "まぜる",
+ "まち",
+ "まつ",
+ "まつり",
+ "まとめ",
+ "まなぶ",
+ "まぬけ",
+ "まね",
+ "まねく",
+ "まひ",
+ "まほう",
+ "まめ",
+ "まもる",
+ "まゆげ",
+ "まよう",
+ "まる",
+ "まろやか",
+ "まわす",
+ "まわり",
+ "まんが",
+ "まんかい",
+ "まんきつ",
+ "まんぞく",
+ "みいら",
+ "みうち",
+ "みかた",
+ "みかん",
+ "みぎ",
+ "みけん",
+ "みこん",
+ "みすい",
+ "みすえる",
+ "みせ",
+ "みそ",
+ "みち",
+ "みてい",
+ "みとめる",
+ "みなみかさい",
+ "みねらる",
+ "みのう",
+ "みほん",
+ "みみ",
+ "みもと",
+ "みやげ",
+ "みらい",
+ "みりょく",
+ "みる",
+ "みわく",
+ "むえき",
+ "むえん",
+ "むかし",
+ "むく",
+ "むこ",
+ "むさぼる",
+ "むし",
+ "むすこ",
+ "むすめ",
+ "むせる",
+ "むせん",
+ "むだ",
+ "むち",
+ "むなしい",
+ "むね",
+ "むのう",
+ "むやみ",
+ "むよう",
+ "むら",
+ "むり",
+ "むりょう",
+ "むれ",
+ "むろん",
+ "もうどうけん",
+ "もえる",
+ "もぎ",
+ "もくし",
+ "もくてき",
+ "もし",
+ "もんく",
+ "もんだい",
+ "やすい",
+ "やすみ",
+ "やそう",
+ "やたい",
+ "やちん",
+ "やね",
+ "やぶる",
+ "やま",
+ "やみ",
+ "やめる",
+ "ややこしい",
+ "やよい",
+ "やり",
+ "やわらかい",
+ "ゆけつ",
+ "ゆしゅつ",
+ "ゆせん",
+ "ゆそう",
+ "ゆたか",
+ "ゆちゃく",
+ "ゆでる",
+ "ゆび",
+ "ゆびわ",
+ "ゆめ",
+ "ゆれる",
+ "よう",
+ "よかぜ",
+ "よかん",
+ "よきん",
+ "よくせい",
+ "よくぼう",
+ "よけい",
+ "よさん",
+ "よそう",
+ "よそく",
+ "よち",
+ "よてい",
+ "よどがわく",
+ "よねつ",
+ "よむ",
+ "よめ",
+ "よやく",
+ "よゆう",
+ "よる",
+ "よろこぶ",
+ "らいう",
+ "らくがき",
+ "らくご",
+ "らくさつ",
+ "らくだ",
+ "らくたん",
+ "らしんばん",
+ "らせん",
+ "らぞく",
+ "らたい",
+ "らち",
+ "らっか",
+ "らっかせい",
+ "られつ",
+ "りえき",
+ "りか",
+ "りかい",
+ "りきさく",
+ "りきせつ",
+ "りく",
+ "りくぐん",
+ "りくつ",
+ "りけん",
+ "りこう",
+ "りし",
+ "りす",
+ "りせい",
+ "りそう",
+ "りそく",
+ "りてん",
+ "りねん",
+ "りゅう",
+ "りゆう",
+ "りゅうがく",
+ "りゅうこう",
+ "りゅうし",
+ "りゅうねん",
+ "りよう",
+ "りょうかい",
+ "りょうきん",
+ "りょうしん",
+ "りょうて",
+ "りょうど",
+ "りょうほう",
+ "りょうり",
+ "りりく",
+ "りれき",
+ "りろん",
+ "りんご",
+ "るいじ",
+ "るす",
+ "れいかん",
+ "れいぎ",
+ "れいせい",
+ "れいぞうこ",
+ "れいとう",
+ "れきし",
+ "れきだい",
+ "れんあい",
+ "れんけい",
+ "れんけつ",
+ "れんこう",
+ "れんこん",
+ "れんさ",
+ "れんさい",
+ "れんさく",
+ "れんしゃ",
+ "れんしゅう",
+ "れんぞく",
+ "ろうか",
+ "ろうご",
+ "ろうじん",
+ "ろうそく",
+ "ろか",
+ "ろくが",
+ "ろこつ",
+ "ろしゅつ",
+ "ろせん",
+ "ろてん",
+ "ろめん",
+ "ろれつ",
+ "ろんぎ",
+ "ろんぱ",
+ "ろんぶん",
+ "ろんり",
+ "わじまし"
+ });
+ word_map = new std::unordered_map<std::string, uint32_t>;
+ trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
+ language_name = "Japanese";
+ populate_maps();
}
- else
- {
- trimmed_word_map[*it] = ii;
- }
- }
- return trimmed_word_map;
+ };
}
+
+#endif
diff --git a/src/mnemonics/language_base.h b/src/mnemonics/language_base.h
new file mode 100644
index 000000000..90ff9c334
--- /dev/null
+++ b/src/mnemonics/language_base.h
@@ -0,0 +1,61 @@
+#ifndef LANGUAGE_BASE_H
+#define LANGUAGE_BASE_H
+
+#include <vector>
+#include <unordered_map>
+#include <string>
+
+namespace Language
+{
+ const int unique_prefix_length = 4;
+ class Base
+ {
+ protected:
+ std::vector<std::string> *word_list;
+ std::unordered_map<std::string, uint32_t> *word_map;
+ std::unordered_map<std::string, uint32_t> *trimmed_word_map;
+ std::string language_name;
+ void populate_maps()
+ {
+ int ii;
+ std::vector<std::string>::iterator it;
+ for (it = word_list->begin(), ii = 0; it != word_list->end(); it++, ii++)
+ {
+ (*word_map)[*it] = ii;
+ if (it->length() > 4)
+ {
+ (*trimmed_word_map)[it->substr(0, 4)] = ii;
+ }
+ else
+ {
+ (*trimmed_word_map)[*it] = ii;
+ }
+ }
+ }
+ public:
+ Base()
+ {
+ word_list = new std::vector<std::string>;
+ word_map = new std::unordered_map<std::string, uint32_t>;
+ trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
+ }
+ const std::vector<std::string>& get_word_list() const
+ {
+ return *word_list;
+ }
+ const std::unordered_map<std::string, uint32_t>& get_word_map() const
+ {
+ return *word_map;
+ }
+ const std::unordered_map<std::string, uint32_t>& get_trimmed_word_map() const
+ {
+ return *trimmed_word_map;
+ }
+ std::string get_language_name() const
+ {
+ return language_name;
+ }
+ };
+}
+
+#endif
diff --git a/src/mnemonics/old_english.h b/src/mnemonics/old_english.h
index 3a315f6ef..dc36f5119 100644
--- a/src/mnemonics/old_english.h
+++ b/src/mnemonics/old_english.h
@@ -1,1676 +1,1652 @@
+#ifndef OLD_ENGLISH_H
+#define OLD_ENGLISH_H
+
#include <vector>
#include <unordered_map>
+#include "language_base.h"
+#include <string>
-std::vector<std::string>& word_list_old_english()
-{
- static std::vector<std::string> word_list(
- "like",
- "just",
- "love",
- "know",
- "never",
- "want",
- "time",
- "out",
- "there",
- "make",
- "look",
- "eye",
- "down",
- "only",
- "think",
- "heart",
- "back",
- "then",
- "into",
- "about",
- "more",
- "away",
- "still",
- "them",
- "take",
- "thing",
- "even",
- "through",
- "long",
- "always",
- "world",
- "too",
- "friend",
- "tell",
- "try",
- "hand",
- "thought",
- "over",
- "here",
- "other",
- "need",
- "smile",
- "again",
- "much",
- "cry",
- "been",
- "night",
- "ever",
- "little",
- "said",
- "end",
- "some",
- "those",
- "around",
- "mind",
- "people",
- "girl",
- "leave",
- "dream",
- "left",
- "turn",
- "myself",
- "give",
- "nothing",
- "really",
- "off",
- "before",
- "something",
- "find",
- "walk",
- "wish",
- "good",
- "once",
- "place",
- "ask",
- "stop",
- "keep",
- "watch",
- "seem",
- "everything",
- "wait",
- "got",
- "yet",
- "made",
- "remember",
- "start",
- "alone",
- "run",
- "hope",
- "maybe",
- "believe",
- "body",
- "hate",
- "after",
- "close",
- "talk",
- "stand",
- "own",
- "each",
- "hurt",
- "help",
- "home",
- "god",
- "soul",
- "new",
- "many",
- "two",
- "inside",
- "should",
- "true",
- "first",
- "fear",
- "mean",
- "better",
- "play",
- "another",
- "gone",
- "change",
- "use",
- "wonder",
- "someone",
- "hair",
- "cold",
- "open",
- "best",
- "any",
- "behind",
- "happen",
- "water",
- "dark",
- "laugh",
- "stay",
- "forever",
- "name",
- "work",
- "show",
- "sky",
- "break",
- "came",
- "deep",
- "door",
- "put",
- "black",
- "together",
- "upon",
- "happy",
- "such",
- "great",
- "white",
- "matter",
- "fill",
- "past",
- "please",
- "burn",
- "cause",
- "enough",
- "touch",
- "moment",
- "soon",
- "voice",
- "scream",
- "anything",
- "stare",
- "sound",
- "red",
- "everyone",
- "hide",
- "kiss",
- "truth",
- "death",
- "beautiful",
- "mine",
- "blood",
- "broken",
- "very",
- "pass",
- "next",
- "forget",
- "tree",
- "wrong",
- "air",
- "mother",
- "understand",
- "lip",
- "hit",
- "wall",
- "memory",
- "sleep",
- "free",
- "high",
- "realize",
- "school",
- "might",
- "skin",
- "sweet",
- "perfect",
- "blue",
- "kill",
- "breath",
- "dance",
- "against",
- "fly",
- "between",
- "grow",
- "strong",
- "under",
- "listen",
- "bring",
- "sometimes",
- "speak",
- "pull",
- "person",
- "become",
- "family",
- "begin",
- "ground",
- "real",
- "small",
- "father",
- "sure",
- "feet",
- "rest",
- "young",
- "finally",
- "land",
- "across",
- "today",
- "different",
- "guy",
- "line",
- "fire",
- "reason",
- "reach",
- "second",
- "slowly",
- "write",
- "eat",
- "smell",
- "mouth",
- "step",
- "learn",
- "three",
- "floor",
- "promise",
- "breathe",
- "darkness",
- "push",
- "earth",
- "guess",
- "save",
- "song",
- "above",
- "along",
- "both",
- "color",
- "house",
- "almost",
- "sorry",
- "anymore",
- "brother",
- "okay",
- "dear",
- "game",
- "fade",
- "already",
- "apart",
- "warm",
- "beauty",
- "heard",
- "notice",
- "question",
- "shine",
- "began",
- "piece",
- "whole",
- "shadow",
- "secret",
- "street",
- "within",
- "finger",
- "point",
- "morning",
- "whisper",
- "child",
- "moon",
- "green",
- "story",
- "glass",
- "kid",
- "silence",
- "since",
- "soft",
- "yourself",
- "empty",
- "shall",
- "angel",
- "answer",
- "baby",
- "bright",
- "dad",
- "path",
- "worry",
- "hour",
- "drop",
- "follow",
- "power",
- "war",
- "half",
- "flow",
- "heaven",
- "act",
- "chance",
- "fact",
- "least",
- "tired",
- "children",
- "near",
- "quite",
- "afraid",
- "rise",
- "sea",
- "taste",
- "window",
- "cover",
- "nice",
- "trust",
- "lot",
- "sad",
- "cool",
- "force",
- "peace",
- "return",
- "blind",
- "easy",
- "ready",
- "roll",
- "rose",
- "drive",
- "held",
- "music",
- "beneath",
- "hang",
- "mom",
- "paint",
- "emotion",
- "quiet",
- "clear",
- "cloud",
- "few",
- "pretty",
- "bird",
- "outside",
- "paper",
- "picture",
- "front",
- "rock",
- "simple",
- "anyone",
- "meant",
- "reality",
- "road",
- "sense",
- "waste",
- "bit",
- "leaf",
- "thank",
- "happiness",
- "meet",
- "men",
- "smoke",
- "truly",
- "decide",
- "self",
- "age",
- "book",
- "form",
- "alive",
- "carry",
- "escape",
- "damn",
- "instead",
- "able",
- "ice",
- "minute",
- "throw",
- "catch",
- "leg",
- "ring",
- "course",
- "goodbye",
- "lead",
- "poem",
- "sick",
- "corner",
- "desire",
- "known",
- "problem",
- "remind",
- "shoulder",
- "suppose",
- "toward",
- "wave",
- "drink",
- "jump",
- "woman",
- "pretend",
- "sister",
- "week",
- "human",
- "joy",
- "crack",
- "grey",
- "pray",
- "surprise",
- "dry",
- "knee",
- "less",
- "search",
- "bleed",
- "caught",
- "clean",
- "embrace",
- "future",
- "king",
- "son",
- "sorrow",
- "chest",
- "hug",
- "remain",
- "sat",
- "worth",
- "blow",
- "daddy",
- "final",
- "parent",
- "tight",
- "also",
- "create",
- "lonely",
- "safe",
- "cross",
- "dress",
- "evil",
- "silent",
- "bone",
- "fate",
- "perhaps",
- "anger",
- "class",
- "scar",
- "snow",
- "tiny",
- "tonight",
- "continue",
- "control",
- "dog",
- "edge",
- "mirror",
- "month",
- "suddenly",
- "comfort",
- "given",
- "loud",
- "quickly",
- "gaze",
- "plan",
- "rush",
- "stone",
- "town",
- "battle",
- "ignore",
- "spirit",
- "stood",
- "stupid",
- "yours",
- "brown",
- "build",
- "dust",
- "hey",
- "kept",
- "pay",
- "phone",
- "twist",
- "although",
- "ball",
- "beyond",
- "hidden",
- "nose",
- "taken",
- "fail",
- "float",
- "pure",
- "somehow",
- "wash",
- "wrap",
- "angry",
- "cheek",
- "creature",
- "forgotten",
- "heat",
- "rip",
- "single",
- "space",
- "special",
- "weak",
- "whatever",
- "yell",
- "anyway",
- "blame",
- "job",
- "choose",
- "country",
- "curse",
- "drift",
- "echo",
- "figure",
- "grew",
- "laughter",
- "neck",
- "suffer",
- "worse",
- "yeah",
- "disappear",
- "foot",
- "forward",
- "knife",
- "mess",
- "somewhere",
- "stomach",
- "storm",
- "beg",
- "idea",
- "lift",
- "offer",
- "breeze",
- "field",
- "five",
- "often",
- "simply",
- "stuck",
- "win",
- "allow",
- "confuse",
- "enjoy",
- "except",
- "flower",
- "seek",
- "strength",
- "calm",
- "grin",
- "gun",
- "heavy",
- "hill",
- "large",
- "ocean",
- "shoe",
- "sigh",
- "straight",
- "summer",
- "tongue",
- "accept",
- "crazy",
- "everyday",
- "exist",
- "grass",
- "mistake",
- "sent",
- "shut",
- "surround",
- "table",
- "ache",
- "brain",
- "destroy",
- "heal",
- "nature",
- "shout",
- "sign",
- "stain",
- "choice",
- "doubt",
- "glance",
- "glow",
- "mountain",
- "queen",
- "stranger",
- "throat",
- "tomorrow",
- "city",
- "either",
- "fish",
- "flame",
- "rather",
- "shape",
- "spin",
- "spread",
- "ash",
- "distance",
- "finish",
- "image",
- "imagine",
- "important",
- "nobody",
- "shatter",
- "warmth",
- "became",
- "feed",
- "flesh",
- "funny",
- "lust",
- "shirt",
- "trouble",
- "yellow",
- "attention",
- "bare",
- "bite",
- "money",
- "protect",
- "amaze",
- "appear",
- "born",
- "choke",
- "completely",
- "daughter",
- "fresh",
- "friendship",
- "gentle",
- "probably",
- "six",
- "deserve",
- "expect",
- "grab",
- "middle",
- "nightmare",
- "river",
- "thousand",
- "weight",
- "worst",
- "wound",
- "barely",
- "bottle",
- "cream",
- "regret",
- "relationship",
- "stick",
- "test",
- "crush",
- "endless",
- "fault",
- "itself",
- "rule",
- "spill",
- "art",
- "circle",
- "join",
- "kick",
- "mask",
- "master",
- "passion",
- "quick",
- "raise",
- "smooth",
- "unless",
- "wander",
- "actually",
- "broke",
- "chair",
- "deal",
- "favorite",
- "gift",
- "note",
- "number",
- "sweat",
- "box",
- "chill",
- "clothes",
- "lady",
- "mark",
- "park",
- "poor",
- "sadness",
- "tie",
- "animal",
- "belong",
- "brush",
- "consume",
- "dawn",
- "forest",
- "innocent",
- "pen",
- "pride",
- "stream",
- "thick",
- "clay",
- "complete",
- "count",
- "draw",
- "faith",
- "press",
- "silver",
- "struggle",
- "surface",
- "taught",
- "teach",
- "wet",
- "bless",
- "chase",
- "climb",
- "enter",
- "letter",
- "melt",
- "metal",
- "movie",
- "stretch",
- "swing",
- "vision",
- "wife",
- "beside",
- "crash",
- "forgot",
- "guide",
- "haunt",
- "joke",
- "knock",
- "plant",
- "pour",
- "prove",
- "reveal",
- "steal",
- "stuff",
- "trip",
- "wood",
- "wrist",
- "bother",
- "bottom",
- "crawl",
- "crowd",
- "fix",
- "forgive",
- "frown",
- "grace",
- "loose",
- "lucky",
- "party",
- "release",
- "surely",
- "survive",
- "teacher",
- "gently",
- "grip",
- "speed",
- "suicide",
- "travel",
- "treat",
- "vein",
- "written",
- "cage",
- "chain",
- "conversation",
- "date",
- "enemy",
- "however",
- "interest",
- "million",
- "page",
- "pink",
- "proud",
- "sway",
- "themselves",
- "winter",
- "church",
- "cruel",
- "cup",
- "demon",
- "experience",
- "freedom",
- "pair",
- "pop",
- "purpose",
- "respect",
- "shoot",
- "softly",
- "state",
- "strange",
- "bar",
- "birth",
- "curl",
- "dirt",
- "excuse",
- "lord",
- "lovely",
- "monster",
- "order",
- "pack",
- "pants",
- "pool",
- "scene",
- "seven",
- "shame",
- "slide",
- "ugly",
- "among",
- "blade",
- "blonde",
- "closet",
- "creek",
- "deny",
- "drug",
- "eternity",
- "gain",
- "grade",
- "handle",
- "key",
- "linger",
- "pale",
- "prepare",
- "swallow",
- "swim",
- "tremble",
- "wheel",
- "won",
- "cast",
- "cigarette",
- "claim",
- "college",
- "direction",
- "dirty",
- "gather",
- "ghost",
- "hundred",
- "loss",
- "lung",
- "orange",
- "present",
- "swear",
- "swirl",
- "twice",
- "wild",
- "bitter",
- "blanket",
- "doctor",
- "everywhere",
- "flash",
- "grown",
- "knowledge",
- "numb",
- "pressure",
- "radio",
- "repeat",
- "ruin",
- "spend",
- "unknown",
- "buy",
- "clock",
- "devil",
- "early",
- "false",
- "fantasy",
- "pound",
- "precious",
- "refuse",
- "sheet",
- "teeth",
- "welcome",
- "add",
- "ahead",
- "block",
- "bury",
- "caress",
- "content",
- "depth",
- "despite",
- "distant",
- "marry",
- "purple",
- "threw",
- "whenever",
- "bomb",
- "dull",
- "easily",
- "grasp",
- "hospital",
- "innocence",
- "normal",
- "receive",
- "reply",
- "rhyme",
- "shade",
- "someday",
- "sword",
- "toe",
- "visit",
- "asleep",
- "bought",
- "center",
- "consider",
- "flat",
- "hero",
- "history",
- "ink",
- "insane",
- "muscle",
- "mystery",
- "pocket",
- "reflection",
- "shove",
- "silently",
- "smart",
- "soldier",
- "spot",
- "stress",
- "train",
- "type",
- "view",
- "whether",
- "bus",
- "energy",
- "explain",
- "holy",
- "hunger",
- "inch",
- "magic",
- "mix",
- "noise",
- "nowhere",
- "prayer",
- "presence",
- "shock",
- "snap",
- "spider",
- "study",
- "thunder",
- "trail",
- "admit",
- "agree",
- "bag",
- "bang",
- "bound",
- "butterfly",
- "cute",
- "exactly",
- "explode",
- "familiar",
- "fold",
- "further",
- "pierce",
- "reflect",
- "scent",
- "selfish",
- "sharp",
- "sink",
- "spring",
- "stumble",
- "universe",
- "weep",
- "women",
- "wonderful",
- "action",
- "ancient",
- "attempt",
- "avoid",
- "birthday",
- "branch",
- "chocolate",
- "core",
- "depress",
- "drunk",
- "especially",
- "focus",
- "fruit",
- "honest",
- "match",
- "palm",
- "perfectly",
- "pillow",
- "pity",
- "poison",
- "roar",
- "shift",
- "slightly",
- "thump",
- "truck",
- "tune",
- "twenty",
- "unable",
- "wipe",
- "wrote",
- "coat",
- "constant",
- "dinner",
- "drove",
- "egg",
- "eternal",
- "flight",
- "flood",
- "frame",
- "freak",
- "gasp",
- "glad",
- "hollow",
- "motion",
- "peer",
- "plastic",
- "root",
- "screen",
- "season",
- "sting",
- "strike",
- "team",
- "unlike",
- "victim",
- "volume",
- "warn",
- "weird",
- "attack",
- "await",
- "awake",
- "built",
- "charm",
- "crave",
- "despair",
- "fought",
- "grant",
- "grief",
- "horse",
- "limit",
- "message",
- "ripple",
- "sanity",
- "scatter",
- "serve",
- "split",
- "string",
- "trick",
- "annoy",
- "blur",
- "boat",
- "brave",
- "clearly",
- "cling",
- "connect",
- "fist",
- "forth",
- "imagination",
- "iron",
- "jock",
- "judge",
- "lesson",
- "milk",
- "misery",
- "nail",
- "naked",
- "ourselves",
- "poet",
- "possible",
- "princess",
- "sail",
- "size",
- "snake",
- "society",
- "stroke",
- "torture",
- "toss",
- "trace",
- "wise",
- "bloom",
- "bullet",
- "cell",
- "check",
- "cost",
- "darling",
- "during",
- "footstep",
- "fragile",
- "hallway",
- "hardly",
- "horizon",
- "invisible",
- "journey",
- "midnight",
- "mud",
- "nod",
- "pause",
- "relax",
- "shiver",
- "sudden",
- "value",
- "youth",
- "abuse",
- "admire",
- "blink",
- "breast",
- "bruise",
- "constantly",
- "couple",
- "creep",
- "curve",
- "difference",
- "dumb",
- "emptiness",
- "gotta",
- "honor",
- "plain",
- "planet",
- "recall",
- "rub",
- "ship",
- "slam",
- "soar",
- "somebody",
- "tightly",
- "weather",
- "adore",
- "approach",
- "bond",
- "bread",
- "burst",
- "candle",
- "coffee",
- "cousin",
- "crime",
- "desert",
- "flutter",
- "frozen",
- "grand",
- "heel",
- "hello",
- "language",
- "level",
- "movement",
- "pleasure",
- "powerful",
- "random",
- "rhythm",
- "settle",
- "silly",
- "slap",
- "sort",
- "spoken",
- "steel",
- "threaten",
- "tumble",
- "upset",
- "aside",
- "awkward",
- "bee",
- "blank",
- "board",
- "button",
- "card",
- "carefully",
- "complain",
- "crap",
- "deeply",
- "discover",
- "drag",
- "dread",
- "effort",
- "entire",
- "fairy",
- "giant",
- "gotten",
- "greet",
- "illusion",
- "jeans",
- "leap",
- "liquid",
- "march",
- "mend",
- "nervous",
- "nine",
- "replace",
- "rope",
- "spine",
- "stole",
- "terror",
- "accident",
- "apple",
- "balance",
- "boom",
- "childhood",
- "collect",
- "demand",
- "depression",
- "eventually",
- "faint",
- "glare",
- "goal",
- "group",
- "honey",
- "kitchen",
- "laid",
- "limb",
- "machine",
- "mere",
- "mold",
- "murder",
- "nerve",
- "painful",
- "poetry",
- "prince",
- "rabbit",
- "shelter",
- "shore",
- "shower",
- "soothe",
- "stair",
- "steady",
- "sunlight",
- "tangle",
- "tease",
- "treasure",
- "uncle",
- "begun",
- "bliss",
- "canvas",
- "cheer",
- "claw",
- "clutch",
- "commit",
- "crimson",
- "crystal",
- "delight",
- "doll",
- "existence",
- "express",
- "fog",
- "football",
- "gay",
- "goose",
- "guard",
- "hatred",
- "illuminate",
- "mass",
- "math",
- "mourn",
- "rich",
- "rough",
- "skip",
- "stir",
- "student",
- "style",
- "support",
- "thorn",
- "tough",
- "yard",
- "yearn",
- "yesterday",
- "advice",
- "appreciate",
- "autumn",
- "bank",
- "beam",
- "bowl",
- "capture",
- "carve",
- "collapse",
- "confusion",
- "creation",
- "dove",
- "feather",
- "girlfriend",
- "glory",
- "government",
- "harsh",
- "hop",
- "inner",
- "loser",
- "moonlight",
- "neighbor",
- "neither",
- "peach",
- "pig",
- "praise",
- "screw",
- "shield",
- "shimmer",
- "sneak",
- "stab",
- "subject",
- "throughout",
- "thrown",
- "tower",
- "twirl",
- "wow",
- "army",
- "arrive",
- "bathroom",
- "bump",
- "cease",
- "cookie",
- "couch",
- "courage",
- "dim",
- "guilt",
- "howl",
- "hum",
- "husband",
- "insult",
- "led",
- "lunch",
- "mock",
- "mostly",
- "natural",
- "nearly",
- "needle",
- "nerd",
- "peaceful",
- "perfection",
- "pile",
- "price",
- "remove",
- "roam",
- "sanctuary",
- "serious",
- "shiny",
- "shook",
- "sob",
- "stolen",
- "tap",
- "vain",
- "void",
- "warrior",
- "wrinkle",
- "affection",
- "apologize",
- "blossom",
- "bounce",
- "bridge",
- "cheap",
- "crumble",
- "decision",
- "descend",
- "desperately",
- "dig",
- "dot",
- "flip",
- "frighten",
- "heartbeat",
- "huge",
- "lazy",
- "lick",
- "odd",
- "opinion",
- "process",
- "puzzle",
- "quietly",
- "retreat",
- "score",
- "sentence",
- "separate",
- "situation",
- "skill",
- "soak",
- "square",
- "stray",
- "taint",
- "task",
- "tide",
- "underneath",
- "veil",
- "whistle",
- "anywhere",
- "bedroom",
- "bid",
- "bloody",
- "burden",
- "careful",
- "compare",
- "concern",
- "curtain",
- "decay",
- "defeat",
- "describe",
- "double",
- "dreamer",
- "driver",
- "dwell",
- "evening",
- "flare",
- "flicker",
- "grandma",
- "guitar",
- "harm",
- "horrible",
- "hungry",
- "indeed",
- "lace",
- "melody",
- "monkey",
- "nation",
- "object",
- "obviously",
- "rainbow",
- "salt",
- "scratch",
- "shown",
- "shy",
- "stage",
- "stun",
- "third",
- "tickle",
- "useless",
- "weakness",
- "worship",
- "worthless",
- "afternoon",
- "beard",
- "boyfriend",
- "bubble",
- "busy",
- "certain",
- "chin",
- "concrete",
- "desk",
- "diamond",
- "doom",
- "drawn",
- "due",
- "felicity",
- "freeze",
- "frost",
- "garden",
- "glide",
- "harmony",
- "hopefully",
- "hunt",
- "jealous",
- "lightning",
- "mama",
- "mercy",
- "peel",
- "physical",
- "position",
- "pulse",
- "punch",
- "quit",
- "rant",
- "respond",
- "salty",
- "sane",
- "satisfy",
- "savior",
- "sheep",
- "slept",
- "social",
- "sport",
- "tuck",
- "utter",
- "valley",
- "wolf",
- "aim",
- "alas",
- "alter",
- "arrow",
- "awaken",
- "beaten",
- "belief",
- "brand",
- "ceiling",
- "cheese",
- "clue",
- "confidence",
- "connection",
- "daily",
- "disguise",
- "eager",
- "erase",
- "essence",
- "everytime",
- "expression",
- "fan",
- "flag",
- "flirt",
- "foul",
- "fur",
- "giggle",
- "glorious",
- "ignorance",
- "law",
- "lifeless",
- "measure",
- "mighty",
- "muse",
- "north",
- "opposite",
- "paradise",
- "patience",
- "patient",
- "pencil",
- "petal",
- "plate",
- "ponder",
- "possibly",
- "practice",
- "slice",
- "spell",
- "stock",
- "strife",
- "strip",
- "suffocate",
- "suit",
- "tender",
- "tool",
- "trade",
- "velvet",
- "verse",
- "waist",
- "witch",
- "aunt",
- "bench",
- "bold",
- "cap",
- "certainly",
- "click",
- "companion",
- "creator",
- "dart",
- "delicate",
- "determine",
- "dish",
- "dragon",
- "drama",
- "drum",
- "dude",
- "everybody",
- "feast",
- "forehead",
- "former",
- "fright",
- "fully",
- "gas",
- "hook",
- "hurl",
- "invite",
- "juice",
- "manage",
- "moral",
- "possess",
- "raw",
- "rebel",
- "royal",
- "scale",
- "scary",
- "several",
- "slight",
- "stubborn",
- "swell",
- "talent",
- "tea",
- "terrible",
- "thread",
- "torment",
- "trickle",
- "usually",
- "vast",
- "violence",
- "weave",
- "acid",
- "agony",
- "ashamed",
- "awe",
- "belly",
- "blend",
- "blush",
- "character",
- "cheat",
- "common",
- "company",
- "coward",
- "creak",
- "danger",
- "deadly",
- "defense",
- "define",
- "depend",
- "desperate",
- "destination",
- "dew",
- "duck",
- "dusty",
- "embarrass",
- "engine",
- "example",
- "explore",
- "foe",
- "freely",
- "frustrate",
- "generation",
- "glove",
- "guilty",
- "health",
- "hurry",
- "idiot",
- "impossible",
- "inhale",
- "jaw",
- "kingdom",
- "mention",
- "mist",
- "moan",
- "mumble",
- "mutter",
- "observe",
- "ode",
- "pathetic",
- "pattern",
- "pie",
- "prefer",
- "puff",
- "rape",
- "rare",
- "revenge",
- "rude",
- "scrape",
- "spiral",
- "squeeze",
- "strain",
- "sunset",
- "suspend",
- "sympathy",
- "thigh",
- "throne",
- "total",
- "unseen",
- "weapon",
- "weary"
- );
- return word_list;
-}
-
-std::unordered_map<std::string, unsigned int>& word_map_old_english()
+namespace Language
{
- static std::unordered_map<std::string, unsigned int> word_map;
- if (word_map.size() > 0)
+ class OldEnglish: public Base
{
- return word_map;
- }
- std::vector<std::string> word_list = word_list_old_english();
- int ii;
- std::vector<std::string>::iterator it;
- for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
- {
- word_map[*it] = ii;
- }
- return word_map;
-}
-
-std::unordered_map<std::string, unsigned int>& trimmed_word_map_old_english()
-{
- static std::unordered_map<std::string, unsigned int> trimmed_word_map;
- if (trimmed_word_map.size() > 0)
- {
- return trimmed_word_map;
- }
- std::vector<std::string> word_list = word_list_old_english();
- int ii;
- std::vector<std::string>::iterator it;
- for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
- {
- if (it->length() > 4)
+ public:
+ OldEnglish()
{
- trimmed_word_map[it->substr(0, 4)] = ii;
+ word_list = new std::vector<std::string>({
+ "like",
+ "just",
+ "love",
+ "know",
+ "never",
+ "want",
+ "time",
+ "out",
+ "there",
+ "make",
+ "look",
+ "eye",
+ "down",
+ "only",
+ "think",
+ "heart",
+ "back",
+ "then",
+ "into",
+ "about",
+ "more",
+ "away",
+ "still",
+ "them",
+ "take",
+ "thing",
+ "even",
+ "through",
+ "long",
+ "always",
+ "world",
+ "too",
+ "friend",
+ "tell",
+ "try",
+ "hand",
+ "thought",
+ "over",
+ "here",
+ "other",
+ "need",
+ "smile",
+ "again",
+ "much",
+ "cry",
+ "been",
+ "night",
+ "ever",
+ "little",
+ "said",
+ "end",
+ "some",
+ "those",
+ "around",
+ "mind",
+ "people",
+ "girl",
+ "leave",
+ "dream",
+ "left",
+ "turn",
+ "myself",
+ "give",
+ "nothing",
+ "really",
+ "off",
+ "before",
+ "something",
+ "find",
+ "walk",
+ "wish",
+ "good",
+ "once",
+ "place",
+ "ask",
+ "stop",
+ "keep",
+ "watch",
+ "seem",
+ "everything",
+ "wait",
+ "got",
+ "yet",
+ "made",
+ "remember",
+ "start",
+ "alone",
+ "run",
+ "hope",
+ "maybe",
+ "believe",
+ "body",
+ "hate",
+ "after",
+ "close",
+ "talk",
+ "stand",
+ "own",
+ "each",
+ "hurt",
+ "help",
+ "home",
+ "god",
+ "soul",
+ "new",
+ "many",
+ "two",
+ "inside",
+ "should",
+ "true",
+ "first",
+ "fear",
+ "mean",
+ "better",
+ "play",
+ "another",
+ "gone",
+ "change",
+ "use",
+ "wonder",
+ "someone",
+ "hair",
+ "cold",
+ "open",
+ "best",
+ "any",
+ "behind",
+ "happen",
+ "water",
+ "dark",
+ "laugh",
+ "stay",
+ "forever",
+ "name",
+ "work",
+ "show",
+ "sky",
+ "break",
+ "came",
+ "deep",
+ "door",
+ "put",
+ "black",
+ "together",
+ "upon",
+ "happy",
+ "such",
+ "great",
+ "white",
+ "matter",
+ "fill",
+ "past",
+ "please",
+ "burn",
+ "cause",
+ "enough",
+ "touch",
+ "moment",
+ "soon",
+ "voice",
+ "scream",
+ "anything",
+ "stare",
+ "sound",
+ "red",
+ "everyone",
+ "hide",
+ "kiss",
+ "truth",
+ "death",
+ "beautiful",
+ "mine",
+ "blood",
+ "broken",
+ "very",
+ "pass",
+ "next",
+ "forget",
+ "tree",
+ "wrong",
+ "air",
+ "mother",
+ "understand",
+ "lip",
+ "hit",
+ "wall",
+ "memory",
+ "sleep",
+ "free",
+ "high",
+ "realize",
+ "school",
+ "might",
+ "skin",
+ "sweet",
+ "perfect",
+ "blue",
+ "kill",
+ "breath",
+ "dance",
+ "against",
+ "fly",
+ "between",
+ "grow",
+ "strong",
+ "under",
+ "listen",
+ "bring",
+ "sometimes",
+ "speak",
+ "pull",
+ "person",
+ "become",
+ "family",
+ "begin",
+ "ground",
+ "real",
+ "small",
+ "father",
+ "sure",
+ "feet",
+ "rest",
+ "young",
+ "finally",
+ "land",
+ "across",
+ "today",
+ "different",
+ "guy",
+ "line",
+ "fire",
+ "reason",
+ "reach",
+ "second",
+ "slowly",
+ "write",
+ "eat",
+ "smell",
+ "mouth",
+ "step",
+ "learn",
+ "three",
+ "floor",
+ "promise",
+ "breathe",
+ "darkness",
+ "push",
+ "earth",
+ "guess",
+ "save",
+ "song",
+ "above",
+ "along",
+ "both",
+ "color",
+ "house",
+ "almost",
+ "sorry",
+ "anymore",
+ "brother",
+ "okay",
+ "dear",
+ "game",
+ "fade",
+ "already",
+ "apart",
+ "warm",
+ "beauty",
+ "heard",
+ "notice",
+ "question",
+ "shine",
+ "began",
+ "piece",
+ "whole",
+ "shadow",
+ "secret",
+ "street",
+ "within",
+ "finger",
+ "point",
+ "morning",
+ "whisper",
+ "child",
+ "moon",
+ "green",
+ "story",
+ "glass",
+ "kid",
+ "silence",
+ "since",
+ "soft",
+ "yourself",
+ "empty",
+ "shall",
+ "angel",
+ "answer",
+ "baby",
+ "bright",
+ "dad",
+ "path",
+ "worry",
+ "hour",
+ "drop",
+ "follow",
+ "power",
+ "war",
+ "half",
+ "flow",
+ "heaven",
+ "act",
+ "chance",
+ "fact",
+ "least",
+ "tired",
+ "children",
+ "near",
+ "quite",
+ "afraid",
+ "rise",
+ "sea",
+ "taste",
+ "window",
+ "cover",
+ "nice",
+ "trust",
+ "lot",
+ "sad",
+ "cool",
+ "force",
+ "peace",
+ "return",
+ "blind",
+ "easy",
+ "ready",
+ "roll",
+ "rose",
+ "drive",
+ "held",
+ "music",
+ "beneath",
+ "hang",
+ "mom",
+ "paint",
+ "emotion",
+ "quiet",
+ "clear",
+ "cloud",
+ "few",
+ "pretty",
+ "bird",
+ "outside",
+ "paper",
+ "picture",
+ "front",
+ "rock",
+ "simple",
+ "anyone",
+ "meant",
+ "reality",
+ "road",
+ "sense",
+ "waste",
+ "bit",
+ "leaf",
+ "thank",
+ "happiness",
+ "meet",
+ "men",
+ "smoke",
+ "truly",
+ "decide",
+ "self",
+ "age",
+ "book",
+ "form",
+ "alive",
+ "carry",
+ "escape",
+ "damn",
+ "instead",
+ "able",
+ "ice",
+ "minute",
+ "throw",
+ "catch",
+ "leg",
+ "ring",
+ "course",
+ "goodbye",
+ "lead",
+ "poem",
+ "sick",
+ "corner",
+ "desire",
+ "known",
+ "problem",
+ "remind",
+ "shoulder",
+ "suppose",
+ "toward",
+ "wave",
+ "drink",
+ "jump",
+ "woman",
+ "pretend",
+ "sister",
+ "week",
+ "human",
+ "joy",
+ "crack",
+ "grey",
+ "pray",
+ "surprise",
+ "dry",
+ "knee",
+ "less",
+ "search",
+ "bleed",
+ "caught",
+ "clean",
+ "embrace",
+ "future",
+ "king",
+ "son",
+ "sorrow",
+ "chest",
+ "hug",
+ "remain",
+ "sat",
+ "worth",
+ "blow",
+ "daddy",
+ "final",
+ "parent",
+ "tight",
+ "also",
+ "create",
+ "lonely",
+ "safe",
+ "cross",
+ "dress",
+ "evil",
+ "silent",
+ "bone",
+ "fate",
+ "perhaps",
+ "anger",
+ "class",
+ "scar",
+ "snow",
+ "tiny",
+ "tonight",
+ "continue",
+ "control",
+ "dog",
+ "edge",
+ "mirror",
+ "month",
+ "suddenly",
+ "comfort",
+ "given",
+ "loud",
+ "quickly",
+ "gaze",
+ "plan",
+ "rush",
+ "stone",
+ "town",
+ "battle",
+ "ignore",
+ "spirit",
+ "stood",
+ "stupid",
+ "yours",
+ "brown",
+ "build",
+ "dust",
+ "hey",
+ "kept",
+ "pay",
+ "phone",
+ "twist",
+ "although",
+ "ball",
+ "beyond",
+ "hidden",
+ "nose",
+ "taken",
+ "fail",
+ "float",
+ "pure",
+ "somehow",
+ "wash",
+ "wrap",
+ "angry",
+ "cheek",
+ "creature",
+ "forgotten",
+ "heat",
+ "rip",
+ "single",
+ "space",
+ "special",
+ "weak",
+ "whatever",
+ "yell",
+ "anyway",
+ "blame",
+ "job",
+ "choose",
+ "country",
+ "curse",
+ "drift",
+ "echo",
+ "figure",
+ "grew",
+ "laughter",
+ "neck",
+ "suffer",
+ "worse",
+ "yeah",
+ "disappear",
+ "foot",
+ "forward",
+ "knife",
+ "mess",
+ "somewhere",
+ "stomach",
+ "storm",
+ "beg",
+ "idea",
+ "lift",
+ "offer",
+ "breeze",
+ "field",
+ "five",
+ "often",
+ "simply",
+ "stuck",
+ "win",
+ "allow",
+ "confuse",
+ "enjoy",
+ "except",
+ "flower",
+ "seek",
+ "strength",
+ "calm",
+ "grin",
+ "gun",
+ "heavy",
+ "hill",
+ "large",
+ "ocean",
+ "shoe",
+ "sigh",
+ "straight",
+ "summer",
+ "tongue",
+ "accept",
+ "crazy",
+ "everyday",
+ "exist",
+ "grass",
+ "mistake",
+ "sent",
+ "shut",
+ "surround",
+ "table",
+ "ache",
+ "brain",
+ "destroy",
+ "heal",
+ "nature",
+ "shout",
+ "sign",
+ "stain",
+ "choice",
+ "doubt",
+ "glance",
+ "glow",
+ "mountain",
+ "queen",
+ "stranger",
+ "throat",
+ "tomorrow",
+ "city",
+ "either",
+ "fish",
+ "flame",
+ "rather",
+ "shape",
+ "spin",
+ "spread",
+ "ash",
+ "distance",
+ "finish",
+ "image",
+ "imagine",
+ "important",
+ "nobody",
+ "shatter",
+ "warmth",
+ "became",
+ "feed",
+ "flesh",
+ "funny",
+ "lust",
+ "shirt",
+ "trouble",
+ "yellow",
+ "attention",
+ "bare",
+ "bite",
+ "money",
+ "protect",
+ "amaze",
+ "appear",
+ "born",
+ "choke",
+ "completely",
+ "daughter",
+ "fresh",
+ "friendship",
+ "gentle",
+ "probably",
+ "six",
+ "deserve",
+ "expect",
+ "grab",
+ "middle",
+ "nightmare",
+ "river",
+ "thousand",
+ "weight",
+ "worst",
+ "wound",
+ "barely",
+ "bottle",
+ "cream",
+ "regret",
+ "relationship",
+ "stick",
+ "test",
+ "crush",
+ "endless",
+ "fault",
+ "itself",
+ "rule",
+ "spill",
+ "art",
+ "circle",
+ "join",
+ "kick",
+ "mask",
+ "master",
+ "passion",
+ "quick",
+ "raise",
+ "smooth",
+ "unless",
+ "wander",
+ "actually",
+ "broke",
+ "chair",
+ "deal",
+ "favorite",
+ "gift",
+ "note",
+ "number",
+ "sweat",
+ "box",
+ "chill",
+ "clothes",
+ "lady",
+ "mark",
+ "park",
+ "poor",
+ "sadness",
+ "tie",
+ "animal",
+ "belong",
+ "brush",
+ "consume",
+ "dawn",
+ "forest",
+ "innocent",
+ "pen",
+ "pride",
+ "stream",
+ "thick",
+ "clay",
+ "complete",
+ "count",
+ "draw",
+ "faith",
+ "press",
+ "silver",
+ "struggle",
+ "surface",
+ "taught",
+ "teach",
+ "wet",
+ "bless",
+ "chase",
+ "climb",
+ "enter",
+ "letter",
+ "melt",
+ "metal",
+ "movie",
+ "stretch",
+ "swing",
+ "vision",
+ "wife",
+ "beside",
+ "crash",
+ "forgot",
+ "guide",
+ "haunt",
+ "joke",
+ "knock",
+ "plant",
+ "pour",
+ "prove",
+ "reveal",
+ "steal",
+ "stuff",
+ "trip",
+ "wood",
+ "wrist",
+ "bother",
+ "bottom",
+ "crawl",
+ "crowd",
+ "fix",
+ "forgive",
+ "frown",
+ "grace",
+ "loose",
+ "lucky",
+ "party",
+ "release",
+ "surely",
+ "survive",
+ "teacher",
+ "gently",
+ "grip",
+ "speed",
+ "suicide",
+ "travel",
+ "treat",
+ "vein",
+ "written",
+ "cage",
+ "chain",
+ "conversation",
+ "date",
+ "enemy",
+ "however",
+ "interest",
+ "million",
+ "page",
+ "pink",
+ "proud",
+ "sway",
+ "themselves",
+ "winter",
+ "church",
+ "cruel",
+ "cup",
+ "demon",
+ "experience",
+ "freedom",
+ "pair",
+ "pop",
+ "purpose",
+ "respect",
+ "shoot",
+ "softly",
+ "state",
+ "strange",
+ "bar",
+ "birth",
+ "curl",
+ "dirt",
+ "excuse",
+ "lord",
+ "lovely",
+ "monster",
+ "order",
+ "pack",
+ "pants",
+ "pool",
+ "scene",
+ "seven",
+ "shame",
+ "slide",
+ "ugly",
+ "among",
+ "blade",
+ "blonde",
+ "closet",
+ "creek",
+ "deny",
+ "drug",
+ "eternity",
+ "gain",
+ "grade",
+ "handle",
+ "key",
+ "linger",
+ "pale",
+ "prepare",
+ "swallow",
+ "swim",
+ "tremble",
+ "wheel",
+ "won",
+ "cast",
+ "cigarette",
+ "claim",
+ "college",
+ "direction",
+ "dirty",
+ "gather",
+ "ghost",
+ "hundred",
+ "loss",
+ "lung",
+ "orange",
+ "present",
+ "swear",
+ "swirl",
+ "twice",
+ "wild",
+ "bitter",
+ "blanket",
+ "doctor",
+ "everywhere",
+ "flash",
+ "grown",
+ "knowledge",
+ "numb",
+ "pressure",
+ "radio",
+ "repeat",
+ "ruin",
+ "spend",
+ "unknown",
+ "buy",
+ "clock",
+ "devil",
+ "early",
+ "false",
+ "fantasy",
+ "pound",
+ "precious",
+ "refuse",
+ "sheet",
+ "teeth",
+ "welcome",
+ "add",
+ "ahead",
+ "block",
+ "bury",
+ "caress",
+ "content",
+ "depth",
+ "despite",
+ "distant",
+ "marry",
+ "purple",
+ "threw",
+ "whenever",
+ "bomb",
+ "dull",
+ "easily",
+ "grasp",
+ "hospital",
+ "innocence",
+ "normal",
+ "receive",
+ "reply",
+ "rhyme",
+ "shade",
+ "someday",
+ "sword",
+ "toe",
+ "visit",
+ "asleep",
+ "bought",
+ "center",
+ "consider",
+ "flat",
+ "hero",
+ "history",
+ "ink",
+ "insane",
+ "muscle",
+ "mystery",
+ "pocket",
+ "reflection",
+ "shove",
+ "silently",
+ "smart",
+ "soldier",
+ "spot",
+ "stress",
+ "train",
+ "type",
+ "view",
+ "whether",
+ "bus",
+ "energy",
+ "explain",
+ "holy",
+ "hunger",
+ "inch",
+ "magic",
+ "mix",
+ "noise",
+ "nowhere",
+ "prayer",
+ "presence",
+ "shock",
+ "snap",
+ "spider",
+ "study",
+ "thunder",
+ "trail",
+ "admit",
+ "agree",
+ "bag",
+ "bang",
+ "bound",
+ "butterfly",
+ "cute",
+ "exactly",
+ "explode",
+ "familiar",
+ "fold",
+ "further",
+ "pierce",
+ "reflect",
+ "scent",
+ "selfish",
+ "sharp",
+ "sink",
+ "spring",
+ "stumble",
+ "universe",
+ "weep",
+ "women",
+ "wonderful",
+ "action",
+ "ancient",
+ "attempt",
+ "avoid",
+ "birthday",
+ "branch",
+ "chocolate",
+ "core",
+ "depress",
+ "drunk",
+ "especially",
+ "focus",
+ "fruit",
+ "honest",
+ "match",
+ "palm",
+ "perfectly",
+ "pillow",
+ "pity",
+ "poison",
+ "roar",
+ "shift",
+ "slightly",
+ "thump",
+ "truck",
+ "tune",
+ "twenty",
+ "unable",
+ "wipe",
+ "wrote",
+ "coat",
+ "constant",
+ "dinner",
+ "drove",
+ "egg",
+ "eternal",
+ "flight",
+ "flood",
+ "frame",
+ "freak",
+ "gasp",
+ "glad",
+ "hollow",
+ "motion",
+ "peer",
+ "plastic",
+ "root",
+ "screen",
+ "season",
+ "sting",
+ "strike",
+ "team",
+ "unlike",
+ "victim",
+ "volume",
+ "warn",
+ "weird",
+ "attack",
+ "await",
+ "awake",
+ "built",
+ "charm",
+ "crave",
+ "despair",
+ "fought",
+ "grant",
+ "grief",
+ "horse",
+ "limit",
+ "message",
+ "ripple",
+ "sanity",
+ "scatter",
+ "serve",
+ "split",
+ "string",
+ "trick",
+ "annoy",
+ "blur",
+ "boat",
+ "brave",
+ "clearly",
+ "cling",
+ "connect",
+ "fist",
+ "forth",
+ "imagination",
+ "iron",
+ "jock",
+ "judge",
+ "lesson",
+ "milk",
+ "misery",
+ "nail",
+ "naked",
+ "ourselves",
+ "poet",
+ "possible",
+ "princess",
+ "sail",
+ "size",
+ "snake",
+ "society",
+ "stroke",
+ "torture",
+ "toss",
+ "trace",
+ "wise",
+ "bloom",
+ "bullet",
+ "cell",
+ "check",
+ "cost",
+ "darling",
+ "during",
+ "footstep",
+ "fragile",
+ "hallway",
+ "hardly",
+ "horizon",
+ "invisible",
+ "journey",
+ "midnight",
+ "mud",
+ "nod",
+ "pause",
+ "relax",
+ "shiver",
+ "sudden",
+ "value",
+ "youth",
+ "abuse",
+ "admire",
+ "blink",
+ "breast",
+ "bruise",
+ "constantly",
+ "couple",
+ "creep",
+ "curve",
+ "difference",
+ "dumb",
+ "emptiness",
+ "gotta",
+ "honor",
+ "plain",
+ "planet",
+ "recall",
+ "rub",
+ "ship",
+ "slam",
+ "soar",
+ "somebody",
+ "tightly",
+ "weather",
+ "adore",
+ "approach",
+ "bond",
+ "bread",
+ "burst",
+ "candle",
+ "coffee",
+ "cousin",
+ "crime",
+ "desert",
+ "flutter",
+ "frozen",
+ "grand",
+ "heel",
+ "hello",
+ "language",
+ "level",
+ "movement",
+ "pleasure",
+ "powerful",
+ "random",
+ "rhythm",
+ "settle",
+ "silly",
+ "slap",
+ "sort",
+ "spoken",
+ "steel",
+ "threaten",
+ "tumble",
+ "upset",
+ "aside",
+ "awkward",
+ "bee",
+ "blank",
+ "board",
+ "button",
+ "card",
+ "carefully",
+ "complain",
+ "crap",
+ "deeply",
+ "discover",
+ "drag",
+ "dread",
+ "effort",
+ "entire",
+ "fairy",
+ "giant",
+ "gotten",
+ "greet",
+ "illusion",
+ "jeans",
+ "leap",
+ "liquid",
+ "march",
+ "mend",
+ "nervous",
+ "nine",
+ "replace",
+ "rope",
+ "spine",
+ "stole",
+ "terror",
+ "accident",
+ "apple",
+ "balance",
+ "boom",
+ "childhood",
+ "collect",
+ "demand",
+ "depression",
+ "eventually",
+ "faint",
+ "glare",
+ "goal",
+ "group",
+ "honey",
+ "kitchen",
+ "laid",
+ "limb",
+ "machine",
+ "mere",
+ "mold",
+ "murder",
+ "nerve",
+ "painful",
+ "poetry",
+ "prince",
+ "rabbit",
+ "shelter",
+ "shore",
+ "shower",
+ "soothe",
+ "stair",
+ "steady",
+ "sunlight",
+ "tangle",
+ "tease",
+ "treasure",
+ "uncle",
+ "begun",
+ "bliss",
+ "canvas",
+ "cheer",
+ "claw",
+ "clutch",
+ "commit",
+ "crimson",
+ "crystal",
+ "delight",
+ "doll",
+ "existence",
+ "express",
+ "fog",
+ "football",
+ "gay",
+ "goose",
+ "guard",
+ "hatred",
+ "illuminate",
+ "mass",
+ "math",
+ "mourn",
+ "rich",
+ "rough",
+ "skip",
+ "stir",
+ "student",
+ "style",
+ "support",
+ "thorn",
+ "tough",
+ "yard",
+ "yearn",
+ "yesterday",
+ "advice",
+ "appreciate",
+ "autumn",
+ "bank",
+ "beam",
+ "bowl",
+ "capture",
+ "carve",
+ "collapse",
+ "confusion",
+ "creation",
+ "dove",
+ "feather",
+ "girlfriend",
+ "glory",
+ "government",
+ "harsh",
+ "hop",
+ "inner",
+ "loser",
+ "moonlight",
+ "neighbor",
+ "neither",
+ "peach",
+ "pig",
+ "praise",
+ "screw",
+ "shield",
+ "shimmer",
+ "sneak",
+ "stab",
+ "subject",
+ "throughout",
+ "thrown",
+ "tower",
+ "twirl",
+ "wow",
+ "army",
+ "arrive",
+ "bathroom",
+ "bump",
+ "cease",
+ "cookie",
+ "couch",
+ "courage",
+ "dim",
+ "guilt",
+ "howl",
+ "hum",
+ "husband",
+ "insult",
+ "led",
+ "lunch",
+ "mock",
+ "mostly",
+ "natural",
+ "nearly",
+ "needle",
+ "nerd",
+ "peaceful",
+ "perfection",
+ "pile",
+ "price",
+ "remove",
+ "roam",
+ "sanctuary",
+ "serious",
+ "shiny",
+ "shook",
+ "sob",
+ "stolen",
+ "tap",
+ "vain",
+ "void",
+ "warrior",
+ "wrinkle",
+ "affection",
+ "apologize",
+ "blossom",
+ "bounce",
+ "bridge",
+ "cheap",
+ "crumble",
+ "decision",
+ "descend",
+ "desperately",
+ "dig",
+ "dot",
+ "flip",
+ "frighten",
+ "heartbeat",
+ "huge",
+ "lazy",
+ "lick",
+ "odd",
+ "opinion",
+ "process",
+ "puzzle",
+ "quietly",
+ "retreat",
+ "score",
+ "sentence",
+ "separate",
+ "situation",
+ "skill",
+ "soak",
+ "square",
+ "stray",
+ "taint",
+ "task",
+ "tide",
+ "underneath",
+ "veil",
+ "whistle",
+ "anywhere",
+ "bedroom",
+ "bid",
+ "bloody",
+ "burden",
+ "careful",
+ "compare",
+ "concern",
+ "curtain",
+ "decay",
+ "defeat",
+ "describe",
+ "double",
+ "dreamer",
+ "driver",
+ "dwell",
+ "evening",
+ "flare",
+ "flicker",
+ "grandma",
+ "guitar",
+ "harm",
+ "horrible",
+ "hungry",
+ "indeed",
+ "lace",
+ "melody",
+ "monkey",
+ "nation",
+ "object",
+ "obviously",
+ "rainbow",
+ "salt",
+ "scratch",
+ "shown",
+ "shy",
+ "stage",
+ "stun",
+ "third",
+ "tickle",
+ "useless",
+ "weakness",
+ "worship",
+ "worthless",
+ "afternoon",
+ "beard",
+ "boyfriend",
+ "bubble",
+ "busy",
+ "certain",
+ "chin",
+ "concrete",
+ "desk",
+ "diamond",
+ "doom",
+ "drawn",
+ "due",
+ "felicity",
+ "freeze",
+ "frost",
+ "garden",
+ "glide",
+ "harmony",
+ "hopefully",
+ "hunt",
+ "jealous",
+ "lightning",
+ "mama",
+ "mercy",
+ "peel",
+ "physical",
+ "position",
+ "pulse",
+ "punch",
+ "quit",
+ "rant",
+ "respond",
+ "salty",
+ "sane",
+ "satisfy",
+ "savior",
+ "sheep",
+ "slept",
+ "social",
+ "sport",
+ "tuck",
+ "utter",
+ "valley",
+ "wolf",
+ "aim",
+ "alas",
+ "alter",
+ "arrow",
+ "awaken",
+ "beaten",
+ "belief",
+ "brand",
+ "ceiling",
+ "cheese",
+ "clue",
+ "confidence",
+ "connection",
+ "daily",
+ "disguise",
+ "eager",
+ "erase",
+ "essence",
+ "everytime",
+ "expression",
+ "fan",
+ "flag",
+ "flirt",
+ "foul",
+ "fur",
+ "giggle",
+ "glorious",
+ "ignorance",
+ "law",
+ "lifeless",
+ "measure",
+ "mighty",
+ "muse",
+ "north",
+ "opposite",
+ "paradise",
+ "patience",
+ "patient",
+ "pencil",
+ "petal",
+ "plate",
+ "ponder",
+ "possibly",
+ "practice",
+ "slice",
+ "spell",
+ "stock",
+ "strife",
+ "strip",
+ "suffocate",
+ "suit",
+ "tender",
+ "tool",
+ "trade",
+ "velvet",
+ "verse",
+ "waist",
+ "witch",
+ "aunt",
+ "bench",
+ "bold",
+ "cap",
+ "certainly",
+ "click",
+ "companion",
+ "creator",
+ "dart",
+ "delicate",
+ "determine",
+ "dish",
+ "dragon",
+ "drama",
+ "drum",
+ "dude",
+ "everybody",
+ "feast",
+ "forehead",
+ "former",
+ "fright",
+ "fully",
+ "gas",
+ "hook",
+ "hurl",
+ "invite",
+ "juice",
+ "manage",
+ "moral",
+ "possess",
+ "raw",
+ "rebel",
+ "royal",
+ "scale",
+ "scary",
+ "several",
+ "slight",
+ "stubborn",
+ "swell",
+ "talent",
+ "tea",
+ "terrible",
+ "thread",
+ "torment",
+ "trickle",
+ "usually",
+ "vast",
+ "violence",
+ "weave",
+ "acid",
+ "agony",
+ "ashamed",
+ "awe",
+ "belly",
+ "blend",
+ "blush",
+ "character",
+ "cheat",
+ "common",
+ "company",
+ "coward",
+ "creak",
+ "danger",
+ "deadly",
+ "defense",
+ "define",
+ "depend",
+ "desperate",
+ "destination",
+ "dew",
+ "duck",
+ "dusty",
+ "embarrass",
+ "engine",
+ "example",
+ "explore",
+ "foe",
+ "freely",
+ "frustrate",
+ "generation",
+ "glove",
+ "guilty",
+ "health",
+ "hurry",
+ "idiot",
+ "impossible",
+ "inhale",
+ "jaw",
+ "kingdom",
+ "mention",
+ "mist",
+ "moan",
+ "mumble",
+ "mutter",
+ "observe",
+ "ode",
+ "pathetic",
+ "pattern",
+ "pie",
+ "prefer",
+ "puff",
+ "rape",
+ "rare",
+ "revenge",
+ "rude",
+ "scrape",
+ "spiral",
+ "squeeze",
+ "strain",
+ "sunset",
+ "suspend",
+ "sympathy",
+ "thigh",
+ "throne",
+ "total",
+ "unseen",
+ "weapon",
+ "weary"
+ });
+ word_map = new std::unordered_map<std::string, uint32_t>;
+ trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
+ language_name = "OldEnglish";
+ populate_maps();
}
- else
- {
- trimmed_word_map[*it] = ii;
- }
- }
- return trimmed_word_map;
+ };
}
+
+#endif
diff --git a/src/mnemonics/portuguese.h b/src/mnemonics/portuguese.h
index e83e297e1..6d0754fd3 100644
--- a/src/mnemonics/portuguese.h
+++ b/src/mnemonics/portuguese.h
@@ -1,1677 +1,1652 @@
+#ifndef PORTUGUESE_H
+#define PORTUGUESE_H
+
#include <vector>
#include <unordered_map>
+#include "language_base.h"
+#include <string>
-std::vector<std::string>& word_list_portuguese()
-{
- static std::vector<std::string> word_list(
- "abaular",
- "abdominal",
- "abeto",
- "abissinio",
- "abjeto",
- "ablucao",
- "abnegar",
- "abotoar",
- "abrutalhar",
- "absurdo",
- "abutre",
- "acautelar",
- "accessorios",
- "acetona",
- "achocolatado",
- "acirrar",
- "acne",
- "acovardar",
- "acrostico",
- "actinomicete",
- "acustico",
- "adaptavel",
- "adeus",
- "adivinho",
- "adjunto",
- "admoestar",
- "adnominal",
- "adotivo",
- "adquirir",
- "adriatico",
- "adsorcao",
- "adutora",
- "advogar",
- "aerossol",
- "afazeres",
- "afetuoso",
- "afixo",
- "afluir",
- "afortunar",
- "afrouxar",
- "aftosa",
- "afunilar",
- "agentes",
- "agito",
- "aglutinar",
- "aiatola",
- "aimore",
- "aino",
- "aipo",
- "airoso",
- "ajeitar",
- "ajoelhar",
- "ajudante",
- "ajuste",
- "alazao",
- "albumina",
- "alcunha",
- "alegria",
- "alexandre",
- "alforriar",
- "alguns",
- "alhures",
- "alivio",
- "almoxarife",
- "alotropico",
- "alpiste",
- "alquimista",
- "alsaciano",
- "altura",
- "aluviao",
- "alvura",
- "amazonico",
- "ambulatorio",
- "ametodico",
- "amizades",
- "amniotico",
- "amovivel",
- "amurada",
- "anatomico",
- "ancorar",
- "anexo",
- "anfora",
- "aniversario",
- "anjo",
- "anotar",
- "ansioso",
- "anturio",
- "anuviar",
- "anverso",
- "anzol",
- "aonde",
- "apaziguar",
- "apito",
- "aplicavel",
- "apoteotico",
- "aprimorar",
- "aprumo",
- "apto",
- "apuros",
- "aquoso",
- "arauto",
- "arbusto",
- "arduo",
- "aresta",
- "arfar",
- "arguto",
- "aritmetico",
- "arlequim",
- "armisticio",
- "aromatizar",
- "arpoar",
- "arquivo",
- "arrumar",
- "arsenio",
- "arturiano",
- "aruaque",
- "arvores",
- "asbesto",
- "ascorbico",
- "aspirina",
- "asqueroso",
- "assustar",
- "astuto",
- "atazanar",
- "ativo",
- "atletismo",
- "atmosferico",
- "atormentar",
- "atroz",
- "aturdir",
- "audivel",
- "auferir",
- "augusto",
- "aula",
- "aumento",
- "aurora",
- "autuar",
- "avatar",
- "avexar",
- "avizinhar",
- "avolumar",
- "avulso",
- "axiomatico",
- "azerbaijano",
- "azimute",
- "azoto",
- "azulejo",
- "bacteriologista",
- "badulaque",
- "baforada",
- "baixote",
- "bajular",
- "balzaquiana",
- "bambuzal",
- "banzo",
- "baoba",
- "baqueta",
- "barulho",
- "bastonete",
- "batuta",
- "bauxita",
- "bavaro",
- "bazuca",
- "bcrepuscular",
- "beato",
- "beduino",
- "begonia",
- "behaviorista",
- "beisebol",
- "belzebu",
- "bemol",
- "benzido",
- "beocio",
- "bequer",
- "berro",
- "besuntar",
- "betume",
- "bexiga",
- "bezerro",
- "biatlon",
- "biboca",
- "bicuspide",
- "bidirecional",
- "bienio",
- "bifurcar",
- "bigorna",
- "bijuteria",
- "bimotor",
- "binormal",
- "bioxido",
- "bipolarizacao",
- "biquini",
- "birutice",
- "bisturi",
- "bituca",
- "biunivoco",
- "bivalve",
- "bizarro",
- "blasfemo",
- "blenorreia",
- "blindar",
- "bloqueio",
- "blusao",
- "boazuda",
- "bofete",
- "bojudo",
- "bolso",
- "bombordo",
- "bonzo",
- "botina",
- "boquiaberto",
- "bostoniano",
- "botulismo",
- "bourbon",
- "bovino",
- "boximane",
- "bravura",
- "brevidade",
- "britar",
- "broxar",
- "bruno",
- "bruxuleio",
- "bubonico",
- "bucolico",
- "buda",
- "budista",
- "bueiro",
- "buffer",
- "bugre",
- "bujao",
- "bumerangue",
- "burundines",
- "busto",
- "butique",
- "buzios",
- "caatinga",
- "cabuqui",
- "cacunda",
- "cafuzo",
- "cajueiro",
- "camurca",
- "canudo",
- "caquizeiro",
- "carvoeiro",
- "casulo",
- "catuaba",
- "cauterizar",
- "cebolinha",
- "cedula",
- "ceifeiro",
- "celulose",
- "cerzir",
- "cesto",
- "cetro",
- "ceus",
- "cevar",
- "chavena",
- "cheroqui",
- "chita",
- "chovido",
- "chuvoso",
- "ciatico",
- "cibernetico",
- "cicuta",
- "cidreira",
- "cientistas",
- "cifrar",
- "cigarro",
- "cilio",
- "cimo",
- "cinzento",
- "cioso",
- "cipriota",
- "cirurgico",
- "cisto",
- "citrico",
- "ciumento",
- "civismo",
- "clavicula",
- "clero",
- "clitoris",
- "cluster",
- "coaxial",
- "cobrir",
- "cocota",
- "codorniz",
- "coexistir",
- "cogumelo",
- "coito",
- "colusao",
- "compaixao",
- "comutativo",
- "contentamento",
- "convulsivo",
- "coordenativa",
- "coquetel",
- "correto",
- "corvo",
- "costureiro",
- "cotovia",
- "covil",
- "cozinheiro",
- "cretino",
- "cristo",
- "crivo",
- "crotalo",
- "cruzes",
- "cubo",
- "cucuia",
- "cueiro",
- "cuidar",
- "cujo",
- "cultural",
- "cunilingua",
- "cupula",
- "curvo",
- "custoso",
- "cutucar",
- "czarismo",
- "dablio",
- "dacota",
- "dados",
- "daguerreotipo",
- "daiquiri",
- "daltonismo",
- "damista",
- "dantesco",
- "daquilo",
- "darwinista",
- "dasein",
- "dativo",
- "deao",
- "debutantes",
- "decurso",
- "deduzir",
- "defunto",
- "degustar",
- "dejeto",
- "deltoide",
- "demover",
- "denunciar",
- "deputado",
- "deque",
- "dervixe",
- "desvirtuar",
- "deturpar",
- "deuteronomio",
- "devoto",
- "dextrose",
- "dezoito",
- "diatribe",
- "dicotomico",
- "didatico",
- "dietista",
- "difuso",
- "digressao",
- "diluvio",
- "diminuto",
- "dinheiro",
- "dinossauro",
- "dioxido",
- "diplomatico",
- "dique",
- "dirimivel",
- "disturbio",
- "diurno",
- "divulgar",
- "dizivel",
- "doar",
- "dobro",
- "docura",
- "dodoi",
- "doer",
- "dogue",
- "doloso",
- "domo",
- "donzela",
- "doping",
- "dorsal",
- "dossie",
- "dote",
- "doutro",
- "doze",
- "dravidico",
- "dreno",
- "driver",
- "dropes",
- "druso",
- "dubnio",
- "ducto",
- "dueto",
- "dulija",
- "dundum",
- "duodeno",
- "duquesa",
- "durou",
- "duvidoso",
- "duzia",
- "ebano",
- "ebrio",
- "eburneo",
- "echarpe",
- "eclusa",
- "ecossistema",
- "ectoplasma",
- "ecumenismo",
- "eczema",
- "eden",
- "editorial",
- "edredom",
- "edulcorar",
- "efetuar",
- "efigie",
- "efluvio",
- "egiptologo",
- "egresso",
- "egua",
- "einsteiniano",
- "eira",
- "eivar",
- "eixos",
- "ejetar",
- "elastomero",
- "eldorado",
- "elixir",
- "elmo",
- "eloquente",
- "elucidativo",
- "emaranhar",
- "embutir",
- "emerito",
- "emfa",
- "emitir",
- "emotivo",
- "empuxo",
- "emulsao",
- "enamorar",
- "encurvar",
- "enduro",
- "enevoar",
- "enfurnar",
- "enguico",
- "enho",
- "enigmista",
- "enlutar",
- "enormidade",
- "enpreendimento",
- "enquanto",
- "enriquecer",
- "enrugar",
- "entusiastico",
- "enunciar",
- "envolvimento",
- "enxuto",
- "enzimatico",
- "eolico",
- "epiteto",
- "epoxi",
- "epura",
- "equivoco",
- "erario",
- "erbio",
- "ereto",
- "erguido",
- "erisipela",
- "ermo",
- "erotizar",
- "erros",
- "erupcao",
- "ervilha",
- "esburacar",
- "escutar",
- "esfuziante",
- "esguio",
- "esloveno",
- "esmurrar",
- "esoterismo",
- "esperanca",
- "espirito",
- "espurio",
- "essencialmente",
- "esturricar",
- "esvoacar",
- "etario",
- "eterno",
- "etiquetar",
- "etnologo",
- "etos",
- "etrusco",
- "euclidiano",
- "euforico",
- "eugenico",
- "eunuco",
- "europio",
- "eustaquio",
- "eutanasia",
- "evasivo",
- "eventualidade",
- "evitavel",
- "evoluir",
- "exaustor",
- "excursionista",
- "exercito",
- "exfoliado",
- "exito",
- "exotico",
- "expurgo",
- "exsudar",
- "extrusora",
- "exumar",
- "fabuloso",
- "facultativo",
- "fado",
- "fagulha",
- "faixas",
- "fajuto",
- "faltoso",
- "famoso",
- "fanzine",
- "fapesp",
- "faquir",
- "fartura",
- "fastio",
- "faturista",
- "fausto",
- "favorito",
- "faxineira",
- "fazer",
- "fealdade",
- "febril",
- "fecundo",
- "fedorento",
- "feerico",
- "feixe",
- "felicidade",
- "felipe",
- "feltro",
- "femur",
- "fenotipo",
- "fervura",
- "festivo",
- "feto",
- "feudo",
- "fevereiro",
- "fezinha",
- "fiasco",
- "fibra",
- "ficticio",
- "fiduciario",
- "fiesp",
- "fifa",
- "figurino",
- "fijiano",
- "filtro",
- "finura",
- "fiorde",
- "fiquei",
- "firula",
- "fissurar",
- "fitoteca",
- "fivela",
- "fixo",
- "flavio",
- "flexor",
- "flibusteiro",
- "flotilha",
- "fluxograma",
- "fobos",
- "foco",
- "fofura",
- "foguista",
- "foie",
- "foliculo",
- "fominha",
- "fonte",
- "forum",
- "fosso",
- "fotossintese",
- "foxtrote",
- "fraudulento",
- "frevo",
- "frivolo",
- "frouxo",
- "frutose",
- "fuba",
- "fucsia",
- "fugitivo",
- "fuinha",
- "fujao",
- "fulustreco",
- "fumo",
- "funileiro",
- "furunculo",
- "fustigar",
- "futurologo",
- "fuxico",
- "fuzue",
- "gabriel",
- "gado",
- "gaelico",
- "gafieira",
- "gaguejo",
- "gaivota",
- "gajo",
- "galvanoplastico",
- "gamo",
- "ganso",
- "garrucha",
- "gastronomo",
- "gatuno",
- "gaussiano",
- "gaviao",
- "gaxeta",
- "gazeteiro",
- "gear",
- "geiser",
- "geminiano",
- "generoso",
- "genuino",
- "geossinclinal",
- "gerundio",
- "gestual",
- "getulista",
- "gibi",
- "gigolo",
- "gilete",
- "ginseng",
- "giroscopio",
- "glaucio",
- "glacial",
- "gleba",
- "glifo",
- "glote",
- "glutonia",
- "gnostico",
- "goela",
- "gogo",
- "goitaca",
- "golpista",
- "gomo",
- "gonzo",
- "gorro",
- "gostou",
- "goticula",
- "gourmet",
- "governo",
- "gozo",
- "graxo",
- "grevista",
- "grito",
- "grotesco",
- "gruta",
- "guaxinim",
- "gude",
- "gueto",
- "guizo",
- "guloso",
- "gume",
- "guru",
- "gustativo",
- "gustavo",
- "gutural",
- "habitue",
- "haitiano",
- "halterofilista",
- "hamburguer",
- "hanseniase",
- "happening",
- "harpista",
- "hastear",
- "haveres",
- "hebreu",
- "hectometro",
- "hedonista",
- "hegira",
- "helena",
- "helminto",
- "hemorroidas",
- "henrique",
- "heptassilabo",
- "hertziano",
- "hesitar",
- "heterossexual",
- "heuristico",
- "hexagono",
- "hiato",
- "hibrido",
- "hidrostatico",
- "hieroglifo",
- "hifenizar",
- "higienizar",
- "hilario",
- "himen",
- "hino",
- "hippie",
- "hirsuto",
- "historiografia",
- "hitlerista",
- "hodometro",
- "hoje",
- "holograma",
- "homus",
- "honroso",
- "hoquei",
- "horto",
- "hostilizar",
- "hotentote",
- "huguenote",
- "humilde",
- "huno",
- "hurra",
- "hutu",
- "iaia",
- "ialorixa",
- "iambico",
- "iansa",
- "iaque",
- "iara",
- "iatista",
- "iberico",
- "ibis",
- "icar",
- "iceberg",
- "icosagono",
- "idade",
- "ideologo",
- "idiotice",
- "idoso",
- "iemenita",
- "iene",
- "igarape",
- "iglu",
- "ignorar",
- "igreja",
- "iguaria",
- "iidiche",
- "ilativo",
- "iletrado",
- "ilharga",
- "ilimitado",
- "ilogismo",
- "ilustrissimo",
- "imaturo",
- "imbuzeiro",
- "imerso",
- "imitavel",
- "imovel",
- "imputar",
- "imutavel",
- "inaveriguavel",
- "incutir",
- "induzir",
- "inextricavel",
- "infusao",
- "ingua",
- "inhame",
- "iniquo",
- "injusto",
- "inning",
- "inoxidavel",
- "inquisitorial",
- "insustentavel",
- "intumescimento",
- "inutilizavel",
- "invulneravel",
- "inzoneiro",
- "iodo",
- "iogurte",
- "ioio",
- "ionosfera",
- "ioruba",
- "iota",
- "ipsilon",
- "irascivel",
- "iris",
- "irlandes",
- "irmaos",
- "iroques",
- "irrupcao",
- "isca",
- "isento",
- "islandes",
- "isotopo",
- "isqueiro",
- "israelita",
- "isso",
- "isto",
- "iterbio",
- "itinerario",
- "itrio",
- "iuane",
- "iugoslavo",
- "jabuticabeira",
- "jacutinga",
- "jade",
- "jagunco",
- "jainista",
- "jaleco",
- "jambo",
- "jantarada",
- "japones",
- "jaqueta",
- "jarro",
- "jasmim",
- "jato",
- "jaula",
- "javel",
- "jazz",
- "jegue",
- "jeitoso",
- "jejum",
- "jenipapo",
- "jeova",
- "jequitiba",
- "jersei",
- "jesus",
- "jetom",
- "jiboia",
- "jihad",
- "jilo",
- "jingle",
- "jipe",
- "jocoso",
- "joelho",
- "joguete",
- "joio",
- "jojoba",
- "jorro",
- "jota",
- "joule",
- "joviano",
- "jubiloso",
- "judoca",
- "jugular",
- "juizo",
- "jujuba",
- "juliano",
- "jumento",
- "junto",
- "jururu",
- "justo",
- "juta",
- "juventude",
- "labutar",
- "laguna",
- "laico",
- "lajota",
- "lanterninha",
- "lapso",
- "laquear",
- "lastro",
- "lauto",
- "lavrar",
- "laxativo",
- "lazer",
- "leasing",
- "lebre",
- "lecionar",
- "ledo",
- "leguminoso",
- "leitura",
- "lele",
- "lemure",
- "lento",
- "leonardo",
- "leopardo",
- "lepton",
- "leque",
- "leste",
- "letreiro",
- "leucocito",
- "levitico",
- "lexicologo",
- "lhama",
- "lhufas",
- "liame",
- "licoroso",
- "lidocaina",
- "liliputiano",
- "limusine",
- "linotipo",
- "lipoproteina",
- "liquidos",
- "lirismo",
- "lisura",
- "liturgico",
- "livros",
- "lixo",
- "lobulo",
- "locutor",
- "lodo",
- "logro",
- "lojista",
- "lombriga",
- "lontra",
- "loop",
- "loquaz",
- "lorota",
- "losango",
- "lotus",
- "louvor",
- "luar",
- "lubrificavel",
- "lucros",
- "lugubre",
- "luis",
- "luminoso",
- "luneta",
- "lustroso",
- "luto",
- "luvas",
- "luxuriante",
- "luzeiro",
- "maduro",
- "maestro",
- "mafioso",
- "magro",
- "maiuscula",
- "majoritario",
- "malvisto",
- "mamute",
- "manutencao",
- "mapoteca",
- "maquinista",
- "marzipa",
- "masturbar",
- "matuto",
- "mausoleu",
- "mavioso",
- "maxixe",
- "mazurca",
- "meandro",
- "mecha",
- "medusa",
- "mefistofelico",
- "megera",
- "meirinho",
- "melro",
- "memorizar",
- "menu",
- "mequetrefe",
- "mertiolate",
- "mestria",
- "metroviario",
- "mexilhao",
- "mezanino",
- "miau",
- "microssegundo",
- "midia",
- "migratorio",
- "mimosa",
- "minuto",
- "miosotis",
- "mirtilo",
- "misturar",
- "mitzvah",
- "miudos",
- "mixuruca",
- "mnemonico",
- "moagem",
- "mobilizar",
- "modulo",
- "moer",
- "mofo",
- "mogno",
- "moita",
- "molusco",
- "monumento",
- "moqueca",
- "morubixaba",
- "mostruario",
- "motriz",
- "mouse",
- "movivel",
- "mozarela",
- "muarra",
- "muculmano",
- "mudo",
- "mugir",
- "muitos",
- "mumunha",
- "munir",
- "muon",
- "muquira",
- "murros",
- "musselina",
- "nacoes",
- "nado",
- "naftalina",
- "nago",
- "naipe",
- "naja",
- "nalgum",
- "namoro",
- "nanquim",
- "napolitano",
- "naquilo",
- "nascimento",
- "nautilo",
- "navios",
- "nazista",
- "nebuloso",
- "nectarina",
- "nefrologo",
- "negus",
- "nelore",
- "nenufar",
- "nepotismo",
- "nervura",
- "neste",
- "netuno",
- "neutron",
- "nevoeiro",
- "newtoniano",
- "nexo",
- "nhenhenhem",
- "nhoque",
- "nigeriano",
- "niilista",
- "ninho",
- "niobio",
- "niponico",
- "niquelar",
- "nirvana",
- "nisto",
- "nitroglicerina",
- "nivoso",
- "nobreza",
- "nocivo",
- "noel",
- "nogueira",
- "noivo",
- "nojo",
- "nominativo",
- "nonuplo",
- "noruegues",
- "nostalgico",
- "noturno",
- "nouveau",
- "nuanca",
- "nublar",
- "nucleotideo",
- "nudista",
- "nulo",
- "numismatico",
- "nunquinha",
- "nupcias",
- "nutritivo",
- "nuvens",
- "oasis",
- "obcecar",
- "obeso",
- "obituario",
- "objetos",
- "oblongo",
- "obnoxio",
- "obrigatorio",
- "obstruir",
- "obtuso",
- "obus",
- "obvio",
- "ocaso",
- "occipital",
- "oceanografo",
- "ocioso",
- "oclusivo",
- "ocorrer",
- "ocre",
- "octogono",
- "odalisca",
- "odisseia",
- "odorifico",
- "oersted",
- "oeste",
- "ofertar",
- "ofidio",
- "oftalmologo",
- "ogiva",
- "ogum",
- "oigale",
- "oitavo",
- "oitocentos",
- "ojeriza",
- "olaria",
- "oleoso",
- "olfato",
- "olhos",
- "oliveira",
- "olmo",
- "olor",
- "olvidavel",
- "ombudsman",
- "omeleteira",
- "omitir",
- "omoplata",
- "onanismo",
- "ondular",
- "oneroso",
- "onomatopeico",
- "ontologico",
- "onus",
- "onze",
- "opalescente",
- "opcional",
- "operistico",
- "opio",
- "oposto",
- "oprobrio",
- "optometrista",
- "opusculo",
- "oratorio",
- "orbital",
- "orcar",
- "orfao",
- "orixa",
- "orla",
- "ornitologo",
- "orquidea",
- "ortorrombico",
- "orvalho",
- "osculo",
- "osmotico",
- "ossudo",
- "ostrogodo",
- "otario",
- "otite",
- "ouro",
- "ousar",
- "outubro",
- "ouvir",
- "ovario",
- "overnight",
- "oviparo",
- "ovni",
- "ovoviviparo",
- "ovulo",
- "oxala",
- "oxente",
- "oxiuro",
- "oxossi",
- "ozonizar",
- "paciente",
- "pactuar",
- "padronizar",
- "paete",
- "pagodeiro",
- "paixao",
- "pajem",
- "paludismo",
- "pampas",
- "panturrilha",
- "papudo",
- "paquistanes",
- "pastoso",
- "patua",
- "paulo",
- "pauzinhos",
- "pavoroso",
- "paxa",
- "pazes",
- "peao",
- "pecuniario",
- "pedunculo",
- "pegaso",
- "peixinho",
- "pejorativo",
- "pelvis",
- "penuria",
- "pequno",
- "petunia",
- "pezada",
- "piauiense",
- "pictorico",
- "pierro",
- "pigmeu",
- "pijama",
- "pilulas",
- "pimpolho",
- "pintura",
- "piorar",
- "pipocar",
- "piqueteiro",
- "pirulito",
- "pistoleiro",
- "pituitaria",
- "pivotar",
- "pixote",
- "pizzaria",
- "plistoceno",
- "plotar",
- "pluviometrico",
- "pneumonico",
- "poco",
- "podridao",
- "poetisa",
- "pogrom",
- "pois",
- "polvorosa",
- "pomposo",
- "ponderado",
- "pontudo",
- "populoso",
- "poquer",
- "porvir",
- "posudo",
- "potro",
- "pouso",
- "povoar",
- "prazo",
- "prezar",
- "privilegios",
- "proximo",
- "prussiano",
- "pseudopode",
- "psoriase",
- "pterossauros",
- "ptialina",
- "ptolemaico",
- "pudor",
- "pueril",
- "pufe",
- "pugilista",
- "puir",
- "pujante",
- "pulverizar",
- "pumba",
- "punk",
- "purulento",
- "pustula",
- "putsch",
- "puxe",
- "quatrocentos",
- "quetzal",
- "quixotesco",
- "quotizavel",
- "rabujice",
- "racista",
- "radonio",
- "rafia",
- "ragu",
- "rajado",
- "ralo",
- "rampeiro",
- "ranzinza",
- "raptor",
- "raquitismo",
- "raro",
- "rasurar",
- "ratoeira",
- "ravioli",
- "razoavel",
- "reavivar",
- "rebuscar",
- "recusavel",
- "reduzivel",
- "reexposicao",
- "refutavel",
- "regurgitar",
- "reivindicavel",
- "rejuvenescimento",
- "relva",
- "remuneravel",
- "renunciar",
- "reorientar",
- "repuxo",
- "requisito",
- "resumo",
- "returno",
- "reutilizar",
- "revolvido",
- "rezonear",
- "riacho",
- "ribossomo",
- "ricota",
- "ridiculo",
- "rifle",
- "rigoroso",
- "rijo",
- "rimel",
- "rins",
- "rios",
- "riqueza",
- "riquixa",
- "rissole",
- "ritualistico",
- "rivalizar",
- "rixa",
- "robusto",
- "rococo",
- "rodoviario",
- "roer",
- "rogo",
- "rojao",
- "rolo",
- "rompimento",
- "ronronar",
- "roqueiro",
- "rorqual",
- "rosto",
- "rotundo",
- "rouxinol",
- "roxo",
- "royal",
- "ruas",
- "rucula",
- "rudimentos",
- "ruela",
- "rufo",
- "rugoso",
- "ruivo",
- "rule",
- "rumoroso",
- "runico",
- "ruptura",
- "rural",
- "rustico",
- "rutilar",
- "saariano",
- "sabujo",
- "sacudir",
- "sadomasoquista",
- "safra",
- "sagui",
- "sais",
- "samurai",
- "santuario",
- "sapo",
- "saquear",
- "sartriano",
- "saturno",
- "saude",
- "sauva",
- "saveiro",
- "saxofonista",
- "sazonal",
- "scherzo",
- "script",
- "seara",
- "seborreia",
- "secura",
- "seduzir",
- "sefardim",
- "seguro",
- "seja",
- "selvas",
- "sempre",
- "senzala",
- "sepultura",
- "sequoia",
- "sestercio",
- "setuplo",
- "seus",
- "seviciar",
- "sezonismo",
- "shalom",
- "siames",
- "sibilante",
- "sicrano",
- "sidra",
- "sifilitico",
- "signos",
- "silvo",
- "simultaneo",
- "sinusite",
- "sionista",
- "sirio",
- "sisudo",
- "situar",
- "sivan",
- "slide",
- "slogan",
- "soar",
- "sobrio",
- "socratico",
- "sodomizar",
- "soerguer",
- "software",
- "sogro",
- "soja",
- "solver",
- "somente",
- "sonso",
- "sopro",
- "soquete",
- "sorveteiro",
- "sossego",
- "soturno",
- "sousafone",
- "sovinice",
- "sozinho",
- "suavizar",
- "subverter",
- "sucursal",
- "sudoriparo",
- "sufragio",
- "sugestoes",
- "suite",
- "sujo",
- "sultao",
- "sumula",
- "suntuoso",
- "suor",
- "supurar",
- "suruba",
- "susto",
- "suturar",
- "suvenir",
- "tabuleta",
- "taco",
- "tadjique",
- "tafeta",
- "tagarelice",
- "taitiano",
- "talvez",
- "tampouco",
- "tanzaniano",
- "taoista",
- "tapume",
- "taquion",
- "tarugo",
- "tascar",
- "tatuar",
- "tautologico",
- "tavola",
- "taxionomista",
- "tchecoslovaco",
- "teatrologo",
- "tectonismo",
- "tedioso",
- "teflon",
- "tegumento",
- "teixo",
- "telurio",
- "temporas",
- "tenue",
- "teosofico",
- "tepido",
- "tequila",
- "terrorista",
- "testosterona",
- "tetrico",
- "teutonico",
- "teve",
- "texugo",
- "tiara",
- "tibia",
- "tiete",
- "tifoide",
- "tigresa",
- "tijolo",
- "tilintar",
- "timpano",
- "tintureiro",
- "tiquete",
- "tiroteio",
- "tisico",
- "titulos",
- "tive",
- "toar",
- "toboga",
- "tofu",
- "togoles",
- "toicinho",
- "tolueno",
- "tomografo",
- "tontura",
- "toponimo",
- "toquio",
- "torvelinho",
- "tostar",
- "toto",
- "touro",
- "toxina",
- "trazer",
- "trezentos",
- "trivialidade",
- "trovoar",
- "truta",
- "tuaregue",
- "tubular",
- "tucano",
- "tudo",
- "tufo",
- "tuiste",
- "tulipa",
- "tumultuoso",
- "tunisino",
- "tupiniquim",
- "turvo",
- "tutu",
- "ucraniano",
- "udenista",
- "ufanista",
- "ufologo",
- "ugaritico",
- "uiste",
- "uivo",
- "ulceroso",
- "ulema",
- "ultravioleta",
- "umbilical",
- "umero",
- "umido",
- "umlaut",
- "unanimidade",
- "unesco",
- "ungulado",
- "unheiro",
- "univoco",
- "untuoso",
- "urano",
- "urbano",
- "urdir",
- "uretra",
- "urgente",
- "urinol",
- "urna",
- "urologo",
- "urro",
- "ursulina",
- "urtiga",
- "urupe",
- "usavel",
- "usbeque",
- "usei",
- "usineiro",
- "usurpar",
- "utero",
- "utilizar",
- "utopico",
- "uvular",
- "uxoricidio",
- "vacuo",
- "vadio",
- "vaguear",
- "vaivem",
- "valvula",
- "vampiro",
- "vantajoso",
- "vaporoso",
- "vaquinha",
- "varziano",
- "vasto",
- "vaticinio",
- "vaudeville",
- "vazio",
- "veado",
- "vedico",
- "veemente",
- "vegetativo",
- "veio",
- "veja",
- "veludo",
- "venusiano",
- "verdade",
- "verve",
- "vestuario",
- "vetusto",
- "vexatorio",
- "vezes",
- "viavel",
- "vibratorio",
- "victor",
- "vicunha",
- "vidros",
- "vietnamita",
- "vigoroso",
- "vilipendiar",
- "vime",
- "vintem",
- "violoncelo",
- "viquingue",
- "virus",
- "visualizar",
- "vituperio",
- "viuvo",
- "vivo",
- "vizir",
- "voar",
- "vociferar",
- "vodu",
- "vogar",
- "voile",
- "volver",
- "vomito",
- "vontade",
- "vortice",
- "vosso",
- "voto",
- "vovozinha",
- "voyeuse",
- "vozes",
- "vulva",
- "vupt",
- "western",
- "xadrez",
- "xale",
- "xampu",
- "xango",
- "xarope",
- "xaual",
- "xavante",
- "xaxim",
- "xenonio",
- "xepa",
- "xerox",
- "xicara",
- "xifopago",
- "xiita",
- "xilogravura",
- "xinxim",
- "xistoso",
- "xixi",
- "xodo",
- "xogum",
- "xucro",
- "zabumba",
- "zagueiro",
- "zambiano",
- "zanzar",
- "zarpar",
- "zebu",
- "zefiro",
- "zeloso",
- "zenite",
- "zumbi"
-
- );
- return word_list;
-}
-
-std::unordered_map<std::string, unsigned int>& word_map_portuguese()
-{
- static std::unordered_map<std::string, unsigned int> word_map;
- if (word_map.size() > 0)
- {
- return word_map;
- }
- std::vector<std::string> word_list = word_list_portuguese();
- int ii;
- std::vector<std::string>::iterator it;
- for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
- {
- word_map[*it] = ii;
- }
- return word_map;
-}
-
-std::unordered_map<std::string, unsigned int>& trimmed_word_map_portuguese()
+namespace Language
{
- static std::unordered_map<std::string, unsigned int> trimmed_word_map;
- if (trimmed_word_map.size() > 0)
- {
- return trimmed_word_map;
- }
- std::vector<std::string> word_list = word_list_portuguese();
- int ii;
- std::vector<std::string>::iterator it;
- for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
+ class Portuguese: public Base
{
- if (it->length() > 4)
+ public:
+ Portuguese()
{
- trimmed_word_map[it->substr(0, 4)] = ii;
+ word_list = new std::vector<std::string>({
+ "abaular",
+ "abdominal",
+ "abeto",
+ "abissinio",
+ "abjeto",
+ "ablucao",
+ "abnegar",
+ "abotoar",
+ "abrutalhar",
+ "absurdo",
+ "abutre",
+ "acautelar",
+ "accessorios",
+ "acetona",
+ "achocolatado",
+ "acirrar",
+ "acne",
+ "acovardar",
+ "acrostico",
+ "actinomicete",
+ "acustico",
+ "adaptavel",
+ "adeus",
+ "adivinho",
+ "adjunto",
+ "admoestar",
+ "adnominal",
+ "adotivo",
+ "adquirir",
+ "adriatico",
+ "adsorcao",
+ "adutora",
+ "advogar",
+ "aerossol",
+ "afazeres",
+ "afetuoso",
+ "afixo",
+ "afluir",
+ "afortunar",
+ "afrouxar",
+ "aftosa",
+ "afunilar",
+ "agentes",
+ "agito",
+ "aglutinar",
+ "aiatola",
+ "aimore",
+ "aino",
+ "aipo",
+ "airoso",
+ "ajeitar",
+ "ajoelhar",
+ "ajudante",
+ "ajuste",
+ "alazao",
+ "albumina",
+ "alcunha",
+ "alegria",
+ "alexandre",
+ "alforriar",
+ "alguns",
+ "alhures",
+ "alivio",
+ "almoxarife",
+ "alotropico",
+ "alpiste",
+ "alquimista",
+ "alsaciano",
+ "altura",
+ "aluviao",
+ "alvura",
+ "amazonico",
+ "ambulatorio",
+ "ametodico",
+ "amizades",
+ "amniotico",
+ "amovivel",
+ "amurada",
+ "anatomico",
+ "ancorar",
+ "anexo",
+ "anfora",
+ "aniversario",
+ "anjo",
+ "anotar",
+ "ansioso",
+ "anturio",
+ "anuviar",
+ "anverso",
+ "anzol",
+ "aonde",
+ "apaziguar",
+ "apito",
+ "aplicavel",
+ "apoteotico",
+ "aprimorar",
+ "aprumo",
+ "apto",
+ "apuros",
+ "aquoso",
+ "arauto",
+ "arbusto",
+ "arduo",
+ "aresta",
+ "arfar",
+ "arguto",
+ "aritmetico",
+ "arlequim",
+ "armisticio",
+ "aromatizar",
+ "arpoar",
+ "arquivo",
+ "arrumar",
+ "arsenio",
+ "arturiano",
+ "aruaque",
+ "arvores",
+ "asbesto",
+ "ascorbico",
+ "aspirina",
+ "asqueroso",
+ "assustar",
+ "astuto",
+ "atazanar",
+ "ativo",
+ "atletismo",
+ "atmosferico",
+ "atormentar",
+ "atroz",
+ "aturdir",
+ "audivel",
+ "auferir",
+ "augusto",
+ "aula",
+ "aumento",
+ "aurora",
+ "autuar",
+ "avatar",
+ "avexar",
+ "avizinhar",
+ "avolumar",
+ "avulso",
+ "axiomatico",
+ "azerbaijano",
+ "azimute",
+ "azoto",
+ "azulejo",
+ "bacteriologista",
+ "badulaque",
+ "baforada",
+ "baixote",
+ "bajular",
+ "balzaquiana",
+ "bambuzal",
+ "banzo",
+ "baoba",
+ "baqueta",
+ "barulho",
+ "bastonete",
+ "batuta",
+ "bauxita",
+ "bavaro",
+ "bazuca",
+ "bcrepuscular",
+ "beato",
+ "beduino",
+ "begonia",
+ "behaviorista",
+ "beisebol",
+ "belzebu",
+ "bemol",
+ "benzido",
+ "beocio",
+ "bequer",
+ "berro",
+ "besuntar",
+ "betume",
+ "bexiga",
+ "bezerro",
+ "biatlon",
+ "biboca",
+ "bicuspide",
+ "bidirecional",
+ "bienio",
+ "bifurcar",
+ "bigorna",
+ "bijuteria",
+ "bimotor",
+ "binormal",
+ "bioxido",
+ "bipolarizacao",
+ "biquini",
+ "birutice",
+ "bisturi",
+ "bituca",
+ "biunivoco",
+ "bivalve",
+ "bizarro",
+ "blasfemo",
+ "blenorreia",
+ "blindar",
+ "bloqueio",
+ "blusao",
+ "boazuda",
+ "bofete",
+ "bojudo",
+ "bolso",
+ "bombordo",
+ "bonzo",
+ "botina",
+ "boquiaberto",
+ "bostoniano",
+ "botulismo",
+ "bourbon",
+ "bovino",
+ "boximane",
+ "bravura",
+ "brevidade",
+ "britar",
+ "broxar",
+ "bruno",
+ "bruxuleio",
+ "bubonico",
+ "bucolico",
+ "buda",
+ "budista",
+ "bueiro",
+ "buffer",
+ "bugre",
+ "bujao",
+ "bumerangue",
+ "burundines",
+ "busto",
+ "butique",
+ "buzios",
+ "caatinga",
+ "cabuqui",
+ "cacunda",
+ "cafuzo",
+ "cajueiro",
+ "camurca",
+ "canudo",
+ "caquizeiro",
+ "carvoeiro",
+ "casulo",
+ "catuaba",
+ "cauterizar",
+ "cebolinha",
+ "cedula",
+ "ceifeiro",
+ "celulose",
+ "cerzir",
+ "cesto",
+ "cetro",
+ "ceus",
+ "cevar",
+ "chavena",
+ "cheroqui",
+ "chita",
+ "chovido",
+ "chuvoso",
+ "ciatico",
+ "cibernetico",
+ "cicuta",
+ "cidreira",
+ "cientistas",
+ "cifrar",
+ "cigarro",
+ "cilio",
+ "cimo",
+ "cinzento",
+ "cioso",
+ "cipriota",
+ "cirurgico",
+ "cisto",
+ "citrico",
+ "ciumento",
+ "civismo",
+ "clavicula",
+ "clero",
+ "clitoris",
+ "cluster",
+ "coaxial",
+ "cobrir",
+ "cocota",
+ "codorniz",
+ "coexistir",
+ "cogumelo",
+ "coito",
+ "colusao",
+ "compaixao",
+ "comutativo",
+ "contentamento",
+ "convulsivo",
+ "coordenativa",
+ "coquetel",
+ "correto",
+ "corvo",
+ "costureiro",
+ "cotovia",
+ "covil",
+ "cozinheiro",
+ "cretino",
+ "cristo",
+ "crivo",
+ "crotalo",
+ "cruzes",
+ "cubo",
+ "cucuia",
+ "cueiro",
+ "cuidar",
+ "cujo",
+ "cultural",
+ "cunilingua",
+ "cupula",
+ "curvo",
+ "custoso",
+ "cutucar",
+ "czarismo",
+ "dablio",
+ "dacota",
+ "dados",
+ "daguerreotipo",
+ "daiquiri",
+ "daltonismo",
+ "damista",
+ "dantesco",
+ "daquilo",
+ "darwinista",
+ "dasein",
+ "dativo",
+ "deao",
+ "debutantes",
+ "decurso",
+ "deduzir",
+ "defunto",
+ "degustar",
+ "dejeto",
+ "deltoide",
+ "demover",
+ "denunciar",
+ "deputado",
+ "deque",
+ "dervixe",
+ "desvirtuar",
+ "deturpar",
+ "deuteronomio",
+ "devoto",
+ "dextrose",
+ "dezoito",
+ "diatribe",
+ "dicotomico",
+ "didatico",
+ "dietista",
+ "difuso",
+ "digressao",
+ "diluvio",
+ "diminuto",
+ "dinheiro",
+ "dinossauro",
+ "dioxido",
+ "diplomatico",
+ "dique",
+ "dirimivel",
+ "disturbio",
+ "diurno",
+ "divulgar",
+ "dizivel",
+ "doar",
+ "dobro",
+ "docura",
+ "dodoi",
+ "doer",
+ "dogue",
+ "doloso",
+ "domo",
+ "donzela",
+ "doping",
+ "dorsal",
+ "dossie",
+ "dote",
+ "doutro",
+ "doze",
+ "dravidico",
+ "dreno",
+ "driver",
+ "dropes",
+ "druso",
+ "dubnio",
+ "ducto",
+ "dueto",
+ "dulija",
+ "dundum",
+ "duodeno",
+ "duquesa",
+ "durou",
+ "duvidoso",
+ "duzia",
+ "ebano",
+ "ebrio",
+ "eburneo",
+ "echarpe",
+ "eclusa",
+ "ecossistema",
+ "ectoplasma",
+ "ecumenismo",
+ "eczema",
+ "eden",
+ "editorial",
+ "edredom",
+ "edulcorar",
+ "efetuar",
+ "efigie",
+ "efluvio",
+ "egiptologo",
+ "egresso",
+ "egua",
+ "einsteiniano",
+ "eira",
+ "eivar",
+ "eixos",
+ "ejetar",
+ "elastomero",
+ "eldorado",
+ "elixir",
+ "elmo",
+ "eloquente",
+ "elucidativo",
+ "emaranhar",
+ "embutir",
+ "emerito",
+ "emfa",
+ "emitir",
+ "emotivo",
+ "empuxo",
+ "emulsao",
+ "enamorar",
+ "encurvar",
+ "enduro",
+ "enevoar",
+ "enfurnar",
+ "enguico",
+ "enho",
+ "enigmista",
+ "enlutar",
+ "enormidade",
+ "enpreendimento",
+ "enquanto",
+ "enriquecer",
+ "enrugar",
+ "entusiastico",
+ "enunciar",
+ "envolvimento",
+ "enxuto",
+ "enzimatico",
+ "eolico",
+ "epiteto",
+ "epoxi",
+ "epura",
+ "equivoco",
+ "erario",
+ "erbio",
+ "ereto",
+ "erguido",
+ "erisipela",
+ "ermo",
+ "erotizar",
+ "erros",
+ "erupcao",
+ "ervilha",
+ "esburacar",
+ "escutar",
+ "esfuziante",
+ "esguio",
+ "esloveno",
+ "esmurrar",
+ "esoterismo",
+ "esperanca",
+ "espirito",
+ "espurio",
+ "essencialmente",
+ "esturricar",
+ "esvoacar",
+ "etario",
+ "eterno",
+ "etiquetar",
+ "etnologo",
+ "etos",
+ "etrusco",
+ "euclidiano",
+ "euforico",
+ "eugenico",
+ "eunuco",
+ "europio",
+ "eustaquio",
+ "eutanasia",
+ "evasivo",
+ "eventualidade",
+ "evitavel",
+ "evoluir",
+ "exaustor",
+ "excursionista",
+ "exercito",
+ "exfoliado",
+ "exito",
+ "exotico",
+ "expurgo",
+ "exsudar",
+ "extrusora",
+ "exumar",
+ "fabuloso",
+ "facultativo",
+ "fado",
+ "fagulha",
+ "faixas",
+ "fajuto",
+ "faltoso",
+ "famoso",
+ "fanzine",
+ "fapesp",
+ "faquir",
+ "fartura",
+ "fastio",
+ "faturista",
+ "fausto",
+ "favorito",
+ "faxineira",
+ "fazer",
+ "fealdade",
+ "febril",
+ "fecundo",
+ "fedorento",
+ "feerico",
+ "feixe",
+ "felicidade",
+ "felipe",
+ "feltro",
+ "femur",
+ "fenotipo",
+ "fervura",
+ "festivo",
+ "feto",
+ "feudo",
+ "fevereiro",
+ "fezinha",
+ "fiasco",
+ "fibra",
+ "ficticio",
+ "fiduciario",
+ "fiesp",
+ "fifa",
+ "figurino",
+ "fijiano",
+ "filtro",
+ "finura",
+ "fiorde",
+ "fiquei",
+ "firula",
+ "fissurar",
+ "fitoteca",
+ "fivela",
+ "fixo",
+ "flavio",
+ "flexor",
+ "flibusteiro",
+ "flotilha",
+ "fluxograma",
+ "fobos",
+ "foco",
+ "fofura",
+ "foguista",
+ "foie",
+ "foliculo",
+ "fominha",
+ "fonte",
+ "forum",
+ "fosso",
+ "fotossintese",
+ "foxtrote",
+ "fraudulento",
+ "frevo",
+ "frivolo",
+ "frouxo",
+ "frutose",
+ "fuba",
+ "fucsia",
+ "fugitivo",
+ "fuinha",
+ "fujao",
+ "fulustreco",
+ "fumo",
+ "funileiro",
+ "furunculo",
+ "fustigar",
+ "futurologo",
+ "fuxico",
+ "fuzue",
+ "gabriel",
+ "gado",
+ "gaelico",
+ "gafieira",
+ "gaguejo",
+ "gaivota",
+ "gajo",
+ "galvanoplastico",
+ "gamo",
+ "ganso",
+ "garrucha",
+ "gastronomo",
+ "gatuno",
+ "gaussiano",
+ "gaviao",
+ "gaxeta",
+ "gazeteiro",
+ "gear",
+ "geiser",
+ "geminiano",
+ "generoso",
+ "genuino",
+ "geossinclinal",
+ "gerundio",
+ "gestual",
+ "getulista",
+ "gibi",
+ "gigolo",
+ "gilete",
+ "ginseng",
+ "giroscopio",
+ "glaucio",
+ "glacial",
+ "gleba",
+ "glifo",
+ "glote",
+ "glutonia",
+ "gnostico",
+ "goela",
+ "gogo",
+ "goitaca",
+ "golpista",
+ "gomo",
+ "gonzo",
+ "gorro",
+ "gostou",
+ "goticula",
+ "gourmet",
+ "governo",
+ "gozo",
+ "graxo",
+ "grevista",
+ "grito",
+ "grotesco",
+ "gruta",
+ "guaxinim",
+ "gude",
+ "gueto",
+ "guizo",
+ "guloso",
+ "gume",
+ "guru",
+ "gustativo",
+ "gustavo",
+ "gutural",
+ "habitue",
+ "haitiano",
+ "halterofilista",
+ "hamburguer",
+ "hanseniase",
+ "happening",
+ "harpista",
+ "hastear",
+ "haveres",
+ "hebreu",
+ "hectometro",
+ "hedonista",
+ "hegira",
+ "helena",
+ "helminto",
+ "hemorroidas",
+ "henrique",
+ "heptassilabo",
+ "hertziano",
+ "hesitar",
+ "heterossexual",
+ "heuristico",
+ "hexagono",
+ "hiato",
+ "hibrido",
+ "hidrostatico",
+ "hieroglifo",
+ "hifenizar",
+ "higienizar",
+ "hilario",
+ "himen",
+ "hino",
+ "hippie",
+ "hirsuto",
+ "historiografia",
+ "hitlerista",
+ "hodometro",
+ "hoje",
+ "holograma",
+ "homus",
+ "honroso",
+ "hoquei",
+ "horto",
+ "hostilizar",
+ "hotentote",
+ "huguenote",
+ "humilde",
+ "huno",
+ "hurra",
+ "hutu",
+ "iaia",
+ "ialorixa",
+ "iambico",
+ "iansa",
+ "iaque",
+ "iara",
+ "iatista",
+ "iberico",
+ "ibis",
+ "icar",
+ "iceberg",
+ "icosagono",
+ "idade",
+ "ideologo",
+ "idiotice",
+ "idoso",
+ "iemenita",
+ "iene",
+ "igarape",
+ "iglu",
+ "ignorar",
+ "igreja",
+ "iguaria",
+ "iidiche",
+ "ilativo",
+ "iletrado",
+ "ilharga",
+ "ilimitado",
+ "ilogismo",
+ "ilustrissimo",
+ "imaturo",
+ "imbuzeiro",
+ "imerso",
+ "imitavel",
+ "imovel",
+ "imputar",
+ "imutavel",
+ "inaveriguavel",
+ "incutir",
+ "induzir",
+ "inextricavel",
+ "infusao",
+ "ingua",
+ "inhame",
+ "iniquo",
+ "injusto",
+ "inning",
+ "inoxidavel",
+ "inquisitorial",
+ "insustentavel",
+ "intumescimento",
+ "inutilizavel",
+ "invulneravel",
+ "inzoneiro",
+ "iodo",
+ "iogurte",
+ "ioio",
+ "ionosfera",
+ "ioruba",
+ "iota",
+ "ipsilon",
+ "irascivel",
+ "iris",
+ "irlandes",
+ "irmaos",
+ "iroques",
+ "irrupcao",
+ "isca",
+ "isento",
+ "islandes",
+ "isotopo",
+ "isqueiro",
+ "israelita",
+ "isso",
+ "isto",
+ "iterbio",
+ "itinerario",
+ "itrio",
+ "iuane",
+ "iugoslavo",
+ "jabuticabeira",
+ "jacutinga",
+ "jade",
+ "jagunco",
+ "jainista",
+ "jaleco",
+ "jambo",
+ "jantarada",
+ "japones",
+ "jaqueta",
+ "jarro",
+ "jasmim",
+ "jato",
+ "jaula",
+ "javel",
+ "jazz",
+ "jegue",
+ "jeitoso",
+ "jejum",
+ "jenipapo",
+ "jeova",
+ "jequitiba",
+ "jersei",
+ "jesus",
+ "jetom",
+ "jiboia",
+ "jihad",
+ "jilo",
+ "jingle",
+ "jipe",
+ "jocoso",
+ "joelho",
+ "joguete",
+ "joio",
+ "jojoba",
+ "jorro",
+ "jota",
+ "joule",
+ "joviano",
+ "jubiloso",
+ "judoca",
+ "jugular",
+ "juizo",
+ "jujuba",
+ "juliano",
+ "jumento",
+ "junto",
+ "jururu",
+ "justo",
+ "juta",
+ "juventude",
+ "labutar",
+ "laguna",
+ "laico",
+ "lajota",
+ "lanterninha",
+ "lapso",
+ "laquear",
+ "lastro",
+ "lauto",
+ "lavrar",
+ "laxativo",
+ "lazer",
+ "leasing",
+ "lebre",
+ "lecionar",
+ "ledo",
+ "leguminoso",
+ "leitura",
+ "lele",
+ "lemure",
+ "lento",
+ "leonardo",
+ "leopardo",
+ "lepton",
+ "leque",
+ "leste",
+ "letreiro",
+ "leucocito",
+ "levitico",
+ "lexicologo",
+ "lhama",
+ "lhufas",
+ "liame",
+ "licoroso",
+ "lidocaina",
+ "liliputiano",
+ "limusine",
+ "linotipo",
+ "lipoproteina",
+ "liquidos",
+ "lirismo",
+ "lisura",
+ "liturgico",
+ "livros",
+ "lixo",
+ "lobulo",
+ "locutor",
+ "lodo",
+ "logro",
+ "lojista",
+ "lombriga",
+ "lontra",
+ "loop",
+ "loquaz",
+ "lorota",
+ "losango",
+ "lotus",
+ "louvor",
+ "luar",
+ "lubrificavel",
+ "lucros",
+ "lugubre",
+ "luis",
+ "luminoso",
+ "luneta",
+ "lustroso",
+ "luto",
+ "luvas",
+ "luxuriante",
+ "luzeiro",
+ "maduro",
+ "maestro",
+ "mafioso",
+ "magro",
+ "maiuscula",
+ "majoritario",
+ "malvisto",
+ "mamute",
+ "manutencao",
+ "mapoteca",
+ "maquinista",
+ "marzipa",
+ "masturbar",
+ "matuto",
+ "mausoleu",
+ "mavioso",
+ "maxixe",
+ "mazurca",
+ "meandro",
+ "mecha",
+ "medusa",
+ "mefistofelico",
+ "megera",
+ "meirinho",
+ "melro",
+ "memorizar",
+ "menu",
+ "mequetrefe",
+ "mertiolate",
+ "mestria",
+ "metroviario",
+ "mexilhao",
+ "mezanino",
+ "miau",
+ "microssegundo",
+ "midia",
+ "migratorio",
+ "mimosa",
+ "minuto",
+ "miosotis",
+ "mirtilo",
+ "misturar",
+ "mitzvah",
+ "miudos",
+ "mixuruca",
+ "mnemonico",
+ "moagem",
+ "mobilizar",
+ "modulo",
+ "moer",
+ "mofo",
+ "mogno",
+ "moita",
+ "molusco",
+ "monumento",
+ "moqueca",
+ "morubixaba",
+ "mostruario",
+ "motriz",
+ "mouse",
+ "movivel",
+ "mozarela",
+ "muarra",
+ "muculmano",
+ "mudo",
+ "mugir",
+ "muitos",
+ "mumunha",
+ "munir",
+ "muon",
+ "muquira",
+ "murros",
+ "musselina",
+ "nacoes",
+ "nado",
+ "naftalina",
+ "nago",
+ "naipe",
+ "naja",
+ "nalgum",
+ "namoro",
+ "nanquim",
+ "napolitano",
+ "naquilo",
+ "nascimento",
+ "nautilo",
+ "navios",
+ "nazista",
+ "nebuloso",
+ "nectarina",
+ "nefrologo",
+ "negus",
+ "nelore",
+ "nenufar",
+ "nepotismo",
+ "nervura",
+ "neste",
+ "netuno",
+ "neutron",
+ "nevoeiro",
+ "newtoniano",
+ "nexo",
+ "nhenhenhem",
+ "nhoque",
+ "nigeriano",
+ "niilista",
+ "ninho",
+ "niobio",
+ "niponico",
+ "niquelar",
+ "nirvana",
+ "nisto",
+ "nitroglicerina",
+ "nivoso",
+ "nobreza",
+ "nocivo",
+ "noel",
+ "nogueira",
+ "noivo",
+ "nojo",
+ "nominativo",
+ "nonuplo",
+ "noruegues",
+ "nostalgico",
+ "noturno",
+ "nouveau",
+ "nuanca",
+ "nublar",
+ "nucleotideo",
+ "nudista",
+ "nulo",
+ "numismatico",
+ "nunquinha",
+ "nupcias",
+ "nutritivo",
+ "nuvens",
+ "oasis",
+ "obcecar",
+ "obeso",
+ "obituario",
+ "objetos",
+ "oblongo",
+ "obnoxio",
+ "obrigatorio",
+ "obstruir",
+ "obtuso",
+ "obus",
+ "obvio",
+ "ocaso",
+ "occipital",
+ "oceanografo",
+ "ocioso",
+ "oclusivo",
+ "ocorrer",
+ "ocre",
+ "octogono",
+ "odalisca",
+ "odisseia",
+ "odorifico",
+ "oersted",
+ "oeste",
+ "ofertar",
+ "ofidio",
+ "oftalmologo",
+ "ogiva",
+ "ogum",
+ "oigale",
+ "oitavo",
+ "oitocentos",
+ "ojeriza",
+ "olaria",
+ "oleoso",
+ "olfato",
+ "olhos",
+ "oliveira",
+ "olmo",
+ "olor",
+ "olvidavel",
+ "ombudsman",
+ "omeleteira",
+ "omitir",
+ "omoplata",
+ "onanismo",
+ "ondular",
+ "oneroso",
+ "onomatopeico",
+ "ontologico",
+ "onus",
+ "onze",
+ "opalescente",
+ "opcional",
+ "operistico",
+ "opio",
+ "oposto",
+ "oprobrio",
+ "optometrista",
+ "opusculo",
+ "oratorio",
+ "orbital",
+ "orcar",
+ "orfao",
+ "orixa",
+ "orla",
+ "ornitologo",
+ "orquidea",
+ "ortorrombico",
+ "orvalho",
+ "osculo",
+ "osmotico",
+ "ossudo",
+ "ostrogodo",
+ "otario",
+ "otite",
+ "ouro",
+ "ousar",
+ "outubro",
+ "ouvir",
+ "ovario",
+ "overnight",
+ "oviparo",
+ "ovni",
+ "ovoviviparo",
+ "ovulo",
+ "oxala",
+ "oxente",
+ "oxiuro",
+ "oxossi",
+ "ozonizar",
+ "paciente",
+ "pactuar",
+ "padronizar",
+ "paete",
+ "pagodeiro",
+ "paixao",
+ "pajem",
+ "paludismo",
+ "pampas",
+ "panturrilha",
+ "papudo",
+ "paquistanes",
+ "pastoso",
+ "patua",
+ "paulo",
+ "pauzinhos",
+ "pavoroso",
+ "paxa",
+ "pazes",
+ "peao",
+ "pecuniario",
+ "pedunculo",
+ "pegaso",
+ "peixinho",
+ "pejorativo",
+ "pelvis",
+ "penuria",
+ "pequno",
+ "petunia",
+ "pezada",
+ "piauiense",
+ "pictorico",
+ "pierro",
+ "pigmeu",
+ "pijama",
+ "pilulas",
+ "pimpolho",
+ "pintura",
+ "piorar",
+ "pipocar",
+ "piqueteiro",
+ "pirulito",
+ "pistoleiro",
+ "pituitaria",
+ "pivotar",
+ "pixote",
+ "pizzaria",
+ "plistoceno",
+ "plotar",
+ "pluviometrico",
+ "pneumonico",
+ "poco",
+ "podridao",
+ "poetisa",
+ "pogrom",
+ "pois",
+ "polvorosa",
+ "pomposo",
+ "ponderado",
+ "pontudo",
+ "populoso",
+ "poquer",
+ "porvir",
+ "posudo",
+ "potro",
+ "pouso",
+ "povoar",
+ "prazo",
+ "prezar",
+ "privilegios",
+ "proximo",
+ "prussiano",
+ "pseudopode",
+ "psoriase",
+ "pterossauros",
+ "ptialina",
+ "ptolemaico",
+ "pudor",
+ "pueril",
+ "pufe",
+ "pugilista",
+ "puir",
+ "pujante",
+ "pulverizar",
+ "pumba",
+ "punk",
+ "purulento",
+ "pustula",
+ "putsch",
+ "puxe",
+ "quatrocentos",
+ "quetzal",
+ "quixotesco",
+ "quotizavel",
+ "rabujice",
+ "racista",
+ "radonio",
+ "rafia",
+ "ragu",
+ "rajado",
+ "ralo",
+ "rampeiro",
+ "ranzinza",
+ "raptor",
+ "raquitismo",
+ "raro",
+ "rasurar",
+ "ratoeira",
+ "ravioli",
+ "razoavel",
+ "reavivar",
+ "rebuscar",
+ "recusavel",
+ "reduzivel",
+ "reexposicao",
+ "refutavel",
+ "regurgitar",
+ "reivindicavel",
+ "rejuvenescimento",
+ "relva",
+ "remuneravel",
+ "renunciar",
+ "reorientar",
+ "repuxo",
+ "requisito",
+ "resumo",
+ "returno",
+ "reutilizar",
+ "revolvido",
+ "rezonear",
+ "riacho",
+ "ribossomo",
+ "ricota",
+ "ridiculo",
+ "rifle",
+ "rigoroso",
+ "rijo",
+ "rimel",
+ "rins",
+ "rios",
+ "riqueza",
+ "riquixa",
+ "rissole",
+ "ritualistico",
+ "rivalizar",
+ "rixa",
+ "robusto",
+ "rococo",
+ "rodoviario",
+ "roer",
+ "rogo",
+ "rojao",
+ "rolo",
+ "rompimento",
+ "ronronar",
+ "roqueiro",
+ "rorqual",
+ "rosto",
+ "rotundo",
+ "rouxinol",
+ "roxo",
+ "royal",
+ "ruas",
+ "rucula",
+ "rudimentos",
+ "ruela",
+ "rufo",
+ "rugoso",
+ "ruivo",
+ "rule",
+ "rumoroso",
+ "runico",
+ "ruptura",
+ "rural",
+ "rustico",
+ "rutilar",
+ "saariano",
+ "sabujo",
+ "sacudir",
+ "sadomasoquista",
+ "safra",
+ "sagui",
+ "sais",
+ "samurai",
+ "santuario",
+ "sapo",
+ "saquear",
+ "sartriano",
+ "saturno",
+ "saude",
+ "sauva",
+ "saveiro",
+ "saxofonista",
+ "sazonal",
+ "scherzo",
+ "script",
+ "seara",
+ "seborreia",
+ "secura",
+ "seduzir",
+ "sefardim",
+ "seguro",
+ "seja",
+ "selvas",
+ "sempre",
+ "senzala",
+ "sepultura",
+ "sequoia",
+ "sestercio",
+ "setuplo",
+ "seus",
+ "seviciar",
+ "sezonismo",
+ "shalom",
+ "siames",
+ "sibilante",
+ "sicrano",
+ "sidra",
+ "sifilitico",
+ "signos",
+ "silvo",
+ "simultaneo",
+ "sinusite",
+ "sionista",
+ "sirio",
+ "sisudo",
+ "situar",
+ "sivan",
+ "slide",
+ "slogan",
+ "soar",
+ "sobrio",
+ "socratico",
+ "sodomizar",
+ "soerguer",
+ "software",
+ "sogro",
+ "soja",
+ "solver",
+ "somente",
+ "sonso",
+ "sopro",
+ "soquete",
+ "sorveteiro",
+ "sossego",
+ "soturno",
+ "sousafone",
+ "sovinice",
+ "sozinho",
+ "suavizar",
+ "subverter",
+ "sucursal",
+ "sudoriparo",
+ "sufragio",
+ "sugestoes",
+ "suite",
+ "sujo",
+ "sultao",
+ "sumula",
+ "suntuoso",
+ "suor",
+ "supurar",
+ "suruba",
+ "susto",
+ "suturar",
+ "suvenir",
+ "tabuleta",
+ "taco",
+ "tadjique",
+ "tafeta",
+ "tagarelice",
+ "taitiano",
+ "talvez",
+ "tampouco",
+ "tanzaniano",
+ "taoista",
+ "tapume",
+ "taquion",
+ "tarugo",
+ "tascar",
+ "tatuar",
+ "tautologico",
+ "tavola",
+ "taxionomista",
+ "tchecoslovaco",
+ "teatrologo",
+ "tectonismo",
+ "tedioso",
+ "teflon",
+ "tegumento",
+ "teixo",
+ "telurio",
+ "temporas",
+ "tenue",
+ "teosofico",
+ "tepido",
+ "tequila",
+ "terrorista",
+ "testosterona",
+ "tetrico",
+ "teutonico",
+ "teve",
+ "texugo",
+ "tiara",
+ "tibia",
+ "tiete",
+ "tifoide",
+ "tigresa",
+ "tijolo",
+ "tilintar",
+ "timpano",
+ "tintureiro",
+ "tiquete",
+ "tiroteio",
+ "tisico",
+ "titulos",
+ "tive",
+ "toar",
+ "toboga",
+ "tofu",
+ "togoles",
+ "toicinho",
+ "tolueno",
+ "tomografo",
+ "tontura",
+ "toponimo",
+ "toquio",
+ "torvelinho",
+ "tostar",
+ "toto",
+ "touro",
+ "toxina",
+ "trazer",
+ "trezentos",
+ "trivialidade",
+ "trovoar",
+ "truta",
+ "tuaregue",
+ "tubular",
+ "tucano",
+ "tudo",
+ "tufo",
+ "tuiste",
+ "tulipa",
+ "tumultuoso",
+ "tunisino",
+ "tupiniquim",
+ "turvo",
+ "tutu",
+ "ucraniano",
+ "udenista",
+ "ufanista",
+ "ufologo",
+ "ugaritico",
+ "uiste",
+ "uivo",
+ "ulceroso",
+ "ulema",
+ "ultravioleta",
+ "umbilical",
+ "umero",
+ "umido",
+ "umlaut",
+ "unanimidade",
+ "unesco",
+ "ungulado",
+ "unheiro",
+ "univoco",
+ "untuoso",
+ "urano",
+ "urbano",
+ "urdir",
+ "uretra",
+ "urgente",
+ "urinol",
+ "urna",
+ "urologo",
+ "urro",
+ "ursulina",
+ "urtiga",
+ "urupe",
+ "usavel",
+ "usbeque",
+ "usei",
+ "usineiro",
+ "usurpar",
+ "utero",
+ "utilizar",
+ "utopico",
+ "uvular",
+ "uxoricidio",
+ "vacuo",
+ "vadio",
+ "vaguear",
+ "vaivem",
+ "valvula",
+ "vampiro",
+ "vantajoso",
+ "vaporoso",
+ "vaquinha",
+ "varziano",
+ "vasto",
+ "vaticinio",
+ "vaudeville",
+ "vazio",
+ "veado",
+ "vedico",
+ "veemente",
+ "vegetativo",
+ "veio",
+ "veja",
+ "veludo",
+ "venusiano",
+ "verdade",
+ "verve",
+ "vestuario",
+ "vetusto",
+ "vexatorio",
+ "vezes",
+ "viavel",
+ "vibratorio",
+ "victor",
+ "vicunha",
+ "vidros",
+ "vietnamita",
+ "vigoroso",
+ "vilipendiar",
+ "vime",
+ "vintem",
+ "violoncelo",
+ "viquingue",
+ "virus",
+ "visualizar",
+ "vituperio",
+ "viuvo",
+ "vivo",
+ "vizir",
+ "voar",
+ "vociferar",
+ "vodu",
+ "vogar",
+ "voile",
+ "volver",
+ "vomito",
+ "vontade",
+ "vortice",
+ "vosso",
+ "voto",
+ "vovozinha",
+ "voyeuse",
+ "vozes",
+ "vulva",
+ "vupt",
+ "western",
+ "xadrez",
+ "xale",
+ "xampu",
+ "xango",
+ "xarope",
+ "xaual",
+ "xavante",
+ "xaxim",
+ "xenonio",
+ "xepa",
+ "xerox",
+ "xicara",
+ "xifopago",
+ "xiita",
+ "xilogravura",
+ "xinxim",
+ "xistoso",
+ "xixi",
+ "xodo",
+ "xogum",
+ "xucro",
+ "zabumba",
+ "zagueiro",
+ "zambiano",
+ "zanzar",
+ "zarpar",
+ "zebu",
+ "zefiro",
+ "zeloso",
+ "zenite",
+ "zumbi"
+ });
+ word_map = new std::unordered_map<std::string, uint32_t>;
+ trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
+ language_name = "Portuguese";
+ populate_maps();
}
- else
- {
- trimmed_word_map[*it] = ii;
- }
- }
- return trimmed_word_map;
+ };
}
+
+#endif
diff --git a/src/mnemonics/singleton.h b/src/mnemonics/singleton.h
new file mode 100644
index 000000000..0cefba923
--- /dev/null
+++ b/src/mnemonics/singleton.h
@@ -0,0 +1,16 @@
+namespace Language
+{
+ template <class T>
+ class Singleton
+ {
+ Singleton() {}
+ Singleton(Singleton &s) {}
+ Singleton& operator=(const Singleton&) {}
+ public:
+ static T* instance()
+ {
+ static T* obj = new T;
+ return obj;
+ }
+ };
+}
diff --git a/src/mnemonics/spanish.h b/src/mnemonics/spanish.h
index d8778955b..a735fc858 100644
--- a/src/mnemonics/spanish.h
+++ b/src/mnemonics/spanish.h
@@ -1,2098 +1,2074 @@
+#ifndef SPANISH_H
+#define SPANISH_H
+
#include <vector>
#include <unordered_map>
+#include "language_base.h"
+#include <string>
-std::vector<std::string>& word_list_spanish()
-{
- static std::vector<std::string> word_list(
- "ábaco",
- "abdomen",
- "abeja",
- "abierto",
- "abogado",
- "abono",
- "aborto",
- "abrazo",
- "abrir",
- "abuelo",
- "abuso",
- "acabar",
- "academia",
- "acceso",
- "acción",
- "aceite",
- "acelga",
- "acento",
- "aceptar",
- "ácido",
- "aclarar",
- "acné",
- "acoger",
- "acoso",
- "activo",
- "acto",
- "actriz",
- "actuar",
- "acudir",
- "acuerdo",
- "acusar",
- "adicto",
- "admitir",
- "adoptar",
- "adorno",
- "aduana",
- "adulto",
- "aéreo",
- "afectar",
- "afición",
- "afinar",
- "afirmar",
- "ágil",
- "agitar",
- "agonía",
- "agosto",
- "agotar",
- "agregar",
- "agrio",
- "agua",
- "agudo",
- "águila",
- "aguja",
- "ahogo",
- "ahorro",
- "aire",
- "aislar",
- "ajedrez",
- "ajeno",
- "ajuste",
- "alacrán",
- "alambre",
- "alarma",
- "alba",
- "álbum",
- "alcalde",
- "aldea",
- "alegre",
- "alejar",
- "alerta",
- "aleta",
- "alfiler",
- "alga",
- "algodón",
- "aliado",
- "aliento",
- "alivio",
- "alma",
- "almeja",
- "almíbar",
- "altar",
- "alteza",
- "altivo",
- "alto",
- "altura",
- "alumno",
- "alzar",
- "amable",
- "amante",
- "amapola",
- "amargo",
- "amasar",
- "ámbar",
- "ámbito",
- "ameno",
- "amigo",
- "amistad",
- "amor",
- "amparo",
- "amplio",
- "ancho",
- "anciano",
- "ancla",
- "andar",
- "andén",
- "anemia",
- "ángulo",
- "anillo",
- "ánimo",
- "anís",
- "anotar",
- "antena",
- "antiguo",
- "antojo",
- "anual",
- "anular",
- "anuncio",
- "añadir",
- "añejo",
- "año",
- "apagar",
- "aparato",
- "apetito",
- "apio",
- "aplicar",
- "apodo",
- "aporte",
- "apoyo",
- "aprender",
- "aprobar",
- "apuesta",
- "apuro",
- "arado",
- "araña",
- "arar",
- "árbitro",
- "árbol",
- "arbusto",
- "archivo",
- "arco",
- "arder",
- "ardilla",
- "arduo",
- "área",
- "árido",
- "aries",
- "armonía",
- "arnés",
- "aroma",
- "arpa",
- "arpón",
- "arreglo",
- "arroz",
- "arruga",
- "arte",
- "artista",
- "asa",
- "asado",
- "asalto",
- "ascenso",
- "asegurar",
- "aseo",
- "asesor",
- "asiento",
- "asilo",
- "asistir",
- "asno",
- "asombro",
- "áspero",
- "astilla",
- "astro",
- "astuto",
- "asumir",
- "asunto",
- "atajo",
- "ataque",
- "atar",
- "atento",
- "ateo",
- "ático",
- "atleta",
- "átomo",
- "atraer",
- "atroz",
- "atún",
- "audaz",
- "audio",
- "auge",
- "aula",
- "aumento",
- "ausente",
- "autor",
- "aval",
- "avance",
- "avaro",
- "ave",
- "avellana",
- "avena",
- "avestruz",
- "avión",
- "aviso",
- "ayer",
- "ayuda",
- "ayuno",
- "azafrán",
- "azar",
- "azote",
- "azúcar",
- "azufre",
- "azul",
- "baba",
- "babor",
- "bache",
- "bahía",
- "baile",
- "bajar",
- "balanza",
- "balcón",
- "balde",
- "bambú",
- "banco",
- "banda",
- "baño",
- "barba",
- "barco",
- "barniz",
- "barro",
- "báscula",
- "bastón",
- "basura",
- "batalla",
- "batería",
- "batir",
- "batuta",
- "baúl",
- "bazar",
- "bebé",
- "bebida",
- "bello",
- "besar",
- "beso",
- "bestia",
- "bicho",
- "bien",
- "bingo",
- "blanco",
- "bloque",
- "blusa",
- "boa",
- "bobina",
- "bobo",
- "boca",
- "bocina",
- "boda",
- "bodega",
- "boina",
- "bola",
- "bolero",
- "bolsa",
- "bomba",
- "bondad",
- "bonito",
- "bono",
- "bonsái",
- "borde",
- "borrar",
- "bosque",
- "bote",
- "botín",
- "bóveda",
- "bozal",
- "bravo",
- "brazo",
- "brecha",
- "breve",
- "brillo",
- "brinco",
- "brisa",
- "broca",
- "broma",
- "bronce",
- "brote",
- "bruja",
- "brusco",
- "bruto",
- "buceo",
- "bucle",
- "bueno",
- "buey",
- "bufanda",
- "bufón",
- "búho",
- "buitre",
- "bulto",
- "burbuja",
- "burla",
- "burro",
- "buscar",
- "butaca",
- "buzón",
- "caballo",
- "cabeza",
- "cabina",
- "cabra",
- "cacao",
- "cadáver",
- "cadena",
- "caer",
- "café",
- "caída",
- "caimán",
- "caja",
- "cajón",
- "cal",
- "calamar",
- "calcio",
- "caldo",
- "calidad",
- "calle",
- "calma",
- "calor",
- "calvo",
- "cama",
- "cambio",
- "camello",
- "camino",
- "campo",
- "cáncer",
- "candil",
- "canela",
- "canguro",
- "canica",
- "canto",
- "caña",
- "cañón",
- "caoba",
- "caos",
- "capaz",
- "capitán",
- "capote",
- "captar",
- "capucha",
- "cara",
- "carbón",
- "cárcel",
- "careta",
- "carga",
- "cariño",
- "carne",
- "carpeta",
- "carro",
- "carta",
- "casa",
- "casco",
- "casero",
- "caspa",
- "castor",
- "catorce",
- "catre",
- "caudal",
- "causa",
- "cazo",
- "cebolla",
- "ceder",
- "cedro",
- "celda",
- "célebre",
- "celoso",
- "célula",
- "cemento",
- "ceniza",
- "centro",
- "cerca",
- "cerdo",
- "cereza",
- "cero",
- "cerrar",
- "certeza",
- "césped",
- "cetro",
- "chacal",
- "chaleco",
- "champú",
- "chancla",
- "chapa",
- "charla",
- "chico",
- "chiste",
- "chivo",
- "choque",
- "choza",
- "chuleta",
- "chupar",
- "ciclón",
- "ciego",
- "cielo",
- "cien",
- "cierto",
- "cifra",
- "cigarro",
- "cima",
- "cinco",
- "cine",
- "cinta",
- "ciprés",
- "circo",
- "ciruela",
- "cisne",
- "cita",
- "ciudad",
- "clamor",
- "clan",
- "claro",
- "clase",
- "clave",
- "cliente",
- "clima",
- "clínica",
- "cobre",
- "cocción",
- "cochino",
- "cocina",
- "coco",
- "código",
- "codo",
- "cofre",
- "coger",
- "cohete",
- "cojín",
- "cojo",
- "cola",
- "colcha",
- "colegio",
- "colgar",
- "colina",
- "collar",
- "colmo",
- "columna",
- "combate",
- "comer",
- "comida",
- "cómodo",
- "compra",
- "conde",
- "conejo",
- "conga",
- "conocer",
- "consejo",
- "contar",
- "copa",
- "copia",
- "corazón",
- "corbata",
- "corcho",
- "cordón",
- "corona",
- "correr",
- "coser",
- "cosmos",
- "costa",
- "cráneo",
- "cráter",
- "crear",
- "crecer",
- "creído",
- "crema",
- "cría",
- "crimen",
- "cripta",
- "crisis",
- "cromo",
- "crónica",
- "croqueta",
- "crudo",
- "cruz",
- "cuadro",
- "cuarto",
- "cuatro",
- "cubo",
- "cubrir",
- "cuchara",
- "cuello",
- "cuento",
- "cuerda",
- "cuesta",
- "cueva",
- "cuidar",
- "culebra",
- "culpa",
- "culto",
- "cumbre",
- "cumplir",
- "cuna",
- "cuneta",
- "cuota",
- "cupón",
- "cúpula",
- "curar",
- "curioso",
- "curso",
- "curva",
- "cutis",
- "dama",
- "danza",
- "dar",
- "dardo",
- "dátil",
- "deber",
- "débil",
- "década",
- "decir",
- "dedo",
- "defensa",
- "definir",
- "dejar",
- "delfín",
- "delgado",
- "delito",
- "demora",
- "denso",
- "dental",
- "deporte",
- "derecho",
- "derrota",
- "desayuno",
- "deseo",
- "desfile",
- "desnudo",
- "destino",
- "desvío",
- "detalle",
- "detener",
- "deuda",
- "día",
- "diablo",
- "diadema",
- "diamante",
- "diana",
- "diario",
- "dibujo",
- "dictar",
- "diente",
- "dieta",
- "diez",
- "difícil",
- "digno",
- "dilema",
- "diluir",
- "dinero",
- "directo",
- "dirigir",
- "disco",
- "diseño",
- "disfraz",
- "diva",
- "divino",
- "doble",
- "doce",
- "dolor",
- "domingo",
- "don",
- "donar",
- "dorado",
- "dormir",
- "dorso",
- "dos",
- "dosis",
- "dragón",
- "droga",
- "ducha",
- "duda",
- "duelo",
- "dueño",
- "dulce",
- "dúo",
- "duque",
- "durar",
- "dureza",
- "duro",
- "ébano",
- "ebrio",
- "echar",
- "eco",
- "ecuador",
- "edad",
- "edición",
- "edificio",
- "editor",
- "educar",
- "efecto",
- "eficaz",
- "eje",
- "ejemplo",
- "elefante",
- "elegir",
- "elemento",
- "elevar",
- "elipse",
- "élite",
- "elixir",
- "elogio",
- "eludir",
- "embudo",
- "emitir",
- "emoción",
- "empate",
- "empeño",
- "empleo",
- "empresa",
- "enano",
- "encargo",
- "enchufe",
- "encía",
- "enemigo",
- "enero",
- "enfado",
- "enfermo",
- "engaño",
- "enigma",
- "enlace",
- "enorme",
- "enredo",
- "ensayo",
- "enseñar",
- "entero",
- "entrar",
- "envase",
- "envío",
- "época",
- "equipo",
- "erizo",
- "escala",
- "escena",
- "escolar",
- "escribir",
- "escudo",
- "esencia",
- "esfera",
- "esfuerzo",
- "espada",
- "espejo",
- "espía",
- "esposa",
- "espuma",
- "esquí",
- "estar",
- "este",
- "estilo",
- "estufa",
- "etapa",
- "eterno",
- "ética",
- "etnia",
- "evadir",
- "evaluar",
- "evento",
- "evitar",
- "exacto",
- "examen",
- "exceso",
- "excusa",
- "exento",
- "exigir",
- "exilio",
- "existir",
- "éxito",
- "experto",
- "explicar",
- "exponer",
- "extremo",
- "fábrica",
- "fábula",
- "fachada",
- "fácil",
- "factor",
- "faena",
- "faja",
- "falda",
- "fallo",
- "falso",
- "faltar",
- "fama",
- "familia",
- "famoso",
- "faraón",
- "farmacia",
- "farol",
- "farsa",
- "fase",
- "fatiga",
- "fauna",
- "favor",
- "fax",
- "febrero",
- "fecha",
- "feliz",
- "feo",
- "feria",
- "feroz",
- "fértil",
- "fervor",
- "festín",
- "fiable",
- "fianza",
- "fiar",
- "fibra",
- "ficción",
- "ficha",
- "fideo",
- "fiebre",
- "fiel",
- "fiera",
- "fiesta",
- "figura",
- "fijar",
- "fijo",
- "fila",
- "filete",
- "filial",
- "filtro",
- "fin",
- "finca",
- "fingir",
- "finito",
- "firma",
- "flaco",
- "flauta",
- "flecha",
- "flor",
- "flota",
- "fluir",
- "flujo",
- "flúor",
- "fobia",
- "foca",
- "fogata",
- "fogón",
- "folio",
- "folleto",
- "fondo",
- "forma",
- "forro",
- "fortuna",
- "forzar",
- "fosa",
- "foto",
- "fracaso",
- "frágil",
- "franja",
- "frase",
- "fraude",
- "freír",
- "freno",
- "fresa",
- "frío",
- "frito",
- "fruta",
- "fuego",
- "fuente",
- "fuerza",
- "fuga",
- "fumar",
- "función",
- "funda",
- "furgón",
- "furia",
- "fusil",
- "fútbol",
- "futuro",
- "gacela",
- "gafas",
- "gaita",
- "gajo",
- "gala",
- "galería",
- "gallo",
- "gamba",
- "ganar",
- "gancho",
- "ganga",
- "ganso",
- "garaje",
- "garza",
- "gasolina",
- "gastar",
- "gato",
- "gavilán",
- "gemelo",
- "gemir",
- "gen",
- "género",
- "genio",
- "gente",
- "geranio",
- "gerente",
- "germen",
- "gesto",
- "gigante",
- "gimnasio",
- "girar",
- "giro",
- "glaciar",
- "globo",
- "gloria",
- "gol",
- "golfo",
- "goloso",
- "golpe",
- "goma",
- "gordo",
- "gorila",
- "gorra",
- "gota",
- "goteo",
- "gozar",
- "grada",
- "gráfico",
- "grano",
- "grasa",
- "gratis",
- "grave",
- "grieta",
- "grillo",
- "gripe",
- "gris",
- "grito",
- "grosor",
- "grúa",
- "grueso",
- "grumo",
- "grupo",
- "guante",
- "guapo",
- "guardia",
- "guerra",
- "guía",
- "guiño",
- "guion",
- "guiso",
- "guitarra",
- "gusano",
- "gustar",
- "haber",
- "hábil",
- "hablar",
- "hacer",
- "hacha",
- "hada",
- "hallar",
- "hamaca",
- "harina",
- "haz",
- "hazaña",
- "hebilla",
- "hebra",
- "hecho",
- "helado",
- "helio",
- "hembra",
- "herir",
- "hermano",
- "héroe",
- "hervir",
- "hielo",
- "hierro",
- "hígado",
- "higiene",
- "hijo",
- "himno",
- "historia",
- "hocico",
- "hogar",
- "hoguera",
- "hoja",
- "hombre",
- "hongo",
- "honor",
- "honra",
- "hora",
- "hormiga",
- "horno",
- "hostil",
- "hoyo",
- "hueco",
- "huelga",
- "huerta",
- "hueso",
- "huevo",
- "huida",
- "huir",
- "humano",
- "húmedo",
- "humilde",
- "humo",
- "hundir",
- "huracán",
- "hurto",
- "icono",
- "ideal",
- "idioma",
- "ídolo",
- "iglesia",
- "iglú",
- "igual",
- "ilegal",
- "ilusión",
- "imagen",
- "imán",
- "imitar",
- "impar",
- "imperio",
- "imponer",
- "impulso",
- "incapaz",
- "índice",
- "inerte",
- "infiel",
- "informe",
- "ingenio",
- "inicio",
- "inmenso",
- "inmune",
- "innato",
- "insecto",
- "instante",
- "interés",
- "íntimo",
- "intuir",
- "inútil",
- "invierno",
- "ira",
- "iris",
- "ironía",
- "isla",
- "islote",
- "jabalí",
- "jabón",
- "jamón",
- "jarabe",
- "jardín",
- "jarra",
- "jaula",
- "jazmín",
- "jefe",
- "jeringa",
- "jinete",
- "jornada",
- "joroba",
- "joven",
- "joya",
- "juerga",
- "jueves",
- "juez",
- "jugador",
- "jugo",
- "juguete",
- "juicio",
- "junco",
- "jungla",
- "junio",
- "juntar",
- "júpiter",
- "jurar",
- "justo",
- "juvenil",
- "juzgar",
- "kilo",
- "koala",
- "labio",
- "lacio",
- "lacra",
- "lado",
- "ladrón",
- "lagarto",
- "lágrima",
- "laguna",
- "laico",
- "lamer",
- "lámina",
- "lámpara",
- "lana",
- "lancha",
- "langosta",
- "lanza",
- "lápiz",
- "largo",
- "larva",
- "lástima",
- "lata",
- "látex",
- "latir",
- "laurel",
- "lavar",
- "lazo",
- "leal",
- "lección",
- "leche",
- "lector",
- "leer",
- "legión",
- "legumbre",
- "lejano",
- "lengua",
- "lento",
- "leña",
- "león",
- "leopardo",
- "lesión",
- "letal",
- "letra",
- "leve",
- "leyenda",
- "libertad",
- "libro",
- "licor",
- "líder",
- "lidiar",
- "lienzo",
- "liga",
- "ligero",
- "lima",
- "límite",
- "limón",
- "limpio",
- "lince",
- "lindo",
- "línea",
- "lingote",
- "lino",
- "linterna",
- "líquido",
- "liso",
- "lista",
- "litera",
- "litio",
- "litro",
- "llaga",
- "llama",
- "llanto",
- "llave",
- "llegar",
- "llenar",
- "llevar",
- "llorar",
- "llover",
- "lluvia",
- "lobo",
- "loción",
- "loco",
- "locura",
- "lógica",
- "logro",
- "lombriz",
- "lomo",
- "lonja",
- "lote",
- "lucha",
- "lucir",
- "lugar",
- "lujo",
- "luna",
- "lunes",
- "lupa",
- "lustro",
- "luto",
- "luz",
- "maceta",
- "macho",
- "madera",
- "madre",
- "maduro",
- "maestro",
- "mafia",
- "magia",
- "mago",
- "maíz",
- "maldad",
- "maleta",
- "malla",
- "malo",
- "mamá",
- "mambo",
- "mamut",
- "manco",
- "mando",
- "manejar",
- "manga",
- "maniquí",
- "manjar",
- "mano",
- "manso",
- "manta",
- "mañana",
- "mapa",
- "máquina",
- "mar",
- "marco",
- "marea",
- "marfil",
- "margen",
- "marido",
- "mármol",
- "marrón",
- "martes",
- "marzo",
- "masa",
- "máscara",
- "masivo",
- "matar",
- "materia",
- "matiz",
- "matriz",
- "máximo",
- "mayor",
- "mazorca",
- "mecha",
- "medalla",
- "medio",
- "médula",
- "mejilla",
- "mejor",
- "melena",
- "melón",
- "memoria",
- "menor",
- "mensaje",
- "mente",
- "menú",
- "mercado",
- "merengue",
- "mérito",
- "mes",
- "mesón",
- "meta",
- "meter",
- "método",
- "metro",
- "mezcla",
- "miedo",
- "miel",
- "miembro",
- "miga",
- "mil",
- "milagro",
- "militar",
- "millón",
- "mimo",
- "mina",
- "minero",
- "mínimo",
- "minuto",
- "miope",
- "mirar",
- "misa",
- "miseria",
- "misil",
- "mismo",
- "mitad",
- "mito",
- "mochila",
- "moción",
- "moda",
- "modelo",
- "moho",
- "mojar",
- "molde",
- "moler",
- "molino",
- "momento",
- "momia",
- "monarca",
- "moneda",
- "monja",
- "monto",
- "moño",
- "morada",
- "morder",
- "moreno",
- "morir",
- "morro",
- "morsa",
- "mortal",
- "mosca",
- "mostrar",
- "motivo",
- "mover",
- "móvil",
- "mozo",
- "mucho",
- "mudar",
- "mueble",
- "muela",
- "muerte",
- "muestra",
- "mugre",
- "mujer",
- "mula",
- "muleta",
- "multa",
- "mundo",
- "muñeca",
- "mural",
- "muro",
- "músculo",
- "museo",
- "musgo",
- "música",
- "muslo",
- "nácar",
- "nación",
- "nadar",
- "naipe",
- "naranja",
- "nariz",
- "narrar",
- "nasal",
- "natal",
- "nativo",
- "natural",
- "náusea",
- "naval",
- "nave",
- "navidad",
- "necio",
- "néctar",
- "negar",
- "negocio",
- "negro",
- "neón",
- "nervio",
- "neto",
- "neutro",
- "nevar",
- "nevera",
- "nicho",
- "nido",
- "niebla",
- "nieto",
- "niñez",
- "niño",
- "nítido",
- "nivel",
- "nobleza",
- "noche",
- "nómina",
- "noria",
- "norma",
- "norte",
- "nota",
- "noticia",
- "novato",
- "novela",
- "novio",
- "nube",
- "nuca",
- "núcleo",
- "nudillo",
- "nudo",
- "nuera",
- "nueve",
- "nuez",
- "nulo",
- "número",
- "nutria",
- "oasis",
- "obeso",
- "obispo",
- "objeto",
- "obra",
- "obrero",
- "observar",
- "obtener",
- "obvio",
- "oca",
- "ocaso",
- "océano",
- "ochenta",
- "ocho",
- "ocio",
- "ocre",
- "octavo",
- "octubre",
- "oculto",
- "ocupar",
- "ocurrir",
- "odiar",
- "odio",
- "odisea",
- "oeste",
- "ofensa",
- "oferta",
- "oficio",
- "ofrecer",
- "ogro",
- "oído",
- "oír",
- "ojo",
- "ola",
- "oleada",
- "olfato",
- "olivo",
- "olla",
- "olmo",
- "olor",
- "olvido",
- "ombligo",
- "onda",
- "onza",
- "opaco",
- "opción",
- "ópera",
- "opinar",
- "oponer",
- "optar",
- "óptica",
- "opuesto",
- "oración",
- "orador",
- "oral",
- "órbita",
- "orca",
- "orden",
- "oreja",
- "órgano",
- "orgía",
- "orgullo",
- "oriente",
- "origen",
- "orilla",
- "oro",
- "orquesta",
- "oruga",
- "osadía",
- "oscuro",
- "osezno",
- "oso",
- "ostra",
- "otoño",
- "otro",
- "oveja",
- "óvulo",
- "óxido",
- "oxígeno",
- "oyente",
- "ozono",
- "pacto",
- "padre",
- "paella",
- "página",
- "pago",
- "país",
- "pájaro",
- "palabra",
- "palco",
- "paleta",
- "pálido",
- "palma",
- "paloma",
- "palpar",
- "pan",
- "panal",
- "pánico",
- "pantera",
- "pañuelo",
- "papá",
- "papel",
- "papilla",
- "paquete",
- "parar",
- "parcela",
- "pared",
- "parir",
- "paro",
- "párpado",
- "parque",
- "párrafo",
- "parte",
- "pasar",
- "paseo",
- "pasión",
- "paso",
- "pasta",
- "pata",
- "patio",
- "patria",
- "pausa",
- "pauta",
- "pavo",
- "payaso",
- "peatón",
- "pecado",
- "pecera",
- "pecho",
- "pedal",
- "pedir",
- "pegar",
- "peine",
- "pelar",
- "peldaño",
- "pelea",
- "peligro",
- "pellejo",
- "pelo",
- "peluca",
- "pena",
- "pensar",
- "peñón",
- "peón",
- "peor",
- "pepino",
- "pequeño",
- "pera",
- "percha",
- "perder",
- "pereza",
- "perfil",
- "perico",
- "perla",
- "permiso",
- "perro",
- "persona",
- "pesa",
- "pesca",
- "pésimo",
- "pestaña",
- "pétalo",
- "petróleo",
- "pez",
- "pezuña",
- "picar",
- "pichón",
- "pie",
- "piedra",
- "pierna",
- "pieza",
- "pijama",
- "pilar",
- "piloto",
- "pimienta",
- "pino",
- "pintor",
- "pinza",
- "piña",
- "piojo",
- "pipa",
- "pirata",
- "pisar",
- "piscina",
- "piso",
- "pista",
- "pitón",
- "pizca",
- "placa",
- "plan",
- "plata",
- "playa",
- "plaza",
- "pleito",
- "pleno",
- "plomo",
- "pluma",
- "plural",
- "pobre",
- "poco",
- "poder",
- "podio",
- "poema",
- "poesía",
- "poeta",
- "polen",
- "policía",
- "pollo",
- "polvo",
- "pomada",
- "pomelo",
- "pomo",
- "pompa",
- "poner",
- "porción",
- "portal",
- "posada",
- "poseer",
- "posible",
- "poste",
- "potencia",
- "potro",
- "pozo",
- "prado",
- "precoz",
- "pregunta",
- "premio",
- "prensa",
- "preso",
- "previo",
- "primo",
- "príncipe",
- "prisión",
- "privar",
- "proa",
- "probar",
- "proceso",
- "producto",
- "proeza",
- "profesor",
- "programa",
- "prole",
- "promesa",
- "pronto",
- "propio",
- "próximo",
- "prueba",
- "público",
- "puchero",
- "pudor",
- "pueblo",
- "puerta",
- "puesto",
- "pulga",
- "pulir",
- "pulmón",
- "pulpo",
- "pulso",
- "puma",
- "punto",
- "puñal",
- "puño",
- "pupa",
- "pupila",
- "puré",
- "quedar",
- "queja",
- "quemar",
- "querer",
- "queso",
- "quieto",
- "química",
- "quince",
- "quitar",
- "rábano",
- "rabia",
- "rabo",
- "ración",
- "radical",
- "raíz",
- "rama",
- "rampa",
- "rancho",
- "rango",
- "rapaz",
- "rápido",
- "rapto",
- "rasgo",
- "raspa",
- "rato",
- "rayo",
- "raza",
- "razón",
- "reacción",
- "realidad",
- "rebaño",
- "rebote",
- "recaer",
- "receta",
- "rechazo",
- "recoger",
- "recreo",
- "recto",
- "recurso",
- "red",
- "redondo",
- "reducir",
- "reflejo",
- "reforma",
- "refrán",
- "refugio",
- "regalo",
- "regir",
- "regla",
- "regreso",
- "rehén",
- "reino",
- "reír",
- "reja",
- "relato",
- "relevo",
- "relieve",
- "relleno",
- "reloj",
- "remar",
- "remedio",
- "remo",
- "rencor",
- "rendir",
- "renta",
- "reparto",
- "repetir",
- "reposo",
- "reptil",
- "res",
- "rescate",
- "resina",
- "respeto",
- "resto",
- "resumen",
- "retiro",
- "retorno",
- "retrato",
- "reunir",
- "revés",
- "revista",
- "rey",
- "rezar",
- "rico",
- "riego",
- "rienda",
- "riesgo",
- "rifa",
- "rígido",
- "rigor",
- "rincón",
- "riñón",
- "río",
- "riqueza",
- "risa",
- "ritmo",
- "rito",
- "rizo",
- "roble",
- "roce",
- "rociar",
- "rodar",
- "rodeo",
- "rodilla",
- "roer",
- "rojizo",
- "rojo",
- "romero",
- "romper",
- "ron",
- "ronco",
- "ronda",
- "ropa",
- "ropero",
- "rosa",
- "rosca",
- "rostro",
- "rotar",
- "rubí",
- "rubor",
- "rudo",
- "rueda",
- "rugir",
- "ruido",
- "ruina",
- "ruleta",
- "rulo",
- "rumbo",
- "rumor",
- "ruptura",
- "ruta",
- "rutina",
- "sábado",
- "saber",
- "sabio",
- "sable",
- "sacar",
- "sagaz",
- "sagrado",
- "sala",
- "saldo",
- "salero",
- "salir",
- "salmón",
- "salón",
- "salsa",
- "salto",
- "salud",
- "salvar",
- "samba",
- "sanción",
- "sandía",
- "sanear",
- "sangre",
- "sanidad",
- "sano",
- "santo",
- "sapo",
- "saque",
- "sardina",
- "sartén",
- "sastre",
- "satán",
- "sauna",
- "saxofón",
- "sección",
- "seco",
- "secreto",
- "secta",
- "sed",
- "seguir",
- "seis",
- "sello",
- "selva",
- "semana",
- "semilla",
- "senda",
- "sensor",
- "señal",
- "señor",
- "separar",
- "sepia",
- "sequía",
- "ser",
- "serie",
- "sermón",
- "servir",
- "sesenta",
- "sesión",
- "seta",
- "setenta",
- "severo",
- "sexo",
- "sexto",
- "sidra",
- "siesta",
- "siete",
- "siglo",
- "signo",
- "sílaba",
- "silbar",
- "silencio",
- "silla",
- "símbolo",
- "simio",
- "sirena",
- "sistema",
- "sitio",
- "situar",
- "sobre",
- "socio",
- "sodio",
- "sol",
- "solapa",
- "soldado",
- "soledad",
- "sólido",
- "soltar",
- "solución",
- "sombra",
- "sondeo",
- "sonido",
- "sonoro",
- "sonrisa",
- "sopa",
- "soplar",
- "soporte",
- "sordo",
- "sorpresa",
- "sorteo",
- "sostén",
- "sótano",
- "suave",
- "subir",
- "suceso",
- "sudor",
- "suegra",
- "suelo",
- "sueño",
- "suerte",
- "sufrir",
- "sujeto",
- "sultán",
- "sumar",
- "superar",
- "suplir",
- "suponer",
- "supremo",
- "sur",
- "surco",
- "sureño",
- "surgir",
- "susto",
- "sutil",
- "tabaco",
- "tabique",
- "tabla",
- "tabú",
- "taco",
- "tacto",
- "tajo",
- "talar",
- "talco",
- "talento",
- "talla",
- "talón",
- "tamaño",
- "tambor",
- "tango",
- "tanque",
- "tapa",
- "tapete",
- "tapia",
- "tapón",
- "taquilla",
- "tarde",
- "tarea",
- "tarifa",
- "tarjeta",
- "tarot",
- "tarro",
- "tarta",
- "tatuaje",
- "tauro",
- "taza",
- "tazón",
- "teatro",
- "techo",
- "tecla",
- "técnica",
- "tejado",
- "tejer",
- "tejido",
- "tela",
- "teléfono",
- "tema",
- "temor",
- "templo",
- "tenaz",
- "tender",
- "tener",
- "tenis",
- "tenso",
- "teoría",
- "terapia",
- "terco",
- "término",
- "ternura",
- "terror",
- "tesis",
- "tesoro",
- "testigo",
- "tetera",
- "texto",
- "tez",
- "tibio",
- "tiburón",
- "tiempo",
- "tienda",
- "tierra",
- "tieso",
- "tigre",
- "tijera",
- "tilde",
- "timbre",
- "tímido",
- "timo",
- "tinta",
- "tío",
- "típico",
- "tipo",
- "tira",
- "tirón",
- "titán",
- "títere",
- "título",
- "tiza",
- "toalla",
- "tobillo",
- "tocar",
- "tocino",
- "todo",
- "toga",
- "toldo",
- "tomar",
- "tono",
- "tonto",
- "topar",
- "tope",
- "toque",
- "tórax",
- "torero",
- "tormenta",
- "torneo",
- "toro",
- "torpedo",
- "torre",
- "torso",
- "tortuga",
- "tos",
- "tosco",
- "toser",
- "tóxico",
- "trabajo",
- "tractor",
- "traer",
- "tráfico",
- "trago",
- "traje",
- "tramo",
- "trance",
- "trato",
- "trauma",
- "trazar",
- "trébol",
- "tregua",
- "treinta",
- "tren",
- "trepar",
- "tres",
- "tribu",
- "trigo",
- "tripa",
- "triste",
- "triunfo",
- "trofeo",
- "trompa",
- "tronco",
- "tropa",
- "trote",
- "trozo",
- "truco",
- "trueno",
- "trufa",
- "tubería",
- "tubo",
- "tuerto",
- "tumba",
- "tumor",
- "túnel",
- "túnica",
- "turbina",
- "turismo",
- "turno",
- "tutor",
- "ubicar",
- "úlcera",
- "umbral",
- "unidad",
- "unir",
- "universo",
- "uno",
- "untar",
- "uña",
- "urbano",
- "urbe",
- "urgente",
- "urna",
- "usar",
- "usuario",
- "útil",
- "utopía",
- "uva",
- "vaca",
- "vacío",
- "vacuna",
- "vagar",
- "vago",
- "vaina",
- "vajilla",
- "vale",
- "válido",
- "valle",
- "valor",
- "válvula",
- "vampiro",
- "vara",
- "variar",
- "varón",
- "vaso",
- "vecino",
- "vector",
- "vehículo",
- "veinte",
- "vejez",
- "vela",
- "velero",
- "veloz",
- "vena",
- "vencer",
- "venda",
- "veneno",
- "vengar",
- "venir",
- "venta",
- "venus",
- "ver",
- "verano",
- "verbo",
- "verde",
- "vereda",
- "verja",
- "verso",
- "verter",
- "vía",
- "viaje",
- "vibrar",
- "vicio",
- "víctima",
- "vida",
- "vídeo",
- "vidrio",
- "viejo",
- "viernes",
- "vigor",
- "vil",
- "villa",
- "vinagre",
- "vino",
- "viñedo",
- "violín",
- "viral",
- "virgo",
- "virtud",
- "visor",
- "víspera",
- "vista",
- "vitamina",
- "viudo",
- "vivaz",
- "vivero",
- "vivir",
- "vivo",
- "volcán",
- "volumen",
- "volver",
- "voraz",
- "votar",
- "voto",
- "voz",
- "vuelo",
- "vulgar",
- "yacer",
- "yate",
- "yegua",
- "yema",
- "yerno",
- "yeso",
- "yodo",
- "yoga",
- "yogur",
- "zafiro",
- "zanja",
- "zapato",
- "zarza",
- "zona",
- "zorro",
- "zumo",
- "zurdo"
- );
- return word_list;
-}
-
-std::unordered_map<std::string, unsigned int>& word_map_spanish()
+namespace Language
{
- static std::unordered_map<std::string, unsigned int> word_map;
- if (word_map.size() > 0)
+ class Spanish: public Base
{
- return word_map;
- }
- std::vector<std::string> word_list = word_list_spanish();
- int ii;
- std::vector<std::string>::iterator it;
- for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
- {
- word_map[*it] = ii;
- }
- return word_map;
-}
-
-std::unordered_map<std::string, unsigned int>& trimmed_word_map_spanish()
-{
- static std::unordered_map<std::string, unsigned int> trimmed_word_map;
- if (trimmed_word_map.size() > 0)
- {
- return trimmed_word_map;
- }
- std::vector<std::string> word_list = word_list_spanish();
- int ii;
- std::vector<std::string>::iterator it;
- for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
- {
- if (it->length() > 4)
+ public:
+ Spanish()
{
- trimmed_word_map[it->substr(0, 4)] = ii;
+ word_list = new std::vector<std::string>({
+ "ábaco",
+ "abdomen",
+ "abeja",
+ "abierto",
+ "abogado",
+ "abono",
+ "aborto",
+ "abrazo",
+ "abrir",
+ "abuelo",
+ "abuso",
+ "acabar",
+ "academia",
+ "acceso",
+ "acción",
+ "aceite",
+ "acelga",
+ "acento",
+ "aceptar",
+ "ácido",
+ "aclarar",
+ "acné",
+ "acoger",
+ "acoso",
+ "activo",
+ "acto",
+ "actriz",
+ "actuar",
+ "acudir",
+ "acuerdo",
+ "acusar",
+ "adicto",
+ "admitir",
+ "adoptar",
+ "adorno",
+ "aduana",
+ "adulto",
+ "aéreo",
+ "afectar",
+ "afición",
+ "afinar",
+ "afirmar",
+ "ágil",
+ "agitar",
+ "agonía",
+ "agosto",
+ "agotar",
+ "agregar",
+ "agrio",
+ "agua",
+ "agudo",
+ "águila",
+ "aguja",
+ "ahogo",
+ "ahorro",
+ "aire",
+ "aislar",
+ "ajedrez",
+ "ajeno",
+ "ajuste",
+ "alacrán",
+ "alambre",
+ "alarma",
+ "alba",
+ "álbum",
+ "alcalde",
+ "aldea",
+ "alegre",
+ "alejar",
+ "alerta",
+ "aleta",
+ "alfiler",
+ "alga",
+ "algodón",
+ "aliado",
+ "aliento",
+ "alivio",
+ "alma",
+ "almeja",
+ "almíbar",
+ "altar",
+ "alteza",
+ "altivo",
+ "alto",
+ "altura",
+ "alumno",
+ "alzar",
+ "amable",
+ "amante",
+ "amapola",
+ "amargo",
+ "amasar",
+ "ámbar",
+ "ámbito",
+ "ameno",
+ "amigo",
+ "amistad",
+ "amor",
+ "amparo",
+ "amplio",
+ "ancho",
+ "anciano",
+ "ancla",
+ "andar",
+ "andén",
+ "anemia",
+ "ángulo",
+ "anillo",
+ "ánimo",
+ "anís",
+ "anotar",
+ "antena",
+ "antiguo",
+ "antojo",
+ "anual",
+ "anular",
+ "anuncio",
+ "añadir",
+ "añejo",
+ "año",
+ "apagar",
+ "aparato",
+ "apetito",
+ "apio",
+ "aplicar",
+ "apodo",
+ "aporte",
+ "apoyo",
+ "aprender",
+ "aprobar",
+ "apuesta",
+ "apuro",
+ "arado",
+ "araña",
+ "arar",
+ "árbitro",
+ "árbol",
+ "arbusto",
+ "archivo",
+ "arco",
+ "arder",
+ "ardilla",
+ "arduo",
+ "área",
+ "árido",
+ "aries",
+ "armonía",
+ "arnés",
+ "aroma",
+ "arpa",
+ "arpón",
+ "arreglo",
+ "arroz",
+ "arruga",
+ "arte",
+ "artista",
+ "asa",
+ "asado",
+ "asalto",
+ "ascenso",
+ "asegurar",
+ "aseo",
+ "asesor",
+ "asiento",
+ "asilo",
+ "asistir",
+ "asno",
+ "asombro",
+ "áspero",
+ "astilla",
+ "astro",
+ "astuto",
+ "asumir",
+ "asunto",
+ "atajo",
+ "ataque",
+ "atar",
+ "atento",
+ "ateo",
+ "ático",
+ "atleta",
+ "átomo",
+ "atraer",
+ "atroz",
+ "atún",
+ "audaz",
+ "audio",
+ "auge",
+ "aula",
+ "aumento",
+ "ausente",
+ "autor",
+ "aval",
+ "avance",
+ "avaro",
+ "ave",
+ "avellana",
+ "avena",
+ "avestruz",
+ "avión",
+ "aviso",
+ "ayer",
+ "ayuda",
+ "ayuno",
+ "azafrán",
+ "azar",
+ "azote",
+ "azúcar",
+ "azufre",
+ "azul",
+ "baba",
+ "babor",
+ "bache",
+ "bahía",
+ "baile",
+ "bajar",
+ "balanza",
+ "balcón",
+ "balde",
+ "bambú",
+ "banco",
+ "banda",
+ "baño",
+ "barba",
+ "barco",
+ "barniz",
+ "barro",
+ "báscula",
+ "bastón",
+ "basura",
+ "batalla",
+ "batería",
+ "batir",
+ "batuta",
+ "baúl",
+ "bazar",
+ "bebé",
+ "bebida",
+ "bello",
+ "besar",
+ "beso",
+ "bestia",
+ "bicho",
+ "bien",
+ "bingo",
+ "blanco",
+ "bloque",
+ "blusa",
+ "boa",
+ "bobina",
+ "bobo",
+ "boca",
+ "bocina",
+ "boda",
+ "bodega",
+ "boina",
+ "bola",
+ "bolero",
+ "bolsa",
+ "bomba",
+ "bondad",
+ "bonito",
+ "bono",
+ "bonsái",
+ "borde",
+ "borrar",
+ "bosque",
+ "bote",
+ "botín",
+ "bóveda",
+ "bozal",
+ "bravo",
+ "brazo",
+ "brecha",
+ "breve",
+ "brillo",
+ "brinco",
+ "brisa",
+ "broca",
+ "broma",
+ "bronce",
+ "brote",
+ "bruja",
+ "brusco",
+ "bruto",
+ "buceo",
+ "bucle",
+ "bueno",
+ "buey",
+ "bufanda",
+ "bufón",
+ "búho",
+ "buitre",
+ "bulto",
+ "burbuja",
+ "burla",
+ "burro",
+ "buscar",
+ "butaca",
+ "buzón",
+ "caballo",
+ "cabeza",
+ "cabina",
+ "cabra",
+ "cacao",
+ "cadáver",
+ "cadena",
+ "caer",
+ "café",
+ "caída",
+ "caimán",
+ "caja",
+ "cajón",
+ "cal",
+ "calamar",
+ "calcio",
+ "caldo",
+ "calidad",
+ "calle",
+ "calma",
+ "calor",
+ "calvo",
+ "cama",
+ "cambio",
+ "camello",
+ "camino",
+ "campo",
+ "cáncer",
+ "candil",
+ "canela",
+ "canguro",
+ "canica",
+ "canto",
+ "caña",
+ "cañón",
+ "caoba",
+ "caos",
+ "capaz",
+ "capitán",
+ "capote",
+ "captar",
+ "capucha",
+ "cara",
+ "carbón",
+ "cárcel",
+ "careta",
+ "carga",
+ "cariño",
+ "carne",
+ "carpeta",
+ "carro",
+ "carta",
+ "casa",
+ "casco",
+ "casero",
+ "caspa",
+ "castor",
+ "catorce",
+ "catre",
+ "caudal",
+ "causa",
+ "cazo",
+ "cebolla",
+ "ceder",
+ "cedro",
+ "celda",
+ "célebre",
+ "celoso",
+ "célula",
+ "cemento",
+ "ceniza",
+ "centro",
+ "cerca",
+ "cerdo",
+ "cereza",
+ "cero",
+ "cerrar",
+ "certeza",
+ "césped",
+ "cetro",
+ "chacal",
+ "chaleco",
+ "champú",
+ "chancla",
+ "chapa",
+ "charla",
+ "chico",
+ "chiste",
+ "chivo",
+ "choque",
+ "choza",
+ "chuleta",
+ "chupar",
+ "ciclón",
+ "ciego",
+ "cielo",
+ "cien",
+ "cierto",
+ "cifra",
+ "cigarro",
+ "cima",
+ "cinco",
+ "cine",
+ "cinta",
+ "ciprés",
+ "circo",
+ "ciruela",
+ "cisne",
+ "cita",
+ "ciudad",
+ "clamor",
+ "clan",
+ "claro",
+ "clase",
+ "clave",
+ "cliente",
+ "clima",
+ "clínica",
+ "cobre",
+ "cocción",
+ "cochino",
+ "cocina",
+ "coco",
+ "código",
+ "codo",
+ "cofre",
+ "coger",
+ "cohete",
+ "cojín",
+ "cojo",
+ "cola",
+ "colcha",
+ "colegio",
+ "colgar",
+ "colina",
+ "collar",
+ "colmo",
+ "columna",
+ "combate",
+ "comer",
+ "comida",
+ "cómodo",
+ "compra",
+ "conde",
+ "conejo",
+ "conga",
+ "conocer",
+ "consejo",
+ "contar",
+ "copa",
+ "copia",
+ "corazón",
+ "corbata",
+ "corcho",
+ "cordón",
+ "corona",
+ "correr",
+ "coser",
+ "cosmos",
+ "costa",
+ "cráneo",
+ "cráter",
+ "crear",
+ "crecer",
+ "creído",
+ "crema",
+ "cría",
+ "crimen",
+ "cripta",
+ "crisis",
+ "cromo",
+ "crónica",
+ "croqueta",
+ "crudo",
+ "cruz",
+ "cuadro",
+ "cuarto",
+ "cuatro",
+ "cubo",
+ "cubrir",
+ "cuchara",
+ "cuello",
+ "cuento",
+ "cuerda",
+ "cuesta",
+ "cueva",
+ "cuidar",
+ "culebra",
+ "culpa",
+ "culto",
+ "cumbre",
+ "cumplir",
+ "cuna",
+ "cuneta",
+ "cuota",
+ "cupón",
+ "cúpula",
+ "curar",
+ "curioso",
+ "curso",
+ "curva",
+ "cutis",
+ "dama",
+ "danza",
+ "dar",
+ "dardo",
+ "dátil",
+ "deber",
+ "débil",
+ "década",
+ "decir",
+ "dedo",
+ "defensa",
+ "definir",
+ "dejar",
+ "delfín",
+ "delgado",
+ "delito",
+ "demora",
+ "denso",
+ "dental",
+ "deporte",
+ "derecho",
+ "derrota",
+ "desayuno",
+ "deseo",
+ "desfile",
+ "desnudo",
+ "destino",
+ "desvío",
+ "detalle",
+ "detener",
+ "deuda",
+ "día",
+ "diablo",
+ "diadema",
+ "diamante",
+ "diana",
+ "diario",
+ "dibujo",
+ "dictar",
+ "diente",
+ "dieta",
+ "diez",
+ "difícil",
+ "digno",
+ "dilema",
+ "diluir",
+ "dinero",
+ "directo",
+ "dirigir",
+ "disco",
+ "diseño",
+ "disfraz",
+ "diva",
+ "divino",
+ "doble",
+ "doce",
+ "dolor",
+ "domingo",
+ "don",
+ "donar",
+ "dorado",
+ "dormir",
+ "dorso",
+ "dos",
+ "dosis",
+ "dragón",
+ "droga",
+ "ducha",
+ "duda",
+ "duelo",
+ "dueño",
+ "dulce",
+ "dúo",
+ "duque",
+ "durar",
+ "dureza",
+ "duro",
+ "ébano",
+ "ebrio",
+ "echar",
+ "eco",
+ "ecuador",
+ "edad",
+ "edición",
+ "edificio",
+ "editor",
+ "educar",
+ "efecto",
+ "eficaz",
+ "eje",
+ "ejemplo",
+ "elefante",
+ "elegir",
+ "elemento",
+ "elevar",
+ "elipse",
+ "élite",
+ "elixir",
+ "elogio",
+ "eludir",
+ "embudo",
+ "emitir",
+ "emoción",
+ "empate",
+ "empeño",
+ "empleo",
+ "empresa",
+ "enano",
+ "encargo",
+ "enchufe",
+ "encía",
+ "enemigo",
+ "enero",
+ "enfado",
+ "enfermo",
+ "engaño",
+ "enigma",
+ "enlace",
+ "enorme",
+ "enredo",
+ "ensayo",
+ "enseñar",
+ "entero",
+ "entrar",
+ "envase",
+ "envío",
+ "época",
+ "equipo",
+ "erizo",
+ "escala",
+ "escena",
+ "escolar",
+ "escribir",
+ "escudo",
+ "esencia",
+ "esfera",
+ "esfuerzo",
+ "espada",
+ "espejo",
+ "espía",
+ "esposa",
+ "espuma",
+ "esquí",
+ "estar",
+ "este",
+ "estilo",
+ "estufa",
+ "etapa",
+ "eterno",
+ "ética",
+ "etnia",
+ "evadir",
+ "evaluar",
+ "evento",
+ "evitar",
+ "exacto",
+ "examen",
+ "exceso",
+ "excusa",
+ "exento",
+ "exigir",
+ "exilio",
+ "existir",
+ "éxito",
+ "experto",
+ "explicar",
+ "exponer",
+ "extremo",
+ "fábrica",
+ "fábula",
+ "fachada",
+ "fácil",
+ "factor",
+ "faena",
+ "faja",
+ "falda",
+ "fallo",
+ "falso",
+ "faltar",
+ "fama",
+ "familia",
+ "famoso",
+ "faraón",
+ "farmacia",
+ "farol",
+ "farsa",
+ "fase",
+ "fatiga",
+ "fauna",
+ "favor",
+ "fax",
+ "febrero",
+ "fecha",
+ "feliz",
+ "feo",
+ "feria",
+ "feroz",
+ "fértil",
+ "fervor",
+ "festín",
+ "fiable",
+ "fianza",
+ "fiar",
+ "fibra",
+ "ficción",
+ "ficha",
+ "fideo",
+ "fiebre",
+ "fiel",
+ "fiera",
+ "fiesta",
+ "figura",
+ "fijar",
+ "fijo",
+ "fila",
+ "filete",
+ "filial",
+ "filtro",
+ "fin",
+ "finca",
+ "fingir",
+ "finito",
+ "firma",
+ "flaco",
+ "flauta",
+ "flecha",
+ "flor",
+ "flota",
+ "fluir",
+ "flujo",
+ "flúor",
+ "fobia",
+ "foca",
+ "fogata",
+ "fogón",
+ "folio",
+ "folleto",
+ "fondo",
+ "forma",
+ "forro",
+ "fortuna",
+ "forzar",
+ "fosa",
+ "foto",
+ "fracaso",
+ "frágil",
+ "franja",
+ "frase",
+ "fraude",
+ "freír",
+ "freno",
+ "fresa",
+ "frío",
+ "frito",
+ "fruta",
+ "fuego",
+ "fuente",
+ "fuerza",
+ "fuga",
+ "fumar",
+ "función",
+ "funda",
+ "furgón",
+ "furia",
+ "fusil",
+ "fútbol",
+ "futuro",
+ "gacela",
+ "gafas",
+ "gaita",
+ "gajo",
+ "gala",
+ "galería",
+ "gallo",
+ "gamba",
+ "ganar",
+ "gancho",
+ "ganga",
+ "ganso",
+ "garaje",
+ "garza",
+ "gasolina",
+ "gastar",
+ "gato",
+ "gavilán",
+ "gemelo",
+ "gemir",
+ "gen",
+ "género",
+ "genio",
+ "gente",
+ "geranio",
+ "gerente",
+ "germen",
+ "gesto",
+ "gigante",
+ "gimnasio",
+ "girar",
+ "giro",
+ "glaciar",
+ "globo",
+ "gloria",
+ "gol",
+ "golfo",
+ "goloso",
+ "golpe",
+ "goma",
+ "gordo",
+ "gorila",
+ "gorra",
+ "gota",
+ "goteo",
+ "gozar",
+ "grada",
+ "gráfico",
+ "grano",
+ "grasa",
+ "gratis",
+ "grave",
+ "grieta",
+ "grillo",
+ "gripe",
+ "gris",
+ "grito",
+ "grosor",
+ "grúa",
+ "grueso",
+ "grumo",
+ "grupo",
+ "guante",
+ "guapo",
+ "guardia",
+ "guerra",
+ "guía",
+ "guiño",
+ "guion",
+ "guiso",
+ "guitarra",
+ "gusano",
+ "gustar",
+ "haber",
+ "hábil",
+ "hablar",
+ "hacer",
+ "hacha",
+ "hada",
+ "hallar",
+ "hamaca",
+ "harina",
+ "haz",
+ "hazaña",
+ "hebilla",
+ "hebra",
+ "hecho",
+ "helado",
+ "helio",
+ "hembra",
+ "herir",
+ "hermano",
+ "héroe",
+ "hervir",
+ "hielo",
+ "hierro",
+ "hígado",
+ "higiene",
+ "hijo",
+ "himno",
+ "historia",
+ "hocico",
+ "hogar",
+ "hoguera",
+ "hoja",
+ "hombre",
+ "hongo",
+ "honor",
+ "honra",
+ "hora",
+ "hormiga",
+ "horno",
+ "hostil",
+ "hoyo",
+ "hueco",
+ "huelga",
+ "huerta",
+ "hueso",
+ "huevo",
+ "huida",
+ "huir",
+ "humano",
+ "húmedo",
+ "humilde",
+ "humo",
+ "hundir",
+ "huracán",
+ "hurto",
+ "icono",
+ "ideal",
+ "idioma",
+ "ídolo",
+ "iglesia",
+ "iglú",
+ "igual",
+ "ilegal",
+ "ilusión",
+ "imagen",
+ "imán",
+ "imitar",
+ "impar",
+ "imperio",
+ "imponer",
+ "impulso",
+ "incapaz",
+ "índice",
+ "inerte",
+ "infiel",
+ "informe",
+ "ingenio",
+ "inicio",
+ "inmenso",
+ "inmune",
+ "innato",
+ "insecto",
+ "instante",
+ "interés",
+ "íntimo",
+ "intuir",
+ "inútil",
+ "invierno",
+ "ira",
+ "iris",
+ "ironía",
+ "isla",
+ "islote",
+ "jabalí",
+ "jabón",
+ "jamón",
+ "jarabe",
+ "jardín",
+ "jarra",
+ "jaula",
+ "jazmín",
+ "jefe",
+ "jeringa",
+ "jinete",
+ "jornada",
+ "joroba",
+ "joven",
+ "joya",
+ "juerga",
+ "jueves",
+ "juez",
+ "jugador",
+ "jugo",
+ "juguete",
+ "juicio",
+ "junco",
+ "jungla",
+ "junio",
+ "juntar",
+ "júpiter",
+ "jurar",
+ "justo",
+ "juvenil",
+ "juzgar",
+ "kilo",
+ "koala",
+ "labio",
+ "lacio",
+ "lacra",
+ "lado",
+ "ladrón",
+ "lagarto",
+ "lágrima",
+ "laguna",
+ "laico",
+ "lamer",
+ "lámina",
+ "lámpara",
+ "lana",
+ "lancha",
+ "langosta",
+ "lanza",
+ "lápiz",
+ "largo",
+ "larva",
+ "lástima",
+ "lata",
+ "látex",
+ "latir",
+ "laurel",
+ "lavar",
+ "lazo",
+ "leal",
+ "lección",
+ "leche",
+ "lector",
+ "leer",
+ "legión",
+ "legumbre",
+ "lejano",
+ "lengua",
+ "lento",
+ "leña",
+ "león",
+ "leopardo",
+ "lesión",
+ "letal",
+ "letra",
+ "leve",
+ "leyenda",
+ "libertad",
+ "libro",
+ "licor",
+ "líder",
+ "lidiar",
+ "lienzo",
+ "liga",
+ "ligero",
+ "lima",
+ "límite",
+ "limón",
+ "limpio",
+ "lince",
+ "lindo",
+ "línea",
+ "lingote",
+ "lino",
+ "linterna",
+ "líquido",
+ "liso",
+ "lista",
+ "litera",
+ "litio",
+ "litro",
+ "llaga",
+ "llama",
+ "llanto",
+ "llave",
+ "llegar",
+ "llenar",
+ "llevar",
+ "llorar",
+ "llover",
+ "lluvia",
+ "lobo",
+ "loción",
+ "loco",
+ "locura",
+ "lógica",
+ "logro",
+ "lombriz",
+ "lomo",
+ "lonja",
+ "lote",
+ "lucha",
+ "lucir",
+ "lugar",
+ "lujo",
+ "luna",
+ "lunes",
+ "lupa",
+ "lustro",
+ "luto",
+ "luz",
+ "maceta",
+ "macho",
+ "madera",
+ "madre",
+ "maduro",
+ "maestro",
+ "mafia",
+ "magia",
+ "mago",
+ "maíz",
+ "maldad",
+ "maleta",
+ "malla",
+ "malo",
+ "mamá",
+ "mambo",
+ "mamut",
+ "manco",
+ "mando",
+ "manejar",
+ "manga",
+ "maniquí",
+ "manjar",
+ "mano",
+ "manso",
+ "manta",
+ "mañana",
+ "mapa",
+ "máquina",
+ "mar",
+ "marco",
+ "marea",
+ "marfil",
+ "margen",
+ "marido",
+ "mármol",
+ "marrón",
+ "martes",
+ "marzo",
+ "masa",
+ "máscara",
+ "masivo",
+ "matar",
+ "materia",
+ "matiz",
+ "matriz",
+ "máximo",
+ "mayor",
+ "mazorca",
+ "mecha",
+ "medalla",
+ "medio",
+ "médula",
+ "mejilla",
+ "mejor",
+ "melena",
+ "melón",
+ "memoria",
+ "menor",
+ "mensaje",
+ "mente",
+ "menú",
+ "mercado",
+ "merengue",
+ "mérito",
+ "mes",
+ "mesón",
+ "meta",
+ "meter",
+ "método",
+ "metro",
+ "mezcla",
+ "miedo",
+ "miel",
+ "miembro",
+ "miga",
+ "mil",
+ "milagro",
+ "militar",
+ "millón",
+ "mimo",
+ "mina",
+ "minero",
+ "mínimo",
+ "minuto",
+ "miope",
+ "mirar",
+ "misa",
+ "miseria",
+ "misil",
+ "mismo",
+ "mitad",
+ "mito",
+ "mochila",
+ "moción",
+ "moda",
+ "modelo",
+ "moho",
+ "mojar",
+ "molde",
+ "moler",
+ "molino",
+ "momento",
+ "momia",
+ "monarca",
+ "moneda",
+ "monja",
+ "monto",
+ "moño",
+ "morada",
+ "morder",
+ "moreno",
+ "morir",
+ "morro",
+ "morsa",
+ "mortal",
+ "mosca",
+ "mostrar",
+ "motivo",
+ "mover",
+ "móvil",
+ "mozo",
+ "mucho",
+ "mudar",
+ "mueble",
+ "muela",
+ "muerte",
+ "muestra",
+ "mugre",
+ "mujer",
+ "mula",
+ "muleta",
+ "multa",
+ "mundo",
+ "muñeca",
+ "mural",
+ "muro",
+ "músculo",
+ "museo",
+ "musgo",
+ "música",
+ "muslo",
+ "nácar",
+ "nación",
+ "nadar",
+ "naipe",
+ "naranja",
+ "nariz",
+ "narrar",
+ "nasal",
+ "natal",
+ "nativo",
+ "natural",
+ "náusea",
+ "naval",
+ "nave",
+ "navidad",
+ "necio",
+ "néctar",
+ "negar",
+ "negocio",
+ "negro",
+ "neón",
+ "nervio",
+ "neto",
+ "neutro",
+ "nevar",
+ "nevera",
+ "nicho",
+ "nido",
+ "niebla",
+ "nieto",
+ "niñez",
+ "niño",
+ "nítido",
+ "nivel",
+ "nobleza",
+ "noche",
+ "nómina",
+ "noria",
+ "norma",
+ "norte",
+ "nota",
+ "noticia",
+ "novato",
+ "novela",
+ "novio",
+ "nube",
+ "nuca",
+ "núcleo",
+ "nudillo",
+ "nudo",
+ "nuera",
+ "nueve",
+ "nuez",
+ "nulo",
+ "número",
+ "nutria",
+ "oasis",
+ "obeso",
+ "obispo",
+ "objeto",
+ "obra",
+ "obrero",
+ "observar",
+ "obtener",
+ "obvio",
+ "oca",
+ "ocaso",
+ "océano",
+ "ochenta",
+ "ocho",
+ "ocio",
+ "ocre",
+ "octavo",
+ "octubre",
+ "oculto",
+ "ocupar",
+ "ocurrir",
+ "odiar",
+ "odio",
+ "odisea",
+ "oeste",
+ "ofensa",
+ "oferta",
+ "oficio",
+ "ofrecer",
+ "ogro",
+ "oído",
+ "oír",
+ "ojo",
+ "ola",
+ "oleada",
+ "olfato",
+ "olivo",
+ "olla",
+ "olmo",
+ "olor",
+ "olvido",
+ "ombligo",
+ "onda",
+ "onza",
+ "opaco",
+ "opción",
+ "ópera",
+ "opinar",
+ "oponer",
+ "optar",
+ "óptica",
+ "opuesto",
+ "oración",
+ "orador",
+ "oral",
+ "órbita",
+ "orca",
+ "orden",
+ "oreja",
+ "órgano",
+ "orgía",
+ "orgullo",
+ "oriente",
+ "origen",
+ "orilla",
+ "oro",
+ "orquesta",
+ "oruga",
+ "osadía",
+ "oscuro",
+ "osezno",
+ "oso",
+ "ostra",
+ "otoño",
+ "otro",
+ "oveja",
+ "óvulo",
+ "óxido",
+ "oxígeno",
+ "oyente",
+ "ozono",
+ "pacto",
+ "padre",
+ "paella",
+ "página",
+ "pago",
+ "país",
+ "pájaro",
+ "palabra",
+ "palco",
+ "paleta",
+ "pálido",
+ "palma",
+ "paloma",
+ "palpar",
+ "pan",
+ "panal",
+ "pánico",
+ "pantera",
+ "pañuelo",
+ "papá",
+ "papel",
+ "papilla",
+ "paquete",
+ "parar",
+ "parcela",
+ "pared",
+ "parir",
+ "paro",
+ "párpado",
+ "parque",
+ "párrafo",
+ "parte",
+ "pasar",
+ "paseo",
+ "pasión",
+ "paso",
+ "pasta",
+ "pata",
+ "patio",
+ "patria",
+ "pausa",
+ "pauta",
+ "pavo",
+ "payaso",
+ "peatón",
+ "pecado",
+ "pecera",
+ "pecho",
+ "pedal",
+ "pedir",
+ "pegar",
+ "peine",
+ "pelar",
+ "peldaño",
+ "pelea",
+ "peligro",
+ "pellejo",
+ "pelo",
+ "peluca",
+ "pena",
+ "pensar",
+ "peñón",
+ "peón",
+ "peor",
+ "pepino",
+ "pequeño",
+ "pera",
+ "percha",
+ "perder",
+ "pereza",
+ "perfil",
+ "perico",
+ "perla",
+ "permiso",
+ "perro",
+ "persona",
+ "pesa",
+ "pesca",
+ "pésimo",
+ "pestaña",
+ "pétalo",
+ "petróleo",
+ "pez",
+ "pezuña",
+ "picar",
+ "pichón",
+ "pie",
+ "piedra",
+ "pierna",
+ "pieza",
+ "pijama",
+ "pilar",
+ "piloto",
+ "pimienta",
+ "pino",
+ "pintor",
+ "pinza",
+ "piña",
+ "piojo",
+ "pipa",
+ "pirata",
+ "pisar",
+ "piscina",
+ "piso",
+ "pista",
+ "pitón",
+ "pizca",
+ "placa",
+ "plan",
+ "plata",
+ "playa",
+ "plaza",
+ "pleito",
+ "pleno",
+ "plomo",
+ "pluma",
+ "plural",
+ "pobre",
+ "poco",
+ "poder",
+ "podio",
+ "poema",
+ "poesía",
+ "poeta",
+ "polen",
+ "policía",
+ "pollo",
+ "polvo",
+ "pomada",
+ "pomelo",
+ "pomo",
+ "pompa",
+ "poner",
+ "porción",
+ "portal",
+ "posada",
+ "poseer",
+ "posible",
+ "poste",
+ "potencia",
+ "potro",
+ "pozo",
+ "prado",
+ "precoz",
+ "pregunta",
+ "premio",
+ "prensa",
+ "preso",
+ "previo",
+ "primo",
+ "príncipe",
+ "prisión",
+ "privar",
+ "proa",
+ "probar",
+ "proceso",
+ "producto",
+ "proeza",
+ "profesor",
+ "programa",
+ "prole",
+ "promesa",
+ "pronto",
+ "propio",
+ "próximo",
+ "prueba",
+ "público",
+ "puchero",
+ "pudor",
+ "pueblo",
+ "puerta",
+ "puesto",
+ "pulga",
+ "pulir",
+ "pulmón",
+ "pulpo",
+ "pulso",
+ "puma",
+ "punto",
+ "puñal",
+ "puño",
+ "pupa",
+ "pupila",
+ "puré",
+ "quedar",
+ "queja",
+ "quemar",
+ "querer",
+ "queso",
+ "quieto",
+ "química",
+ "quince",
+ "quitar",
+ "rábano",
+ "rabia",
+ "rabo",
+ "ración",
+ "radical",
+ "raíz",
+ "rama",
+ "rampa",
+ "rancho",
+ "rango",
+ "rapaz",
+ "rápido",
+ "rapto",
+ "rasgo",
+ "raspa",
+ "rato",
+ "rayo",
+ "raza",
+ "razón",
+ "reacción",
+ "realidad",
+ "rebaño",
+ "rebote",
+ "recaer",
+ "receta",
+ "rechazo",
+ "recoger",
+ "recreo",
+ "recto",
+ "recurso",
+ "red",
+ "redondo",
+ "reducir",
+ "reflejo",
+ "reforma",
+ "refrán",
+ "refugio",
+ "regalo",
+ "regir",
+ "regla",
+ "regreso",
+ "rehén",
+ "reino",
+ "reír",
+ "reja",
+ "relato",
+ "relevo",
+ "relieve",
+ "relleno",
+ "reloj",
+ "remar",
+ "remedio",
+ "remo",
+ "rencor",
+ "rendir",
+ "renta",
+ "reparto",
+ "repetir",
+ "reposo",
+ "reptil",
+ "res",
+ "rescate",
+ "resina",
+ "respeto",
+ "resto",
+ "resumen",
+ "retiro",
+ "retorno",
+ "retrato",
+ "reunir",
+ "revés",
+ "revista",
+ "rey",
+ "rezar",
+ "rico",
+ "riego",
+ "rienda",
+ "riesgo",
+ "rifa",
+ "rígido",
+ "rigor",
+ "rincón",
+ "riñón",
+ "río",
+ "riqueza",
+ "risa",
+ "ritmo",
+ "rito",
+ "rizo",
+ "roble",
+ "roce",
+ "rociar",
+ "rodar",
+ "rodeo",
+ "rodilla",
+ "roer",
+ "rojizo",
+ "rojo",
+ "romero",
+ "romper",
+ "ron",
+ "ronco",
+ "ronda",
+ "ropa",
+ "ropero",
+ "rosa",
+ "rosca",
+ "rostro",
+ "rotar",
+ "rubí",
+ "rubor",
+ "rudo",
+ "rueda",
+ "rugir",
+ "ruido",
+ "ruina",
+ "ruleta",
+ "rulo",
+ "rumbo",
+ "rumor",
+ "ruptura",
+ "ruta",
+ "rutina",
+ "sábado",
+ "saber",
+ "sabio",
+ "sable",
+ "sacar",
+ "sagaz",
+ "sagrado",
+ "sala",
+ "saldo",
+ "salero",
+ "salir",
+ "salmón",
+ "salón",
+ "salsa",
+ "salto",
+ "salud",
+ "salvar",
+ "samba",
+ "sanción",
+ "sandía",
+ "sanear",
+ "sangre",
+ "sanidad",
+ "sano",
+ "santo",
+ "sapo",
+ "saque",
+ "sardina",
+ "sartén",
+ "sastre",
+ "satán",
+ "sauna",
+ "saxofón",
+ "sección",
+ "seco",
+ "secreto",
+ "secta",
+ "sed",
+ "seguir",
+ "seis",
+ "sello",
+ "selva",
+ "semana",
+ "semilla",
+ "senda",
+ "sensor",
+ "señal",
+ "señor",
+ "separar",
+ "sepia",
+ "sequía",
+ "ser",
+ "serie",
+ "sermón",
+ "servir",
+ "sesenta",
+ "sesión",
+ "seta",
+ "setenta",
+ "severo",
+ "sexo",
+ "sexto",
+ "sidra",
+ "siesta",
+ "siete",
+ "siglo",
+ "signo",
+ "sílaba",
+ "silbar",
+ "silencio",
+ "silla",
+ "símbolo",
+ "simio",
+ "sirena",
+ "sistema",
+ "sitio",
+ "situar",
+ "sobre",
+ "socio",
+ "sodio",
+ "sol",
+ "solapa",
+ "soldado",
+ "soledad",
+ "sólido",
+ "soltar",
+ "solución",
+ "sombra",
+ "sondeo",
+ "sonido",
+ "sonoro",
+ "sonrisa",
+ "sopa",
+ "soplar",
+ "soporte",
+ "sordo",
+ "sorpresa",
+ "sorteo",
+ "sostén",
+ "sótano",
+ "suave",
+ "subir",
+ "suceso",
+ "sudor",
+ "suegra",
+ "suelo",
+ "sueño",
+ "suerte",
+ "sufrir",
+ "sujeto",
+ "sultán",
+ "sumar",
+ "superar",
+ "suplir",
+ "suponer",
+ "supremo",
+ "sur",
+ "surco",
+ "sureño",
+ "surgir",
+ "susto",
+ "sutil",
+ "tabaco",
+ "tabique",
+ "tabla",
+ "tabú",
+ "taco",
+ "tacto",
+ "tajo",
+ "talar",
+ "talco",
+ "talento",
+ "talla",
+ "talón",
+ "tamaño",
+ "tambor",
+ "tango",
+ "tanque",
+ "tapa",
+ "tapete",
+ "tapia",
+ "tapón",
+ "taquilla",
+ "tarde",
+ "tarea",
+ "tarifa",
+ "tarjeta",
+ "tarot",
+ "tarro",
+ "tarta",
+ "tatuaje",
+ "tauro",
+ "taza",
+ "tazón",
+ "teatro",
+ "techo",
+ "tecla",
+ "técnica",
+ "tejado",
+ "tejer",
+ "tejido",
+ "tela",
+ "teléfono",
+ "tema",
+ "temor",
+ "templo",
+ "tenaz",
+ "tender",
+ "tener",
+ "tenis",
+ "tenso",
+ "teoría",
+ "terapia",
+ "terco",
+ "término",
+ "ternura",
+ "terror",
+ "tesis",
+ "tesoro",
+ "testigo",
+ "tetera",
+ "texto",
+ "tez",
+ "tibio",
+ "tiburón",
+ "tiempo",
+ "tienda",
+ "tierra",
+ "tieso",
+ "tigre",
+ "tijera",
+ "tilde",
+ "timbre",
+ "tímido",
+ "timo",
+ "tinta",
+ "tío",
+ "típico",
+ "tipo",
+ "tira",
+ "tirón",
+ "titán",
+ "títere",
+ "título",
+ "tiza",
+ "toalla",
+ "tobillo",
+ "tocar",
+ "tocino",
+ "todo",
+ "toga",
+ "toldo",
+ "tomar",
+ "tono",
+ "tonto",
+ "topar",
+ "tope",
+ "toque",
+ "tórax",
+ "torero",
+ "tormenta",
+ "torneo",
+ "toro",
+ "torpedo",
+ "torre",
+ "torso",
+ "tortuga",
+ "tos",
+ "tosco",
+ "toser",
+ "tóxico",
+ "trabajo",
+ "tractor",
+ "traer",
+ "tráfico",
+ "trago",
+ "traje",
+ "tramo",
+ "trance",
+ "trato",
+ "trauma",
+ "trazar",
+ "trébol",
+ "tregua",
+ "treinta",
+ "tren",
+ "trepar",
+ "tres",
+ "tribu",
+ "trigo",
+ "tripa",
+ "triste",
+ "triunfo",
+ "trofeo",
+ "trompa",
+ "tronco",
+ "tropa",
+ "trote",
+ "trozo",
+ "truco",
+ "trueno",
+ "trufa",
+ "tubería",
+ "tubo",
+ "tuerto",
+ "tumba",
+ "tumor",
+ "túnel",
+ "túnica",
+ "turbina",
+ "turismo",
+ "turno",
+ "tutor",
+ "ubicar",
+ "úlcera",
+ "umbral",
+ "unidad",
+ "unir",
+ "universo",
+ "uno",
+ "untar",
+ "uña",
+ "urbano",
+ "urbe",
+ "urgente",
+ "urna",
+ "usar",
+ "usuario",
+ "útil",
+ "utopía",
+ "uva",
+ "vaca",
+ "vacío",
+ "vacuna",
+ "vagar",
+ "vago",
+ "vaina",
+ "vajilla",
+ "vale",
+ "válido",
+ "valle",
+ "valor",
+ "válvula",
+ "vampiro",
+ "vara",
+ "variar",
+ "varón",
+ "vaso",
+ "vecino",
+ "vector",
+ "vehículo",
+ "veinte",
+ "vejez",
+ "vela",
+ "velero",
+ "veloz",
+ "vena",
+ "vencer",
+ "venda",
+ "veneno",
+ "vengar",
+ "venir",
+ "venta",
+ "venus",
+ "ver",
+ "verano",
+ "verbo",
+ "verde",
+ "vereda",
+ "verja",
+ "verso",
+ "verter",
+ "vía",
+ "viaje",
+ "vibrar",
+ "vicio",
+ "víctima",
+ "vida",
+ "vídeo",
+ "vidrio",
+ "viejo",
+ "viernes",
+ "vigor",
+ "vil",
+ "villa",
+ "vinagre",
+ "vino",
+ "viñedo",
+ "violín",
+ "viral",
+ "virgo",
+ "virtud",
+ "visor",
+ "víspera",
+ "vista",
+ "vitamina",
+ "viudo",
+ "vivaz",
+ "vivero",
+ "vivir",
+ "vivo",
+ "volcán",
+ "volumen",
+ "volver",
+ "voraz",
+ "votar",
+ "voto",
+ "voz",
+ "vuelo",
+ "vulgar",
+ "yacer",
+ "yate",
+ "yegua",
+ "yema",
+ "yerno",
+ "yeso",
+ "yodo",
+ "yoga",
+ "yogur",
+ "zafiro",
+ "zanja",
+ "zapato",
+ "zarza",
+ "zona",
+ "zorro",
+ "zumo",
+ "zurdo"
+ });
+ word_map = new std::unordered_map<std::string, uint32_t>;
+ trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
+ language_name = "Spanish";
+ populate_maps();
}
- else
- {
- trimmed_word_map[*it] = ii;
- }
- }
- return trimmed_word_map;
+ };
}
+
+#endif \ No newline at end of file
diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp
index 24ba3424e..4b1fb07cd 100644
--- a/src/simplewallet/simplewallet.cpp
+++ b/src/simplewallet/simplewallet.cpp
@@ -368,6 +368,7 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm)
{
if (m_wallet_file.empty()) m_wallet_file = m_generate_new; // alias for simplicity later
+ std::string old_language;
// check for recover flag. if present, require electrum word list (only recovery option for now).
if (m_restore_deterministic_wallet)
{
@@ -387,21 +388,14 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm)
}
}
- try
+ if (!crypto::ElectrumWords::words_to_bytes(m_electrum_seed, m_recovery_key, old_language))
{
- if (!crypto::ElectrumWords::words_to_bytes(m_electrum_seed, m_recovery_key))
- {
- fail_msg_writer() << "electrum-style word list failed verification";
- return false;
- }
- }
- catch (std::runtime_error &e)
- {
- fail_msg_writer() << e.what() << std::endl;
+ fail_msg_writer() << "electrum-style word list failed verification";
return false;
}
}
- bool r = new_wallet(m_wallet_file, pwd_container.password(), m_recovery_key, m_restore_deterministic_wallet, m_non_deterministic, testnet);
+ bool r = new_wallet(m_wallet_file, pwd_container.password(), m_recovery_key, m_restore_deterministic_wallet,
+ m_non_deterministic, testnet, old_language);
CHECK_AND_ASSERT_MES(r, false, "account creation failed");
}
else
@@ -471,7 +465,7 @@ std::string simple_wallet::get_mnemonic_language()
try
{
language_number = std::stoi(language_choice);
- if (!((language_number >= 0) && (static_cast<uint>(language_number) < language_list.size())))
+ if (!((language_number >= 0) && (static_cast<unsigned int>(language_number) < language_list.size())))
{
language_number = -1;
fail_msg_writer() << "Invalid language choice passed. Please try again.\n";
@@ -486,7 +480,8 @@ std::string simple_wallet::get_mnemonic_language()
}
//----------------------------------------------------------------------------------------------------
-bool simple_wallet::new_wallet(const string &wallet_file, const std::string& password, const crypto::secret_key& recovery_key, bool recover, bool two_random, bool testnet)
+bool simple_wallet::new_wallet(const std::string &wallet_file, const std::string& password, const crypto::secret_key& recovery_key,
+ bool recover, bool two_random, bool testnet, const std::string &old_language)
{
m_wallet_file = wallet_file;
@@ -512,10 +507,10 @@ bool simple_wallet::new_wallet(const string &wallet_file, const std::string& pas
// convert rng value to electrum-style word list
std::string electrum_words;
- bool was_deprecated_wallet = m_restore_deterministic_wallet &&
- (crypto::ElectrumWords::get_is_old_style_word_list() ||
- crypto::ElectrumWords::get_is_old_style_seed(m_electrum_seed));
+ bool was_deprecated_wallet = (old_language == "OldEnglish") ||
+ crypto::ElectrumWords::get_is_old_style_seed(m_electrum_seed);
+ std::string mnemonic_language = old_language;
// Ask for seed language if it is not a wallet restore or if it was a deprecated wallet
// that was earlier used before this restore.
if (!m_restore_deterministic_wallet || was_deprecated_wallet)
@@ -526,26 +521,10 @@ bool simple_wallet::new_wallet(const string &wallet_file, const std::string& pas
message_writer(epee::log_space::console_color_green, false) << "\nYou had been using " <<
"a deprecated version of the wallet. Please use the new seed that we provide.\n";
}
- std::string mnemonic_language = get_mnemonic_language();
- try
- {
- crypto::ElectrumWords::init(mnemonic_language);
- }
- catch (std::runtime_error &e)
- {
- fail_msg_writer() << e.what() << std::endl;
- return false;
- }
- }
- try
- {
- crypto::ElectrumWords::bytes_to_words(recovery_val, electrum_words);
- }
- catch (std::runtime_error &e)
- {
- fail_msg_writer() << e.what() << std::endl;
- return false;
+ mnemonic_language = get_mnemonic_language();
}
+ crypto::ElectrumWords::bytes_to_words(recovery_val, electrum_words, mnemonic_language);
+ m_wallet->set_seed_language(mnemonic_language);
std::string print_electrum = "";
diff --git a/src/simplewallet/simplewallet.h b/src/simplewallet/simplewallet.h
index 8567b2343..af6d4172a 100644
--- a/src/simplewallet/simplewallet.h
+++ b/src/simplewallet/simplewallet.h
@@ -74,7 +74,8 @@ namespace cryptonote
bool run_console_handler();
- bool new_wallet(const std::string &wallet_file, const std::string& password, const crypto::secret_key& recovery_key = crypto::secret_key(), bool recover = false, bool two_random = false, bool testnet = false);
+ bool new_wallet(const std::string &wallet_file, const std::string& password, const crypto::secret_key& recovery_key,
+ bool recover, bool two_random, bool testnet, const std::string &old_language);
bool open_wallet(const std::string &wallet_file, const std::string& password, bool testnet);
bool close_wallet();
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
index b8f793d7c..cb6f66b3d 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -88,7 +88,7 @@ void wallet2::init(const std::string& daemon_address, uint64_t upper_transaction
//----------------------------------------------------------------------------------------------------
bool wallet2::get_seed(std::string& electrum_words)
{
- crypto::ElectrumWords::bytes_to_words(get_account().get_keys().m_spend_secret_key, electrum_words);
+ crypto::ElectrumWords::bytes_to_words(get_account().get_keys().m_spend_secret_key, electrum_words, seed_language);
crypto::secret_key second;
keccak((uint8_t *)&get_account().get_keys().m_spend_secret_key, sizeof(crypto::secret_key), (uint8_t *)&second, sizeof(crypto::secret_key));
@@ -97,6 +97,13 @@ bool wallet2::get_seed(std::string& electrum_words)
return memcmp(second.data,get_account().get_keys().m_view_secret_key.data, sizeof(crypto::secret_key)) == 0;
}
+/*!
+ * \brief Sets the seed language
+ */
+void wallet2::set_seed_language(const std::string &language)
+{
+ seed_language = language;
+}
//----------------------------------------------------------------------------------------------------
void wallet2::process_new_transaction(const cryptonote::transaction& tx, uint64_t height)
{
diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h
index 90918677e..afa42c2d3 100644
--- a/src/wallet/wallet2.h
+++ b/src/wallet/wallet2.h
@@ -152,7 +152,10 @@ namespace tools
void callback(i_wallet2_callback* callback) { m_callback = callback; }
bool get_seed(std::string& electrum_words);
-
+ /*!
+ * \brief Sets the seed language
+ */
+ void set_seed_language(const std::string &language);
void refresh();
void refresh(uint64_t start_height, size_t & blocks_fetched);
void refresh(uint64_t start_height, size_t & blocks_fetched, bool& received_money);
@@ -236,6 +239,7 @@ namespace tools
i_wallet2_callback* m_callback;
bool m_testnet;
+ std::string seed_language;
};
}
BOOST_CLASS_VERSION(tools::wallet2, 7)