APP下载

六爻之数据分析与实现

2023-06-27艺,赵

现代计算机 2023年9期
关键词:图形界面二进制列表

刘 艺,赵 莉

(辽宁工业大学电子与信息学院,锦州 121001)

0 引言

占卜(今预测学)是一门由来已久的学科,古代人在做事之前先进行占卜,但最初古人采用何种占卜方式我们不知。所能了解到的占卜方法大都源于秦汉时代。六爻之法先见于《京房易》,是象、理、数三种要素相融合而构造的系统。“易”乃日月之合体,代表着阴阳平衡,阴阳之法乃天地之法也,极到而变[1]。预测之法和我们共同度过了几千年的历史,融入我们的生活,大部分人认为这是一本玄而又玄的书籍,其实此书和数学有着密切的联系,其占卜部分更是对数的典型应用。

1 六爻

爻是古代人进行占卜时记录结果的一种符号,由三个阴阳爻组成的卦叫三画卦(单卦),三爻有八种排列形状故称八卦。由两个三画卦组成的卦叫六画卦,也叫复卦、成卦[2],复卦有六十四种排列方式,即六十四卦。

1.1 八卦

数字有奇偶,天地分阴阳,所以爻有阴爻和阳爻之说。阳爻用“——”代表,阴爻用“——”代表,世间万物有灵,每卦有三爻,上为天下为地中间为人,即天地人,八卦蕴意宇宙万物,八卦名称如图1所示。六爻有上卦和下卦之分,上面的叫上卦或外卦,下面的叫下卦或者内卦[3-4]。

图1 八卦图

1.2 摇卦

摇卦以乾隆钱为最佳,我们现代可以用一元硬币代替乾隆钱,有面值的为阴,有花一面为阳。三枚硬币放于掌心,双手合拢,右手在下左手在上,摇动几次,抛于桌面或地面等处,如此反复六次共得六爻成一卦。如果一次投掷结果为两阳一阴,叫少阴;两阴一阳,叫少阳;三阳为老阳,三阴为老阴。其中少阴和少阳为静爻、老阳和老阴为动爻,遇动必变,老阳变老阴,老阴变老阳[5]。

2 数据分析

我们摇得的卦为本卦,动爻的变化产生的卦为变卦。全卦有一爻为静爻叫独静卦,全卦有一爻为动爻叫独发卦[6]。摇卦第一次为初爻,是卦的最下面一爻,依次往上,第六次为第六爻,即上爻。

2.1 实例分析

摇卦得到的六爻如图2 所示,此卦为上卦为离,下卦为兑,动爻为二爻,此为本卦;二爻变化由阳变阴乃为变卦,变卦上卦为离,下卦为震卦。

图2 六爻

图2 得到的结果是从本人的角度出发,看待事物的产生发展过程。如果我们把图2倒过来看即由上往下看,就会形成新的卦,此卦叫综卦(反卦),例如山水蒙和水雷屯就互为综卦。图2本卦的反卦为上卦为巽,下卦为离;变卦的反卦为上卦艮,下卦离。综卦即是由事物的反面来看待问题,思考问题。错卦就是将正卦阴爻和阳爻取反而得到的另一卦,通常代表转机。看待问题的角度变了,结果就会不同,所以算卦也是具有哲学内涵,体现了对立统一的关系。

2.2 进制转化

由图2可知,摇卦得到的卦象和电脑中的二进制数有关联。阳爻设为二进制中的1,阴爻设为二进制中的0,把摇卦得到的卦象和二进制数进行匹配,初爻为二进制的最低位,上爻为二进制的最高位,依次类推。

图2 本卦对应的二进制数为101011,即转换为十进制数为43(1×20+1×21+0×22+1×23+0×24+1×25),43+1 得到《周易》六十四卦中的第44卦。图2 变卦对应的二进制数为101001,即转换为十进制数为41(1×20+0×21+0×22+1×23+0×24+1×25),41+1 得到《周易》六十四卦中的第42卦。为什么六爻得到的十进制数要加1,因为六十四卦就是六爻阴阳符号的64 种排列方式,六爻得到的卦象由变化到,即十进制的0 变化到63,恰好是64 个数,则用1 代表第1 卦依次类推得64卦。

3 Python模拟六爻

卦象和二进制数相匹配,计算机使用的就是二进制数,所以可以用计算机语言对六爻进行模拟测算。计算机语言目前流行的Python 语言、Java语言、C语言等。

3.1 程序分析

Python 语言的显著特点就是响应速度快,Python语言具有很多标准库和第三方库[7],并且是开源免费,因此本文选用Python 语言模拟六爻进行摇卦和解卦。

3.1.1 起卦

用Python 语言中的随机数发生器来模拟摇铜钱起卦的过程。引入random 库,设置一个空的列表result 用来存放产生的随机整数。因为是六爻,则一次产生6 个0 到9 之间的随机整数,整数可以重复,最先产生的为初爻,放入列表result[0]中,依次类推,程序如图3所示。

图3 起卦

3.1.2 解本卦

列表result 写入数据后,就可以解本卦。本程序中的六十四卦卦辞来源于百度周易六十四卦卦辞,卦辞存放在程序相同的目录下,名为guacici.txt 文件。定义解本卦函数,首先需要把6 个整数转换为对应的二进制数,设整数0,1,2,3 对应少阴即二进制的0,整数4 为老阴二进制0,整数5 为老阳即二进制1,整数6,7,8,9 为少阳即二进制的1。假设result 获得的值为[1,6,5,8,5,2],本卦为泽风大过,对应的六爻为,转换为对应的二进制放入列表list1 中[0,1,1,1,1,0],通过循环求累加和转换为对应的十进制数31 放入变量s中,打开guacici 文本文件,找到对应的卦辞输出到屏幕上,如图4所示。

图4 解本卦

3.1.3 解变卦

如果在摇卦时出现了动爻,则会出现变卦。设标志位flag 为1,代表本卦无变卦,若列表result 中出现4 或者5 说明本卦有变卦,则标志位flag 变为0。本例中列表result 中出现了5,说明本卦有变卦。本卦有变卦就需要解变卦,变卦放到列表list2中,列表result中出现了5,5对应的是老阳即二进制的1,变化之后为老阴即二进制的0,则列表list2 的值为[0,1,0,1,0,0],对应的六爻为,即六十四卦中的第11卦,打开对应的文件输出卦辞,程序如图5所示。

图5 解变卦

3.1.4 图形界面

以上程序的每一部分通过函数进行定义,程序的运行结果都是基于命令行的模式执行,通过IDLE 交互模式输出(类似于DOS 模式)。由于DOS 模式已基本被Window11 操作系统取代,所以上述的程序运行要以图形界面的方式呈现出来,这就用到Python中的thinter GUI编程,图形用户接口是人机交互的重要技术手段,程序实现如图6所示。

图6 图形界面代码

3.1.5 主调界面

把上述函数组合在一起,通过Python 的Run Module 运行该程序就会得到六爻算卦的结果。在当前的状态下,每次运行完程序后只有退出IDLE 环境再次运行程序才会得到下一个结果。对于玩家来讲,该算卦程序的实用性很低。为实现在不退出程序的前提下可以反复抽取数据进行算卦的目的,本程序增加了一个主调的Python 程序,其功能就是用户可以反复起卦直到选择退出为止,即玩家自主选择主调程序是否调用六爻程序,从而满足用户的要求。程序代码如图7所示。

图7 主调界面代码

3.2 实验结果

3.2.1 主界面显示效果

运行图7 的代码,得到的图形界面结果如图8 所示,用户点击"开始"按钮即进入图9 的六爻算卦程序,点击"退出"按钮则退出算卦程序。

图8 主调界面

图9 六爻界面

3.2.2 六爻界面显示效果

在图8 的界面上点击“开始”按钮进入图9显示窗口,点击相应的按钮完成起卦、解本卦和解变卦的显示结果,当用户点击"退出"按钮后系统回退到图8 的界面环境。实验结果表明,Python 编写的算卦程序是正确的。为了证明卦辞文本文件中的六十四卦都能够被抽出,我们进行了反复实验验证,证明了这六十四卦都有机会被抽出,说明Python 程序、卦辞文本文件格式正确有效。

3.2.3 程序打包

开发了图形界面程序后,每次使用这个程序依然要求用户自己来执行Python 命令的输入,可见程序的复杂性并没有降低。因此需要把程序打包成Windows 系统下的可执行文件,这样可以随时执行此文件,这就是程序的打包。在Python 环境中使用Pyinstaller 第三方库把该程序和程序用到的所有外部资源文件一起打包成可执行文件,步骤如下:

(1)通过pip安装pyinstaller组件;

(2)把所有资源文件映射成main.spec 配置文件;

(3)根据main.spec实现程序打包:pyinstaller-F main.spec;

(4)自动生成main.exe文件。

4 结语

通过上面的分析可知爻是最早的二进制数,原比计算机中使用的二进制出现得早。六爻和计算机的工作原理如此相似,说明二者存在着必然的联系。通过对六爻排列的数据分析推测出可以用计算机来模拟六爻,并通过实验进行了验证。用计算机来模拟六爻也存在不足,比如人在当时主观情感,周围环境对主体的影响,等等,这些都需要在后期的工作中进行完善,让该模拟程序往智能化方向发展,模拟人类大脑思维则是非常重要的一个研究方向。

猜你喜欢

图形界面二进制列表
Epigallocatechin-3-gallate exerts antihypertensive effects and improves endothelial function in spontaneously hypertensive rats
用二进制解一道高中数学联赛数论题
学习运用列表法
扩列吧
有趣的进度
二进制在竞赛题中的应用
用VMRun快速置备千台虚拟机
重看图形界面“扁平化”与“拟物化”之争——关于设计思维的探讨
列表画树状图各有所长
不含3-圈的1-平面图的列表边染色与列表全染色