• 一分钟记住常用的摩尔斯电码


    1:今天刷知乎时看到了个摩尔斯电码的对照表,感觉还是很好记忆的。练习几十个字母就差不多了。如下图:是不是很好记~~
    2:在电影星际穿越中男主cooper就是通过钟表的滴答进行信息传递的,还有去年is杀害日本人质时,媒体猜测被害人在遇害时通过眨眼睛对世人说“不要救我,放弃我”。
    3:上大图
    4:上大图
      1 /*简单问题要复杂会,看起来很厉害的样子,有时候仅仅是打印了一个helloworld而已~~*/   
      2  class Program
      3     {
      4         static void Main(string[] args)
      5         {
      6             Mors.AddCodeData("testkey", "testvalue");
      7             var testStr="hello boy";
      8             var resultEncode=Mors.Encode(testStr);
      9             var resultDecode=Mors.Decode(resultEncode);
     10             Console.WriteLine("Encode:" + resultEncode+"
    "+"Decode"+resultDecode);
     11             Console.ReadLine();
     12         }
     13     }
     14     public static class Mors
     15     {
     16         private static Dictionary<string, string> unCodeData = new Dictionary<string, string>()
     17         {
     18             {"a",".-"},{"b","-..."},{"c","-.-."},{"d","-.."},{"e","."},{"f","..-."},{"g","--."},{"h","...."},{"i",".."},{"j",".---"},{"k","-.-"},
     19             {"l",".-.."},{"m","--"},{"n","-."},{"o","---"},{"p",".--."},{"q","--.-"},{"r",".-."},{"s","..."},{"t","-"},{"u","..-"},{"v","...-"},
     20             {"w",".--"},{"x","-..-"},{"y","-.--"},{"z","--.."},{",","--..--"},{".",".-.-.-"}
     21         };
     22         private static Dictionary<string, string> codeData = new Dictionary<string, string>()
     23         {
     24             {".-","a"},{"-...","b"},{"-.-.","c"},{"-..","d"},{".","e"},{"..-.","f"},{"--.","g"},{"....","h"},{"..","i"},{".---","j"},{"-.-","k"},
     25             {".-..","l"},{"--","m"},{"-.","n"},{"---","o"},{".--.","p"},{"--.-","q"},{".-.","r"},{"...","s"},{"-","t"},{"..-","u"},{"...-","v"},
     26             {".--","w"},{"-..-","x"},{"-.--","y"},{"--..","z"},{"--..--",","},{".-.-.-","."}
     27         };
     28        
     29         /// <summary>
     30         /// 待编码数据 key-value => 字母-mors
     31         /// </summary>
     32         public  static Dictionary<string, string> UnCodeData
     33         { 
     34             get{return unCodeData;}
     35             private set{}
     36         }
     37         /// <summary>
     38         /// 反编码数据 key-value => mors-字母
     39         /// </summary>
     40         public  static Dictionary<string, string> CodeData
     41         { 
     42             get{return codeData;}
     43             private set{}
     44         }
     45         /// <summary>
     46         /// 添加其他电码
     47         /// </summary>
     48         /// <param name="key"></param>
     49         /// <param name="value"></param>
     50         /// <returns></returns>
     51         public static bool AddUncodeData(string key,string value)
     52         {
     53             if(!UnCodeData.Keys.Contains(key))
     54             {
     55                 UnCodeData.Add(key,value);
     56                 if(CodeData.Keys.Contains(value))
     57                     throw new Exception("data error");
     58                 CodeData.Add(value,key);
     59                 return true;
     60             }
     61             return false;
     62         }
     63         public static bool AddCodeData(string key,string value)
     64         {
     65             if(!CodeData.Keys.Contains(key))
     66             {
     67                 CodeData.Add(key,value);
     68                 if(UnCodeData.Keys.Contains(value))
     69                     throw new Exception("data error");
     70                 UnCodeData.Add(value,key);
     71                 return true;
     72             }
     73             return false;
     74         }
     75         public static bool RemoveUncodeData(string key)
     76         {
     77             if(UnCodeData.Keys.Contains(key))
     78             {
     79                 var value=UnCodeData[key];
     80                 if(codeData.Keys.Contains(value))
     81                 {
     82                     UnCodeData.Remove(key);
     83                     codeData.Remove(value);
     84                 }
     85                 return true;
     86             }
     87             return false;
     88         }
     89         public static bool RemoveCodeData(string key)
     90         {
     91             if (CodeData.Keys.Contains(key))
     92             {
     93                 var value = CodeData[key];
     94                 if (UnCodeData.Keys.Contains(value))
     95                 {
     96                     CodeData.Remove(key);
     97                     UnCodeData.Remove(value);
     98                 }
     99                 return true;
    100             }
    101             return false;
    102         }
    103         /// <summary>
    104         /// 编码为mors
    105         /// </summary>
    106         /// <param name="str"></param>
    107         /// <returns></returns>
    108         public static string Encode(string str)
    109         {
    110             /// hello word
    111             if (str.Length < 0)
    112                 return string.Empty;
    113             var words = Regex.Replace(str.Trim(), @"s+", " ").Split(' ');
    114             var result=string.Join("/",words.Select(word=>
    115                            {
    116                                return string.Join(" ", word.ToCharArray().Select(letter =>
    117                                         {
    118                                             return UnCodeData[letter.ToString()];
    119                                         }));  
    120                            }));
    121             return result;
    122         }
    123         /// <summary>
    124         /// 解码为mors电码
    125         /// </summary>
    126         /// <param name="str"></param>
    127         /// <returns></returns>
    128         public static string Decode(string str)
    129         {
    130             //..- ---- .--. .-
    131             var words = Regex.Replace(str.Trim(), @"s+", " ").Split('/').Select(word=>word.Trim()).ToArray();
    132             var result=string.Join(" ", words.Select(word=>
    133                      {
    134                       return string.Join("",  word.Split(' ').Select(letter=>
    135                          {
    136                            return CodeData[letter.ToString()];
    137                          }));
    138                      }));
    139             return result;
    140         }
    141     }
    View Code

     点赞的伙伴今年都能找到像楼上一样漂亮的女神~~(我不是来骗赞的~~不信你试试)

  • 相关阅读:
    React Native的生命周期解析
    React Native中组件的props和state
    centos7修改主机名
    nodejs搭建web项目
    centos7默认防火墙firewalld
    初窥 MongoDB
    阿里云Ubuntu安装图形界面与中文语言包
    安装nginx
    PHP静态化技术
    PHP工厂模式
  • 原文地址:https://www.cnblogs.com/foreveryt/p/5699242.html
Copyright © 2020-2023  润新知