《梅花易数》算法规则条目集·技术规格书
《梅花易数》算法规则条目集(程序实现技术规格书)
文档性质:软件工程算法规格说明书(Software Engineering Specification)
面向目标:供计算机程序、自动化排卦引擎与易学专家系统开发使用。将古籍中的占验话语彻底形式化为“输入参数 -> 计算逻辑 -> 边界条件 -> 输出卦象与断语模型”的确定性工程接口。
比对底本:
- 底本一(F1):清代坊刻三卷本系统(本地路径:
/home/lewin/@Sync/Casket/obsidian/lewin/raw/古籍/术数/梅花易数.md,殆知阁古代文献版,题“清黄宗羲撰序”)。- 底本二(F2):清代故宫珍藏秣陵德聚堂五卷本系统(本地路径:
/home/lewin/@Sync/Casket/obsidian/lewin/raw/web/梅花易数-邵康节.md,周浩良整理、九州出版社版,署“秣陵德聚堂谨订”)。
标注规范:凡两版本在字句、算法、篇章结构上存异处,均显式加注[版本差异],并在条目末尾给出明确的[采信建议与工程实现决策]。
模块零:核心常数与标准数据结构定义(参数写死)
在梅花易数算法体系中,所有逻辑均基于先天八卦数及六十四卦二进制位结构。程序内部需预先固化以下常量表:
0.1 八卦先天数与卦画结构表
- 爻位定义:自下而上排列,依次为初爻(第1爻/最低爻)、二爻(第2爻)、三爻(第3爻/经卦顶爻)。阳爻记为
1,阴爻记为0。 - 数组表示约定:采用 Python 列表
[初爻, 二爻, 三爻](下标 0 为初爻,下标 2 为三爻)。 - 整型位权定义:以初爻为最低有效位(LSB, Bit 0),二爻为 Bit 1,三爻为 MSB (Bit 2)。即 $\text{Value} = \text{爻}_1 \times 1 + \text{爻}_2 \times 2 + \text{爻}_3 \times 4$。
| 先天卦数 | 卦名 | 卦象 | 爻象(自下而上) | 爻位数组 [初, 二, 三] |
位权值 (Bit 0~2) | 五行所属 | 后天对应方位(用于后天端法) |
|---|---|---|---|---|---|---|---|
| 1 | 乾 (Qian) | ☰ | 阳、阳、阳 | [1, 1, 1] |
7 (111b) |
金 | 西北 (Northwest) |
| 2 | 兑 (Dui) | ☱ | 阳、阳、阴 | [1, 1, 0] |
3 (011b) |
金 | 正西 (West) |
| 3 | 离 (Li) | ☲ | 阳、阴、阳 | [1, 0, 1] |
5 (101b) |
火 | 正南 (South) |
| 4 | 震 (Zhen) | ☳ | 阳、阴、阴 | [1, 0, 0] |
1 (001b) |
木 | 正东 (East) |
| 5 | 巽 (Xun) | ☴ | 阴、阳、阳 | [0, 1, 1] |
6 (110b) |
木 | 东南 (Southeast) |
| 6 | 坎 (Kan) | ☵ | 阴、阳、阴 | [0, 1, 0] |
2 (010b) |
水 | 正北 (North) |
| 7 | 艮 (Gen) | ☶ | 阴、阴、阳 | [0, 0, 1] |
4 (100b) |
土 | 东北 (Northeast) |
| 8 | 坤 (Kun) | ☷ | 阴、阴、阴 | [0, 0, 0] |
0 (000b) |
土 | 西南 (Southwest) |
0.2 十二地支时辰与序数表
| 地支 | 序数 | 对应二十四小时区间 | 五行 | 生肖 |
|---|---|---|---|---|
| 子 | 1 | 23:00 — 01:00 | 水 | 鼠 |
| 丑 | 2 | 01:00 — 03:00 | 土 | 牛 |
| 寅 | 3 | 03:00 — 05:00 | 木 | 虎 |
| 卯 | 4 | 05:00 — 07:00 | 木 | 兔 |
| 辰 | 5 | 07:00 — 09:00 | 土 | 龙 |
| 巳 | 6 | 09:00 — 11:00 | 火 | 蛇 |
| 午 | 7 | 11:00 — 13:00 | 火 | 马 |
| 未 | 8 | 13:00 — 15:00 | 土 | 羊 |
| 申 | 9 | 15:00 — 17:00 | 金 | 猴 |
| 酉 | 10 | 17:00 — 19:00 | 金 | 鸡 |
| 戌 | 11 | 19:00 — 21:00 | 土 | 犬 |
| 亥 | 12 | 21:00 — 23:00 | 水 | 猪 |
0.3 标准模运算定义(写死)
古籍云:“卦以八除,爻以六除。如不满数,止用此数;如过数,则递除之;直除尽,以零数作卦/动爻;如得整除之数,卦取坤八,爻取上六。”
- 八数求卦函数
mod8_gua(N): $$\text{mod8_gua}(N) = \begin{cases} N & \text{if } 1 \le N \le 8 \ 8 & \text{if } N > 8 \text{ and } (N \pmod 8 == 0) \ N \pmod 8 & \text{if } N > 8 \text{ and } (N \pmod 8 \ne 0) \end{cases}$$ - 六数求动爻函数
mod6_yao(N): $$\text{mod6_yao}(N) = \begin{cases} N & \text{if } 1 \le N \le 6 \ 6 & \text{if } N > 6 \text{ and } (N \pmod 6 == 0) \ N \pmod 6 & \text{if } N > 6 \text{ and } (N \pmod 6 \ne 0) \end{cases}$$
模块一:起卦诸法(完整技术规则与算法)
梅花易数起卦两大门派为:先天起卦(先得数,以数起卦)与后天端法起卦(先见象,以象起卦)。
规则 1.1:年月日时起卦法(先天时间起卦)
- 出处:F1 卷一《象数易理篇之一·年月日时起例》;F2 卷之一《年月日时起例》。
- 输入参数:
- 农历年地支数 $Y \in [1, 12]$(子1至亥12,以正月初一或立春为界)
- 农历月份 $M \in [1, 12]$(正月1至十二月12)
- 农历日期 $D \in [1, 30]$(初一1至三十30)
- 发生时辰地支数 $T \in [1, 12]$(子时1至亥时12)
- 计算算法:
- 上卦数:$Num_{upper} = (Y + M + D)$;上卦经卦 $= \text{mod8_gua}(Num_{upper})$。
- 下卦数:$Num_{lower} = (Y + M + D + T)$;下卦经卦 $= \text{mod8_gua}(Num_{lower})$。
- 动爻数:$Dong = \text{mod6_yao}(Y + M + D + T)$。
- 特例与边界(农历闰月):
[版本差异]:两底本皆未对闰月作显式注释。[采信建议与工程实现决策]:默认支持通例“直接按本月数取(如闰四月作4数)”;在系统配置项中提供高级选项“按节气中气分前后半月归属”。
规则 1.2:物数起卦法(见单一可数之物)
- 出处:F1 卷一《物数占例》;F2 卷之一《物占数》。
- 输入参数:可数物体总数 $Count$(正整数),时辰地支数 $T \in [1, 12]$。
- 前置限制条件:群物散乱不可数者不可占;必须为目之所见、确凿之数。
- 计算算法:
- 上卦数:$Num_{upper} = Count$;上卦 $= \text{mod8_gua}(Count)$。
- 下卦数:$Num_{lower} = T$;下卦 $= \text{mod8_gua}(T)$。
- 动爻数:$Dong = \text{mod6_yao}(Count + T)$。
- 版本校勘:F1作《物数占例》,F2作《物占数》(附校勘记),算理完全一致。
规则 1.3:声音起卦法(闻声起卦)
- 出处:F1 卷一《声音占例》;F2 卷之一《声音占》。
- 输入参数:所闻声音次数 $SoundCount$(正整数),时辰地支数 $T \in [1, 12]$。
- 计算算法:
- 上卦数:$Num_{upper} = SoundCount$;上卦 $= \text{mod8_gua}(SoundCount)$。
- 下卦数:$Num_{lower} = T$;下卦 $= \text{mod8_gua}(T)$。
- 动爻数:$Dong = \text{mod6_yao}(SoundCount + T)$。
- 连续发声规则:若声音有停顿间隔,则以第一阵声数为上卦,第二阵声数为下卦,总声数加时数取动爻。
规则 1.4:文字起卦法(一字至百余字系统)
- 出处:F1 卷一《字占》《一字至十一字占》;F2 卷之一《字占》《一字占》至《十一字占》。
规则 1.4.1:一字占(楷书偏旁拆分笔画法)
- 输入参数:单个楷书汉字。草书混沌不可分者不占。
- 计算算法:
- 拆分该字为阳部(左/上/外)与阴部(右/下/内)。
- 左边(阳)笔画数 $P_{left}$,右边(阴)笔画数 $P_{right}$。
- 上卦 $= \text{mod8_gua}(P_{left})$。
- 下卦 $= \text{mod8_gua}(P_{right})$。
- 动爻 $= \text{mod6_yao}(P_{left} + P_{right})$(全字总笔画数求爻,严禁加时数)。
- 古籍偏旁判定准则:
- 左右结构:以“彳”、“丿”等为左部阳画;以“一”、“乙”、“丶”等为右部阴画。
- 上下结构:上部为阳取上卦,下部为阴取下卦,全画总数求动爻。
- 独体字/不可拆分字:以总笔画平分为上卦(少一画)、下卦(多一画),总画求爻。
规则 1.4.2:二字占(两仪平分法)
- 计算算法:
- 第1字笔画数 $W_1$;第2字笔画数 $W_2$。
- 上卦 $= \text{mod8_gua}(W_1)$。
- 下卦 $= \text{mod8_gua}(W_2)$。
- 动爻 $= \text{mod6_yao}(W_1 + W_2)$(严禁加时数)。
规则 1.4.3:三字占(三才拆分法)
- 计算算法:
- 第1字笔画数 $W_1$ 取上卦(天):上卦 $= \text{mod8_gua}(W_1)$。
- 第2、3字笔画总和 $(W_2 + W_3)$ 取下卦(地与人):下卦 $= \text{mod8_gua}(W_2 + W_3)$。
- 动爻 $= \text{mod6_yao}(W_1 + W_2 + W_3)$(严禁加时数)。
规则 1.4.4:四字至十字占(中古四声平仄调声法)
- 核心原则:“四字以上,不必数画数,只以平仄声音调之。平声为一数,上声为二数,去声为三数,入声为四数。”
- 声调常量表:平声(阴平/阳平) $= 1$;上声 $= 2$;去声 $= 3$;入声 $= 4$。
- 拆分逻辑:
- 偶数个字(4, 6, 8, 10字):平分前后两半。
- 前半部字调数和 $Tone_{first}$,后半部字调数和 $Tone_{second}$。
- 上卦 $= \text{mod8_gua}(Tone_{first})$。
- 下卦 $= \text{mod8_gua}(Tone_{second})$。
- 动爻 $= \text{mod6_yao}(Tone_{first} + Tone_{second})$(严禁加时数)。
- 奇数个字(5, 7, 9字):天轻清(少一字在上),地重浊(多一字在下)。
- 设字数为 $N$。前部字数 $= (N - 1) / 2$;后部字数 $= (N + 1) / 2$。
- 前部字调数和 $Tone_{first}$,后部字调数和 $Tone_{second}$。
- 上卦 $= \text{mod8_gua}(Tone_{first})$。
- 下卦 $= \text{mod8_gua}(Tone_{second})$。
- 动爻 $= \text{mod6_yao}(Tone_{first} + Tone_{second})$(严禁加时数)。
- 偶数个字(4, 6, 8, 10字):平分前后两半。
[版本差异与采信建议]:- 古本使用中古平水韵四声(含入声)。
- 现代普通话无入声,程序应支持:① 中原音韵/平水韵古典声调模式;② 现代拼音四声映射模式(一声平1、二声平1、三声上2、四声去3);③ 现代常见的汉字笔画拆分降级模式。
规则 1.4.5:十一字以上至百余字占(纯字数法)
- 核心原则:“十一字以上,又不用平仄声音调之,止用字数。”
- 计算算法:
- 设总字数为 $N$($N \ge 11$)。
- 若 $N$ 为偶数:上卦 $= \text{mod8_gua}(N / 2)$;下卦 $= \text{mod8_gua}(N / 2)$;动爻 $= \text{mod6_yao}(N)$。
- 若 $N$ 为奇数:上卦 $= \text{mod8_gua}((N - 1) / 2)$;下卦 $= \text{mod8_gua}((N + 1) / 2)$;动爻 $= \text{mod6_yao}(N)$。
- 纯用字数,严禁加时数。
规则 1.5:丈尺与尺寸占法
- 出处:F1 卷一《丈尺占》《尺寸占》;F2 卷之一《丈尺之物》《尺寸物占》。
- 规则 1.5.1:丈尺之物(大物):
- 丈数取上卦:上卦 $= \text{mod8_gua}(丈数)$。
- 尺数取下卦:下卦 $= \text{mod8_gua}(尺数)$。
- 动爻:$Dong = \text{mod6_yao}(丈数 + 尺数)$。
- 写死约束:“寸数不用,不加时数”。
- 规则 1.5.2:尺寸之物(小物):
- 尺数取上卦:上卦 $= \text{mod8_gua}(尺数)$。
- 寸数取下卦:下卦 $= \text{mod8_gua}(寸数)$。
- 动爻:$Dong = \text{mod6_yao}(尺数 + 寸数 + 当时时支数)$。
- 写死约束:“分数不用,必须加时数取爻”。(因数小,加时以穷其变)。
规则 1.6:为人占与自己占(起卦触发源规则)
- 出处:F1 卷一《为人占》《自己占》;F2 卷之一《为人占》《自己占》。
- 输入特征提取规则:
- 听语声:一句者依字数起卦;两句者前句为上卦、后句为下卦;语多者取初听一句或末后一句。
- 观人品(万物类象):老人为乾(1)、少女为兑(2)、中女为离(3)、长男为震(4)、长女为巽(5)、中男为坎(6)、少男为艮(7)、老母为坤(8)。以人品为上卦,加来方为下卦,加时数取动爻。
- 取诸其身:头动为乾(1)、足动为震(4)、目动为离(3)、耳动为坎(6)、手指为艮(7)、口齿为兑(2)。
- 取诸其物:圆形金玉为乾(1)、方形土瓦为坤(8)、水族为坎(6)、火器为离(3)。
- 服色取象:青为震/巽(4/5)、赤为离(3)、白为乾/兑(1/2)、黑为坎(6)、黄为坤/艮(8/7)。
- 自己占:以年月日时、闻声、所触外物起卦,与为人占同,但必须加时数。
规则 1.7:后天端法起卦(物卦起例)
- 出处:F1 卷一《物卦起例(端法后天起卦)》;F2 卷之一《物卦起例》。
- 核心定义:“以物为上卦,方位为下卦,合物卦之数与方卦之数加时数以取动爻。”
- 输入参数:
- 观察到的实体物象/人象(映射为八卦,取其先天数 $Gua_{obj} \in [1, 8]$)
- 物或人所在之后天方位(映射为该方位对应八卦之先天数 $Gua_{dir} \in [1, 8]$):
- 离正南=3,坎正北=6,震正东=4,兑正西=2,巽东南=5,乾西北=1,艮东北=7,坤西南=8。
- 观测时辰地支数 $T \in [1, 12]$。
- 计算算法:
- 上卦 $= Gua_{obj}$。
- 下卦 $= Gua_{dir}$。
- 动爻 $= \text{mod6_yao}(Gua_{obj} + Gua_{dir} + T)$。
规则 1.8:起卦加数消除冲突法(并发/同时间多人去重算法)
- 出处:F1 卷二《起卦加数例》;F2 卷之二《起卦加数例》。
- 业务场景:同一时间(同年月日时)有多人求占同一事,若直接按时间起卦,则卦象完全一致,吉凶无从分辨。
- 算法模型:
- 引入求占者之特定特征标识(古法用求占者姓氏笔画数 $K$;现代程序可传入用户ID或姓名笔画数)。
- 上卦数:$Num_{upper} = (Y + M + D + K)$;上卦 $= \text{mod8_gua}(Num_{upper})$。
- 下卦数:$Num_{lower} = (Y + M + D + K + T)$;下卦 $= \text{mod8_gua}(Num_{lower})$。
- 动爻数:$Dong = \text{mod6_yao}(Y + M + D + K + T)$。
- 经典案例验证:
- 寅年(3)十二月(12)初一日(1)午时(7):基数 $3+12+1=16$。
- 王姓(4画):上卦 $(16+4)=20 \pmod 8 = 4$(震);下卦 $(20+7)=27 \pmod 8 = 3$(离);动爻 $27 \pmod 6 = 3$。得雷火丰变震。
- 田姓(6画):上卦 $(16+6)=22 \pmod 8 = 6$(坎);下卦 $(22+7)=29 \pmod 8 = 5$(巽);动爻 $29 \pmod 6 = 5$。得水风井变升。
- 韩姓(21画):上卦 $(16+21)=37 \pmod 8 = 5$(巽);下卦 $(37+7)=44 \pmod 8 = 4$(震);动爻 $44 \pmod 6 = 2$。得风雷益变中孚。
模块二:动爻求法与判定规则
动爻是决定重卦吉凶运动、体用划分及变卦演化的唯一动力核心。
规则 2.1:一卦一爻动原则(写死)
梅花易数算法体系严格限制一卦仅有一爻动。严禁出现大衍筮法或京房六爻中的多爻动或静卦无动爻。无论输入数字多大,经过模6运算后,必然锁定在第 1 至第 6 爻中的唯一爻位。
规则 2.2:动爻求法分类归纳表
| 起卦类型 | 动爻计算公式 | 是否加时数 | 边界特例(整除时) |
|---|---|---|---|
| 年月日时起卦 | $(年支 + 月 + 日 + 时支) \pmod 6$ | 包含时数 | 余0取第6爻(上爻) |
| 物数占 | $(物数 + 时支) \pmod 6$ | 必须加时 | 余0取第6爻(上爻) |
| 声音占 | $(声数 + 时支) \pmod 6$ | 必须加时 | 余0取第6爻(上爻) |
| 一字至十字占 | (字画总数 或 调声总数) $\pmod 6$ | 严禁加时 | 余0取第6爻(上爻) |
| 十一字以上占 | 总字数 $N \pmod 6$ | 严禁加时 | 余0取第6爻(上爻) |
| 丈尺占 | $(丈数 + 尺数) \pmod 6$ | 严禁加时 | 余0取第6爻(上爻) |
| 尺寸占 | $(尺数 + 寸数 + 时支) \pmod 6$ | 必须加时 | 余0取第6爻(上爻) |
| 后天端法(物卦) | $(物卦数 + 方位卦数 + 时支) \pmod 6$ | 必须加时 | 余0取第6爻(上爻) |
| 同时间加数占 | $(年+月+日+姓画+时支) \pmod 6$ | 包含时数 | 余0取第6爻(上爻) |
规则 2.3:动爻状态翻转算法
- 若动爻原为阳爻(1 / 九),翻转为阴爻(0 / 六);
- 若动爻原为阴爻(0 / 六),翻转为阳爻(1 / 九)。
模块三:体用判定、互卦与变卦推演算法
规则 3.1:体用判定规则(动静分体用)
- 出处:F1 卷二《体用总诀》;F2 卷之二《体用总诀》《断占总诀》。
- 定义:
- 重卦六爻分为下卦(内卦,爻1
3)与上卦(外卦,爻46)。 - 判定算法: $$\begin{cases} \text{动爻 } Dong \in {1, 2, 3} & \implies \text{下卦为【用卦】(动),上卦为【体卦】(静)} \ \text{动爻 } Dong \in {4, 5, 6} & \implies \text{上卦为【用卦】(动),下卦为【体卦】(静)} \end{cases}$$
- 重卦六爻分为下卦(内卦,爻1
- 象征意义:体卦为主体(占者、己方、事物本体);用卦为客体(所占之事、应事之人、外部吉凶动因)。
规则 3.2:互卦生成算法(取中爻交错)
- 出处:F1 卷一《互卦起例》;F2 卷之一《互卦止用八卦不必取六十四卦名》。
- 算法逻辑:
- 设本卦六爻自初爻至上爻分别为:$L_1, L_2, L_3, L_4, L_5, L_6$。
- 去除初爻 $L_1$ 与上爻 $L_6$,仅保留中间四爻 $L_2, L_3, L_4, L_5$。
- 下互卦(内互):取第 2、3、4 爻组成新的三爻经卦,爻位为 $[L_2, L_3, L_4]$。
- 上互卦(外互):取第 3、4、5 爻组成新的三爻经卦,爻位为 $[L_3, L_4, L_5]$。
- 组合而成的重卦即为“互卦”(上卦为上互,下卦为下互)。
- 体互与用互之权重划分(极关键):
- 若体卦在上卦 $\implies$ 上互为**【体互】(与体同位,权重高),下互为【用互】**。
- 若体卦在下卦 $\implies$ 下互为**【体互】(与体同位,权重高),上互为【用互】**。
- 占断时体互关系最紧,用互次之(如观梅占恒卦,上互兑金克震木体卦,直接断少女折花,而不取下互乾金老人)。
规则 3.3:特殊边界:“乾坤无互,互其变卦”
- 出处:F1 卷一;F2 卷之一。
- 边界成因:
- 当本卦为纯乾(乾为天,111111)时,其中爻 2,3,4 与 3,4,5 仍为 111,互卦仍为纯乾;
- 当本卦为纯坤(坤为地,000000)时,其中爻 2,3,4 与 3,4,5 仍为 000,互卦仍为纯坤。无法形成阴阳消长信息。
- 算法分支规则:
if 本卦 is 乾为天 or 本卦 is 坤为地: # 触发 "乾坤无互,互其变卦" 特殊规则 下互卦 = 变卦之 [爻2, 爻3, 爻4] 上互卦 = 变卦之 [爻3, 爻4, 爻5] else: # 常规互卦规则 下互卦 = 本卦之 [爻2, 爻3, 爻4] 上互卦 = 本卦之 [爻3, 爻4, 爻5] [采信建议]:此规则是解决乾坤纯卦信息冻结的古法精髓,程序必须实现该分支。
规则 3.4:变卦生成算法
- 算法逻辑:
- 体卦所在的三爻经卦完全保持不变。
- 用卦所在的三爻经卦中,将动爻对应的爻位进行二进制翻转($0 \to 1, 1 \to 0$),生成新的经卦。
- 将新经卦替换原用卦位置,与不变的体卦重新组合成六爻重卦,即为**【变卦】**。
- 时间演化三态模型:
- 用卦:主事之发端,即刻之应;
- 互卦:主事之中途,过程演变;
- 变卦:主事之末后,最终结局。
模块四:五行生克与四季旺相休囚死判定
规则 4.1:五行生克吉凶基础矩阵
设体卦五行为 $E_{ti}$,对应各应卦(用卦、体互、用互、变卦)五行为 $E_{other}$:
- 用生体($E_{other}$ 生 $E_{ti}$):大吉。主贵人相助,获益匪浅,求谋顺遂。
- 体用比和($E_{other} == E_{ti}$):吉。主同道相扶,百事亨通,主客融洽。
- 体克用($E_{ti}$ 克 $E_{other}$):小吉/次吉。事虽可成,但劳心费力,多所克制。
- 体生用($E_{ti}$ 生 $E_{other}$):不吉/泄气。主损耗盗泄,虚惊劳累,防破耗。
- 用克体($E_{other}$ 克 $E_{ti}$):大凶。主灾咎病祸,官非破败,若克体卦旺则立见危亡。
规则 4.2:四季与五行旺相休囚死完全状态矩阵(写死)
判定时令以月令(节气月支)为主:
- 春季(寅、卯月);
- 夏季(巳、午月);
- 秋季(申、酉月);
- 冬季(亥、子月);
- 四季末月(辰、戌、丑、未月)。
| 时令(月支) | 旺(得令当权) | 相(旺者所生) | 休(生旺者退休) | 囚(克旺者被囚) | 死(旺者所克受刑) |
|---|---|---|---|---|---|
| 春季(寅卯) | 木 (震/巽) | 火 (离) | 水 (坎) | 金 (乾/兑) | 土 (坤/艮) |
| 夏季(巳午) | 火 (离) | 土 (坤/艮) | 木 (震/巽) | 水 (坎) | 金 (乾/兑) |
| 秋季(申酉) | 金 (乾/兑) | 水 (坎) | 土 (坤/艮) | 火 (离) | 木 (震/巽) |
| 冬季(亥子) | 水 (坎) | 木 (震/巽) | 金 (乾/兑) | 土 (坤/艮) | 火 (离) |
| 四季月(辰戌丑未) | 土 (坤/艮) | 金 (乾/兑) | 火 (离) | 木 (震/巽) | 水 (坎) |
规则 4.3:体用乘旺消长评估权重算法
- 体卦乘旺衰权重判定:
- 体卦得【旺】、【相】之气:本体强固,纵有克体之卦,亦受害甚微,化险为夷。
- 体卦处【死】、【囚】之气:本体虚脱脆弱,若遇用卦或变卦克体,必主重厄、大病、破亡。
- 克体卦旺衰判定:
- 克体之卦乘【旺】、【相】:凶暴势大,其祸立应。
- 克体之卦处【休】、【囚】、【死】:虽克而无力,虚惊一场。
- 卦党众寡法则:
- 统计全卦(主卦、互卦、变卦共四个经卦:体、用、上互、下互、变):
- 生体/比和之卦党多 $\implies$ 终吉;
- 克体/泄体之卦党多 $\implies$ 终凶。
- 统计全卦(主卦、互卦、变卦共四个经卦:体、用、上互、下互、变):
模块五:断应期法则(克期数学模型)
- 出处:F1 卷三《占卜克应之诀》;F2 卷之三《占卜克应之诀》。
- 克期(确定吉凶应验的时间截点)是梅花易数中最具技术性的部分。分为两大模型:
规则 5.1:数理推应期模型(先天动静法)
- 核心全卦数计算: $$Sum_{all} = \text{体卦先天数} + \text{用卦先天数} + \text{上互先天数} + \text{下互先天数} + \text{变卦用位先天数}$$ (注:部分古例亦取成卦之总数,如主卦上下数或年月日时数)。
- 占者动静状态折算系数:
- 行(走动中、在途):事应速。 $$\text{期数 } TimeCount = \lfloor Sum_{all} / 2 \rfloor \text{ 或 } Sum_{all} / 2$$
- 坐(静坐中、安处):事应迟。 $$\text{期数 } TimeCount = Sum_{all} \times 2$$
- 立(站立不移):半迟半速。 $$\text{期数 } TimeCount = Sum_{all}$$
- 卧(睡眠、卧床):应最迟,取三倍或更久。
规则 5.2:事端长短决定时间单位
根据被占事物的物理与社会生命周期,将 $\text{期数 } TimeCount$ 映射至时间颗粒度:
- 旦夕暴发之事(花卉、饮食、寻常争斗、鸟兽叫鸣):
- 时间单位为:时辰 或 日。
- 近事/常事(寻人、买卖、婚姻订聘、谋差):
- 时间单位为:日 或 月。
- 久远之事(营建屋宅、造葬坟墓、立业兴替):
- 时间单位为:月 或 年。
规则 5.3:时令卦气生克定日辰模型(后天干支法)
当需要锁定具体天干地支日期时,采用此规则:
- 吉事生体之期:
- 寻找全卦中生扶体卦的五行。
- 应期必在该五行乘旺之日辰或月令(例如:金为体,土来生之,应在辰、戌、丑、未土日,或戊己日;若金为体见金比和,应在申、酉金日,或庚辛日)。
- 凶事克体之期:
- 寻找全卦中克害体卦的五行。
- 应期必在该克体五行乘旺之日辰或月令(例如:金为体,离火来克,卦无土解救,应在巳、午火旺之日,或丙丁日)。
- 行人归期:以生体卦、比和卦对应之五行日为归期。
模块六:三要十应外应推演系统
- 出处:F1 卷二《三要灵应篇》《十应奥论》《十应目论》;F2 卷之二《三要灵应篇》《十应奥论》《十应目论》。
规则 6.1:三要总括
- 耳(闻声):凡听得之声音,喜笑乐声主吉,悲泣破裂争斗声主凶;
- 目(见物):凡眼见之形象,物色圆完整洁主吉,残缺破损污秽主凶;
- 心(神悟):心神灵动,方寸湛然,见兆应机而动。
规则 6.2:十应类属与卦象交互规则
十应作为主卦之外的“客卦/外应环境参数”,将其五行属性带入体用系统参断:
- 天时之应:晴明为离(火),阴雨为坎(水),雷霆为震(木),风顺为巽(木),雪霜为乾兑(金)。
- 地理之应:高冈丘陵为艮(土),平地原野为坤(土),江河溪流为坎(水),道路森林为震巽(木)。
- 人事之应:士人官吏为乾,妇人阴柔为坤,长幼有序,喜庆谈笑为吉应,号泣怒骂为凶兆。
- 时令之应:详审当下月日时之五行衰旺。
- 方卦之应:来人之方位八卦。
- 动物之应:见龙马乾震为吉,见乌鸦坎离为非,见犬吠防盗,见鸡鸣主烹。
- 静物之应:见金宝钱帛主财,见刀剑绳索主损伤官非。
- 言语之应:旁人所吐言词,字字为谶。
- 声音之应:丝竹钟鼓乐声主喜,折木破碗声主凶。
- 五色之应:青碧主木,赤紫主火,黄赭主土,素白主金,玄黑主水。
规则 6.3:外应融入体用计算规则
- 若起卦完成后,突发外应(如忽闻犬吠、忽见红衣人走过):
- 提取该外应之八卦/五行属性 $E_{ying}$;
- $E_{ying}$ 生体卦 $\implies$ 吉庆加成;
- $E_{ying}$ 克体卦 $\implies$ 灾患加剧;
- $E_{ying}$ 与体卦比和 $\implies$ 外力相助。
模块七:两底本版本差异比对与工程实现采信决策汇总表
| 序号 | 规则模块 | 底本一(殆知阁三卷本系统) | 底本二(故宫秣陵德聚堂五卷本) | [版本差异考订] | [工程实现采信决策] |
|---|---|---|---|---|---|
| 1 | 全书体例 | 分卷一、二、三,共三卷。无字画拆字专卷。 | 分卷之一至五,共五卷。卷四五收大量拆字法。 | 底本一为早中期精简坊本;底本二为清代成熟五卷本。 | 采信底本一至三卷为核心卦法;卷四五拆字作为扩展子系统。 |
| 2 | 序言署名 | 卷端题“清黄宗羲撰序”。 | 卷端署“秣陵德聚堂谨订”。 | 底本一黄宗羲序系清中叶书坊伪托;底本二署德聚堂为正本。 | 采信底本二考订结论,元数据废弃黄宗羲作序说。 |
| 3 | 字占声调 | 记四声调声,未附入声判定。 | 正文注有校记,明确平仄调法。 | 两本皆基于中古平水韵四声体系。 | 程序提供双模式:默认古典平水韵;兼容现代拼音调值模式。 |
| 4 | 克应文字 | 记作“克则最难”、“以数而克之”。 | 记作“刻期最难”、“以数而刻之”。 | 底本一为音近传抄致讹;底本二作“刻期”字义精确。 | 采信底本二“刻期”,程序模块命名为 calculate_keqi()。 |
| 5 | 物数占名 | 题《物数占例》。 | 题《物占数》(注:校本题物数占)。 | 篇名微异,正文除法与取爻规则完全一致。 | 功能命名为 divine_by_object_count()。 |
| 6 | 乾坤无互 | 仅记“乾坤无互,互其变卦”。 | 同样记“乾坤无互,互其变卦”。 | 两本均列为重要推演口诀,但未加长篇注脚。 | 算法严格实现分支:遇纯乾纯坤取变卦之2,3,4与3,4,5爻为互。 |
| 7 | 四季旺衰 | 卷一仅列旺与衰(死)。 | 卷一列旺衰,卷五附五行四时旺相休囚表。 | 底本二图表虽残脱,但其理论框架完全合乎五行通论。 | 采用标准5x5旺相休囚死矩阵(见模块四表),完全固化。 |
| 8 | 加数起卦 | 卷二载寅年十二月初一日午时三家起造例。 | 卷二载同样案例,记述相同。 | 两本高度一致,确立了多人并发消除同卦的核心机制。 | 强制作为排卦引擎的多人去重接口。 |
模块八:程序实现伪代码(Python标准实现范式)
为便于工程师直接阅读与转化,提供核心调度与推演的完整伪代码模型:
# coding: utf-8
from dataclasses import dataclass
from typing import Tuple, List
# 八卦常量
BAGUA_NAMES = ["", "乾", "兑", "离", "震", "巽", "坎", "艮", "坤"]
BAGUA_ELEMENTS = ["", "金", "金", "火", "木", "木", "水", "土", "土"]
# 爻画定义(0: 阴, 1: 阳),自下而上列表:[初爻, 二爻, 三爻]
BAGUA_YAO = {
1: [1, 1, 1], # 乾 (三阳)
2: [1, 1, 0], # 兑 (初阳, 二阳, 三阴)
3: [1, 0, 1], # 离 (初阳, 二阴, 三阳)
4: [1, 0, 0], # 震 (初阳, 二阴, 三阴)
5: [0, 1, 1], # 巽 (初阴, 二阳, 三阳)
6: [0, 1, 0], # 坎 (初阴, 二阳, 三阴)
7: [0, 0, 1], # 艮 (初阴, 二阴, 三阳)
8: [0, 0, 0], # 坤 (三阴)
}
def mod8_gua(n: int) -> int:
r = n % 8
return 8 if r == 0 else r
def mod6_yao(n: int) -> int:
r = n % 6
return 6 if r == 0 else r
def get_gua_by_yao(yao: List[int]) -> int:
for g, y in BAGUA_YAO.items():
if y == yao:
return g
return 8
@dataclass
class HexagramResult:
upper_gua: int # 上卦先天数 (1-8)
lower_gua: int # 下卦先天数 (1-8)
dong_yao: int # 动爻位 (1-6)
ti_gua: int # 体卦先天数 (1-8)
yong_gua: int # 用卦先天数 (1-8)
ti_is_upper: bool # 体卦是否在上卦
hu_upper: int # 上互卦先天数 (1-8)
hu_lower: int # 下互卦先天数 (1-8)
bian_upper: int # 变卦之上卦先天数 (1-8)
bian_lower: int # 变卦之下卦先天数 (1-8)
def deduce_meihua(upper: int, lower: int, dong: int) -> HexagramResult:
# 1. 组成本卦六爻 (自初爻至上爻, 索引0至5)
six_lines = BAGUA_YAO[lower] + BAGUA_YAO[upper]
# 2. 判定体用 (动爻在下卦则下用上体;在上卦则上用下体)
if dong in [1, 2, 3]:
ti_gua = upper
yong_gua = lower
ti_is_upper = True
else:
ti_gua = lower
yong_gua = upper
ti_is_upper = False
# 3. 产生变卦 (仅动爻发生二进制翻转)
bian_lines = list(six_lines)
target_idx = dong - 1
bian_lines[target_idx] = 1 if bian_lines[target_idx] == 0 else 0
bian_lower = get_gua_by_yao(bian_lines[0:3])
bian_upper = get_gua_by_yao(bian_lines[3:6])
# 4. 产生互卦(包含“乾坤无互,互其变卦”边界处理)
if (upper == 1 and lower == 1) or (upper == 8 and lower == 8):
# 乾坤无互,互其变卦
hu_lower = get_gua_by_yao([bian_lines[1], bian_lines[2], bian_lines[3]])
hu_upper = get_gua_by_yao([bian_lines[2], bian_lines[3], bian_lines[4]])
else:
# 常规互卦 (取本卦二三四爻为下互,三四五爻为上互)
hu_lower = get_gua_by_yao([six_lines[1], six_lines[2], six_lines[3]])
hu_upper = get_gua_by_yao([six_lines[2], six_lines[3], six_lines[4]])
return HexagramResult(
upper_gua=upper,
lower_gua=lower,
dong_yao=dong,
ti_gua=ti_gua,
yong_gua=yong_gua,
ti_is_upper=ti_is_upper,
hu_upper=hu_upper,
hu_lower=hu_lower,
bian_upper=bian_upper,
bian_lower=bian_lower
)
本规格书结语:以上条目涵盖了《梅花易数》排卦、体用演化、旺衰克应及断期之全部数理骨架。开发者依据此规范可百分之百还原宋明清三代梅花数术推演体系。
没有要显示的评论
没有要显示的评论