一、题目
西方的二进制数学的发明者莱布尼茨,从中国的八卦图当中受到启发,演绎并推论出了数学矩
阵,最后创造的二进制数学。二进制数学的诞生为计算机的发明奠定了理论基础。而计算机现在改
变了我们整个世界,改变了我们生活,而他的源头却是来自于八卦图。现在,给你一组由八卦图
方位组成的密文,你能破解出其中的含义吗?
震坤艮 震艮震 坤巽坤 坤巽震 震巽兑 震艮震 震离艮 震离艮
二、分析
八卦有8个,其表示方式为阳爻(横)和阴爻(断),信息量为8bit;
根据常识,对其编码,“横”表示“1”;“断”表示“0”;000~111共八种表示;
每3个卦为一个字符,共有8个字符;
具体转化过程:用二进制表示——>每9biit转换成一个十进制数字——>ASCII码对应的字符
三、知识
(一)python中的ord()函数与chr()函数
1.ord()函数:由字符得到对应的ASCII码数值
2.chr()函数:由数字得到对应的ASCII码字符
(二)八卦对应的二进制
八卦的信息量为8bit:乾三连,三个阳爻,111;坤六段,三个阴爻,000;
离中虚,101;坎中满,010;震仰盂,001;艮覆碗,100;
兑上缺,011;巽下断,110;
python字典定义如下:
dict = {'乾':'111','巽':'110','离':'101','艮':'100','兑':'011','坎':'010','震':'001','坤':'000'}
四、解题——python
dict ={'乾':'111','巽':'110','离':'101','艮':'100','兑':'011','坎':'010','震':'001','坤':'000'}
m= '震坤艮 震艮震 坤巽坤 坤巽震 震巽兑 震艮震 震离艮 震离艮'
t=m.split(' ') #以空格为依据,对字符串进行分割,得到列表,该列表有8个元素,嵌套
f='' #定义一个空字符串f,作为数据容器
for i in range(len(t)):#对新列表进行遍历
s = '' #定义一个空字符串s,作为数据容器
for j in range(len(t[i])):#每个元素下还有三个小元素,嵌套
chinese=t[i][j] #chinese代表汉字八卦
a=dict[chinese] #找到该八卦对应的二进制
s+=a #将第i组所有八卦对应的二进制相加
ch=chr(int(s,2)) #int(s,2)将二进制转化为十进制,chr()将该值对应到ASCII字符
f+=ch #将所有字符相加,得到8位字符串
print(f)
得到结果:Da01sall