Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.19 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <unordered_map>
  4. #include <windows.h>
  5. #include <algorithm>
  6.  
  7. const int LEN = 5;
  8.  
  9. //std::unordered_map<std::string, std::string> morse_map = { {".-" , "a"},{"-...",  "b"}, {"-.-.",  "c"},
  10. //                                                            {"-..",   "d"}, {".",     "e"}, {"..-.",  "f"},
  11. //                                                            {"--.",   "g"}, {"....",  "h"}, {"..",    "i"},
  12. //                                                            {".---",  "j"}, {"-.-",   "k"}, {".-..",  "l"},
  13. //                                                            {"--",    "m"}, {"-.",    "n"}, {"---",   "o"},
  14. //                                                            {".--.",  "p"}, {"--.-",  "q"}, {".-.",   "r"},
  15. //                                                            {"...",   "s"}, {"-",     "t"}, {"..-",   "u"},
  16. //                                                            {"...-",  "v"}, {".--",   "w"}, {"-..-",  "x"},
  17. //                                                            {"-.--",  "y"}, {"--..",  "z"}//, {"-----", "0"},
  18. ////                                                            {".----", "1"}, {"..---", "2"}, {"...--", "3"},
  19. ////                                                            {"....-", "4"}, {".....", "5"}, {"-....", "6"},
  20. ////                                                            {"--...", "7"}, {"---..", "8"}, {"----.", "9"}
  21. //                                                            };
  22.  
  23. std::unordered_map<std::string, std::string> morse_map = {
  24.                                                            {".-" , "а"},{"-...",  "б"}, {".--",  "в"},
  25.                                                            {"..-",   "г"}, {"-..",     "д"}, {".",  "е"},
  26.                                                            {"...-",   "ж"}, {"--..",  "з"}, {"..",    "и"},
  27.                                                            {".---",  "й"}, {"-.-",   "к"}, {".-..",  "л"},
  28.                                                            {"--",    "м"}, {"-.",    "н"}, {"---",   "о"},
  29.                                                            {".--.",  "п"}, {".-.",  "р"}, {"...",   "с"},
  30.                                                            {"-",   "т"}, {"..-",     "у"}, {"..-.",   "ф"},
  31.                                                            {"....",  "х"}, {"-.-.",   "ц"}, {"---.",  "ч"},
  32.                                                            {"----",  "ш"}, {"--.-",  "щ"}, {".--.-.", "ъ"},
  33.                                                            {"-.--",  "ы"}, {"-..-",  "ь"}, {"..-..", "э"},
  34.                                                            {"..--",  "ю"}, {".-.-",  "я"},
  35.                                                            {"-----", "0"},
  36.                                                             {".----", "1"}, {"..---", "2"}, {"...--", "3"},
  37.                                                             {"....-", "4"}, {".....", "5"}, {"-....", "6"},
  38.                                                             {"--...", "7"}, {"---..", "8"}, {"----.", "9"}, {".-.-.", "+"}
  39.  };
  40. int idx = 0;
  41. void decode(std::vector<std::string> letters) {
  42.     std::string ans;
  43.     for (auto&& letter : letters) {
  44.         if (morse_map.find(letter) != morse_map.end()) {
  45.             ans += morse_map[letter];
  46.         } else {
  47.             ans += '?';
  48.             // return;
  49.         }
  50.     }
  51. //    if (std::count(ans.begin(), ans.end(), '?') > ans.size() / 2)
  52. //        return;
  53.     // std::vector<std::string> forb = {"jq", "ao", "wt", "tm", "jt", "eo", "mg", "jm", "tete", "tj", "mt", "jg", "trt"};
  54. //    std::vector<std::string> forb = {"йм", "йт", "ае", "йщ", "тт", "щй", "щв", "тщ", "твт", "оо", "мм", "вв", "щщ", "ыы", "тмт", "кш", "тй", "мчт", "ткм", "вмт", "етм", "нтм", "чтм", "мнт", "мй", "тш", "щм", "шрм", "тмн", "тнм", "аоц", "йч", "кй", "тыт",
  55. //                                     "тмк", "мчм", "мтм", "км", "шй", "швт", "чы", "щы", "ешт", "мтч", "втч", "оы", "мт", "тете", "тоте", "аа", "тмы", "йо", "ртм", "мвт", "шмв", "ншт", "мц", "еы", "аы", "трм", "оео", "твш"};
  56. //    for (auto&& elem : forb) {
  57. //        if (ans.find(elem) != std::string::npos) {
  58. //            return;
  59. //        }
  60. //    }
  61.     std::cout <<  idx++ << ')' << ans << '\n';
  62. }
  63.  
  64. std::vector<std::string> divide(std::string s, int mask) {
  65.     std::string cur;
  66.     std::vector<std::string> ans;
  67.     for (int i = 0; i < LEN; ++i) {
  68.         cur += s[i];
  69.         if (((mask >> (LEN - i - 1)) & 1) == 1 ) {
  70.             ans.emplace_back(cur);
  71.             cur.clear();
  72.         }
  73.     }
  74.     cur += s.back();
  75.     ans.emplace_back(cur);
  76.     return ans;
  77. }
  78.  
  79. int main() {
  80.     SetConsoleOutputCP(CP_UTF8);
  81.  
  82.     int mask = 0;
  83.     std::string code = "--...-";
  84.     for (int mask = 0; mask < (1 << LEN); ++mask) {
  85.         decode(divide(code, mask));
  86.     }
  87. }
  88. //з з з к к к к к з к з к к к к к к з к к к 0 0 к з к к к 0 к к з з з к 0 з к
  89. //... --- -- .-.------.---00-.---0--...-0.-
  90. // some
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement