热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

1:今天刷知乎时看到了个摩尔斯电码的对照表,感觉还是很好记忆的。练习几十个字母就差不多了。如下图:是不是很好记~~2:在电影星际穿越中男主cooper就是通过钟表的滴答进行
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+"\n"+"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         /// 
 30         /// 待编码数据 key-value => 字母-mors
 31         /// 
 32         public  static Dictionary<string, string> UnCodeData
 33         { 
 34             get{return unCodeData;}
 35             private set{}
 36         }
 37         /// 
 38         /// 反编码数据 key-value => mors-字母
 39         /// 
 40         public  static Dictionary<string, string> CodeData
 41         { 
 42             get{return codeData;}
 43             private set{}
 44         }
 45         /// 
 46         /// 添加其他电码
 47         /// 
 48         /// 
 49         /// 
 50         /// 
 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         /// 
104         /// 编码为mors
105         /// 
106         /// 
107         /// 
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         /// 
124         /// 解码为mors电码
125         /// 
126         /// 
127         /// 
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

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


推荐阅读
  • 深入解析Java中的空指针异常及其预防策略
    空指针异常(NullPointerException,简称NPE)是Java编程中最常见的异常之一。尽管其成因显而易见,但开发人员往往容易忽视或未能及时采取措施。本文将详细介绍如何有效避免空指针异常,帮助开发者提升代码质量。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom&amp;quot;echarts&amp;quot;;4、如果用到map(地图),还 ... [详细]
  • Java设计模式详解:解释器模式的应用与实现
    本文详细介绍了Java设计模式中的解释器模式,包括其定义、应用场景、优缺点以及具体的实现示例。通过音乐解释器的例子,帮助读者更好地理解和应用这一模式。 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • 本文介绍了 .NET 中用于线程间通信的工具 WaitHandle 及其子类 ManualResetEvent 和 AutoResetEvent,并详细解释了线程池的概念及其在优化资源利用方面的优势。 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • 本文介绍了如何将包含复杂对象的字典保存到文件,并从文件中读取这些字典。 ... [详细]
  • 机器学习算法:SVM(支持向量机)
    SVM算法(SupportVectorMachine,支持向量机)的核心思想有2点:1、如果数据线性可分,那么基于最大间隔的方式来确定超平面,以确保全局最优, ... [详细]
  • 多线程基础概览
    本文探讨了多线程的起源及其在现代编程中的重要性。线程的引入是为了增强进程的稳定性,确保一个进程的崩溃不会影响其他进程。而进程的存在则是为了保障操作系统的稳定运行,防止单一应用程序的错误导致整个系统的崩溃。线程作为进程的逻辑单元,多个线程共享同一CPU,需要合理调度以避免资源竞争。 ... [详细]
  • 检查在所有可能的“?”替换中,给定的二进制字符串中是否出现子字符串“10”带 1 或 0 ... [详细]
  • 优化Vite 1.0至2.0升级过程中遇到的某些代码块过大问题解决方案
    本文详细探讨了在将项目从 Vite 1.0 升级到 2.0 的过程中,如何解决某些代码块过大的问题。通过具体的编码示例,文章提供了全面的解决方案,帮助开发者有效优化打包性能。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 本文详细解析了一种实用的函数,用于从URL中提取查询参数。该函数通过处理URL中的搜索部分,能够高效地获取并解析出所需的参数值,适用于各种Web开发场景。 ... [详细]
author-avatar
蓝社
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有