跳转到主要内容

《梅花易数》算法规则条目集·技术规格书

《梅花易数》算法规则条目集(程序实现技术规格书)

文档性质:软件工程算法规格说明书(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)
  • 计算算法:
    1. 上卦数:$Num_{upper} = (Y + M + D)$;上卦经卦 $= \text{mod8_gua}(Num_{upper})$。
    2. 下卦数:$Num_{lower} = (Y + M + D + T)$;下卦经卦 $= \text{mod8_gua}(Num_{lower})$。
    3. 动爻数:$Dong = \text{mod6_yao}(Y + M + D + T)$。
  • 特例与边界(农历闰月):
    • [版本差异]:两底本皆未对闰月作显式注释。
    • [采信建议与工程实现决策]:默认支持通例“直接按本月数取(如闰四月作4数)”;在系统配置项中提供高级选项“按节气中气分前后半月归属”。

规则 1.2:物数起卦法(见单一可数之物)

  • 出处:F1 卷一《物数占例》;F2 卷之一《物占数》。
  • 输入参数:可数物体总数 $Count$(正整数),时辰地支数 $T \in [1, 12]$。
  • 前置限制条件:群物散乱不可数者不可占;必须为目之所见、确凿之数。
  • 计算算法:
    1. 上卦数:$Num_{upper} = Count$;上卦 $= \text{mod8_gua}(Count)$。
    2. 下卦数:$Num_{lower} = T$;下卦 $= \text{mod8_gua}(T)$。
    3. 动爻数:$Dong = \text{mod6_yao}(Count + T)$。
  • 版本校勘:F1作《物数占例》,F2作《物占数》(附校勘记),算理完全一致。

规则 1.3:声音起卦法(闻声起卦)

  • 出处:F1 卷一《声音占例》;F2 卷之一《声音占》。
  • 输入参数:所闻声音次数 $SoundCount$(正整数),时辰地支数 $T \in [1, 12]$。
  • 计算算法:
    1. 上卦数:$Num_{upper} = SoundCount$;上卦 $= \text{mod8_gua}(SoundCount)$。
    2. 下卦数:$Num_{lower} = T$;下卦 $= \text{mod8_gua}(T)$。
    3. 动爻数:$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})$(严禁加时数)。
  • [版本差异与采信建议]:
    • 古本使用中古平水韵四声(含入声)。
    • 现代普通话无入声,程序应支持:① 中原音韵/平水韵古典声调模式;② 现代拼音四声映射模式(一声平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. 观人品(万物类象):老人为乾(1)、少女为兑(2)、中女为离(3)、长男为震(4)、长女为巽(5)、中男为坎(6)、少男为艮(7)、老母为坤(8)。以人品为上卦,加来方为下卦,加时数取动爻。
    3. 取诸其身:头动为乾(1)、足动为震(4)、目动为离(3)、耳动为坎(6)、手指为艮(7)、口齿为兑(2)。
    4. 取诸其物:圆形金玉为乾(1)、方形土瓦为坤(8)、水族为坎(6)、火器为离(3)。
    5. 服色取象:青为震/巽(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]$。
  • 计算算法:
    1. 上卦 $= Gua_{obj}$。
    2. 下卦 $= Gua_{dir}$。
    3. 动爻 $= \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 卷之二《体用总诀》《断占总诀》。
  • 定义:
    • 重卦六爻分为下卦(内卦,爻13)与上卦(外卦,爻46)。
    • 判定算法: $$\begin{cases} \text{动爻 } Dong \in {1, 2, 3} & \implies \text{下卦为【用卦】(动),上卦为【体卦】(静)} \ \text{动爻 } Dong \in {4, 5, 6} & \implies \text{上卦为【用卦】(动),下卦为【体卦】(静)} \end{cases}$$
  • 象征意义:体卦为主体(占者、己方、事物本体);用卦为客体(所占之事、应事之人、外部吉凶动因)。

规则 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:变卦生成算法

  • 算法逻辑:
    1. 体卦所在的三爻经卦完全保持不变。
    2. 用卦所在的三爻经卦中,将动爻对应的爻位进行二进制翻转($0 \to 1, 1 \to 0$),生成新的经卦。
    3. 将新经卦替换原用卦位置,与不变的体卦重新组合成六爻重卦,即为**【变卦】**。
  • 时间演化三态模型:
    • 用卦:主事之发端,即刻之应;
    • 互卦:主事之中途,过程演变;
    • 变卦:主事之末后,最终结局。

模块四:五行生克与四季旺相休囚死判定

规则 4.1:五行生克吉凶基础矩阵

设体卦五行为 $E_{ti}$,对应各应卦(用卦、体互、用互、变卦)五行为 $E_{other}$:

  1. 用生体($E_{other}$ 生 $E_{ti}$):大吉。主贵人相助,获益匪浅,求谋顺遂。
  2. 体用比和($E_{other} == E_{ti}$):吉。主同道相扶,百事亨通,主客融洽。
  3. 体克用($E_{ti}$ 克 $E_{other}$):小吉/次吉。事虽可成,但劳心费力,多所克制。
  4. 体生用($E_{ti}$ 生 $E_{other}$):不吉/泄气。主损耗盗泄,虚惊劳累,防破耗。
  5. 用克体($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$ 映射至时间颗粒度:

  1. 旦夕暴发之事(花卉、饮食、寻常争斗、鸟兽叫鸣):
    • 时间单位为:时辰 或 日。
  2. 近事/常事(寻人、买卖、婚姻订聘、谋差):
    • 时间单位为:日 或 月。
  3. 久远之事(营建屋宅、造葬坟墓、立业兴替):
    • 时间单位为:月 或 年。

规则 5.3:时令卦气生克定日辰模型(后天干支法)

当需要锁定具体天干地支日期时,采用此规则:

  • 吉事生体之期:
    • 寻找全卦中生扶体卦的五行。
    • 应期必在该五行乘旺之日辰或月令(例如:金为体,土来生之,应在辰、戌、丑、未土日,或戊己日;若金为体见金比和,应在申、酉金日,或庚辛日)。
  • 凶事克体之期:
    • 寻找全卦中克害体卦的五行。
    • 应期必在该克体五行乘旺之日辰或月令(例如:金为体,离火来克,卦无土解救,应在巳、午火旺之日,或丙丁日)。
  • 行人归期:以生体卦、比和卦对应之五行日为归期。

模块六:三要十应外应推演系统

  • 出处:F1 卷二《三要灵应篇》《十应奥论》《十应目论》;F2 卷之二《三要灵应篇》《十应奥论》《十应目论》。

规则 6.1:三要总括

  • 耳(闻声):凡听得之声音,喜笑乐声主吉,悲泣破裂争斗声主凶;
  • 目(见物):凡眼见之形象,物色圆完整洁主吉,残缺破损污秽主凶;
  • 心(神悟):心神灵动,方寸湛然,见兆应机而动。

规则 6.2:十应类属与卦象交互规则

十应作为主卦之外的“客卦/外应环境参数”,将其五行属性带入体用系统参断:

  1. 天时之应:晴明为离(火),阴雨为坎(水),雷霆为震(木),风顺为巽(木),雪霜为乾兑(金)。
  2. 地理之应:高冈丘陵为艮(土),平地原野为坤(土),江河溪流为坎(水),道路森林为震巽(木)。
  3. 人事之应:士人官吏为乾,妇人阴柔为坤,长幼有序,喜庆谈笑为吉应,号泣怒骂为凶兆。
  4. 时令之应:详审当下月日时之五行衰旺。
  5. 方卦之应:来人之方位八卦。
  6. 动物之应:见龙马乾震为吉,见乌鸦坎离为非,见犬吠防盗,见鸡鸣主烹。
  7. 静物之应:见金宝钱帛主财,见刀剑绳索主损伤官非。
  8. 言语之应:旁人所吐言词,字字为谶。
  9. 声音之应:丝竹钟鼓乐声主喜,折木破碗声主凶。
  10. 五色之应:青碧主木,赤紫主火,黄赭主土,素白主金,玄黑主水。

规则 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
    )

本规格书结语:以上条目涵盖了《梅花易数》排卦、体用演化、旺衰克应及断期之全部数理骨架。开发者依据此规范可百分之百还原宋明清三代梅花数术推演体系。