Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <unordered_map>
- #include <windows.h>
- #include <algorithm>
- const int LEN = 5;
- //std::unordered_map<std::string, std::string> morse_map = { {".-" , "a"},{"-...", "b"}, {"-.-.", "c"},
- // {"-..", "d"}, {".", "e"}, {"..-.", "f"},
- // {"--.", "g"}, {"....", "h"}, {"..", "i"},
- // {".---", "j"}, {"-.-", "k"}, {".-..", "l"},
- // {"--", "m"}, {"-.", "n"}, {"---", "o"},
- // {".--.", "p"}, {"--.-", "q"}, {".-.", "r"},
- // {"...", "s"}, {"-", "t"}, {"..-", "u"},
- // {"...-", "v"}, {".--", "w"}, {"-..-", "x"},
- // {"-.--", "y"}, {"--..", "z"}//, {"-----", "0"},
- //// {".----", "1"}, {"..---", "2"}, {"...--", "3"},
- //// {"....-", "4"}, {".....", "5"}, {"-....", "6"},
- //// {"--...", "7"}, {"---..", "8"}, {"----.", "9"}
- // };
- std::unordered_map<std::string, std::string> morse_map = {
- {".-" , "а"},{"-...", "б"}, {".--", "в"},
- {"..-", "г"}, {"-..", "д"}, {".", "е"},
- {"...-", "ж"}, {"--..", "з"}, {"..", "и"},
- {".---", "й"}, {"-.-", "к"}, {".-..", "л"},
- {"--", "м"}, {"-.", "н"}, {"---", "о"},
- {".--.", "п"}, {".-.", "р"}, {"...", "с"},
- {"-", "т"}, {"..-", "у"}, {"..-.", "ф"},
- {"....", "х"}, {"-.-.", "ц"}, {"---.", "ч"},
- {"----", "ш"}, {"--.-", "щ"}, {".--.-.", "ъ"},
- {"-.--", "ы"}, {"-..-", "ь"}, {"..-..", "э"},
- {"..--", "ю"}, {".-.-", "я"},
- {"-----", "0"},
- {".----", "1"}, {"..---", "2"}, {"...--", "3"},
- {"....-", "4"}, {".....", "5"}, {"-....", "6"},
- {"--...", "7"}, {"---..", "8"}, {"----.", "9"}, {".-.-.", "+"}
- };
- int idx = 0;
- void decode(std::vector<std::string> letters) {
- std::string ans;
- for (auto&& letter : letters) {
- if (morse_map.find(letter) != morse_map.end()) {
- ans += morse_map[letter];
- } else {
- ans += '?';
- // return;
- }
- }
- // if (std::count(ans.begin(), ans.end(), '?') > ans.size() / 2)
- // return;
- // std::vector<std::string> forb = {"jq", "ao", "wt", "tm", "jt", "eo", "mg", "jm", "tete", "tj", "mt", "jg", "trt"};
- // std::vector<std::string> forb = {"йм", "йт", "ае", "йщ", "тт", "щй", "щв", "тщ", "твт", "оо", "мм", "вв", "щщ", "ыы", "тмт", "кш", "тй", "мчт", "ткм", "вмт", "етм", "нтм", "чтм", "мнт", "мй", "тш", "щм", "шрм", "тмн", "тнм", "аоц", "йч", "кй", "тыт",
- // "тмк", "мчм", "мтм", "км", "шй", "швт", "чы", "щы", "ешт", "мтч", "втч", "оы", "мт", "тете", "тоте", "аа", "тмы", "йо", "ртм", "мвт", "шмв", "ншт", "мц", "еы", "аы", "трм", "оео", "твш"};
- // for (auto&& elem : forb) {
- // if (ans.find(elem) != std::string::npos) {
- // return;
- // }
- // }
- std::cout << idx++ << ')' << ans << '\n';
- }
- std::vector<std::string> divide(std::string s, int mask) {
- std::string cur;
- std::vector<std::string> ans;
- for (int i = 0; i < LEN; ++i) {
- cur += s[i];
- if (((mask >> (LEN - i - 1)) & 1) == 1 ) {
- ans.emplace_back(cur);
- cur.clear();
- }
- }
- cur += s.back();
- ans.emplace_back(cur);
- return ans;
- }
- int main() {
- SetConsoleOutputCP(CP_UTF8);
- int mask = 0;
- std::string code = "--...-";
- for (int mask = 0; mask < (1 << LEN); ++mask) {
- decode(divide(code, mask));
- }
- }
- //з з з к к к к к з к з к к к к к к з к к к 0 0 к з к к к 0 к к з з з к 0 з к
- //... --- -- .-.------.---00-.---0--...-0.-
- // some
Advertisement
Add Comment
Please, Sign In to add comment