Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var bigrams_en = {
- '^': 'AAABBBCCCDDDEEFFFGGGHHHIIJJKKLLLMMMNNNOOOPPPQRRRSSSTTTUUVVVWWZZ',
- 'A': 'BBBCCCDDDEFFGGGHHHIJKKKLLLMMMNNNPPPQRRRSSSTTTVVVWXZ',
- 'B': 'AAACDDEEEFHIIILLLNNNOOOPRRRSSSTUUVVYZ',
- 'C': 'AAACDEEEGHHHHHHHHIIKKKKKKKLLLMMNNOOOPQRRRTTTTUUV',
- 'D': 'AAADEEEHIIIOOORRRSSTTUUUVVY',
- 'E': 'AAABBBCCCDDDEFFFGGGHIJLLLMMMNNNOPPPQQQRRRSSSTTUUUVWXXXZ',
- 'F': 'AAAEEEFIIIKLLLOOORRRTTUUU',
- 'G': 'AAABCDEEEFGGHHHHIIILLLNNNOOORRRTUUUVVWY',
- 'H': 'AAAEEEIIIKKKLLLMOOORSTYY',
- 'I': 'AABBBCCCDDDEFGGGLLLMMMNNNOOPPPQRRRSSSTTTUUUVZ',
- 'J': 'AAAEEEHHHIOOOUUU',
- 'K': 'AAEEEHHIIILMMNOOORRSTVV',
- 'L': 'AAABDDEEEFGHIIIKKKLLMNOOOPSTTTUUUVYY',
- 'M': 'AAABEEEIIIKMNNOOOPPPQRRRSSSTUUUYY',
- 'N': 'AAACDEEEFGIIJKLMNNOOOPQRRSSTTUUVVY',
- 'O': 'ABBCCCDDDEFFFGGGHKLLMMMNNNOPPPRRRSSSTVVWWZZ',
- 'P': 'AAADEEEHHHHHHIIILLLOOOPRRRSSTTUVY',
- 'Q': 'UUUVVVY',
- 'R': 'AAACCCDDDEEEGGGHHHIIIKKKLMMMNNNOOOPQRSSSTTTUVYZ',
- 'S': 'AAABBCCDEEEGHHHHHHHHHHHHHHHHHIIIKKKLLLMMNNOOOPPPQQRSSTTTTTTUVWWWY',
- 'T': 'AAACEEEHHHHHHHHHHIIIKKLMNOOORRRRTUUU',
- 'U': 'AACCDDDEEEGGHIIKLLLMMMNOOPPPQRRSSTT',
- 'V': 'AAABCDEEEGHIIIKLLOOORU',
- 'W': 'AAEEEHHHHHIIIOOORRRST',
- 'X': 'EEEIIPPPQQQTTT',
- 'Y': 'AEEEILLLOOORRRSX',
- 'Z': 'AIIIMMMOOOZ',
- }
- var vowels_en = 'AEIOUY';
- function generateCode_old(locale) {
- var bigrams = locale == bigrams_en;
- var vowels = locale == vowels_en;
- var len = 6;
- var code = bigrams['^'][Math.floor(Math.random() * bigrams['^'].length)];
- var prev = code;
- var prevVowel = vowels.indexOf(prev) > -1;
- var run = 1;
- for (var i = 0; i < len; i++) {
- var next, nextVowel, done;
- do {
- next = bigrams[prev][Math.floor(Math.random() * bigrams[prev].length)];
- nextVowel = vowels.indexOf(next) > -1;
- done = true;
- if (prevVowel == nextVowel) {
- // 4 гласных или согласных подряд: запретить совсем
- if (run >= 3) {
- done = false;
- } else
- // 2 одинаковых гласных + гласная, 2 одинаковых согласных + согласная
- if ((run >= 2) && (prev == code[code.length - 2])) {
- done = false;
- } else
- // 3 гласных подряд
- if ((run >= 2) && prevVowel) {
- done = false;
- } else
- // 3 согласных подряд: запретить в 66% случаев
- if ((run >= 2) && (Math.random() > 0.333)) {
- done = false;
- }
- }
- } while (!done);
- code += next;
- prev = next;
- if (prevVowel == nextVowel) {
- run++;
- } else {
- prevVowel = nextVowel;
- run = 1;
- }
- }
- return code;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement