易数编程之梅花1弄

作者: 总有骄阳 | 来源:发表于2017-03-29 21:37 被阅读201次

《梅花易数》

一物从来有一身,一身还有一乾坤。

能知万物备于我,肯把三才别立根。

天向一中分造化,人于心上起经纶。

仙人亦有两般话,道不虚传只在人。

最近在看《梅花易数》,它有简单的算数和推理,比较适合用程序表达出来。

另外,它还有很多经典的案例,可以作为程序验证的实例,是行为驱动开发天然的输入。

梅花易数、行为驱动开发,这两个结合起来会产生什么样的效果,我们拭目以待。

一、梅花易数

《梅花易数》是中国古代占卜法之一。现在的八卦象数、梅花心易都是梅花易数的别称。相传为宋代易学家邵雍所著,是一部以易学中的数学为基础,结合易学中的“象学”进行占卜的书,相传邵雍运用时每卦必中,屡试不爽。梅花易数依先天八卦数理,即乾一,兑二,离三,震四,巽五,坎六,艮七,坤八,随时随地皆可起卦,取卦方式多种多样。

二、行为驱动开发(BDD)

BDD 作为一种设计方法,可以有效的改善设计,并在系统的演化过程中为团队指明前进方向。[1]

行为驱动开发的根基是一种“通用语言”。这种通用语言同时被客户和开发者用来定义系统的行为。由于客户和开发者使用同一种“语言”来描述同一个系统,可以最大程度避免表达不一致带来的问题。表达不一致是软件开发中最常见的问题,由此造成的结果就是开发人员最终做出来的东西就不是客户期望的。使用通用语言,客户和开发者可以一起定义出系统的行为,从而做出符合客户需求的设计。但如果光有设计,而没有验证的手段,就无法检验我们的实现是不是符合设计。所以 BDD还是要和测试结合在一起,用系统行为的定义来验证实现代码。

行为驱动开发是测试驱动开发的进化,但关注的核心是设计。行为驱动开发中,定义系统的行为是主要工作,而对系统行为的描述则变成了测试标准。在行为驱动开发中,我们需要使用通用语言来定义系统行为。

三、环境准备

1、java jdk

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2、IntelliJ IDEA

http://www.jetbrains.com.cn/idea.html

安装社区版即可,安装完成后,别忘了装上cucumber插件。

Cucumber插件

四、行为驱动开发

1、起卦法:年月日时起卦

即以农历之年月日总和除以八,以余数为卦数求上卦;以年月日时总和除以八,以余数为卦数求下卦,再以年月日时总和除以六,以余数为动爻。

例:农历壬申年四月十一日巳时起卦:申年9数,巳时6数。

上卦为:(年+月+日)÷8,取余数。 即:(9+4+11)÷8,此处无余数。

下卦为:(年+月+日+时)÷8,取余数。 即:(9+4+11+6)÷8,余数为7为艮卦。

动爻数为:(年+月+日+时)÷6,取余数。 即:(9+4+11+6)除以6,此处无余数。

此卦为:上卦为坤,下卦为艮,动爻为上爻。

2、实例:观梅占

年月日时起卦实例,观梅占,这是我们行为驱动的第一个场景。

辰年十二月十七日申时,康节先生偶观梅,见二雀争枝坠地。先生曰:“不动不占,不因事不占。今二雀争枝坠地,怪也。”因占之,辰年五数,十二月十二数,十七日十七数,共三十四数,除四八三十二,余二,属兑,为上卦,加申时九数,总得四十三数,五八除四十,余得三数,为离,作下卦。又上下总四十三数,以六除,六七四十二,余一为动爻,是为泽火革。初爻变咸,互见乾巽。

断之曰:“详此卦,明晚当有女子折花,园丁不知而逐之,女子失惊坠地,逐伤其股。右兑金为体,离火克之。互中巽木,复三起离火,则克体之卦气盛。兑为少女,因知女子之被伤,而互中巽木,又逢乾金兑金克之,则巽木被伤,而巽为股,故有伤股之应。幸变为艮土,兑金得生,知女子但被伤,而不至凶危也。

3、Feature

下面我们用行为驱动的方式来描述年月日时起卦的Feature文件。

年月日时Feature文件

备注:maven工程记得添加Cucumber依赖

cucumber-java依赖

4、运行Feature文件

在工程上上右键运行所有Feature,可以通过Feature文件驱动测试。注意:这时候工程中只有一个Feature,没有测试代码,也没有业务代码。

在工程上右键: Run

这时候会提示你有错误,有测试步骤未实现:

未实现测试步骤

把上面提示的代码片段拷贝到测试代码里面,创建测试步骤,把抛出异常的代码去掉,再执行一遍。

空的用例通过

注意:Junit方式运行Cucumber还需要一个Java测试文件,参考:

测试文件

第一阶段结束。

下一篇:易数编程之梅花2弄

源码:https://github.com/Git008/yishu

参考:

易经杂记:梅花易数解读

相关文章

  • 易数编程之梅花1弄

    《梅花易数》一物从来有一身,一身还有一乾坤。能知万物备于我,肯把三才别立根。天向一中分造化,人于心上起经纶。仙人亦...

  • 易数编程之梅花3弄

    前一篇:易数编程之梅花2弄 很久没更新了,前一篇介绍了Cucumber工具的基本原理,并且读到了输入参数,今天的任...

  • 易数编程之梅花4弄

    前一篇:易数编程之梅花3弄 关键词:易经、实例化需求、安卓、微服务、Devops 说明:当前只包含了易经和实例化需...

  • 易数编程之梅花2弄

    前一篇:易数编程之梅花1弄 上次只是跑了一个空的用例,继续,首先介绍一下Cucumber的运行原理。 一、Cucu...

  • 【觉悟传统文化《梅花易数》(1)】——八卦类象

    【觉悟传统文化《梅花易数》(1)】——八卦类象 一、梅花易数与八卦 《梅花易数》起源于汉易,是一部以易学中的数学为...

  • 【易经杂记】梅花易数基本要素

    一、梅花易数简介 《梅花易数》是中国古代占卜法之一。现在的八卦象数、梅花心易都是梅花易数的别称。相传为宋代易学家邵...

  • 【觉悟传统文化《周易》(24)】——梅花易数

    【觉悟传统文化《周易》(24)】——梅花易数 一、梅花概述 梅花易数是中国古代占卜法之一。现在的梅花心易就是梅花易...

  • 梅花易数

    梅花易数是我国古代占卜方法之一。现在的梅花心易就是梅花易数的别称。相传为宋代易学家邵雍所著。梅花易数起源于汉易,是...

  • 《梅花易数》

    《梅花易数》是中国古代占卜法之一。现在的梅花心易就是梅花易数的别称。相传为宋代易学家邵康节所著,梅花易数起源于汉易...

  • 《梅花易数》

    《梅花易数》 文/廖又蓉 是心在变还是时空在变已经不重要了瓷枕头在今天打开惊奇枷锁风马牛的相遇响春雷...

网友评论

  • 小飞牛牛:假设梅花易数不是忽悠人的,其实可以反推出世界的结构。用编程语言来做类比,世界是个程序,万事万物继承于不同的父类,八卦就是这些父类,它们遵守着一个法则,即生克关系。测算的过程就是通过子类查找到它的父类,得到下一步的运算结果,再追溯到要测算的子类。
    因为卦和动爻一共只有384种可能性,所以说世界的状态一定是循环的。但世界又不像是这么单调的,我猜测应该是立体的循环,好比螺旋的楼梯,转一个圈后x和y坐标都重合,但z坐标不一样了。动爻只有阴阳两种变化,如果要分,其实还可以再细分,这样大循环里有小循环,每次变化又有点不一样。只是再细分就不方便人脑计算罢了。
    古人能找到这个法则,还能知道跟事务的对应关系,仿佛人就是程序设计师,简直匪夷所思。
  • 总有骄阳:中文的测试函数很少见

本文标题:易数编程之梅花1弄

本文链接:https://www.haomeiwen.com/subject/rdfmnttx.html