队列——PowerShell版
继续读啊哈磊《啊哈!算法》感悟系列——队列
地铁售票处排队,先来的人先到队首先买完先走,后来的人排在队尾等候后买完后走。
想买票,必须排在队尾;买完票,只能从队首离开。
这种先进先出(First In First Out,FIFO),后进后出的线性队伍,就是我们说的——队列。
在现实中,队列里包含的是人,在计算机的队列里,包含的就是数据啦~所以,队列是一种——数据结构。
队列中的三要素为:队伍,队首,队尾。
如果用我们比较熟悉的数组来表示队列的话,队伍就是数组本身,队首和队尾就是数组中相应索引位的数值元素。
这里用《潜伏》中的一个情节来举一个应用队列的例子:
军统局给余则成一段数字,并告诉他只要按照指定的规则就可以将这段数字还原为情报密码。
有一天,余则成从电台接到了这段数字:196811234567
情报转译规则如下:将第一个数字移到最后,抠去第二个数字,将第三个数字移到最后,扣去第四个数字……按照这个规则下去,直到这段数字最后只剩下一个数字为止,将之前扣去的数字和最后剩下的数字按顺序连接起来,就是情报密码。
拿1931这四个数字举例,“[ ]”中代表扣去的数字:
第一次:[9]311
第二次:[1]13
第三次:[3]1
第四次:[1]
将“[ ]”中的数字按照你看到的从上到下的顺序连接起来,就是情报密码:9131。
这个规则就好比是排队买票(把情报中的数字看成是人):
第一个人不买票,回到队尾,让第二个人先买;第三个人不买票,回到队尾,让第四个人先买……不用担心,最后所有人都会买到票……
当然!现实生活中没有这么谦让的。我只是想要举个例子来说明——这个情报转译的规则其实就是在对一个队列进行着操作!
现在我们来把这个拆解情报的过程通过一段程序来搞定:
$qingBao = Read-Host "Please enter the information" $infoArray = New-Object System.Collections.ArrayList $infoArray.Add(0) for($i=0;$i -le $qingBao.length-1;$i++) {$infoArray.Add($qingBao[$i]) } function Translate($infoArray) {$head = 1$tail = $infoArray.count$transArray = New-Object System.Collections.ArrayListwhile($head -le $tail){$infoArray.Add($infoArray[$head])$head++$transArray.Add($infoArray[$head])$tail++$head++}PrintTranslation $transArray } function PrintTranslation($transArray) {Write-Host "The translation is: " -ForegroundColor blueWrite-Host $transArray -ForegroundColor green } Translate $infoArray
怎么样,PowerShell中对动态数组的Add操作是不是非常方便呢?
在PowerShell ISE中运行该段代码,并用1931这四个数字做一下测试,结果如下:
OK,我们的程序通过了测试。
现在对“196811234567”这串数字进行转译,结果如下:
计算机的运行速度是很快的。如果余则成活在今天会用计算机的话就再也不用人工的对密码进行转译了。
不得不说潜伏在当今这个时代已经逐渐变成了黑客的世界,余则成不光要会侦查和反侦察,还要学习必要的算法与数据结构才行。
相关文章:

Redis源码解析——双向链表
相对于之前介绍的字典和SDS字符串库,Redis的双向链表库则是非常标准的、教科书般简单的库。但是作为Redis源码的一部分,我决定还是要讲一讲的。(转载请指明出于breaksoftware的csdn博客) 基本结构 首先我们看链表元素的结构。因为…

12月第三周安全要闻回顾:浏览器安全不容忽视,SSL弱点影响网站安全
本周(081215至081221)安全方面的新闻众多,主要集中在***与威胁趋势方面。浏览器安全方向波澜起伏,微软推出了针对上周公开的IE7新漏洞的紧急安全补丁,但目前互联网上针对该漏洞的大规模***仍在继续,******的…
GPT2文本生成有问题?这里有些潜在解决思路
作者 | Leo Gao译者 | 凯隐编辑 | 夕颜出品 | AI科技大本营(ID: rgznai100) 【导读】在过去的一年中,人们对文本生成模型的兴趣重新燃起,这在很大程度上要归功于GPT2,它主要展示了使用更大模型、更大数据和更大计算量的…

HTML5学习之二:HTML5中的表单2
(本内容部分节选自《HTML 5从入门到精通》) 对表单的验证 ———————————————————————————————————————————————————————— •1、required属性 required属性主要目的是确保表单控件中的值已填写。在提交时&…
Redis源码解析——有序整数集
有序整数集是Redis源码中一个以大尾(big endian)形式存储,由小到大排列且无重复的整型集合。它存储的类型包括16位、32位和64位的整型数。在介绍这个库的实现前,我们还需要先熟悉下大小尾内存存储机制。(转载请指明出于…
GitHub标星1.2w+,Chrome最天秀的插件都在这里
作者 | Rocky0429来源 | Python空间(ID: Devtogether)大家好,我是 Rocky0429,一个沉迷 Chrome 不能自拔的蒟蒻...作为一个在远古时代用过什么 IE、360、猎豹等浏览器的资深器哥,当我第一次了解 Chrome 的时候ÿ…

基础篇 第四节 项目进度计划编辑 之 任务关联性设定
1.任务关联性的类型 ◎完成 —— 开始 FS ◎开始 —— 开始 SS ◎开始 —— 完成 SF 完成 —— 完成 FF 2.设定任务关联性 三种方法: ◎在条形图中直接拖拽 ◎在“前置任务”列中编辑 ◎在“任务信息”中的“前置任务”选项卡中编辑 3.设定“延隔时间” 延隔时间小于…
开坑,写点Polymer 1.0 教程第3篇——组件注册与创建
之前一篇算是带大家大致领略了一下Polymer的风采。这篇我们稍微深入一丢丢,讲下组件的注册和创建。 创建自定义组件的几种方式 这里我们使用Polymer函数注册了一个自定义组件"my-element" // register an element Polymer({is: my-element,created: funct…
Redis源码解析——Zipmap
本文介绍的是Redis中Zipmap的原理和实现。(转载请指明出于breaksoftware的csdn博客) 基础结构 Zipmap是为了实现保存Pair(String,String)数据的结构,该结构包含一个头信息、一系列字符串对(之后把一个“字符串对”称为一个“元素…

IIS7入门之旅:(3)CGI application和FastCGI application的区别
前言: 一如既往地,IIS支持通过提供pluggable module来提供对第3方script的支持,例如php等。在IIS7中,对于CGI的支持有了一个新的变化,就是同时提供了2种CGI支持模块,分别为:CGIModule (cgi.dll)和FastCGIMo…

抗击疫情!阿里云为加速新药疫苗研发提供免费AI算力
1月29日,阿里云正式宣布:疫情期间,向全球公共科研机构免费开放一切AI算力,以加速本次新型肺炎新药和疫苗研发。 目前,中国疾控中心已成功分离病毒,疫苗研发和药物筛选仍在争分夺秒地进行。新药和疫苗研发期…
SpriteBuilder中如何平均拉伸精灵帧动画的距离
首先要在Timeline中选中所有的精灵帧,可以通过如下2种的任意一种办法达成: 1按下Shift键的同时鼠标单击它们 2鼠标在Timeline空白区拖拽直到拉出的矩形包围住所有精灵帧方块后放开鼠标。 你可以通过查看Timeline中精灵帧方块上是否有阴影来辨识是否选中…

C++拾趣——类构造函数的隐式转换
之前看过一些批判C的文章,大致意思是它包含了太多的“奇技淫巧”,并不是一门好的语言。我对这个“奇技淫巧”的描述颇感兴趣,因为按照批判者的说法,C的一些特性恰巧可以让一些炫耀技术的同学有了炫耀的资本——毕竟路人皆知的东西…
数十名工程师作战5天,阿里达摩院连夜研发智能疫情机器人
作者 | Just出品 | AI科技大本营(ID:rgznai100)新型肺炎疫情防控战在各大互联网科技公司拉响,阿里、百度等公司陆续对外提供相应技术和产品。当前,疫情当前防控一线人员紧缺,多地政务热线迎来大波问询市民,…

路由器互联端口处于不同网段的路由方法和原理
如下图:两台cisco路由器相连接的两个端口不在同一个网络,如何实现两台路由器的互联?初看似乎绝对不可能,但是这是可行的,而且我已经把这个变成了现实。这里讲述配置的方法,以及解释原理。这个就要讲到路由原…

上网行为管理产品选型简单考量
信息化浪潮汹涌向前,人们的生活、工作、学习越来越离不开IT,离不开网络。 对于很多组织来讲,网络就意味着效率、甚至生产力,协同办公、决策、科研、资金划拨等等都对网络有了前所未有的依赖。网络应用日益复杂、多变、动态特征发展…
码农技术炒股之路——配置管理器、日志管理器
配置管理器和日志管理器是项目中最为独立的模块。我们可以很方便将其剥离出来供其他Python工程使用。文件的重点将是介绍Python单例和logging模块的使用。(转载请指明出于breaksoftware的csdn博客) 配置管理器 在《码农技术炒股之路——架构和设计》中我…
“数学不好,干啥都不行!”资深程序员:别再瞎努力了!
之前很多程序员读者向我们反馈:1)做算法优化时,只能现搬书里的算法,遇到不一样的问题,就不会了。2)面试一旦涉及到算法和数据结构,如果数学不行,面试基本就凉凉了。3)算法…

受限列表 队列与栈
2019独角兽企业重金招聘Python工程师标准>>> 队列与栈为受限列表,队列为先入先出型列表,而栈为先入后出型列表,有关列表的实现可以查看 http://my.oschina.net/u/2011113/blog/514713 。 结构图为 Queue实现了IQueue接口ÿ…
码农技术炒股之路——数据库管理器、正则表达式管理器
我选用的数据库是Mysql。选用它是因为其可以满足我的需求,而且资料多。因为作为第三方工具,难免有一些配置问题。所以本文也会讲解一些和Mysql配置及开发相关的问题。(转载请指明出于breaksoftware的csdn博客) 数据库管理器 Mysq…

Overview of ISA and TMG Networking and ISA Networking Case Study (Part 1)
老方说:此篇文章摘自ISASERVER.ORG网站,出自Thomas Shinder达人之手。严重建议ISA爱好者看看。Published: Dec 16, 2008 Updated: Jan 21, 2009 Author: Thomas Shinder What ISA/TMG firewall Networks are about and how the firewall uses these ne…
阿里云免费开放一切AI算力,加速新型冠状病毒新药和疫苗研发
近日,阿里云宣布,为了帮助加速新药和疫苗研发,将向全球公共科研机构免费开放一切AI算力。目前,中国疾控中心已成功分离病毒,疫苗研发和药物筛选仍在争分夺秒地进行。新药和疫苗研发期间,需要进行大量的数据…

ASP.net(C#)批量上传图片(完整版)
来自:http://blog.itpub.net/9869521/viewspace-667955/ 这篇关于ASP.Net批量上传图片的文章写得非常好,偶尔在网上看到想转载到这里,却费劲了周折。为了更新这篇文章,我用了近半个小时,网上的转载都残缺不全ÿ…

码农技术炒股之路——任务管理器
系统任务和普通任务都是通过任务管理器调度的。它们的区别是:系统任务在程序运行后即不会被修改,而普通任务则会被修改。(转载请指明出于breaksoftware的csdn博客) 为什么要有这样的设计?因为我希望它是一个可以不用停…
面对新型肺炎疫情,AI能做什么?
作者 | 马超出品 | AI科技大本营(ID:rgznai100)根据最新的新型冠状病毒疫情通报,截至1月30日24时,国家卫生健康委公布确诊病例9692例,重症病例1527例,累计死亡病例213例,另有疑似病例15238例。为…

大家帮忙.谢谢!..(急急急急急)
大家帮忙.谢谢!..(急急急急急) Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiDB/html/delphi_20061218224617231.htmlprocedure TForm1.Button4Click(Sender: TObject); var P : pstring; i, j : integer; begin GetMem(p, sizeof(stri…

HDU4866 Shooting (要持久段树)
意甲冠军: 给你一些并行x行轴。总是询问坐标x的顶部之前,k一个段高度,。标题是必须在线。思路: 首先要会可持久化线段树(又称主席树和函数式线段树)。不会的能够去做下POJ 2104。 把全部线段高度离散化,作为结点建线段…
C++过去的这一年
作者 | Bartek译者 | 苏本如,责编 | 屠敏出品 | CSDN(ID:CSDNnews)【导读】本文旨在让我们回顾 C 2019年里的变化和发展!我们将重点关注本年度里 C 上发生的重大事件,标准的发展,工具的变化等等…
码农技术炒股之路——抓取股票基本信息、实时交易信息、主力动向信息
从本节开始,我们开始介绍各个抓取和备份业务。(转载请指明出于breaksoftware的csdn博客) 因为我们数据库很多,数据库中表也很多,所以我们需要一个自动检测并创建数据库和表的功能。在《码农技术炒股之路——数据库管理…