摩斯密码Java/Python实现

摩斯密码Java/Python实现

  • 摩斯密码Java/Python实现
  • 前言
    • 摘自《犯罪大师》谜题关卡
  • 一、Java实现
  • 二、Python实现
  • 总结

前言

摘自《犯罪大师》谜题关卡

一、Java实现

伪代码如下:

package com.hjc.demo.logic.morsecode;import com.alibaba.fastjson.JSONObject;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicReference;/*** @Classname MorseCode* @Description TODO* @Date 2021/7/24 9:25* @Created by Mr.He* TODO 摩斯密码*/
public class MorseCode {final int ZERO = 0;final int ONE = 1;public String transform(String[] value, int dense) {AtomicReference<String> result = new AtomicReference<>("");int j = 0;for (String s :value) {if (Objects.equals(dense, ZERO)) {if (!morseCodeTable().containsKey(s)) {return null;}j = 0;}if (Objects.equals(dense, ONE)) {if (!morseCodeTable().containsValue(s)) {return null;}j = 1;}int finalJ = j;morseCodeTable().forEach((k, v) -> {if(Objects.equals(finalJ,ZERO)){if (Objects.equals(k, s.toUpperCase())) {result.updateAndGet(v1 -> v1 + v + " ");}}else{if (Objects.equals(v, s)) {result.updateAndGet(v1 -> v1 + k + " ");}}});}return result.toString();}/** TODO 程序主体*  dense 加密解密标识   0:加密 1:解密*  value 密文* */public String mainBodyOfTheProgram(String value, int dense) {if (value == null) {return null;}String[] strings = value.split(" ");return transform(strings, dense);}public static Map morseCodeTable() {Map<String, String> map = new HashMap<>();map.put("A", "•—");map.put("B", "—•••");map.put("C", "—•—•");map.put("D", "—••");map.put("E", "•");map.put("F", "••—•");map.put("G", "——•");map.put("H", "••••");map.put("I", "••");map.put("J", "•———");map.put("K", "—•—");map.put("L", "•—••");map.put("M", "——");map.put("N", "—•");map.put("O", "———");map.put("P", "•——•");map.put("Q", "——•—");map.put("R", "•—•");map.put("S", "•••");map.put("T", "—");map.put("U", "••—");map.put("V", "•••—");map.put("W", "•——");map.put("X", "—••—");map.put("Y", "—•——");map.put("Z", "——••");map.put("1", "•————");map.put("2", "••———");map.put("3", "•••——");map.put("4", "••••—");map.put("5", "•••••");map.put("6", "—••••");map.put("7", "——•••");map.put("8", "———••");map.put("9", "————•");map.put("0", "—————");map.put("?", "••——••");map.put("/", "—••—•");map.put("()", "—•——•—");map.put("—", "—••••—");map.put("•", "•—•—•—");return map;}public static void main(String[] args) {MorseCode morseCode = new MorseCode();System.out.println("摩斯密码加密:"+morseCode.mainBodyOfTheProgram("• E",0));System.out.println("摩斯密码解密:"+morseCode.mainBodyOfTheProgram("•—•—•— •",1));System.out.println (JSONObject.toJSONString(morseCodeTable()));}
}

二、Python实现

伪代码如下:

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": "————•", "?": "••——••"}ZERO = 0
ONE = 1'''value : 密文   dense :加密标识  0 :加密  1 :解密
'''
def mainBodyOfTheProgram(value, dense):if value == None:returnobjStr = value.split(" ")j = 0result = ""for f in objStr:if ZERO == dense:if map.get(f) == None:returnresult += map.get(f) + " "if ONE == dense:for key, value in map.items():if value == f:result += key + " "return resultif __name__ == "__main__":print("摩斯密码加密: %s" % mainBodyOfTheProgram("• E", 0))print("摩斯密码解密: %s" % mainBodyOfTheProgram(mainBodyOfTheProgram("• E", 0), 1))

总结

学习记录

摩斯密码Java/Python实现相关推荐

  1. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  2. LeetCode 319. Bulb Switcher--C++,java,python 1行解法--数学题

    LeetCode 319. Bulb Switcher–C++,java,python 1行解法 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有 ...

  3. CUDA,C++,Java,Python,Fortran运行速度比较

    通过计算100万以内素数的运行时间比较这5种语言的运行速度. 每种语言运行30次,取平均值.由于python和fortran的运行速度和Java和C++运行差距过大,python只计算了3次,Fort ...

  4. 编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略

    编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略 ...

  5. BigData:大数据开发的简介、核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS、HBase、Hive}+Docker)、经典场景应用之详细攻略

    BigData:大数据开发的简介.核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS.HBase.Hive}+Docker).经典场景应用之详细攻略 BigData:大数 ...

  6. Java | Python 流程控制对比

      Java Python   数据类型 byte.short.int.long.float.double.char.boolean 数组.类.接口 Number(数字): int.float.boo ...

  7. java python算法_用Java,Python和C ++示例解释的搜索算法

    java python算法 什么是搜索算法? (What is a Search Algorithm?) This kind of algorithm looks at the problem of ...

  8. php java 读取所有txt_paip.文件读写api php java python总结.txt

    paip.文件读写api php java python总结.txt 一.多种方式读文件内容. 1.按字节读取文件内容 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. 2.按字符 ...

  9. java和python结合做项目_由浅入深Java+Python结合项目实战

    [课程内容] [初级项目:图片社交+电商导购+漂流瓶] 项目实现功能: 用户注册,登录,登出图片的多种上传方式,删除首页图片分类,排序和分页个人页管理图片分享 课程内容: 开发工具和Python语言介 ...

最新文章

  1. 数据库被黑后留下的数据
  2. LibreOJ 6279 数列分块入门 3(分块+排序)
  3. html实现静态下来菜单js,JS代码实现静态导航菜单效果要用何主要代码?
  4. VTK:相互作用之RubberBand2DObserver
  5. Magicodes.IE 2.5版本发布
  6. linux 命令分类,常用linux 命令分类整理(篇一)
  7. 09_ServletContext介绍
  8. win10 Anaconda3 安装TensorFlow
  9. c语言产品信息管理课程设计,商品信息管理系统(C语言课程设计).doc
  10. 数据结构殷人昆电子版百度云资源_数据结构精讲与习题详解
  11. App后台开发架构实践
  12. Excel 生成均匀分布、正态分布随机数
  13. 阿里Leader都干些啥
  14. 用python进行因式分解_Python实现的质因式分解算法示例
  15. 隔离变压器不触电原因
  16. java rar解压
  17. 用iframe的方式 解决 window.open() 不能打开多个窗口的问题
  18. 如何使用 scp 递归复制目录
  19. python怎么输出坐标_使用Python实现图像标记点的坐标输出功能
  20. 安防工程商选择千兆POE交换机的注意事项

热门文章

  1. 生成随机字符串序列号类似于UUID,但是比较短的那种。
  2. JavaScript - jQuery(一)
  3. APT组织最喜欢的工具 Cobalt Strike (CS) 实战
  4. Linux platform 设备驱动实验-基于正点原子IMX6ULL开发板
  5. 网站搭建之三(APMServ5.2.6)
  6. apmserv php 5.6,APMServ下载|APMServ 5.2.6 正式版下载-太平洋下载中心
  7. 计算机桌面任务栏怎样显示输入法,计算机中任务栏的输入法无法切换怎么处理...
  8. 用 shader effect 实现雨滴落水效果!Cocos Creator 3D !
  9. 谷歌账号被封怎么办?谷歌账号解封申诉步骤请收好!
  10. 怎么降低软件开发成本风险_降低开发人员成本的5种方法