generate optimized language bags
authorMazet Laurent <mazet@softndesign.org>
Thu, 6 Aug 2026 07:49:52 +0000 (09:49 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Mon, 10 Aug 2026 21:40:27 +0000 (23:40 +0200)
29 files changed:
README.md
dict-dists-extractor/make_optimized_bag.js [new file with mode: 0755]
server/lang/bg-opt.json [new file with mode: 0644]
server/lang/br-opt.json [new file with mode: 0644]
server/lang/ca-opt.json [new file with mode: 0644]
server/lang/cy-opt.json [new file with mode: 0644]
server/lang/da-opt.json [new file with mode: 0644]
server/lang/de-opt.json [new file with mode: 0644]
server/lang/el-opt.json [new file with mode: 0644]
server/lang/en-opt.json [new file with mode: 0644]
server/lang/eo-opt.json [new file with mode: 0644]
server/lang/es-opt.json [new file with mode: 0644]
server/lang/fr-opt.json [new file with mode: 0644]
server/lang/ga-opt.json [new file with mode: 0644]
server/lang/hr-opt.json [new file with mode: 0644]
server/lang/hy-opt.json [new file with mode: 0644]
server/lang/is-opt.json [new file with mode: 0644]
server/lang/it-opt.json [new file with mode: 0644]
server/lang/lv-opt.json [new file with mode: 0644]
server/lang/nl-opt.json [new file with mode: 0644]
server/lang/no-opt.json [new file with mode: 0644]
server/lang/pl-opt.json [new file with mode: 0644]
server/lang/pt-opt.json [new file with mode: 0644]
server/lang/ro-opt.json [new file with mode: 0644]
server/lang/ru-opt.json [new file with mode: 0644]
server/lang/sk-opt.json [new file with mode: 0644]
server/lang/sl-opt.json [new file with mode: 0644]
server/lang/sv-opt.json [new file with mode: 0644]
server/lang/uk-opt.json [new file with mode: 0644]

index d9bb4da8ad55acf43952f748ef3d7e863328d429..3750e12269b4db2a806b9c86176935287e4523ac 100644 (file)
--- a/README.md
+++ b/README.md
@@ -278,6 +278,16 @@ Some lists of words are too huge (for example Hungarian or Turkish are agglutina
 
 Some languages don't have any Aspell dictionary.
 
+### Optimized bag generator
+
+Once dictionaries have been build, script 'dict-dists-extractor/make_optimized_bag.js' can generate optimized language bagѕ based on dictionary statistics. The /smart/ algorithm which defines number and value of a tile is described as follow:
+
+  Alphabet size is denoted by 'N'
+  Letter statistic is defined by 'r' as the occurance number over total number.
+  Number of letter is defined by 'floor(r * 100 + 1/4)'
+  Calculus 'floor((N - 15) / 10))' defines an index to choose parameter 'p' from set '{0.8 0.7 0.65 0.6}'.
+  Letter value is defined by 'min(floor(1 + 9 ceil(r^p) * 100), 10)'
+
 ### Credits
 
 Thanks [Laurent Mazet](http://www.softndesign.org/~mazet/) for many contributions.
diff --git a/dict-dists-extractor/make_optimized_bag.js b/dict-dists-extractor/make_optimized_bag.js
new file mode 100755 (executable)
index 0000000..032c639
--- /dev/null
@@ -0,0 +1,105 @@
+#!/usr/bin/env node
+// vim: noai:ts=4:sw=4
+
+// eslint-disable no-sync
+
+"use strict";
+
+const fs = require("fs");
+const path = require("path");
+
+const DICTS = path.join(__dirname, "..", "public", "dict");
+const LANGS = path.join(__dirname, "..", "server", "lang");
+
+/* Build optimized bagѕ */
+
+for (const arg of fs.readdirSync(DICTS)) {
+
+    /* get language code */
+    const lang = arg.replace(/\.dict/, "");
+
+    /* check if standard bag exists */
+    if (!fs.existsSync(path.join(LANGS, lang + ".json"))) {
+        continue;
+    }
+
+    /* start processing */
+    console.info("Processing " + lang);
+
+    /* read standard bag */
+    const stdbag = require(path.join(LANGS, lang + ".json")); // eslint-disable-line global-require
+
+    /* orderer letters */
+    let letters = [];
+    for (const letter in stdbag.letterValues) {
+        if (letter == " ") {
+            continue;
+        }
+        if (letter.length > 1) {
+            letters.unshift(letter);
+        } else {
+            letters.push(letter);
+        }
+    }
+
+    /* read dictionary */
+    let dict;
+    try {
+        dict = fs.readFileSync(path.join(DICTS, lang + ".dict"), {encoding: "utf-8"}); // eslint-disable-line global-require
+    } catch (e) {
+        console.warn("can't read dictionary for " + lang);
+    }
+
+    /* build statictics */
+    let stats = {};
+    for (const letter of letters) {
+        stats[letter] = 0;
+    }
+    let total = 0;
+    for (const word of dict.split(/\r?\n/)) {
+        for (let i = 0; i < word.length; i++) {
+            for (const letter of letters) {
+                if (word.substring(i, i + letter.length) === letter) {
+                    stats[letter]++;
+                    i += letter.length - 1;
+                    total++;
+                    break;
+                }
+            }
+        }
+    }
+
+    /* init bag variables */
+    let bag =    "\n        \" \", \" \"";
+    let values = "        \" \": 0";
+    
+    /* generate bag */
+    for (const letter of letters) {
+        let ratio = stats[letter] / total;
+        let nb = Math.floor(ratio * 100 + 1/4);
+        if (nb === 0) nb = 1;
+        bag += ",\n        \"" + letter + "\"";
+        while (--nb) { bag += ", \"" + letter + "\""; }
+        const p = [0.8, 0.7, 0.65, 0.6].at(Math.floor((letters.length - 15) / 10));
+        const v = Math.min(10, Math.floor(1 + 9 / Math.ceil(Math.pow(ratio, p) * 100)));
+        values += ",\n        \"" + letter + "\": " + v;
+    }
+
+    /* write board file */
+    let file = "{\n";
+    file += "    \"code\": \"" + lang + "-opt\",\n";
+    file += "    \"name\": \"" + stdbag.name + " optimized\",\n";
+    file += "\n";
+    file += "    \"bag\": [" + bag + "\n    ],\n";
+    file += "\n";
+    file += "    \"letterValues\": {\n";
+    file += values;
+    file += "\n    }\n";
+    file += "\n}\n";
+    try {
+        fs.writeFileSync(path.join(LANGS, lang + "-opt.json"), file);
+        console.info("build optimized bag for " + lang);
+    } catch (e) {
+        console.error("can't write language bag for " + lang);
+    }
+}
diff --git a/server/lang/bg-opt.json b/server/lang/bg-opt.json
new file mode 100644 (file)
index 0000000..2094cc7
--- /dev/null
@@ -0,0 +1,73 @@
+{
+    "code": "bg-opt",
+    "name": "Bulgarian optimized",
+
+    "bag": [
+        " ", " ",
+        "А", "А", "А", "А", "А", "А", "А", "А", "А", "А", "А", "А", "А",
+        "О", "О", "О", "О", "О", "О", "О", "О",
+        "Е", "Е", "Е", "Е", "Е", "Е", "Е", "Е",
+        "И", "И", "И", "И", "И", "И", "И", "И",
+        "Т", "Т", "Т", "Т", "Т", "Т", "Т",
+        "Н", "Н", "Н", "Н", "Н", "Н",
+        "П", "П", "П", "П",
+        "Р", "Р", "Р", "Р", "Р", "Р",
+        "С", "С", "С",
+        "В", "В", "В", "В", "В",
+        "М", "М",
+        "Б",
+        "Д", "Д",
+        "К", "К",
+        "Л", "Л", "Л", "Л", "Л",
+        "Г",
+        "Ъ",
+        "Ж",
+        "З", "З", "З",
+        "У",
+        "Ч",
+        "Я", "Я", "Я",
+        "Й",
+        "Х",
+        "Ц",
+        "Ш",
+        "Ю",
+        "Ф",
+        "Щ",
+        "Ь"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "А": 1,
+        "О": 1,
+        "Е": 1,
+        "И": 1,
+        "Т": 1,
+        "Н": 1,
+        "П": 1,
+        "Р": 1,
+        "С": 1,
+        "В": 1,
+        "М": 2,
+        "Б": 2,
+        "Д": 2,
+        "К": 2,
+        "Л": 1,
+        "Г": 2,
+        "Ъ": 2,
+        "Ж": 4,
+        "З": 2,
+        "У": 2,
+        "Ч": 2,
+        "Я": 1,
+        "Й": 4,
+        "Х": 2,
+        "Ц": 4,
+        "Ш": 3,
+        "Ю": 10,
+        "Ф": 5,
+        "Щ": 2,
+        "Ь": 10
+    }
+
+}
diff --git a/server/lang/br-opt.json b/server/lang/br-opt.json
new file mode 100644 (file)
index 0000000..9284519
--- /dev/null
@@ -0,0 +1,65 @@
+{
+    "code": "br-opt",
+    "name": "Breton optimized",
+
+    "bag": [
+        " ", " ",
+        "C'H",
+        "CH",
+        "ZH",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "N", "N", "N", "N", "N", "N", "N", "N", "N", "N",
+        "R", "R", "R", "R", "R", "R", "R", "R",
+        "O", "O", "O", "O", "O", "O",
+        "T", "T", "T", "T",
+        "U", "U", "U", "U",
+        "I", "I", "I", "I", "I", "I", "I",
+        "L", "L", "L", "L", "L", "L",
+        "D", "D", "D", "D", "D",
+        "G", "G", "G",
+        "S", "S", "S",
+        "V",
+        "H",
+        "B", "B",
+        "K", "K", "K",
+        "M", "M",
+        "Z",
+        "P", "P",
+        "F",
+        "J",
+        "W",
+        "Y"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "C'H": 3,
+        "CH": 4,
+        "ZH": 2,
+        "E": 1,
+        "A": 1,
+        "N": 1,
+        "R": 1,
+        "O": 1,
+        "T": 1,
+        "U": 1,
+        "I": 1,
+        "L": 1,
+        "D": 1,
+        "G": 2,
+        "S": 1,
+        "V": 2,
+        "H": 3,
+        "B": 2,
+        "K": 1,
+        "M": 2,
+        "Z": 2,
+        "P": 2,
+        "F": 2,
+        "J": 4,
+        "W": 4,
+        "Y": 10
+    }
+
+}
diff --git a/server/lang/ca-opt.json b/server/lang/ca-opt.json
new file mode 100644 (file)
index 0000000..39ae528
--- /dev/null
@@ -0,0 +1,59 @@
+{
+    "code": "ca-opt",
+    "name": "Catalan optimized",
+
+    "bag": [
+        " ", " ",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "I", "I", "I", "I", "I", "I", "I", "I", "I",
+        "R", "R", "R", "R", "R", "R", "R", "R",
+        "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S",
+        "N", "N", "N", "N", "N", "N",
+        "O", "O", "O", "O", "O",
+        "T", "T", "T", "T", "T",
+        "L", "L", "L", "L",
+        "U", "U", "U", "U",
+        "C", "C", "C",
+        "D", "D", "D",
+        "M", "M", "M",
+        "B",
+        "G", "G",
+        "P", "P",
+        "F",
+        "V",
+        "H",
+        "J",
+        "Q",
+        "Z",
+        "Ç"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "E": 1,
+        "A": 1,
+        "I": 1,
+        "R": 1,
+        "S": 1,
+        "N": 1,
+        "O": 2,
+        "T": 1,
+        "L": 2,
+        "U": 2,
+        "C": 2,
+        "D": 2,
+        "M": 2,
+        "B": 3,
+        "G": 2,
+        "P": 2,
+        "F": 4,
+        "V": 3,
+        "H": 10,
+        "J": 5,
+        "Q": 5,
+        "Z": 5,
+        "Ç": 10
+    }
+
+}
diff --git a/server/lang/cy-opt.json b/server/lang/cy-opt.json
new file mode 100644 (file)
index 0000000..8b65fdd
--- /dev/null
@@ -0,0 +1,69 @@
+{
+    "code": "cy-opt",
+    "name": "Welsh optimized",
+
+    "bag": [
+        " ", " ",
+        "RH",
+        "NG",
+        "LL",
+        "CH", "CH", "CH",
+        "TH",
+        "FF",
+        "DD", "DD",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "E", "E", "E", "E", "E", "E", "E", "E",
+        "N", "N", "N", "N", "N", "N", "N",
+        "I", "I", "I", "I", "I", "I", "I", "I",
+        "R", "R", "R", "R", "R", "R",
+        "Y", "Y", "Y", "Y", "Y", "Y", "Y",
+        "D", "D", "D", "D", "D",
+        "O", "O", "O", "O", "O",
+        "W", "W", "W", "W",
+        "F", "F", "F",
+        "G", "G", "G",
+        "L", "L", "L",
+        "U",
+        "S", "S", "S", "S", "S", "S",
+        "B",
+        "M", "M", "M",
+        "T", "T", "T",
+        "C",
+        "H", "H",
+        "P",
+        "J"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "RH": 5,
+        "NG": 4,
+        "LL": 3,
+        "CH": 2,
+        "TH": 2,
+        "FF": 4,
+        "DD": 2,
+        "A": 1,
+        "E": 1,
+        "N": 1,
+        "I": 1,
+        "R": 1,
+        "Y": 1,
+        "D": 1,
+        "O": 1,
+        "W": 1,
+        "F": 2,
+        "G": 1,
+        "L": 1,
+        "U": 2,
+        "S": 1,
+        "B": 2,
+        "M": 2,
+        "T": 1,
+        "C": 2,
+        "H": 2,
+        "P": 4,
+        "J": 10
+    }
+
+}
diff --git a/server/lang/da-opt.json b/server/lang/da-opt.json
new file mode 100644 (file)
index 0000000..3b4f654
--- /dev/null
@@ -0,0 +1,67 @@
+{
+    "code": "da-opt",
+    "name": "Danish optimized",
+
+    "bag": [
+        " ", " ",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "A", "A", "A", "A", "A",
+        "N", "N", "N", "N", "N", "N", "N", "N", "N",
+        "R", "R", "R", "R", "R", "R", "R", "R", "R",
+        "D", "D", "D", "D",
+        "L", "L", "L", "L", "L",
+        "O", "O", "O", "O",
+        "S", "S", "S", "S", "S", "S", "S", "S", "S", "S",
+        "T", "T", "T", "T", "T", "T",
+        "B", "B",
+        "I", "I", "I", "I", "I", "I",
+        "K", "K", "K",
+        "F", "F",
+        "G", "G", "G", "G",
+        "M", "M",
+        "U", "U",
+        "V",
+        "H",
+        "J",
+        "P",
+        "Y",
+        "Æ",
+        "Ø",
+        "Å",
+        "C",
+        "X",
+        "Z"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "E": 1,
+        "A": 1,
+        "N": 1,
+        "R": 1,
+        "D": 1,
+        "L": 1,
+        "O": 1,
+        "S": 1,
+        "T": 1,
+        "B": 2,
+        "I": 1,
+        "K": 1,
+        "F": 2,
+        "G": 1,
+        "M": 2,
+        "U": 2,
+        "V": 2,
+        "H": 3,
+        "J": 3,
+        "P": 2,
+        "Y": 3,
+        "Æ": 2,
+        "Ø": 3,
+        "Å": 4,
+        "C": 4,
+        "X": 10,
+        "Z": 10
+    }
+
+}
diff --git a/server/lang/de-opt.json b/server/lang/de-opt.json
new file mode 100644 (file)
index 0000000..00ae00b
--- /dev/null
@@ -0,0 +1,71 @@
+{
+    "code": "de-opt",
+    "name": "German optimized",
+
+    "bag": [
+        " ", " ",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "N", "N", "N", "N", "N", "N", "N", "N",
+        "S", "S", "S", "S", "S", "S", "S", "S",
+        "I", "I", "I", "I", "I", "I",
+        "R", "R", "R", "R", "R", "R", "R", "R",
+        "T", "T", "T", "T", "T", "T", "T",
+        "U", "U", "U",
+        "A", "A", "A", "A", "A",
+        "D", "D", "D",
+        "H", "H", "H", "H",
+        "G", "G", "G",
+        "L", "L", "L", "L",
+        "O", "O",
+        "M", "M",
+        "B", "B",
+        "W",
+        "Z",
+        "C", "C", "C",
+        "F", "F",
+        "K", "K",
+        "P",
+        "Ä",
+        "J",
+        "Ü",
+        "V",
+        "Ö",
+        "X",
+        "Q",
+        "Y"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "E": 1,
+        "N": 1,
+        "S": 1,
+        "I": 1,
+        "R": 1,
+        "T": 1,
+        "U": 1,
+        "A": 1,
+        "D": 2,
+        "H": 1,
+        "G": 1,
+        "L": 1,
+        "O": 2,
+        "M": 2,
+        "B": 2,
+        "W": 3,
+        "Z": 2,
+        "C": 2,
+        "F": 2,
+        "K": 2,
+        "P": 2,
+        "Ä": 3,
+        "J": 10,
+        "Ü": 3,
+        "V": 3,
+        "Ö": 5,
+        "X": 10,
+        "Q": 10,
+        "Y": 10
+    }
+
+}
diff --git a/server/lang/el-opt.json b/server/lang/el-opt.json
new file mode 100644 (file)
index 0000000..206fe41
--- /dev/null
@@ -0,0 +1,61 @@
+{
+    "code": "el-opt",
+    "name": "Greek optimized",
+
+    "bag": [
+        " ", " ",
+        "Α", "Α", "Α", "Α", "Α", "Α", "Α", "Α", "Α", "Α", "Α", "Α",
+        "Ε", "Ε", "Ε", "Ε", "Ε", "Ε", "Ε", "Ε", "Ε",
+        "Ι", "Ι", "Ι", "Ι", "Ι", "Ι", "Ι", "Ι",
+        "Τ", "Τ", "Τ", "Τ", "Τ", "Τ", "Τ",
+        "Η", "Η", "Η",
+        "Σ", "Σ", "Σ", "Σ", "Σ", "Σ", "Σ", "Σ",
+        "Ν", "Ν", "Ν", "Ν", "Ν", "Ν",
+        "Ο", "Ο", "Ο", "Ο", "Ο", "Ο", "Ο", "Ο", "Ο", "Ο",
+        "Κ", "Κ", "Κ", "Κ",
+        "Π", "Π", "Π",
+        "Ρ", "Ρ", "Ρ", "Ρ", "Ρ",
+        "Υ", "Υ", "Υ", "Υ", "Υ",
+        "Λ", "Λ", "Λ",
+        "Μ", "Μ", "Μ", "Μ",
+        "Ω", "Ω",
+        "Γ",
+        "Δ",
+        "Β",
+        "Φ",
+        "Χ",
+        "Ζ",
+        "Θ",
+        "Ξ",
+        "Ψ"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "Α": 1,
+        "Ε": 1,
+        "Ι": 1,
+        "Τ": 1,
+        "Η": 2,
+        "Σ": 1,
+        "Ν": 1,
+        "Ο": 1,
+        "Κ": 2,
+        "Π": 2,
+        "Ρ": 1,
+        "Υ": 2,
+        "Λ": 2,
+        "Μ": 2,
+        "Ω": 2,
+        "Γ": 3,
+        "Δ": 3,
+        "Β": 4,
+        "Φ": 4,
+        "Χ": 4,
+        "Ζ": 4,
+        "Θ": 4,
+        "Ξ": 5,
+        "Ψ": 10
+    }
+
+}
diff --git a/server/lang/en-opt.json b/server/lang/en-opt.json
new file mode 100644 (file)
index 0000000..742048b
--- /dev/null
@@ -0,0 +1,65 @@
+{
+    "code": "en-opt",
+    "name": "English optimized",
+
+    "bag": [
+        " ", " ",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "A", "A", "A", "A", "A", "A", "A", "A",
+        "I",
+        "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O",
+        "R", "R", "R", "R", "R", "R", "R",
+        "N", "N", "N", "N", "N", "N", "N",
+        "T", "T", "T", "T", "T", "T",
+        "L", "L", "L", "L", "L",
+        "S", "S", "S", "S", "S", "S", "S", "S", "S",
+        "U", "U", "U",
+        "D", "D", "D", "D",
+        "G", "G", "G",
+        "B", "B",
+        "C", "C", "C", "C",
+        "M", "M", "M",
+        "P", "P", "P",
+        "F",
+        "H", "H",
+        "V",
+        "W",
+        "Y",
+        "K",
+        "J",
+        "X",
+        "Q",
+        "Z"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "E": 1,
+        "A": 1,
+        "I": 10,
+        "O": 1,
+        "R": 1,
+        "N": 1,
+        "T": 1,
+        "L": 1,
+        "S": 1,
+        "U": 1,
+        "D": 1,
+        "G": 2,
+        "B": 2,
+        "C": 1,
+        "M": 2,
+        "P": 2,
+        "F": 2,
+        "H": 2,
+        "V": 2,
+        "W": 3,
+        "Y": 2,
+        "K": 3,
+        "J": 5,
+        "X": 5,
+        "Q": 5,
+        "Z": 4
+    }
+
+}
diff --git a/server/lang/eo-opt.json b/server/lang/eo-opt.json
new file mode 100644 (file)
index 0000000..79cac8d
--- /dev/null
@@ -0,0 +1,69 @@
+{
+    "code": "eo-opt",
+    "name": "Esperanto optimized",
+
+    "bag": [
+        " ", " ",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "E", "E", "E", "E", "E", "E", "E", "E",
+        "I", "I", "I", "I", "I", "I", "I", "I", "I",
+        "O", "O", "O", "O", "O", "O", "O", "O",
+        "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N",
+        "R", "R", "R", "R", "R",
+        "S", "S", "S", "S",
+        "L", "L", "L", "L",
+        "T", "T", "T", "T", "T", "T", "T",
+        "U", "U", "U",
+        "K", "K", "K",
+        "M", "M", "M",
+        "D", "D", "D", "D",
+        "J", "J", "J",
+        "P", "P",
+        "F",
+        "G", "G", "G",
+        "Ĝ",
+        "V",
+        "B",
+        "Ĉ",
+        "C",
+        "Ŝ",
+        "Z",
+        "H",
+        "Ŭ",
+        "Ĥ",
+        "Ĵ"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "A": 1,
+        "E": 1,
+        "I": 1,
+        "O": 1,
+        "N": 1,
+        "R": 1,
+        "S": 1,
+        "L": 1,
+        "T": 1,
+        "U": 2,
+        "K": 1,
+        "M": 2,
+        "D": 1,
+        "J": 1,
+        "P": 2,
+        "F": 2,
+        "G": 2,
+        "Ĝ": 2,
+        "V": 2,
+        "B": 2,
+        "Ĉ": 5,
+        "C": 3,
+        "Ŝ": 4,
+        "Z": 4,
+        "H": 5,
+        "Ŭ": 5,
+        "Ĥ": 10,
+        "Ĵ": 5
+    }
+
+}
diff --git a/server/lang/es-opt.json b/server/lang/es-opt.json
new file mode 100644 (file)
index 0000000..ad05dc6
--- /dev/null
@@ -0,0 +1,69 @@
+{
+    "code": "es-opt",
+    "name": "Spanish optimized",
+
+    "bag": [
+        " ", " ",
+        "RR",
+        "LL",
+        "CH",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "O", "O", "O", "O", "O", "O", "O", "O",
+        "I", "I", "I", "I", "I", "I", "I",
+        "S", "S", "S", "S", "S", "S", "S", "S", "S", "S",
+        "N", "N", "N", "N", "N", "N",
+        "R", "R", "R", "R", "R", "R", "R",
+        "U", "U",
+        "L", "L", "L", "L", "L",
+        "T", "T", "T", "T",
+        "D", "D", "D", "D",
+        "G",
+        "C", "C", "C",
+        "B", "B",
+        "M", "M", "M",
+        "P", "P",
+        "H",
+        "F",
+        "V",
+        "Y",
+        "Q",
+        "J",
+        "Ñ",
+        "X",
+        "Z"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "RR": 5,
+        "LL": 5,
+        "CH": 5,
+        "A": 1,
+        "E": 1,
+        "O": 1,
+        "I": 1,
+        "S": 1,
+        "N": 1,
+        "R": 1,
+        "U": 2,
+        "L": 1,
+        "T": 1,
+        "D": 1,
+        "G": 2,
+        "C": 1,
+        "B": 2,
+        "M": 1,
+        "P": 2,
+        "H": 5,
+        "F": 3,
+        "V": 3,
+        "Y": 10,
+        "Q": 4,
+        "J": 4,
+        "Ñ": 5,
+        "X": 5,
+        "Z": 3
+    }
+
+}
diff --git a/server/lang/fr-opt.json b/server/lang/fr-opt.json
new file mode 100644 (file)
index 0000000..654dd49
--- /dev/null
@@ -0,0 +1,65 @@
+{
+    "code": "fr-opt",
+    "name": "French optimized",
+
+    "bag": [
+        " ", " ",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "I", "I", "I", "I", "I", "I", "I", "I", "I",
+        "N", "N", "N", "N", "N", "N", "N",
+        "O", "O", "O", "O", "O", "O",
+        "R", "R", "R", "R", "R", "R", "R", "R",
+        "S", "S", "S", "S", "S", "S", "S", "S", "S", "S",
+        "T", "T", "T", "T", "T", "T", "T",
+        "U", "U", "U",
+        "L", "L", "L", "L",
+        "D", "D",
+        "M", "M",
+        "G",
+        "B",
+        "C", "C", "C",
+        "P", "P",
+        "F",
+        "H",
+        "V",
+        "J",
+        "Q",
+        "K",
+        "W",
+        "X",
+        "Y",
+        "Z"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "E": 1,
+        "A": 1,
+        "I": 1,
+        "N": 1,
+        "O": 1,
+        "R": 1,
+        "S": 1,
+        "T": 1,
+        "U": 1,
+        "L": 1,
+        "D": 2,
+        "M": 2,
+        "G": 2,
+        "B": 2,
+        "C": 1,
+        "P": 2,
+        "F": 2,
+        "H": 2,
+        "V": 3,
+        "J": 5,
+        "Q": 4,
+        "K": 10,
+        "W": 10,
+        "X": 5,
+        "Y": 5,
+        "Z": 2
+    }
+
+}
diff --git a/server/lang/ga-opt.json b/server/lang/ga-opt.json
new file mode 100644 (file)
index 0000000..47aca44
--- /dev/null
@@ -0,0 +1,59 @@
+{
+    "code": "ga-opt",
+    "name": "Irish optimized",
+
+    "bag": [
+        " ", " ",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "H", "H", "H", "H", "H", "H", "H", "H", "H", "H",
+        "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I",
+        "N", "N", "N", "N", "N", "N",
+        "R", "R", "R", "R", "R", "R",
+        "E", "E", "E", "E", "E",
+        "S", "S", "S", "S",
+        "C", "C", "C", "C", "C",
+        "D", "D", "D", "D",
+        "L", "L", "L", "L",
+        "O", "O", "O", "O", "O", "O",
+        "T", "T", "T", "T", "T",
+        "G", "G", "G",
+        "U", "U",
+        "F", "F",
+        "M", "M", "M",
+        "Á",
+        "Í",
+        "É",
+        "Ó",
+        "Ú",
+        "B", "B",
+        "P"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "A": 1,
+        "H": 1,
+        "I": 1,
+        "N": 1,
+        "R": 1,
+        "E": 1,
+        "S": 2,
+        "C": 1,
+        "D": 2,
+        "L": 2,
+        "O": 1,
+        "T": 1,
+        "G": 2,
+        "U": 2,
+        "F": 2,
+        "M": 2,
+        "Á": 10,
+        "Í": 10,
+        "É": 10,
+        "Ó": 10,
+        "Ú": 10,
+        "B": 2,
+        "P": 4
+    }
+
+}
diff --git a/server/lang/hr-opt.json b/server/lang/hr-opt.json
new file mode 100644 (file)
index 0000000..009f312
--- /dev/null
@@ -0,0 +1,73 @@
+{
+    "code": "hr-opt",
+    "name": "Croatian optimized",
+
+    "bag": [
+        " ", " ",
+        "DŽ",
+        "NJ",
+        "LJ",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I",
+        "E", "E", "E", "E", "E", "E", "E",
+        "O", "O", "O", "O", "O", "O", "O", "O",
+        "N", "N", "N", "N", "N", "N",
+        "R", "R", "R", "R", "R", "R",
+        "S", "S", "S", "S",
+        "T", "T", "T", "T",
+        "J", "J", "J",
+        "U", "U", "U", "U",
+        "K", "K", "K",
+        "M", "M", "M", "M",
+        "P", "P", "P",
+        "V", "V", "V",
+        "D", "D",
+        "G",
+        "L", "L", "L",
+        "Z", "Z",
+        "B",
+        "Č",
+        "C",
+        "H",
+        "Š",
+        "Ž",
+        "Ć",
+        "F",
+        "Đ"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "DŽ": 10,
+        "NJ": 2,
+        "LJ": 3,
+        "A": 1,
+        "I": 1,
+        "E": 1,
+        "O": 1,
+        "N": 1,
+        "R": 1,
+        "S": 1,
+        "T": 1,
+        "J": 2,
+        "U": 1,
+        "K": 1,
+        "M": 1,
+        "P": 1,
+        "V": 2,
+        "D": 2,
+        "G": 2,
+        "L": 2,
+        "Z": 2,
+        "B": 2,
+        "Č": 2,
+        "C": 2,
+        "H": 3,
+        "Š": 2,
+        "Ž": 4,
+        "Ć": 4,
+        "F": 5,
+        "Đ": 5
+    }
+
+}
diff --git a/server/lang/hy-opt.json b/server/lang/hy-opt.json
new file mode 100644 (file)
index 0000000..9406a6f
--- /dev/null
@@ -0,0 +1,89 @@
+{
+    "code": "hy-opt",
+    "name": "Armenian optimized",
+
+    "bag": [
+        " ", " ",
+        "Ա", "Ա", "Ա", "Ա", "Ա", "Ա", "Ա", "Ա", "Ա", "Ա", "Ա", "Ա", "Ա", "Ա",
+        "Ե", "Ե", "Ե", "Ե", "Ե", "Ե",
+        "Ի", "Ի", "Ի", "Ի", "Ի",
+        "Կ", "Կ", "Կ",
+        "Ն", "Ն", "Ն", "Ն", "Ն", "Ն", "Ն", "Ն", "Ն", "Ն",
+        "Ո", "Ո", "Ո", "Ո", "Ո", "Ո", "Ո", "Ո", "Ո",
+        "Ս", "Ս",
+        "Է",
+        "Հ",
+        "Մ", "Մ", "Մ",
+        "Յ", "Յ",
+        "Պ",
+        "Տ", "Տ",
+        "Ր", "Ր", "Ր", "Ր", "Ր", "Ր", "Ր",
+        "Ւ", "Ւ", "Ւ", "Ւ", "Ւ", "Ւ", "Ւ",
+        "Բ",
+        "Գ",
+        "Դ",
+        "Լ", "Լ",
+        "Վ", "Վ",
+        "Ք",
+        "Խ",
+        "Շ",
+        "Ռ",
+        "Թ", "Թ", "Թ",
+        "Ծ",
+        "Ղ",
+        "Ց", "Ց",
+        "Զ",
+        "Ճ",
+        "Չ",
+        "Ջ",
+        "Ժ",
+        "Ձ",
+        "Փ",
+        "Օ",
+        "Ը",
+        "Ֆ"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "Ա": 1,
+        "Ե": 1,
+        "Ի": 1,
+        "Կ": 1,
+        "Ն": 1,
+        "Ո": 1,
+        "Ս": 2,
+        "Է": 3,
+        "Հ": 2,
+        "Մ": 1,
+        "Յ": 1,
+        "Պ": 2,
+        "Տ": 1,
+        "Ր": 1,
+        "Ւ": 1,
+        "Բ": 2,
+        "Գ": 2,
+        "Դ": 2,
+        "Լ": 2,
+        "Վ": 2,
+        "Ք": 2,
+        "Խ": 2,
+        "Շ": 2,
+        "Ռ": 2,
+        "Թ": 1,
+        "Ծ": 2,
+        "Ղ": 2,
+        "Ց": 1,
+        "Զ": 2,
+        "Ճ": 4,
+        "Չ": 3,
+        "Ջ": 4,
+        "Ժ": 4,
+        "Ձ": 4,
+        "Փ": 3,
+        "Օ": 4,
+        "Ը": 2,
+        "Ֆ": 10
+    }
+
+}
diff --git a/server/lang/is-opt.json b/server/lang/is-opt.json
new file mode 100644 (file)
index 0000000..bf40a53
--- /dev/null
@@ -0,0 +1,77 @@
+{
+    "code": "is-opt",
+    "name": "Icelandic optimized",
+
+    "bag": [
+        " ", " ",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "I", "I", "I", "I", "I", "I", "I",
+        "N", "N", "N", "N", "N", "N", "N", "N", "N",
+        "R", "R", "R", "R", "R", "R", "R", "R", "R",
+        "E", "E", "E", "E",
+        "S", "S", "S", "S", "S", "S",
+        "U", "U", "U", "U", "U", "U",
+        "T", "T", "T", "T", "T",
+        "Ð", "Ð", "Ð",
+        "G", "G", "G", "G",
+        "K", "K", "K",
+        "L", "L", "L", "L", "L",
+        "M", "M", "M",
+        "F", "F", "F",
+        "O",
+        "H",
+        "V",
+        "Á",
+        "D", "D",
+        "Í",
+        "Þ",
+        "J",
+        "Æ",
+        "B",
+        "É",
+        "Ó",
+        "Ö",
+        "Y",
+        "P",
+        "Ú",
+        "Ý",
+        "X"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "A": 1,
+        "I": 1,
+        "N": 1,
+        "R": 1,
+        "E": 1,
+        "S": 1,
+        "U": 1,
+        "T": 1,
+        "Ð": 1,
+        "G": 1,
+        "K": 1,
+        "L": 1,
+        "M": 1,
+        "F": 2,
+        "O": 2,
+        "H": 2,
+        "V": 2,
+        "Á": 2,
+        "D": 2,
+        "Í": 3,
+        "Þ": 4,
+        "J": 2,
+        "Æ": 2,
+        "B": 2,
+        "É": 5,
+        "Ó": 2,
+        "Ö": 2,
+        "Y": 3,
+        "P": 2,
+        "Ú": 4,
+        "Ý": 5,
+        "X": 10
+    }
+
+}
diff --git a/server/lang/it-opt.json b/server/lang/it-opt.json
new file mode 100644 (file)
index 0000000..6e56799
--- /dev/null
@@ -0,0 +1,55 @@
+{
+    "code": "it-opt",
+    "name": "Italian optimized",
+
+    "bag": [
+        " ", " ",
+        "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "I",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "C", "C", "C", "C", "C",
+        "R", "R", "R", "R", "R", "R", "R",
+        "S", "S", "S", "S", "S",
+        "T", "T", "T", "T", "T", "T", "T",
+        "L", "L", "L", "L", "L", "L", "L",
+        "M", "M", "M",
+        "N", "N", "N", "N", "N", "N",
+        "U",
+        "B",
+        "D", "D", "D",
+        "F",
+        "P", "P",
+        "V", "V",
+        "G", "G", "G",
+        "H",
+        "Z",
+        "Q"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "O": 1,
+        "A": 1,
+        "I": 10,
+        "E": 1,
+        "C": 1,
+        "R": 1,
+        "S": 1,
+        "T": 1,
+        "L": 1,
+        "M": 2,
+        "N": 1,
+        "U": 3,
+        "B": 4,
+        "D": 2,
+        "F": 4,
+        "P": 2,
+        "V": 2,
+        "G": 2,
+        "H": 5,
+        "Z": 3,
+        "Q": 10
+    }
+
+}
diff --git a/server/lang/lv-opt.json b/server/lang/lv-opt.json
new file mode 100644 (file)
index 0000000..9f41084
--- /dev/null
@@ -0,0 +1,79 @@
+{
+    "code": "lv-opt",
+    "name": "Latvian optimized",
+
+    "bag": [
+        " ", " ",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "I", "I", "I", "I", "I", "I", "I", "I",
+        "S", "S", "S", "S", "S", "S",
+        "E", "E", "E", "E", "E", "E", "E", "E",
+        "T", "T", "T", "T", "T",
+        "R", "R", "R", "R",
+        "U", "U", "U", "U", "U", "U",
+        "Ā", "Ā", "Ā",
+        "K", "K",
+        "M", "M", "M", "M",
+        "N", "N", "N", "N", "N",
+        "L", "L", "L",
+        "P", "P", "P", "P",
+        "D", "D",
+        "O", "O", "O", "O", "O", "O", "O",
+        "V",
+        "Z", "Z",
+        "Ē",
+        "Ī",
+        "J", "J", "J", "J", "J",
+        "B",
+        "C",
+        "G",
+        "Ņ",
+        "Š", "Š", "Š",
+        "Ū",
+        "Ļ",
+        "Ž",
+        "Č",
+        "F",
+        "Ģ",
+        "H",
+        "Ķ"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "A": 1,
+        "I": 1,
+        "S": 1,
+        "E": 1,
+        "T": 1,
+        "R": 1,
+        "U": 1,
+        "Ā": 2,
+        "K": 2,
+        "M": 1,
+        "N": 1,
+        "L": 2,
+        "P": 1,
+        "D": 2,
+        "O": 1,
+        "V": 2,
+        "Z": 2,
+        "Ē": 3,
+        "Ī": 3,
+        "J": 1,
+        "B": 3,
+        "C": 4,
+        "G": 2,
+        "Ņ": 5,
+        "Š": 1,
+        "Ū": 5,
+        "Ļ": 5,
+        "Ž": 5,
+        "Č": 10,
+        "F": 10,
+        "Ģ": 10,
+        "H": 10,
+        "Ķ": 5
+    }
+
+}
diff --git a/server/lang/nl-opt.json b/server/lang/nl-opt.json
new file mode 100644 (file)
index 0000000..d5e823a
--- /dev/null
@@ -0,0 +1,67 @@
+{
+    "code": "nl-opt",
+    "name": "Dutch optimized",
+
+    "bag": [
+        " ", " ",
+        "IJ",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "N", "N", "N", "N", "N", "N", "N", "N",
+        "A", "A", "A", "A", "A", "A",
+        "O", "O", "O", "O", "O", "O",
+        "I", "I", "I", "I", "I", "I",
+        "D", "D", "D", "D",
+        "R", "R", "R", "R", "R", "R", "R", "R",
+        "T", "T", "T", "T", "T", "T", "T",
+        "S", "S", "S", "S", "S", "S",
+        "G", "G", "G", "G",
+        "K", "K", "K",
+        "L", "L", "L", "L",
+        "M", "M",
+        "B", "B",
+        "P", "P",
+        "U", "U",
+        "H", "H",
+        "J",
+        "V", "V",
+        "Z",
+        "F",
+        "C", "C",
+        "W",
+        "X",
+        "Y",
+        "Q"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "IJ": 3,
+        "E": 1,
+        "N": 1,
+        "A": 1,
+        "O": 1,
+        "I": 1,
+        "D": 1,
+        "R": 1,
+        "T": 1,
+        "S": 1,
+        "G": 1,
+        "K": 2,
+        "L": 1,
+        "M": 2,
+        "B": 2,
+        "P": 2,
+        "U": 2,
+        "H": 2,
+        "J": 4,
+        "V": 2,
+        "Z": 3,
+        "F": 2,
+        "C": 2,
+        "W": 2,
+        "X": 10,
+        "Y": 10,
+        "Q": 10
+    }
+
+}
diff --git a/server/lang/no-opt.json b/server/lang/no-opt.json
new file mode 100644 (file)
index 0000000..4147c79
--- /dev/null
@@ -0,0 +1,65 @@
+{
+    "code": "no-opt",
+    "name": "Norwegian optimized",
+
+    "bag": [
+        " ", " ",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "A", "A", "A", "A", "A",
+        "N", "N", "N", "N", "N", "N", "N", "N", "N", "N",
+        "R", "R", "R", "R", "R", "R", "R", "R",
+        "S", "S", "S", "S", "S", "S", "S", "S", "S", "S",
+        "T", "T", "T", "T", "T", "T", "T",
+        "D", "D", "D",
+        "I", "I", "I", "I", "I", "I",
+        "L", "L", "L", "L", "L",
+        "F", "F",
+        "G", "G", "G",
+        "K", "K", "K", "K",
+        "O", "O", "O", "O",
+        "M", "M",
+        "H",
+        "B",
+        "U", "U",
+        "V", "V",
+        "J",
+        "P", "P",
+        "Å",
+        "Ø",
+        "Y",
+        "Æ",
+        "W",
+        "C"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "E": 1,
+        "A": 1,
+        "N": 1,
+        "R": 1,
+        "S": 1,
+        "T": 1,
+        "D": 2,
+        "I": 1,
+        "L": 1,
+        "F": 2,
+        "G": 1,
+        "K": 1,
+        "O": 1,
+        "M": 2,
+        "H": 3,
+        "B": 2,
+        "U": 2,
+        "V": 2,
+        "J": 2,
+        "P": 2,
+        "Å": 4,
+        "Ø": 3,
+        "Y": 3,
+        "Æ": 5,
+        "W": 10,
+        "C": 10
+    }
+
+}
diff --git a/server/lang/pl-opt.json b/server/lang/pl-opt.json
new file mode 100644 (file)
index 0000000..2fdbcf3
--- /dev/null
@@ -0,0 +1,77 @@
+{
+    "code": "pl-opt",
+    "name": "Polish optimized",
+
+    "bag": [
+        " ", " ",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "I", "I", "I", "I", "I", "I", "I", "I", "I",
+        "E", "E", "E", "E", "E", "E", "E", "E",
+        "O", "O", "O", "O", "O", "O", "O", "O",
+        "N", "N", "N", "N", "N", "N", "N",
+        "Z", "Z", "Z", "Z",
+        "R", "R", "R", "R",
+        "S", "S", "S",
+        "W", "W", "W", "W",
+        "Y", "Y", "Y", "Y", "Y",
+        "C", "C", "C", "C",
+        "D", "D",
+        "K", "K", "K",
+        "L", "L",
+        "M", "M", "M", "M",
+        "P", "P", "P",
+        "T", "T", "T",
+        "B", "B",
+        "G",
+        "H",
+        "J", "J",
+        "Ł", "Ł",
+        "U", "U",
+        "Ą",
+        "Ę",
+        "F",
+        "Ó",
+        "Ś",
+        "Ż",
+        "Ć",
+        "Ń",
+        "Ź"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "A": 1,
+        "I": 1,
+        "E": 1,
+        "O": 1,
+        "N": 1,
+        "Z": 1,
+        "R": 1,
+        "S": 1,
+        "W": 1,
+        "Y": 1,
+        "C": 1,
+        "D": 2,
+        "K": 2,
+        "L": 2,
+        "M": 1,
+        "P": 2,
+        "T": 2,
+        "B": 2,
+        "G": 2,
+        "H": 2,
+        "J": 2,
+        "Ł": 2,
+        "U": 2,
+        "Ą": 2,
+        "Ę": 4,
+        "F": 4,
+        "Ó": 5,
+        "Ś": 3,
+        "Ż": 4,
+        "Ć": 10,
+        "Ń": 5,
+        "Ź": 10
+    }
+
+}
diff --git a/server/lang/pt-opt.json b/server/lang/pt-opt.json
new file mode 100644 (file)
index 0000000..f0b4e2a
--- /dev/null
@@ -0,0 +1,61 @@
+{
+    "code": "pt-opt",
+    "name": "Portuguese optimized",
+
+    "bag": [
+        " ", " ",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "I", "I", "I", "I", "I", "I", "I", "I", "I",
+        "O", "O", "O", "O", "O", "O", "O", "O", "O",
+        "S", "S", "S", "S", "S",
+        "U", "U", "U",
+        "M", "M", "M",
+        "R", "R", "R", "R", "R", "R", "R", "R", "R",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "T", "T", "T", "T", "T",
+        "C", "C", "C", "C",
+        "P", "P",
+        "D", "D", "D", "D",
+        "L", "L", "L", "L",
+        "N", "N", "N", "N", "N",
+        "B",
+        "Ç",
+        "F",
+        "G",
+        "H",
+        "V", "V",
+        "J",
+        "Q",
+        "X",
+        "Z"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "A": 1,
+        "I": 1,
+        "O": 1,
+        "S": 1,
+        "U": 2,
+        "M": 2,
+        "R": 1,
+        "E": 1,
+        "T": 1,
+        "C": 2,
+        "P": 2,
+        "D": 2,
+        "L": 2,
+        "N": 1,
+        "B": 3,
+        "Ç": 5,
+        "F": 4,
+        "G": 3,
+        "H": 4,
+        "V": 3,
+        "J": 5,
+        "Q": 5,
+        "X": 5,
+        "Z": 5
+    }
+
+}
diff --git a/server/lang/ro-opt.json b/server/lang/ro-opt.json
new file mode 100644 (file)
index 0000000..48346e1
--- /dev/null
@@ -0,0 +1,57 @@
+{
+    "code": "ro-opt",
+    "name": "Romanian optimized",
+
+    "bag": [
+        " ", " ",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "R", "R", "R", "R", "R", "R", "R", "R", "R", "R",
+        "T", "T", "T", "T", "T", "T", "T",
+        "N", "N", "N", "N", "N", "N",
+        "U", "U", "U", "U", "U",
+        "C", "C", "C", "C",
+        "O", "O", "O", "O", "O", "O",
+        "S", "S", "S", "S",
+        "L", "L", "L", "L", "L", "L",
+        "D", "D",
+        "P", "P",
+        "M", "M",
+        "F",
+        "V",
+        "B",
+        "G",
+        "H",
+        "J",
+        "X",
+        "Z"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "A": 1,
+        "I": 1,
+        "E": 1,
+        "R": 1,
+        "T": 1,
+        "N": 1,
+        "U": 2,
+        "C": 2,
+        "O": 1,
+        "S": 2,
+        "L": 1,
+        "D": 2,
+        "P": 2,
+        "M": 2,
+        "F": 4,
+        "V": 4,
+        "B": 3,
+        "G": 3,
+        "H": 5,
+        "J": 10,
+        "X": 10,
+        "Z": 3
+    }
+
+}
diff --git a/server/lang/ru-opt.json b/server/lang/ru-opt.json
new file mode 100644 (file)
index 0000000..debe6b8
--- /dev/null
@@ -0,0 +1,79 @@
+{
+    "code": "ru-opt",
+    "name": "Russian optimized",
+
+    "bag": [
+        " ", " ",
+        "О", "О", "О", "О", "О", "О", "О", "О", "О",
+        "Е", "Е", "Е", "Е", "Е", "Е", "Е", "Е",
+        "И", "И", "И", "И", "И", "И", "И",
+        "А", "А", "А", "А", "А", "А", "А", "А",
+        "Н", "Н", "Н", "Н", "Н", "Н",
+        "Р", "Р", "Р", "Р", "Р",
+        "Т", "Т", "Т", "Т",
+        "В", "В", "В", "В", "В", "В",
+        "С", "С", "С", "С", "С",
+        "Д", "Д",
+        "К", "К", "К",
+        "Л", "Л", "Л", "Л",
+        "М", "М", "М", "М",
+        "П", "П", "П",
+        "У", "У", "У",
+        "Я", "Я",
+        "Б",
+        "Г",
+        "Ë",
+        "Ь",
+        "Й",
+        "Ы", "Ы",
+        "Ж",
+        "З", "З",
+        "Х",
+        "Ц",
+        "Ч",
+        "Ш", "Ш",
+        "Э",
+        "Ю", "Ю",
+        "Ф",
+        "Щ",
+        "Ъ"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "О": 1,
+        "Е": 1,
+        "И": 1,
+        "А": 1,
+        "Н": 1,
+        "Р": 1,
+        "Т": 1,
+        "В": 1,
+        "С": 1,
+        "Д": 2,
+        "К": 2,
+        "Л": 1,
+        "М": 1,
+        "П": 2,
+        "У": 2,
+        "Я": 2,
+        "Б": 2,
+        "Г": 2,
+        "Ë": 10,
+        "Ь": 2,
+        "Й": 2,
+        "Ы": 2,
+        "Ж": 4,
+        "З": 2,
+        "Х": 2,
+        "Ц": 4,
+        "Ч": 2,
+        "Ш": 2,
+        "Э": 10,
+        "Ю": 2,
+        "Ф": 5,
+        "Щ": 2,
+        "Ъ": 10
+    }
+
+}
diff --git a/server/lang/sk-opt.json b/server/lang/sk-opt.json
new file mode 100644 (file)
index 0000000..c11a1bd
--- /dev/null
@@ -0,0 +1,95 @@
+{
+    "code": "sk-opt",
+    "name": "Slovak optimized",
+
+    "bag": [
+        " ", " ",
+        "A", "A", "A", "A", "A", "A",
+        "O", "O", "O", "O", "O", "O", "O", "O",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "I", "I", "I", "I", "I", "I",
+        "N", "N", "N", "N", "N", "N", "N", "N",
+        "R", "R", "R", "R",
+        "S", "S", "S",
+        "T", "T", "T", "T",
+        "V", "V", "V", "V",
+        "M", "M", "M", "M",
+        "D", "D",
+        "K", "K", "K",
+        "L", "L", "L",
+        "P", "P",
+        "J", "J", "J",
+        "U", "U", "U",
+        "B",
+        "H", "H",
+        "Y",
+        "Z", "Z",
+        "Á",
+        "C", "C",
+        "Č",
+        "Ž",
+        "Š", "Š", "Š",
+        "Í",
+        "Ý",
+        "Ľ",
+        "Ť",
+        "É",
+        "Ú",
+        "Ď",
+        "F",
+        "G",
+        "Ň",
+        "Ô",
+        "Ĺ",
+        "Ŕ",
+        "X",
+        "Ä",
+        "Ó"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "A": 1,
+        "O": 1,
+        "E": 1,
+        "I": 1,
+        "N": 1,
+        "R": 1,
+        "S": 1,
+        "T": 1,
+        "V": 1,
+        "M": 1,
+        "D": 2,
+        "K": 1,
+        "L": 1,
+        "P": 1,
+        "J": 1,
+        "U": 1,
+        "B": 2,
+        "H": 2,
+        "Y": 2,
+        "Z": 2,
+        "Á": 2,
+        "C": 2,
+        "Č": 2,
+        "Ž": 4,
+        "Š": 1,
+        "Í": 2,
+        "Ý": 2,
+        "Ľ": 4,
+        "Ť": 3,
+        "É": 3,
+        "Ú": 2,
+        "Ď": 10,
+        "F": 4,
+        "G": 4,
+        "Ň": 5,
+        "Ô": 10,
+        "Ĺ": 10,
+        "Ŕ": 10,
+        "X": 10,
+        "Ä": 5,
+        "Ó": 5
+    }
+
+}
diff --git a/server/lang/sl-opt.json b/server/lang/sl-opt.json
new file mode 100644 (file)
index 0000000..a541e3a
--- /dev/null
@@ -0,0 +1,63 @@
+{
+    "code": "sl-opt",
+    "name": "Slovenian optimized",
+
+    "bag": [
+        " ", " ",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "I", "I", "I", "I", "I", "I", "I", "I", "I", "I",
+        "O", "O", "O", "O", "O", "O", "O", "O",
+        "N", "N", "N", "N", "N", "N", "N", "N",
+        "R", "R", "R", "R", "R",
+        "S", "S", "S",
+        "J", "J", "J",
+        "L", "L", "L", "L",
+        "T", "T", "T", "T",
+        "D", "D",
+        "V", "V", "V", "V",
+        "K", "K", "K", "K",
+        "M", "M", "M", "M", "M",
+        "P", "P",
+        "U", "U",
+        "B",
+        "G",
+        "Z",
+        "Č", "Č", "Č",
+        "H",
+        "Š",
+        "C",
+        "F",
+        "Ž"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "E": 1,
+        "A": 1,
+        "I": 1,
+        "O": 1,
+        "N": 1,
+        "R": 1,
+        "S": 1,
+        "J": 1,
+        "L": 1,
+        "T": 1,
+        "D": 2,
+        "V": 1,
+        "K": 1,
+        "M": 1,
+        "P": 2,
+        "U": 2,
+        "B": 2,
+        "G": 2,
+        "Z": 2,
+        "Č": 2,
+        "H": 2,
+        "Š": 2,
+        "C": 3,
+        "F": 5,
+        "Ž": 4
+    }
+
+}
diff --git a/server/lang/sv-opt.json b/server/lang/sv-opt.json
new file mode 100644 (file)
index 0000000..63f72f4
--- /dev/null
@@ -0,0 +1,67 @@
+{
+    "code": "sv-opt",
+    "name": "Swedish optimized",
+
+    "bag": [
+        " ", " ",
+        "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
+        "R", "R", "R", "R", "R", "R", "R", "R", "R",
+        "S", "S", "S", "S", "S", "S", "S", "S", "S",
+        "T", "T", "T", "T", "T", "T", "T",
+        "E", "E", "E", "E", "E", "E", "E", "E", "E",
+        "N", "N", "N", "N", "N", "N", "N", "N", "N",
+        "D", "D", "D", "D",
+        "I", "I", "I", "I", "I",
+        "L", "L", "L", "L", "L",
+        "O", "O", "O",
+        "G", "G", "G",
+        "K", "K", "K", "K",
+        "M", "M",
+        "H",
+        "Ä", "Ä",
+        "F", "F",
+        "V", "V",
+        "U", "U",
+        "B",
+        "Ö",
+        "P", "P",
+        "Å",
+        "J",
+        "Y",
+        "C",
+        "X",
+        "Z"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "A": 1,
+        "R": 1,
+        "S": 1,
+        "T": 1,
+        "E": 1,
+        "N": 1,
+        "D": 1,
+        "I": 1,
+        "L": 1,
+        "O": 1,
+        "G": 1,
+        "K": 1,
+        "M": 2,
+        "H": 2,
+        "Ä": 2,
+        "F": 2,
+        "V": 2,
+        "U": 2,
+        "B": 2,
+        "Ö": 2,
+        "P": 2,
+        "Å": 3,
+        "J": 4,
+        "Y": 3,
+        "C": 4,
+        "X": 5,
+        "Z": 10
+    }
+
+}
diff --git a/server/lang/uk-opt.json b/server/lang/uk-opt.json
new file mode 100644 (file)
index 0000000..70875f5
--- /dev/null
@@ -0,0 +1,81 @@
+{
+    "code": "uk-opt",
+    "name": "Ukrainian optimized",
+
+    "bag": [
+        " ", " ",
+        "‍'‍",
+        "О", "О", "О", "О", "О", "О", "О", "О", "О",
+        "А", "А", "А", "А", "А", "А", "А", "А",
+        "И", "И", "И", "И", "И", "И",
+        "Н", "Н", "Н", "Н", "Н", "Н",
+        "В", "В", "В", "В", "В",
+        "Е", "Е", "Е", "Е", "Е",
+        "І", "І", "І", "І",
+        "Т", "Т", "Т", "Т", "Т",
+        "К", "К", "К",
+        "Р", "Р", "Р", "Р", "Р",
+        "С", "С", "С", "С", "С",
+        "Д", "Д",
+        "Л", "Л", "Л", "Л",
+        "М", "М", "М", "М",
+        "У", "У", "У", "У",
+        "П", "П", "П",
+        "З", "З",
+        "Я", "Я",
+        "Ь", "Ь",
+        "Б",
+        "Г",
+        "Ч",
+        "Х",
+        "Є",
+        "Ї",
+        "Й",
+        "Ж",
+        "Ц",
+        "Ш",
+        "Ю",
+        "Ґ",
+        "Ф",
+        "Щ"
+    ],
+
+    "letterValues": {
+        " ": 0,
+        "‍'‍": 10,
+        "О": 1,
+        "А": 1,
+        "И": 1,
+        "Н": 1,
+        "В": 1,
+        "Е": 1,
+        "І": 1,
+        "Т": 1,
+        "К": 2,
+        "Р": 1,
+        "С": 1,
+        "Д": 2,
+        "Л": 1,
+        "М": 1,
+        "У": 1,
+        "П": 2,
+        "З": 2,
+        "Я": 2,
+        "Ь": 2,
+        "Б": 2,
+        "Г": 2,
+        "Ч": 2,
+        "Х": 3,
+        "Є": 3,
+        "Ї": 5,
+        "Й": 2,
+        "Ж": 4,
+        "Ц": 4,
+        "Ш": 3,
+        "Ю": 2,
+        "Ґ": 10,
+        "Ф": 4,
+        "Щ": 5
+    }
+
+}