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.
--- /dev/null
+#!/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);
+ }
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}
--- /dev/null
+{
+ "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
+ }
+
+}