4 分•作者: mrauha•3 个月前
返回首页
最新
1 分•作者: hitechist•3 个月前
1 分•作者: alex20465•3 个月前
2 分•作者: tosh•3 个月前
1 分•作者: hunglee2•3 个月前
1 分•作者: tieanderson•3 个月前
1 分•作者: kzekiue•3 个月前
1 分•作者: fagnerbrack•3 个月前
2 分•作者: Jincheng-xie•3 个月前
我为《易经》(六爻)起卦构建了一个确定性引擎,并开源了核心部分(Apache-2.0)。我需要说明的是,这里有趣的部分并非占卜本身,而是一个测试问题,我希望就我处理这个问题的方式获得反馈。
该引擎接收一个时间点和一次抛硬币的结果,然后机械地生成一个完整的注解图:卦象、其所属的宫、纳甲(najia)的干支分配、“六亲”、变爻、空亡日以及爻的强弱骨架。它不进行任何解释,只输出硬性的、机械的事实。
使这个问题变得有趣的原因在于:规则大约有3000年的历史,是用文言文写成的,而且不同的学派之间存在矛盾。没有官方的答案集,人类专家意见不一,有时也会出错。因此,我自然会写的测试只是编码了我代码所做的假设——如果我误读了一条规则,代码和它的测试会一起出错,并且两者都会保持绿色通过。这就是所谓的“自我验证悖论”。
我的解决办法是与独立的“预言家”(oracle)进行差异测试。我将卦象的每个字段与 `najia`(一个独立的 MIT 实现)和一个第二台机器可读的规则表进行比较,在 CI 中使用随机但有种子的样本。只有当三者都一致时,一个字段才被认为是可信的。日历层(这是零容忍的——一个日柱错误一天就会悄无声息地破坏所有下游内容)有自己的差异测试,sxtwl 对比 lunar-python,重点关注棘手的边界:节气月份的划分、23:00 的日期变更以及跨时区的起卦。
这个原则最终驱动了设计:任何无法独立交叉验证的东西都不会进入核心。这就是为什么传统的“神煞”、真太阳时校正以及学派混合都被刻意排除在外——不是因为它们“错误”,而是因为我无法证明代码正确计算了它们。
我身处 UTC+8(中国),所以在您白天的时候,我的回复可能会延迟几个小时——但我醒着的时候会全天在线。我很乐意深入探讨其中的任何内容。
82 分•作者: MrVandemar•3 个月前
1 分•作者: matesz•3 个月前
1 分•作者: mcpcustoms•3 个月前
1 分•作者: aperturecjs•3 个月前
1 分•作者: Dakkshin•3 个月前
1 分•作者: matt_d•3 个月前
1 分•作者: ruslan_qm•3 个月前
1 分•作者: grandimam•3 个月前
1 分•作者: hieuha•3 个月前
2 分•作者: JumpCrisscross•3 个月前
3 分•作者: sidcool•3 个月前