1 我们开始吧
今天的运势如何?
不如来一卦,每天一卦还能以此计时,简直一举两得。 有如此好事为何不做
上一节,我们从树中得到了一爻,还是那样,为了方便,我们把需要的解释做在数据包中
var (
Num = 6 //# 爻数
ICApp = NewICin()
AllowNums = map[int]bool{ //允许的坐标
0: true,
1: true,
2: true,
3: true,
4: true,
5: true,
6: true,
}
Warn = "八卦需要六爻,输入的是:"
//# 朱熹七解
AnySis = map[int]string{
0: " 六爻全不变,以本 卦卦辞占 ----- 不变 只看本卦 ",
1: "一爻变,以本卦变爻的爻辞占 ----- 变卦前 的那一 变爻 含义",
2: " 如果两个爻发生变动,使用本卦的两个变爻占辞判断吉凶,以位置靠上的为主 ----- 变卦前 的 第一变爻 含义",
3: " 三爻变,以本卦及之卦的卦辞占,以本卦的卦辞为主 ----- 变卦前后都看, 本卦及之卦 含义 本卦为主",
4: " 四爻变,以之卦中二不变的爻辞占,以下爻的爻辞为主 ----- 变卦 后 看, 之卦 含义 二不变的爻辞占,以下爻的爻辞为主",
5: " 五爻表,以之卦中不变的爻辞占卜 ----- 变卦 后 看, 之卦 含义 不变的爻辞占 ",
6: " 六爻全变,乾坤两卦以用九和用六的辞占卜,并参考之卦卦辞,余六十二卦占以之卦卦辞 ----- 变卦 后 看, 之卦 含义,乾坤 用九和用六 ,其他卦全看",
}
)
2 准备数据
然后定义64卦解释结构体,及其对应的名称和序号
当然以此为基础,我们还可以添加其他变量,如八字,生辰 从而获得一个取名程序
解卦结构体
type ICh struct {
Num int
Warn string
AnySis map[int]string
}
func NewICin() *ICh {
ic := &ICh{
Num: Num,
Warn: Warn,
AnySis: AnySis,
}
return ic
}
func (ic *ICh) HowAnysis(num int) string {
fmt.Println("朱熹解:")
msg := "变爻:" + string(num) + "\n"
if !AllowNums[num] {
msg += ic.Warn + string(num)
return msg
}
msg += ic.AnySis[num]
fmt.Println(msg)
return msg
}
对比两个列表是否相同 exp: [0,1,1,0,0,1]
func (ic *ICh) CompSlice(firstS, SecSlice []int) bool {
if len(firstS) != len(SecSlice) {
return false
}
for i := 0; i < len(firstS); i++ {
if firstS[i] != SecSlice[i] {
return false
}
}
return true
}
显示 卦象
func (ic *ICh) CommonType(array []int) {
for _, g := range array {
if g == 0 { // # 0 表示阴爻
fmt.Println("__ __ (阴)")
} else if g == 1 { // # 1 表示阳爻
fmt.Println("_____ (阳)")
} else {
fmt.Println("")
}
}
}
解释文本
func (ic *ICh) CommonText(arrays []int) (string, int) {
if len(arrays) != ic.Num {
return ic.Warn + fmt.Sprintf("%v", arrays), 0
}
if ic.CompSlice(arrays, []int{1, 1, 1, 1, 1, 1}) {
return `
第一卦 乾 乾为天 乾上乾下
...........
3, 组合卦象并解卦
在计算运势的结构体中添加计算和解卦函数
6爻卦象 显示原始卦象, 返回卦值 和 第几卦
func (dt *TaoBstManager) KanGuaOrigin(env string) ([]int, int) {
fmt.Printf("%v", start)
guas, bstm := dt.YaoWithReBuild(49, env)
fmt.Println("卦象已出:")
yaos, postionChanges := dt.AnysisYaos(guas)
fmt.Printf("yaos: postionChanges:, %v, %v, bstree:%v\n", yaos, postionChanges, bstm.Size)
anysis, numb := ICApp.CommonText(yaos)
fmt.Printf("第%v 卦, \n %v", numb, anysis)
return yaos, numb
}
4 君子才能算,才可以计算
我们拿不定注意,不知道方向的时候,鲁莽或冲动都不是理智的,推算运势也是古人给我们留下的一点理性的光辉,以此我们可以做到三思而后行,万事多考虑。 也许不至于慌不择路,饥不择食。
调用它
btm := bstdata.BstNew
btm.KanGuaOrigin(env)
卦象已出:
__ __ (6 老阴)
__ __ (8 少阴)
_____ (9 老阳)
_____ (9 老阳)
__ __ (6 老阴)
__ __ (8 少阴)
yaos: postionChanges:, [1 0 0 0 1 0], map[0:true 1:false 2:true 3:true 4:true 5:false], bstree:49
第3 卦,
第三卦 屯 水雷屯 坎上震下
...
5 小结
人路在何方? 没有经费, 难免有错漏,如有兴趣或任何问题,可以留言,提出问题。谢谢。