js-fun / duyijing

https://www.duyijing.cn/
MIT License
1 stars 0 forks source link

data.js code 代码排序 #7

Closed Inc0n closed 1 year ago

Inc0n commented 3 years ago

六十四卦所用的二进制代码顺序与每个卦的爻序相反,例如 “既济”,应以101010表示,而非010101

如此改进后,更容易将六十四卦以文王卦序排列。

freizl commented 1 year ago

@Inc0n 你是说 0为阳 1位阴?

Inc0n commented 1 year ago

我原文中的意思应该是:初爻为最小位数。我当时估计是发现用这样的数序文王卦序会更容易排列。

例子:原数序

“既济” = 101010

改进后(相反)

“既济” = 010101

freizl commented 1 year ago

如果取 1为阳 0位阴 初爻在最小位, 那么 既济 应该是: 010101

https://github.com/js-fun/duyijing/blob/master/app/scripts/data/data.js#L1196

freizl commented 1 year ago

这是我设置的八卦代码: https://github.com/js-fun/duyijing/blob/master/app/scripts/data/data.js#L1238 然后是生成64卦时,上卦在左,下卦在右。

Inc0n commented 1 year ago

抱歉,我采用 “既济”是一个不好的例子,再从我原先的代码翻举“屯”为例,应该可以更容易看出我的意思。

code = "100010",
name = "屯"

相比较于 https://github.com/js-fun/duyijing/blob/f3a03d5873ad96ac81831b89ea9cf97d6793d413/app/scripts/data/data_zh-cn.js#L55

然后我当时的发现是:这样的卦数序可以更容易的用文王卦序排 data.js 中的六十四卦

freizl commented 1 year ago

所以你把 第一位做为初爻? 怎么理解这样更容易排序文王卦序

Inc0n commented 1 year ago

抱歉,我反复的翻查以前的代码,已经看不出原因了。其实 data.js 的原序就是文王序,初爻第一这样不会对文王序有任何影响。所以我觉得我肯定哪里出错了。唯一有可能的是这样可以更容易排算,宫变卦序。

freizl commented 1 year ago

👍 btw, 我把数据(json)发布成独立的包: https://www.npmjs.com/package/@freizl/yijing 数据结构略有修改,从Object改成Array,这样可以简单的保证文王卦序,也可以简单的生成以卦名或者ID的hash map。

Inc0n commented 1 year ago

这样就不需要从这个repo中提取data.js 👍

Inc0n commented 1 year ago

前人栽树,后人乘凉。造福后来学者