Skip to content

Commit 97c0a56

Browse files
authored
Merge pull request #2 from godcong/pr/1
pr/1
2 parents e4a1446 + b6a132d commit 97c0a56

File tree

10 files changed

+196
-91
lines changed

10 files changed

+196
-91
lines changed

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# YI 周易算法
1+
# YI 周易算法 #
22

33

44
TimeQiGua()
@@ -12,3 +12,8 @@ NumberQiGua()
1212
下卦:int
1313
上卦:int
1414
变数:int
15+
16+
17+
### [数理简介](./docs/数理简介.md) ###
18+
### [八卦](https://baike.baidu.com/item/%E5%85%AB%E5%8D%A6/166475?sefr=cr) ###
19+
### [六十四卦](https://baike.baidu.com/item/%E5%85%AD%E5%8D%81%E5%9B%9B%E5%8D%A6) ###

dayan.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ var daYanList map[int]*DaYan
2121
func init() {
2222
daYanList = make(map[int]*DaYan)
2323

24-
file_81shu, err := DataFiles.Open("data/81shu.csv")
24+
file81shu, err := DataFiles.Open("data/81shu.csv")
2525
if err != nil {
2626
panic(err)
2727
}
2828

29-
records, err := readData(file_81shu)
29+
records, err := readData(file81shu)
3030

3131
if err != nil {
3232
panic(err)
@@ -57,7 +57,7 @@ func init() {
5757
}
5858
}
5959

60-
//IsNotSuitableSex 女性不宜此数
60+
// IsNotSuitableGirl 女性不宜此数
6161
func (dy DaYan) IsNotSuitableGirl() bool {
6262
return dy.NvMing == "凶"
6363
}

docs/数理简介.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717
对原有卦象取爻变(对应线取反)即得变卦,通常预示着所占卜之事的最终结果,
1818

1919
后边八卦由上下两卦生成八十一象,称为“矩”,与《老子》、《道德经》中81章对应,
20-
这部分,[《八卦九象和《老子》的创作方法、分章及章序》](https://zhuanlan.zhihu.com/p/90606767)有详述,
20+
这部分,[《八卦九象和《老子》的创作方法、分章及章序》](https://zhuanlan.zhihu.com/p/90606767) 有详述,
2121

2222
本项目对于81象吉凶以“大衍之数”冠名

go.mod

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
module yi
22

33
go 1.16
4-
5-
replace github.com/godcong/yi => ../yi

guaxiang.go

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,46 @@ import (
55
"strconv"
66
)
77

8+
type Yao int
9+
10+
const (
11+
ChuYao Yao = iota
12+
ErYao
13+
SanYao
14+
SiYao
15+
WuYao
16+
ShangYao
17+
YaoMax
18+
)
19+
820
//GuaXiang 卦象
921
type GuaXiang struct {
10-
GuaXu int //卦序
11-
ShangGua string //上卦
12-
ShangShu int //上卦数
13-
XiaGua string //下卦
14-
XiaShu int //下卦数
15-
JiXiong string //吉凶(?)
16-
GuaXiang string //卦象
17-
GuaMing string //卦名
18-
GuaYi string //卦意(邵雍)
19-
FuHao string //符号
20-
GuaYaos [6]*GuaYao //初,二,三,四,五,上
21-
Yong string //用九,用六
22-
YongJiXiong string //用九,用六吉凶
22+
GuaXu int //卦序
23+
ShangGua string //上卦
24+
ShangShu int //上卦数
25+
XiaGua string //下卦
26+
XiaShu int //下卦数
27+
JiXiong string //吉凶(?)
28+
GuaXiang string //卦象
29+
GuaMing string //卦名
30+
GuaYi string //卦意(邵雍)
31+
FuHao string //符号
32+
GuaYaos [YaoMax]*GuaYao //初,二,三,四,五,上
33+
Yong string //用九,用六
34+
YongJiXiong string //用九,用六吉凶
2335
}
2436

2537
var gx map[string]*GuaXiang
2638

2739
func init() {
2840
gx = make(map[string]*GuaXiang)
2941

30-
file_64gua, err := DataFiles.Open("data/64gua.csv")
42+
file64gua, err := DataFiles.Open("data/64gua.csv")
3143
if err != nil {
3244
panic(err)
3345
}
3446

35-
records, err := readData(file_64gua)
47+
records, err := readData(file64gua)
3648

3749
if err != nil {
3850
panic(err)
@@ -109,19 +121,19 @@ func init() {
109121
}
110122
guaxiang.GuaYaos[5] = &guyao6
111123

112-
gx_index := record[1]
113-
if len(gx_index) < 1 {
124+
gxIndex := record[1]
125+
if len(gxIndex) < 1 {
114126
panic("index is wrong")
115127
}
116128

117-
gx[gx_index] = &guaxiang
129+
gx[gxIndex] = &guaxiang
118130
}
119131
}
120132

121133
func getGuaXiangs() map[string]*GuaXiang {
122134
return gx
123135
}
124136

125-
func GetGuaXiang(gua_idx string) *GuaXiang {
126-
return gx[gua_idx]
137+
func GetGuaXiang(guaIdx string) *GuaXiang {
138+
return gx[guaIdx]
127139
}

guaxiang_test.go

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,50 @@ import (
44
"testing"
55
)
66

7-
func TestGetGuaXiang(t *testing.T) {
8-
if len(getGuaXiangs()) != 64 {
9-
t.Log("not enough", getGuaXiangs())
7+
func TestGetGuaXiang1(t *testing.T) {
8+
gx := getGuaXiangs()
9+
if len(gx) != 64 {
10+
t.Fatal("not enough", len(gx))
11+
}
12+
for i := range gx {
13+
t.Logf("idx(%+v):%+v", i, gx[i])
1014
}
15+
}
1116

17+
func TestGetGuaXiang(t *testing.T) {
18+
type args struct {
19+
guaIdx string
20+
}
21+
tests := []struct {
22+
name string
23+
args args
24+
want *GuaXiang
25+
}{
26+
// TODO: Add more cases.
27+
{
28+
name: "",
29+
args: args{
30+
guaIdx: "兑艮",
31+
},
32+
want: &GuaXiang{
33+
GuaXu: 31,
34+
ShangShu: 1,
35+
XiaShu: 6,
36+
},
37+
},
38+
}
39+
for _, tt := range tests {
40+
t.Run(
41+
tt.name, func(t *testing.T) {
42+
got := GetGuaXiang(tt.args.guaIdx)
43+
t.Logf("卦象:%+v", got)
44+
if got.ShangShu != tt.want.ShangShu {
45+
t.Errorf("GetGuaXiang() = %v, want %v", got, tt.want)
46+
}
47+
if got.XiaShu != tt.want.XiaShu {
48+
t.Errorf("GetGuaXiang() = %v, want %v", got, tt.want)
49+
}
50+
},
51+
)
52+
}
1253
}

guayao.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ func getGuaYao(xiang *GuaXiang, yao int) GuaYao {
1717
return *xiang.GuaYaos[yao]
1818
}
1919

20+
//FilterYao 过滤爻
2021
func (y *Yi) FilterYao(sex Sex, fs ...string) bool {
2122
yao := getGuaYao(y.Get(BianGua), y.BianYao())
2223
for _, s := range fs {
@@ -35,6 +36,7 @@ func (y *Yi) FilterYao(sex Sex, fs ...string) bool {
3536
return true
3637
}
3738

39+
//IsLucky 是否为吉
3840
func (y *Yi) IsLucky(sex Sex) bool {
3941
yao := getGuaYao(y.Get(BianGua), y.BianYao())
4042

wuxing.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package yi
22

3+
type YingYang int
4+
35
const (
4-
Yin = 1
5-
Yang = 0
6+
Yin YingYang = 1 //阴
7+
Yang YingYang = 0 //阳
68
)
79

810
const (
@@ -22,29 +24,28 @@ const wuXingList string = "水木木火火土土金金水"
2224

2325
//五行
2426
const (
25-
MU int = iota + 1
26-
HUO
27-
TU
28-
JIN
29-
SHUI
27+
MU int = iota + 1 //木
28+
HUO //火
29+
TU //土
30+
JIN //金
31+
SHUI //水
3032
)
3133

32-
func YinYang(i int) int {
33-
if i%2 == Yang {
34+
func ModeYinYang(i int) YingYang {
35+
if i%2 == 0 {
3436
return Yang
3537
}
3638
return Yin
3739
}
3840

39-
func YinYangAttr(i int) string {
40-
if YinYang(i) == Yang {
41+
func (yy YingYang) String() string {
42+
if yy == 0 {
4143
return YangStr
4244
}
43-
4445
return YinStr
4546
}
4647

47-
// GenerateThreeTalent 计算字符的三才属性
48+
// NumberWuXing 计算字符的三才属性
4849
// 1-2木:1为阳木,2为阴木
4950
// 3-4火:3为阳火,4为阴火
5051
// 5-6土:5为阳土,6为阴土

0 commit comments

Comments
 (0)