赛题介绍

挑战介绍

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

但是如果三个送信者被同时抓获,敌军还是可以获取完整的情报。因此在古代匮乏的条件之下,可以通过增加送信者的数量将书信分割成更多份传递,减少情报泄密的机率。

挑战目标

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

  • 输入一段文本内容,将内容分成若干份,第一份内容字数为 1,第二份内容字数为 1 + 2,第三份内容字数为 1 + 2 + 3,第 n 份内容字数为 1 + 2 + 3 + ... + n,以此类推,至止内容被分完。最后按照划分的顺序,以列表的形式将内容返回。
  • 如果输入的文本没有内容,则返回 None
  • 一个空格也占据一个文字。
def yin_book_encryption(text: str) -> list:"""TODO"""encryption_text : list = []return encryption_text

挑战要求

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

参考样例

# 样例 1
text = "姜子牙阴书加密"; encryption_text = ["姜", "子牙阴", "书加密"]
# 样例 2
text = "姜子牙阴书 加密"; encryption_text = ["姜", "子牙阴", " 书加密"]
# 样例 3
text = "None"; encryption_text = ["N", "one"]
# 样例 4
text = ''; encryption_text = None

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


题解

解题思路

简单的模拟题

  1. 要注意对传入参数类型的检查,包括空字符串等情形。
  2. 构造等差数列子函数。
  3. 注意份数与等差数列的和的关系,及边界条件。
  4. 最后使用join方法将列表拼接为字符串返回即可。
def yin_book_encryption(text: str) -> list:"""TODO"""if not isinstance(text, str):return Noneif text == "":return Noneencryption_text: list = []text_len = len(text)n = 1sum = 0def seqsum(n):return int(n * (n+1)/2)while sum < text_len:word_num = seqsum(n)start = sumn = n + 1sum = sum + word_numencryption_text.append(text[start:sum])return encryption_text

题目来源:蓝桥 姜子牙阴书加密

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

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

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

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

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

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

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

  4. 蓝桥 卷“兔”来袭编程竞赛专场-04栅栏加密 题解

    赛题介绍 挑战介绍 栅栏密码是一种简单的移动字符位置的加密方法,规则简单.加密方式是将明文按照一定的字数分成多个组,取每组第一个字连起来得到密文 1,再取每组第二个字连起来得到密文 2,以此类推,最后 ...

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

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

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

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

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

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

  8. 蓝桥杯scratch_又是福州第一!信息学编程竞赛“蓝桥杯”公布福建省赛榜单

    7月10日,第十一届蓝桥杯省赛成绩公布,福建全省共有400人获奖,其中福州获奖人数占比超50%! 相信大家都还很疑惑,蓝桥杯到是一个什么竞赛呢?孩子参加这个比赛有什么用?今天优优老师就来为大家介绍,由 ...

  9. 【青少年编程竞赛交流】01月份微信图文索引

    01月份微信图文索引 由于"组队学习"这个公众号的功能主要是组织Datawhale社群中的学习者们每个月的组队学习,所以,我另外新建了这个微信公众号"青少年编程竞赛交流& ...

最新文章

  1. 服务器 上传文件 杀毒,一种实现文件上传网站后自动进行杀毒的方法及系统
  2. 分别使用委托、接口、匿名方法、泛型委托实现加减乘除运算
  3. Mysql JDBC 连接串参数说明
  4. 《剑指offer》和为s的连续正数序列
  5. openpyxl模块_Openpyxl让Excel飞(一)
  6. python中必须使用import引入模块_Python之import方法引入模块详解
  7. Python+Opencv图像处理新手入门教程(四):视频内容的读取与导出
  8. python dataframe的某一列变为list_Python数据分析系列文章之Pandas(上)
  9. 如何使用bcrypt在PHP中对密码进行哈希处理?
  10. 基于EEG信号的情绪分析数据库DEAP论文调研
  11. 推荐一些2021年整理的PHP毕业设计、毕设参考作品案例
  12. 国科大—矩阵分析与应用(李老师)—复习提纲—2.矩阵代数
  13. 溯光者:超简单,一文读懂显卡型号编码数字、字母怎么看,都是什么意思?
  14. yuki翻译器钩子_YUKI游戏翻译工具下载
  15. swat weather 输入数据注意事项
  16. C# 使用斑马打印机打印图片
  17. dell台式计算机主板电池,台式机主板电池怎么拆
  18. 【整理】轴体结构和润轴
  19. .Net中Web增加加密狗管理
  20. TPS929120的CRC校验的三种实现方法

热门文章

  1. 【日常】有道云笔记markdown数学公式格式转换脚本
  2. 穆迪收购Omega Performance,加强在线信贷培训平台
  3. sql server 2000企业管理器中没有项目
  4. win10启用或关闭windows功能空白终极解决办法
  5. 第149篇 笔记-web3
  6. 工业过程控制领域中通信
  7. cf显示服务器登录,cf显示与服务器
  8. Matlab论文插图绘制模板第50期—分簇散点图(Swarmchart)
  9. 破防 | 姥姥摇着头说:“不记得你了”
  10. pycharm环境下导入包