Q:现在,给你一组由八卦图方位组成的密文,你能破解出其中的含义吗?
震坤艮 震艮震 坤巽坤 坤巽震 震巽兑 震艮震 震离艮 震离艮
首先,让我们先了解一下八卦与二进制的对应关系
根据二进制数的规定:有,用1表示;无,用0表示。我们可以得出八卦各卦阳爻和阴爻的二进制数。下面我们写出八卦各卦阳爻的二进制数(即有阳爻为1,无阳爻为0):
坤:黑黑黑,卦符阴阴阴,二进制数为000
艮:黑黑白,卦符阴阴阳,二进制数为001
坎:黑白黑,卦符阴阳阴,二进制数为010
巽:黑黑白,卦符阴阳阳,二进制数为011
震:白黑黑,卦符阳阴阴,二进制数为100
离:白黑白,卦符阳阴阳,二进制数为101
兑:白白黑,卦符阳阳阴,二进制数为110
乾:白白白,卦符阳阳阳,二进制数为111
即,dict = {'乾':'111','巽':'110','离':'101','艮':'100','兑':'011','坎':'010','震':'001','坤':'000'}
另外,了解一下chr(),
chr(...)
chr(i) -> character
Return a string of one character with ordinal i; 0 <= i < 256.
参数是0 - 256 的一个整数,返回值是当前整数对应的ascii字符。参数可以是10进制也可以是16进制的形式。
例如:
十六进制:>>> print chr(0x30), chr(0x31), chr(0x61)
0 1 a
十进制:>>> print chr(48), chr(49), chr(97)
0 1 a
Answer:
dict = {'乾':'111','巽':'110','离':'101','艮':'100','兑':'011','坎':'010','震':'001','坤':'000'}
c= '震坤艮 震艮震 坤巽坤 坤巽震 震巽兑 震艮震 震离艮 震离艮'
t=c.split(' ') #split方法用于拆分字符串并将其存储在列表中。内置方法返回字符串中的单词列表,使用“分隔符” 作为分隔符字符串
f=''
for i in range(len(t)):
s = ''
for j in range(len(t[i])):
k=t[i][j]
a=dict[k] #找到第i组每个八卦对应的二进制
s+=a #将第i组所有八卦对应的二进制相加
ch=chr(int(s,2)) #int(s,2)将二进制转化为十进制,chr()将该值对应到ASCII字符
f+=ch
print(f)
最后运行得到:Da01sall