赛题介绍

挑战介绍

栅栏密码是一种简单的移动字符位置的加密方法,规则简单。加密方式是将明文按照一定的字数分成多个组,取每组第一个字连起来得到密文 1,再取每组第二个字连起来得到密文 2,以此类推,最后将密文 1、密文 2…密文 N 连成整段密文。例如:

明文:这是一段栅栏加密文字

将每两个字分成一组,会得到五组内容:这是 | 一段 | 栅栏 | 加密 | 文字

提取每组中的第一个字构成第一段文字:这一栅加文

提取每组中的第二个字构成第二段文字:是段栏密字

然后将两段文字合在一起,就得到了密文:这一栅加文是段栏密字

挑战目标

补充文件 fence.pyfence_encryption(text) 函数中的 TODO 部分,使其实现我们需要的功能:

  • 输入一段文本,将文本中每两个字符(字母、汉字或其它文字)为一组进行分组;然后提取每组中的第一个字构成第一段文字,第二个字构成第二段文字;最后将第二段文字写在第一段文字后面,合在一起返回。
  • 如果文本中有空格,请先去掉空格再拆分文本。
  • 返回的密文中不应该存在空格。
  • 如果文本中没有内容,则返回 None
def fence_encryption(text: str) -> str:"""TODO"""encryption_text : str = ''return encryption_text

挑战要求

  • 题目需使用 Python3 完成,不能使用标准库和第三方库。
  • 函数传入的 text 为字符串类型,可能为空、None 等值。
  • 不得修改文件路径、文件名 fence.py 以及函数名 fence_encryption(text)
  • 请只保留文件 fence.py 及文件中函数,不要添加测试或执行代码,避免检测时出错。
  • 线上环境调试代码时,请使用 python3 fence.py 命令调用 Python3。

参考样例

# 样例 1
text = "这是一段栅栏加密文字"; encryption_text = "这一栅加文是段栏密字"
# 样例 2
text = "这是 一段栅栏  加密文字"; encryption_text = "这一栅加文是段栏密字"
# 样例 3
text = None; encryption_text = None

注意:最终实现效果以完全满足要求为准,而不是仅满足如上样例。


题解

解题思路

简单的模拟题

  1. 要注意对传入参数类型的检查,包括空字符串等情形。
  2. 利用奇偶判断将字符分别放到两个列表中。
  3. 最后使用join方法将列表拼接为字符串返回即可。
def fence_encryption(text: str) -> str:"""TODO"""f1 = []f2 = []if not isinstance(text, str):return Nonetext = text.replace(' ', '')if text == "":return Nonefor i, v in enumerate(text):if i % 2 == 0:f1.append(v)else:f2.append(v)encryption_text: str = ''.join(f1) + ''.join(f2)return encryption_text

题目来源:蓝桥 栅栏加密

蓝桥 卷“兔”来袭编程竞赛专场-04栅栏加密 题解相关推荐

  1. 蓝桥 卷“兔”来袭编程竞赛专场-05棋盘加密 题解

    赛题介绍 挑战介绍 棋盘密码是一种坐标加密法.棋盘密码通过将 26 个字母设法变成十位数来达到加密的目的,密钥是一个 5×5 的棋盘,将 26 个英文字母填在棋盘的格子里,其中 i 和 j 在同一个方 ...

  2. 蓝桥 卷“兔”来袭编程竞赛专场-07明码加密 题解

    赛题介绍 挑战介绍 清末,电报技术进入中国.上海大北水线电报公司在 1871 年选用了六千八百九十七个汉字,代以四码数字,编写成了中国最早的电报明码本.为了传输的内容可以保密,又设计出了将明码本加密的 ...

  3. 蓝桥 卷“兔”来袭编程竞赛专场-10仿射加密 题解

    赛题介绍 挑战介绍 仿射密码结合了移位密码和乘数密码的特点,是一种替换密码.它是利用加密函数一个字母对一个字母的加密.加密函数是 y=ax+b(mod m) ,且 a,b∈Zm (a.b 的值在 m ...

  4. 蓝桥 卷“兔”来袭编程竞赛专场-06姜子牙阴书加密 题解

    赛题介绍 挑战介绍 姜子牙阴书密码是将一封完整的书信分割成三份,然后由三个送信者各送一份,收信人收到三份书信后再合并成一封完整的情报.如此,即使某个信使被敌军抓获,敌军也不会获得完整的情报. 但是如果 ...

  5. 蓝桥 卷“兔”来袭编程竞赛专场-09凯撒加密 题解

    赛题介绍 挑战介绍 恺撒密码也称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.采用的是替换方法对信息中的英文字符循环替换为字母表序列中该字符后面或前面的第 N 个字符.例如当  N ...

  6. 蓝桥 卷“兔”来袭编程竞赛专场-08列置换加密 题解

    赛题介绍 挑战介绍 列置换加密是明文以每行固定字数(key 的字母种类数,一般情况下 key 会选择字母不重复的单词)一行一行写下,如果最后一行字数小于每行的固定字数,则使用特殊符号补充,这样就形成了 ...

  7. 蓝桥 卷“兔”来袭编程竞赛专场-02破解曾公亮密码 题解

    赛题介绍 挑战介绍 曾公亮编撰的<武经总要>中记载了一套严谨的军事通信密码,这也是目前发现我国古代战争中最早使用的军用密码表.将战场上可能常用到的情况,用 40 个短语归纳表示,且每个短语 ...

  8. CSDN 编程竞赛二十四期题解

    竞赛总览 CSDN 编程竞赛二十四期:比赛详情 (csdn.net) 本次竞赛感觉打模板的题变少了,而且多了很多可以集思广益的题目,参赛体验很好. 竞赛题解 题目1.计数问题 试计算在区间1到n的所有 ...

  9. CSDN 编程竞赛二十八期题解

    竞赛总览 CSDN 编程竞赛二十八期:比赛详情 (csdn.net) 本期竞赛的题目都很简单,但是非常考验读题和编码速度.这一次没有遇到bug,竞赛体验较好. 竞赛题解 题目1.小Q的鲜榨柠檬汁 团建 ...

最新文章

  1. 6D位姿估计Point Pair Feature (PPF)算法详解
  2. css改变背景透明度
  3. Yii ActiveRecord 的via和viaTable示例
  4. Bootstrap之轮播图
  5. How to Pronounce Numbers 20 – 1 Billion
  6. 如何用50行代码构建情感分类器
  7. C#中的9个“黑魔法”与“骚操作”
  8. 每日一题(7) —— 求余运算符
  9. 扎金花 游戏开发细节与部分代码
  10. 不属于jsp构成元素_JSP构成元素-JSP基础
  11. StarUML Choice控件写上文字Text
  12. c语言实用教程第四版pdf,C语言大学实用教程(第4版)
  13. 测量平差个人知识总结
  14. 公路堵车概率模型:Nagel-Schreckenberg 模型模拟
  15. 惊人的磁场定律:你是谁,就会遇见谁
  16. win10屏幕文字模糊不清
  17. 关于base64编码解码(Android编码,JS解码,案例为解决安卓端H5页面的emoji表情显示问题)
  18. 刷宝短视频Auto.js挂机源码讲解
  19. java jacob更新目录,jacob更新word目录
  20. 计算机基础 CMOS

热门文章

  1. 点滴生活感悟(更新至29)
  2. WINCC 常见问题
  3. Not creating XLA devices, tf_xla_enable_xla_devices not set错误求助
  4. sql server 2000只有企业管理器不能打开?
  5. 小程序新生英语短剧大赛投票系统
  6. mysql账号认证_浅谈MySQL用户账号认证方式
  7. arcgis 线段合并
  8. 作为南方人,python教你怎么样看雪
  9. 关于图片轮播图的一个简单实例 以及实例中发现问题
  10. 这几个方法让你学会PDF尺寸大小怎么调整