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

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

文档性质:软件工程算法规格说明书(Software Engineering Specification)
面向目标:供计算机程序、自动化排卦引擎与易学专家系统开发使用。将古籍中的占验话语彻底形式化为“输入参数 -> 计算逻辑 -> 边界条件 -> 输出卦象与断语模型”的确定性工程接口。
比对底本:

  • 底本一(F1):清代坊刻三卷本系统(本地路径:/home/lewin/@Sync/Casket/obsidian/lewin/raw/古籍/术数/梅花易数.md,殆知阁古代文献版,题“清黄宗羲撰序”)。
  • 底本二(F2):清代故宫珍藏秣陵德聚堂五卷本系统(本地路径:/home/lewin/@Sync/Casket/obsidian/lewin/raw/web/梅花易数-邵康节.md,周浩良整理、九州出版社版,署“秣陵德聚堂谨订”)。
    标注规范:凡两版本在字句、算法、篇章结构上存异处,均显式加注 [版本差异],并在条目末尾给出明确的 [采信建议与工程实现决策]。

模块零:核心常数与标准数据结构定义(参数写死)

在梅花易数算法体系中,所有逻辑均基于先天八卦数及六十四卦二进制位结构。程序内部需预先固化以下常量表:

0.1 八卦先天数与卦画结构表

先天卦数 卦名 卦象 爻象(自下而上) 爻位数组 [初, 二, 三] 位权值 (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 标准模运算定义(写死)

古籍云:“卦以八除,爻以六除。如不满数,止用此数;如过数,则递除之;直除尽,以零数作卦/动爻;如得整除之数,卦取坤八,爻取上六。”


模块一:起卦诸法(完整技术规则与算法)

梅花易数起卦两大门派为:先天起卦(先得数,以数起卦)与后天端法起卦(先见象,以象起卦)。

规则 1.1:年月日时起卦法(先天时间起卦)

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

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

规则 1.4:文字起卦法(一字至百余字系统)

规则 1.4.1:一字占(楷书偏旁拆分笔画法)

规则 1.4.2:二字占(两仪平分法)

规则 1.4.3:三字占(三才拆分法)

规则 1.4.4:四字至十字占(中古四声平仄调声法)

规则 1.4.5:十一字以上至百余字占(纯字数法)

规则 1.5:丈尺与尺寸占法

规则 1.6:为人占与自己占(起卦触发源规则)

规则 1.7:后天端法起卦(物卦起例)

规则 1.8:起卦加数消除冲突法(并发/同时间多人去重算法)


模块二:动爻求法与判定规则

动爻是决定重卦吉凶运动、体用划分及变卦演化的唯一动力核心。

规则 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:动爻状态翻转算法


模块三:体用判定、互卦与变卦推演算法

规则 3.1:体用判定规则(动静分体用)

规则 3.2:互卦生成算法(取中爻交错)

规则 3.3:特殊边界:“乾坤无互,互其变卦”

规则 3.4:变卦生成算法


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

规则 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:体用乘旺消长评估权重算法


模块五:断应期法则(克期数学模型)

规则 5.1:数理推应期模型(先天动静法)

规则 5.2:事端长短决定时间单位

根据被占事物的物理与社会生命周期,将 $\text{期数 } TimeCount$ 映射至时间颗粒度:

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

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

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


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

规则 6.1:三要总括

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

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

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

规则 6.3:外应融入体用计算规则


模块七:两底本版本差异比对与工程实现采信决策汇总表

序号 规则模块 底本一(殆知阁三卷本系统) 底本二(故宫秣陵德聚堂五卷本) [版本差异考订] [工程实现采信决策]
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
    )

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


版本号 #2
由 Admin 创建于 2026-09-08 13:50:29 CST
由 Admin 更新于 2026-09-08 13:51:07 CST