-
Notifications
You must be signed in to change notification settings - Fork 4
/
IChing.py
323 lines (285 loc) · 59.1 KB
/
IChing.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
# -*- coding: utf-8 -*-
"""
I-CHING package
by https://github.com/SHMoney2021
周易蓍草占卜过程:
大衍之数五十,其用四十有九。分而为二以象两,挂一以象三,揲之以四以象四时,归奇于扐以象闰;\
五岁再闰,故再扐而后挂。天数五,地数五。五位相得而各有合。天数二十有五,地数三十,凡天地之数五十有五。\
此所以成变化而行鬼神也。乾之策二百一十有六,坤之策百四十有四,凡三百有六十,当期之日。\
二篇之策,万有一千五百二十,当万物之数也。是故四营而成《易》,十有八变而成卦,八卦而小成。\
引而伸之,触类而长之,天下之能事毕矣。显道神德行,是故可与酬酢,可与祐神矣。\
子曰:“知变化之道者,其知神之所为乎?”
解析:
三变得一爻,十八变得一卦,为本卦,本卦老阳老阴爻变得到变卦,本卦+变卦即为占卜结果
得到一爻的过程:(50 - 1) - [5, 9] - [4, 8] - [4, 8] = [24, 28, 32, 36]
本代码占卜流程示例(泰 之 颐):
1. 按初爻到上爻顺序算得本卦 [7, 9, 9, 8, 8, 6],从而变卦为 [7, 6, 6, 8, 8, 9]
2. 本卦变换为字符串'111000',外卦'000'为地, 内卦'111'为天,查表'111000'得到本卦卦名 '泰'
3. 变卦变换为字符串'100001',外卦'001'为山, 内卦'100'为雷,查表'100001'得到变卦卦名 '颐'
4. 因此占卜结果为:泰 之 颐
5. 根据变爻选择判词(7种情况之一)
todo list:
1. 图形化占卜过程(动态图像显示蓍草占卜全过程)
2. 优化数据结构
3. 添加通过网络展示功能
"""
import time
from collections import Counter
from random import randint
import numpy as np
from turtle import *
# IChing类 - 封装占卜操作
class IChing():
# 算得本卦及变卦
# 结果:['011011', '111001']
@staticmethod
def get_guas() -> list:
# 按初爻到上爻顺序算得本卦
gua = [IChing._get_yao() for x in range(6)]
gua_b = ''.join([str(x % 2) for x in gua])
# 按初爻到上爻顺序算得变卦
BIAN69 = {6: 9, 9: 6, 7: 7, 8: 8}
gua2 = [BIAN69[x] for x in gua]
gua_c = ''.join([str(x % 2) for x in gua2])
return [gua_b, gua_c]
# 查询卦名
# 结果:'巽'
@staticmethod
def get_gua_name(gua) -> str:
return IChingData.gua_name(gua)
# 查询卦象
# 结果:'风风'
@staticmethod
def get_gua_xiang(gua) -> str:
return IChingData.gua_xiang(gua)
# 根据本卦及变卦得到占卜结果
# 结果采用朱熹总结的七种情况返回卦辞或爻辞
@staticmethod
def get_results(gua_b, gua_c) -> list:
# 本卦
result_guas = IChing.get_gua_name(gua_b)
# 变卦
if gua_b != gua_c:
result_guas += ' 之 ' + IChing.get_gua_name(gua_c)
# 判辞
result_text = IChing._get_gua_ci(gua_b, gua_c)
return [result_guas, result_text]
# 算得一变
# 结果:1st[5, 9] 2nd[4, 8] 3rd[4, 8]
@staticmethod
def _get_bian(shicao_nums) -> int:
# 限定在中间值[-10, 10]之间模拟实际占卜过程,实际中随意两分不会差异太大
# tian_num = randint(shicao_nums // 2 - 10, shicao_nums // 2 + 10)
tian_num = randint(1, shicao_nums - 2)
di_num = shicao_nums - tian_num
di_num -= 1
tian_num = tian_num % 4
if tian_num == 0:
tian_num = 4
di_num = di_num % 4
if di_num == 0:
di_num = 4
return tian_num + di_num + 1
# 算得一爻
# 结果: [6, 7, 8, 9]
@staticmethod
def _get_yao() -> int:
shicao_nums = 50
shicao_nums -= 1
# 三变得一爻
bian1st = IChing._get_bian(shicao_nums)
assert bian1st in [5, 9]
shicao_nums -= bian1st
bian2nd = IChing._get_bian(shicao_nums)
assert bian2nd in [4, 8]
shicao_nums -= bian2nd
bian3rd = IChing._get_bian(shicao_nums)
assert bian3rd in [4, 8]
shicao_nums -= bian3rd
assert shicao_nums in [24, 28, 32, 36]
return shicao_nums // 4
# 卦辞爻辞
@staticmethod
def _get_gua_ci(gua_b, gua_c) -> str:
gua, yao = IChing._get_yao_pos(gua_b, gua_c)
return IChingData.gua_ci(gua, yao)
# 变爻 用朱熹总结的七种情况得到占卜判辞
@staticmethod
def _get_yao_pos(gua_b, gua_c) -> list:
L = []
for i in range(6):
if gua_b[i] != gua_c[i]:
L.append(i+1)
n = len(L)
# 0变爻 - 本卦卦辞
if n == 0:
return [gua_b, 0]
# 1变爻 - 本卦变爻爻辞
elif n == 1:
return [gua_b, L[0]]
# 2变爻 - 本卦靠上变爻爻辞
elif n == 2:
return [gua_b, L[1]]
# 3变爻 - 本卦卦辞
elif n == 3:
return [gua_b, 0]
# 4变爻 - 变卦靠上不变爻爻辞
elif n == 4:
return [gua_c, [x for x in range(1, 7) if x not in L][1]]
# 5变爻 - 变卦不变爻爻辞
elif n == 5:
return [gua_c, [x for x in range(1, 7) if x not in L][0]]
# 6变爻 - 乾卦坤卦用九 其它变卦卦辞
elif n == 6:
if gua_b == '111111' or gua_b == '000000':
return [gua_b, 7]
else:
return [gua_c, 0]
# IChingData类 - 封装卦爻数据
class IChingData():
DICT_GUA2NAME = {'111111': '乾', '000000': '坤', '100010': '屯', '010001': '蒙', '111010': '需', '010111': '讼',
'010000': '师', '000010': '比', '111011': '小畜', '110111': '履', '111000': '泰', '000111': '否',
'101111': '同人', '111101': '大有', '001000': '谦', '000100': '豫', '100110': '随', '011001': '蛊',
'110000': '临', '000011': '观', '100101': '噬嗑', '101001': '贲', '000001': '剥', '100000': '复',
'100111': '无妄', '111001': '大畜', '100001': '颐', '011110': '大过', '010010': '坎', '101101': '离',
'001110': '咸', '011100': '恒', '001111': '遯', '111100': '大壮', '000101': '晋', '101000': '明夷',
'101011': '家人', '110101': '睽', '001010': '蹇', '010100': '解', '110001': '损', '100011': '益',
'111110': '夬', '011111': '姤', '000110': '萃', '011000': '升', '010110': '困', '011010': '井',
'101110': '革', '011101': '鼎', '100100': '震', '001001': '艮', '001011': '渐', '110100': '归妹',
'101100': '丰', '001101': '旅', '011011': '巽', '110110': '兑', '010011': '涣', '110010': '节',
'110011': '中孚', '001100': '小过', '101010': '既济', '010101': '未济'}
DICT_GUA2XIANG = {'111111': '天天', '000000': '地地', '100010': '水雷', '010001': '山水', '111010': '水天', '010111': '天水',
'010000': '地水', '000010': '水地', '111011': '风天', '110111': '天泽', '111000': '地天', '000111': '天地',
'101111': '天火', '111101': '火天', '001000': '地山', '000100': '雷地', '100110': '泽雷', '011001': '山风',
'110000': '地泽', '000011': '风地', '100101': '火雷', '101001': '山火', '000001': '山地', '100000': '地雷',
'100111': '天雷', '111001': '山天', '100001': '山雷', '011110': '泽风', '010010': '水水', '101101': '火火',
'001110': '泽山', '011100': '雷风', '001111': '天山', '111100': '雷天', '000101': '火地', '101000': '地火',
'101011': '风火', '110101': '火泽', '001010': '水山', '010100': '雷水', '110001': '山泽', '100011': '风雷',
'111110': '泽天', '011111': '天风', '000110': '泽地', '011000': '地风', '010110': '泽水', '011010': '水风',
'101110': '泽火', '011101': '火风', '100100': '雷雷', '001001': '山山', '001011': '风山', '110100': '雷泽',
'101100': '雷火', '001101': '火山', '011011': '风风', '110110': '泽泽', '010011': '风水', '110010': '水泽',
'110011': '风泽', '001100': '雷山', '101010': '水火', '010101': '火水'}
# 卦辞、爻辞查询
# {卦: {0卦辞 1-6爻辞 7乾坤卦用九用六}}
DICT_GUA2TEXT = {'111111': {0: '乾:元亨,利贞。', 1: '初九:潜龙,勿用。', 2: '九二:见龙在田,利见大人。', 3: '九三:君子终日乾乾,夕惕若,厉,无咎。', 4: '九四:或跃在渊,无咎。', 5: '九五:飞龙在天,利见大人。', 6: '上九:亢龙有悔。', 7: '用九:见群龙无首,吉。'},
'000000': {0: '坤:元亨,利牝马之贞。君子有攸往,先迷后得主,利西南得朋,东北丧朋。安贞,吉。', 1: '初六:履霜,坚冰至。', 2: '六二:直,方,大,不习无不利。', 3: '六三:含章可贞。或从王事,无成有终。', 4: '六四:括囊;无咎,无誉。', 5: '六五:黄裳,元吉。', 6: '上六:龙战于野,其血玄黄。', 7: '用六:利永贞。'},
'100010': {0: '屯:元亨,利贞,勿用有攸往,利建侯。', 1: '初九:磐桓;利居贞,利建侯。', 2: '六二:屯如邅如,乘马班如。匪寇婚媾,女子贞不字,十年乃字。', 3: '六三:即鹿无虞,惟入于林中,君子几不如舍,往吝。', 4: '六四:乘马班如,求婚媾,往吉,无不利。', 5: '九五:屯其膏,小贞吉,大贞凶。', 6: '上六:乘马班如,泣血涟如。'},
'010001': {0: '蒙:亨。匪我求童蒙,童蒙求我。初筮告,再三渎,渎则不告。利贞。', 1: '初六:发蒙,利用刑人,用说桎梏,以往吝。', 2: '九二:包蒙吉;纳妇吉;子克家。', 3: '六三:勿用取女;见金夫,不有躬,无攸利。', 4: '六四:困蒙,吝。', 5: '六五:童蒙,吉。', 6: '上九:击蒙;不利为寇,利御寇。'}, '111010': {0: '需:有孚,光亨,贞吉。利涉大川。', 1: '初九:需于郊。利用恒,无咎。', 2: '九二:需于沙。小有言,终吉。', 3: '九三:需于泥,致寇至。', 4: '六四:需于血,出自穴。', 5: '九五:需于酒食,贞吉。', 6: '上六:入于穴,有不速之客三人来,敬之终吉。'}, '010111': {0: '讼:有孚,窒。惕中吉。终凶。利见大人,不利涉大川。', 1: '初六:不永所事,小有言,终吉。', 2: '九二:不克讼,归而逋,其邑人三百户,无眚。', 3: '六三:食旧德,贞厉,终吉,或从王事,无成。', 4: '九四:不克讼,复即命渝,安贞吉。', 5: '九五:讼元吉。', 6: '上九:或锡之鞶带,终朝三褫之。'}, '010000': {0: '师:贞,丈人,吉无咎。', 1: '初六:师出以律,否臧凶。', 2: '九二:在师中吉,无咎,王三锡命。', 3: '六三:师或舆尸,凶。', 4: '六四:师左次,无咎。', 5: '六五:田有禽,利执言,无咎。长子帅师,弟子舆尸,贞凶。', 6: '上六:大君有命,开国承家,小人勿用。'}, '000010': {0: '比:吉。原筮元永贞,无咎。不宁方来,后夫凶。', 1: '初六:有孚,比之,无咎。有孚盈缶,终来有它吉。', 2: '六二:比之自内,贞吉。', 3: '六三:比之匪人。', 4: '六四:外比之,贞吉。', 5: '九五:显比,王用三驱,失前禽。邑人不诫,吉。', 6: '上六:比之无首,凶。'}, '111011': {0: '小畜:亨。密云不雨,自我西郊。', 1: '初九:复自道,何其咎,吉。', 2: '九二:牵复,吉。', 3: '九三:舆说辐,夫妻反目。', 4: '六四:有孚,血去惕出,无咎。', 5: '九五:有孚挛如,富以其邻。', 6: '上九:既雨既处,尚德载,妇贞厉。月几望,君子征凶。'}, '110111': {0: '履虎尾,不咥人,亨。', 1: '初九:素履,往无咎。', 2: '九二:履道坦坦,幽人贞吉。', 3: '六三:眇能视,跛能履,履虎尾,咥人,凶。武人为于大君。', 4: '九四:履虎尾,诉诉,终吉。', 5: '九五:夬履,贞厉。', 6: '上九:视履考祥,其旋元吉。'}, '111000': {0: '泰:小往大来,吉亨。', 1: '初九:拔茅茹,以其汇,征吉。', 2: '九二:包荒,用冯河,不遐遗,朋亡,得尚于中行。', 3: '九三:无平不陂,无往不复,艰贞无咎。勿恤其孚,于食有福。', 4: '六四:翩翩,不富,以其邻,不戒以孚。', 5: '六五:帝乙归妹,以祉元吉。', 6: '上六:城复于隍,勿用师。自邑告命,贞吝。'}, '000111': {0: '否之匪人,不利君子贞,大往小来。', 1: '初六:拔茅茹,以其汇,贞吉亨。', 2: '六二:包承。小人吉,大人否,亨。', 3: '六三:包羞。', 4: '九四:有命,无咎,畴离祉。', 5: '九五:休否,大人吉。其亡其亡,系于苞桑。', 6: '上九:倾否,先否后喜。'}, '101111': {0: '同人于野,亨。利涉大川,利君子贞。', 1: '初九:同人于门,无咎。', 2: '六二:同人于宗,吝。', 3: '九三:伏戎于莽,升其高陵,三岁不兴。', 4: '九四:乘其墉,弗克攻,吉。', 5: '九五:同人,先号啕而后笑。大师克相遇。', 6: '上九:同人于郊,无悔。'}, '111101': {0: '大有:元亨。', 1: '初九:无交害,匪咎,艰则无咎。', 2: '九二:大车以载,有攸往,无咎。', 3: '九三:公用亨于天子,小人弗克。', 4: '九四:匪其彭,无咎。', 5: '六五:厥孚交如,威如;吉。', 6: '上九:自天佑之,吉无不利。'}, '001000': {0: '谦:亨,君子有终。', 1: '初六:谦谦君子,用涉大川,吉。', 2: '六二:鸣谦,贞吉。', 3: '九三:劳谦,君子有终,吉。', 4: '六四:无不利,撝谦。', 5: '六五:不富,以其邻,利用侵伐,无不利。', 6: '上六:鸣谦,利用行师,征邑国。'}, '000100': {0: '豫:利建侯,行师。', 1: '初六:鸣豫,凶。', 2: '六二:介于石,不终日,贞吉。', 3: '六三:盱豫,悔。迟有悔。', 4: '九四:由豫,大有得。勿疑。朋盍簪。', 5: '六五:贞疾,恒不死。', 6: '上六:冥豫,成有渝,无咎。'}, '100110': {0: '随:元亨利贞,无咎。', 1: '初九:官有渝,贞吉。出门交有功。', 2: '六二:系小子,失丈夫。', 3: '六三:系丈夫,失小子。随有求得,利居贞。', 4: '九四:随有获,贞凶。有孚在道,以明,何咎。', 5: '九五:孚于嘉,吉。', 6: '上六:拘系之,乃从维之。王用亨于西山。'}, '011001': {0: '蛊:元亨,利涉大川。先甲三日,后甲三日。', 1: '初六:干父之蛊,有子,考无咎,厉终吉。', 2: '九二:干母之蛊,不可贞。', 3: '九三:干父之蛊,小有悔,无大咎。', 4: '六四:裕父之蛊,往见吝。', 5: '六五:干父之蛊,用誉。', 6: '上九:不事王侯,高尚其事。'}, '110000': {0: '临:元,亨,利,贞。至于八月有凶。', 1: '初九:咸临,贞吉。', 2: '九二:咸临,吉无不利。', 3: '六三:甘临,无攸利。既忧之,无咎。', 4: '六四:至临,无咎。', 5: '六五:知临,大君之宜,吉。', 6: '上六:敦临,吉无咎。'}, '000011': {0: '观:盥而不荐,有孚顒若。', 1: '初六:童观,小人无咎,君子吝。', 2: '六二:闚观,利女贞。', 3: '六三:观我生,进退。', 4: '六四:观国之光,利用宾于王。', 5: '九五:观我生,君子无咎。', 6: '上九:观其生,君子无咎。'}, '100101': {0: '噬嗑:亨。利用狱。', 1: '初九:屦校灭趾,无咎。', 2: '六二:噬肤灭鼻,无咎。', 3: '六三:噬腊肉,遇毒;小吝,无咎。', 4: '九四:噬乾胏,得金矢,利艰贞,吉。', 5: '六五:噬乾肉,得黄金,贞厉,无咎。', 6: '上九:何校灭耳,凶。'}, '101001': {0: '贲:亨。小利有攸往。', 1: '初九:贲其趾,舍车而徒。', 2: '六二:贲其须。', 3: '九三:贲如濡如,永贞吉。', 4: '六四:贲如皤如,白马翰如,匪寇婚媾。', 5: '六五:贲于丘园,束帛戋戋,吝,终吉。', 6: '上九:白贲,无咎。'}, '000001': {0: '剥:不利有攸往。', 1: '初六:剥床以足,蔑贞凶。', 2: '六二:剥床以辨,蔑贞凶。', 3: '六三:剥之,无咎。', 4: '六四:剥床以肤,凶。', 5: '六五:贯鱼,以宫人宠,无不利。', 6: '上九:硕果不食,君子得舆,小人剥庐。'}, '100000': {0: '复:亨。出入无疾,朋来无咎。反复其道,七日来复,利有攸往。', 1: '初九:不远复,无祗悔,元吉。', 2: '六二:休复,吉。', 3: '六三:频复,厉无咎。', 4: '六四:中行独复。', 5: '六五:敦复,无悔。', 6: '上六:迷复,凶,有灾眚。用行师,终有大败,以其国君,凶;至于十年,不克征。'}, '100111': {0: '无妄:元亨,利贞。其匪正有眚,不利有攸往。', 1: '初九:无妄,往吉。', 2: '六二:不耕获,不灾畲,则利有攸往。', 3: '六三:无妄之灾,或系之牛,行人之得,邑人之灾。', 4: '九四:可贞,无咎。', 5: '九五:无妄之疾,勿药有喜。', 6: '上九:无妄,行有眚,无攸利。'}, '111001': {0: '大畜:利贞,不家食吉,利涉大川。', 1: '初九:有厉利已。', 2: '九二:舆说輹。', 3: '九三:良马逐,利艰贞。曰闲舆卫,利有攸往。', 4: '六四:童牛之牿,元吉。', 5: '六五:豶豕之牙,吉。', 6: '上九:何天之衢,亨。'}, '100001': {0: '颐:贞吉。观颐,自求口实。', 1: '初九:舍尔灵龟,观我朵颐,凶。', 2: '六二:颠颐,拂经,于丘颐,征凶。', 3: '六三:拂颐,贞凶,十年勿用,无攸利。', 4: '六四:颠颐,吉,虎视眈眈,其欲逐逐,无咎。', 5: '六五:拂经,居贞吉,不可涉大川。', 6: '上九:由颐,厉吉,利涉大川。'}, '011110': {0: '大过:栋桡,利有攸往,亨。', 1: '初六:藉用白茅,无咎。', 2: '九二:枯杨生稊,老夫得其女妻,无不利。', 3: '九三:栋桡,凶。', 4: '九四:栋隆,吉;有它吝。', 5: '九五:枯杨生华,老妇得士夫,无咎无誉。', 6: '上六:过涉灭顶,凶,无咎。'}, '010010': {0: '坎:习坎,有孚,维心亨,行有尚。', 1: '初六:习坎,入于坎窞,凶。', 2: '九二:坎有险,求小得。', 3: '六三:来之坎坎,险且枕,入于坎窞,勿用。', 4: '六四:樽酒簋贰,用缶,纳约自牖,终无咎。', 5: '九五:坎不盈,祗既平,无咎。', 6: '上六:系用徽纆,置于丛棘,三岁不得,凶。'}, '101101': {0: '离:利贞,亨。畜牝牛,吉。', 1: '初九:履错然,敬之无咎。', 2: '六二:黄离,元吉。', 3: '九三:日昃之离,不鼓缶而歌,则大耋之嗟,凶。', 4: '九四:突如其来如,焚如,死如,弃如。', 5: '六五:出涕沱若,戚嗟若,吉。', 6: '上九:王用出征,有嘉折首,获匪其丑,无咎。'}, '001110': {0: '咸,亨,利贞,取女吉。', 1: '初六,咸其拇。', 2: '六二,咸其腓,凶,居吉。', 3: '九三,咸其股,执其随,往吝。', 4: '九四,贞吉,悔亡,憧憧往来,朋从尔思。', 5: '九五,咸其脢,无悔。', 6: '上六,咸其辅颊舌。'}, '011100': {0: '恒:亨,无咎,利贞,利有攸往。', 1: '初六:浚恒,贞凶,无攸利。', 2: '九二:悔亡。', 3: '九三:不恒其德,或承之羞,贞吝。', 4: '九四:田无禽。', 5: '六五:恒其德,贞,妇人吉,夫子凶。', 6: '上六:振恒,凶。'}, '001111': {0: '遯:亨,小利贞。', 1: '初六:遯尾,厉,勿用有攸往。', 2: '六二:执之用黄牛之革,莫之胜说。', 3: '九三:系遯,有疾厉,畜臣妾吉。', 4: '九四:好遯,君子吉,小人否。', 5: '九五:嘉遯,贞吉。', 6: '上九:肥遯,无不利。'}, '111100': {0: '大壮:利贞。', 1: '初九:壮于趾,征凶,有孚。', 2: '九二:贞吉。', 3: '九三:小人用壮,君子用罔,贞厉。羝羊触藩,羸其角。', 4: '九四:贞吉悔亡,藩决不羸,壮于大舆之輹。', 5: '六五:丧羊于易,无悔。', 6: '上六:羝羊触藩,不能退,不能遂,无攸利,艰则吉。'}, '000101': {0: '晋:康侯用锡马蕃庶,昼日三接。', 1: '初六:晋如,摧如,贞吉。罔孚,裕无咎。', 2: '六二:晋如,愁如,贞吉。受兹介福,于其王母。', 3: '六三:众允,悔亡。', 4: '九四:晋如硕鼠,贞厉。', 5: '六五:悔亡,失得勿恤,往吉,无不利。', 6: '上九:晋其角,维用伐邑,厉吉无咎,贞吝。'}, '101000': {0: '明夷:利艰贞。', 1: '初九:明夷于飞,垂其翼。君子于行,三日不食,有攸往,主人有言。', 2: '六二:明夷,夷于左股,用拯马壮,吉。', 3: '九三:明夷于南狩,得其大首,不可疾贞。', 4: '六四:入于左腹,获明夷之心,出于门庭。', 5: '六五:箕子之明夷,利贞。', 6: '上六:不明晦,初登于天,后入于地。'}, '101011': {0: '家人:利女贞。', 1: '初九:闲有家,悔亡。', 2: '六二:无攸遂,在中馈,贞吉。', 3: '九三:家人嗃嗃,悔厉吉;妇子嘻嘻,终吝。', 4: '六四:富家,大吉。', 5: '九五:王假有家,勿恤,往吉。', 6: '上九:有孚威如,终吉。'}, '110101': {0: '睽:小事吉。', 1: '初九:悔亡,丧马勿逐,自复;见恶人无咎。', 2: '九二:遇主于巷,无咎。', 3: '六三:见舆曳,其牛掣,其人天且劓,无初有终。', 4: '九四:睽孤,遇元夫,交孚,厉无咎。', 5: '六五:悔亡,厥宗噬肤,往何咎。', 6: '上九:睽孤,见豕负涂,载鬼一车,先张之弧,后说之弧,匪寇婚媾,往遇雨则吉。'}, '001010': {0: '蹇:利西南,不利东北;利见大人,贞吉。', 1: '初六:往蹇,来誉。', 2: '六二:王臣蹇蹇,匪躬之故。', 3: '九三:往蹇来反。', 4: '六四:往蹇来连。', 5: '九五:大蹇朋来。', 6: '上六:往蹇来硕,吉;利见大人。'}, '010100': {0: '解:利西南,无所往,其来复吉。有攸往,夙吉。', 1: '初六:无咎。', 2: '九二:田获三狐,得黄矢,贞吉。', 3: '六三:负且乘,致寇至,贞吝。', 4: '九四:解而拇,朋至斯孚。', 5: '六五:君子维有解,吉;有孚于小人。', 6: '上六:公用射隼于高墉之上,获之,无不利。'}, '110001': {0: '损:有孚,元吉,无咎,可贞,利有攸往。曷之用,二簋可用享。', 1: '初九:巳事遄往,无咎,酌损之。', 2: '九二:利贞,征凶,弗损,益之。', 3: '六三:三人行,则损一人;一人行,则得其友。', 4: '六四:损其疾,使遄有喜,无咎。', 5: '六五:或益之,十朋之龟弗克违,元吉。', 6: '上九:弗损益之,无咎,贞吉,有攸往,得臣无家。'}, '100011': {0: '益:利有攸往,利涉大川。', 1: '初九:利用为大作,元吉,无咎。', 2: '六二:或益之,十朋之龟弗克违,永贞吉。王用享于帝,吉。', 3: '六三:益之用凶事,无咎。有孚中行,告公用圭。', 4: '六四:中行,告公从。利用为依迁国。', 5: '九五:有孚惠心,勿问元吉。有孚惠我德。', 6: '上九:莫益之,或击之,立心勿恒,凶。'}, '111110': {0: '夬:扬于王庭,孚号,有厉,告自邑,不利即戎,利有攸往。', 1: '初九:壮于前趾,往不胜为咎。', 2: '九二:惕号,莫夜有戎,勿恤。', 3: '九三:壮于頄,有凶。君子夬夬,独行,遇雨,若濡,有愠,无咎。', 4: '九四:臀无肤,其行次且。牵羊悔亡,闻言不信。', 5: '九五:苋陆夬夬,中行无咎。', 6: '上六:无号,终有凶。'}, '011111': {0: '姤:女壮,勿用取女。', 1: '初六:系于金柅,贞吉,有攸往,见凶,羸豕孚蹢躅。', 2: '九二:包有鱼,无咎,不利宾。', 3: '九三:臀无肤,其行次且,厉,无大咎。', 4: '九四:包无鱼,起凶。', 5: '九五:以杞包瓜,含章,有陨自天。', 6: '上九:姤其角,吝,无咎。'}, '000110': {0: '萃:亨。王假有庙,利见大人,亨,利贞。用大牲吉,利有攸往。', 1: '初六:有孚不终,乃乱乃萃,若号一握为笑,勿恤,往无咎。', 2: '六二:引吉,无咎,孚乃利用禴。', 3: '六三:萃如,嗟如,无攸利,往无咎,小吝。', 4: '九四:大吉,无咎。', 5: '九五:萃有位,无咎。匪孚,元永贞,悔亡。', 6: '上六:赍咨涕洟,无咎。'}, '011000': {0: '升:元亨,用见大人,勿恤,南征吉。', 1: '初六:允升,大吉。', 2: '九二:孚乃利用禴,无咎。', 3: '九三:升虚邑。', 4: '六四:王用亨于岐山,吉无咎。', 5: '六五:贞吉,升阶。', 6: '上六:冥升,利于不息之贞。'}, '010110': {0: '困:亨,贞,大人吉,无咎,有言不信。', 1: '初六:臀困于株木,入于幽谷,三岁不觌。', 2: '九二:困于酒食,朱绂方来,利用享祀,征凶,无咎。', 3: '六三:困于石,据于蒺蔾,入于其宫,不见其妻,凶。', 4: '九四:来徐徐,困于金车,吝,有终。', 5: '九五:劓刖,困于赤绂,乃徐有说,利用祭祀。', 6: '上六:困于葛藟,于臲卼,曰动悔。有悔,征吉。'}, '011010': {0: '井:改邑不改井,无丧无得,往来井井。汔至,亦未繘井,羸其瓶,凶。', 1: '初六:井泥不食,旧井无禽。', 2: '九二:井谷射鲋,瓮敝漏。', 3: '九三:井渫不食,为我心恻,可用汲,王明,并受其福。', 4: '六四:井甃,无咎。', 5: '九五:井冽,寒泉食。', 6: '上六:井收勿幕,有孚元吉。'}, '101110': {0: '革:巳日乃孚,元亨利贞,悔亡。', 1: '初九:巩用黄牛之革。', 2: '六二:巳日乃革之,征吉,无咎。', 3: '九三:征凶,贞厉,革言三就,有孚。', 4: '九四:悔亡,有孚改命,吉。', 5: '九五:大人虎变,未占有孚。', 6: '上六:君子豹变,小人革面,征凶,居贞吉。'}, '011101': {0: '鼎:元吉,亨。', 1: '初六:鼎颠趾,利出否,得妾以其子,无咎。', 2: '九二:鼎有实,我仇有疾,不我能即,吉。', 3: '九三:鼎耳革,其行塞,雉膏不食,方雨亏悔,终吉。', 4: '九四:鼎折足,覆公餗,其形渥,凶。', 5: '六五:鼎黄耳,金铉,利贞。', 6: '上九:鼎玉铉,大吉,无不利。'}, '100100': {0: '震:亨。震来虩虩,笑言哑哑。震惊百里,不丧匕鬯。', 1: '初九:震来虩虩,后笑言哑哑,吉。', 2: '六二:震来厉,亿丧贝,跻于九陵,勿逐,七日得。', 3: '六三:震苏苏,震行无眚。', 4: '九四:震遂泥。', 5: '六五:震往来厉,亿无丧,有事。', 6: '上六:震索索,视矍矍,征凶。震不于其躬,于其邻,无咎。婚媾有言。'}, '001001': {0: '艮:艮其背,不获其身,行其庭,不见其人,无咎。', 1: '初六:艮其趾,无咎,利永贞。', 2: '六二:艮其腓,不拯其随,其心不快。', 3: '九三:艮其限,列其夤,厉薰心。', 4: '六四:艮其身,无咎。', 5: '六五:艮其辅,言有序,悔亡。', 6: '上九:敦艮,吉。'}, '001011': {0: '渐:女归吉,利贞。', 1: '初六:鸿渐于干,小子厉,有言,无咎。', 2: '六二:鸿渐于磐,饮食衎衎,吉。', 3: '九三:鸿渐于陆,夫征不复,妇孕不育,凶;利御寇。', 4: '六四:鸿渐于木,或得其桷,无咎。', 5: '九五:鸿渐于陵,妇三岁不孕,终莫之胜,吉。', 6: '上九:鸿渐于陆,其羽可用为仪,吉。'}, '110100': {0: '归妹:征凶,无攸利。', 1: '初九:归妹以娣,跛能履,征吉。', 2: '九二:眇能视,利幽人之贞。', 3: '六三:归妹以须,反归以娣。', 4: '九四:归妹愆期,迟归有时。', 5: '六五:帝乙归妹,其君之袂,不如其娣之袂良,月几望,吉。', 6: '上六:女承筐无实,士刲羊无血,无攸利。'}, '101100': {0: '丰:亨,王假之,勿忧,宜日中。', 1: '初九:遇其配主,虽旬无咎,往有尚。', 2: '六二:丰其蔀,日中见斗,往得疑疾,有孚发若,吉。', 3: '九三:丰其沛,日中见沬,折其右肱,无咎。', 4: '九四:丰其蔀,日中见斗,遇其夷主,吉。', 5: '六五:来章,有庆誉,吉。', 6: '上六:丰其屋,蔀其家,闚其户,阒其无人,三岁不觌,凶。'}, '001101': {0: '旅:小亨,旅贞吉。', 1: '初六:旅琐琐,斯其所取灾。', 2: '六二:旅即次,怀其资,得童仆贞。', 3: '九三:旅焚其次,丧其童仆,贞厉。', 4: '九四:旅于处,得其资斧,我心不快。', 5: '六五:射雉一矢亡,终以誉命。', 6: '上九:鸟焚其巢,旅人先笑后号啕。丧牛于易,凶。'}, '011011': {0: '巽:小亨,利攸往,利见大人。', 1: '初六:进退,利武人之贞。', 2: '九二:巽在床下,用史巫纷若,吉,无咎。', 3: '九三:频巽,吝。', 4: '六四:悔亡,田获三品。', 5: '九五:贞吉悔亡,无不利。无初有终,先庚三日,后庚三日,吉。', 6: '上九:巽在床下,丧其资斧,贞凶。'}, '110110': {0: '兑:亨,利贞。', 1: '初九:和兑,吉。', 2: '九二:孚兑,吉,悔亡。', 3: '六三:来兑,凶。', 4: '九四:商兑,未宁,介疾有喜。', 5: '九五:孚于剥,有厉。', 6: '上六:引兑。'}, '010011': {0: '涣:亨。王假有庙,利涉大川,利贞。', 1: '初六:用拯马壮,吉。', 2: '九二:涣奔其机,悔亡。', 3: '六三:涣其躬,无悔。', 4: '六四:涣其群,元吉。涣有丘,匪夷所思。', 5: '九五:涣汗其大号,涣王居,无咎。', 6: '上九:涣其血,去逖出,无咎。'}, '110010': {0: '节:亨。苦节,不可贞。', 1: '初九:不出户庭,无咎。', 2: '九二:不出门庭,凶。', 3: '六三:不节若,则嗟若,无咎。', 4: '六四:安节,亨。', 5: '九五:甘节,吉;往有尚。', 6: '上六:苦节,贞凶,悔亡。'}, '110011': {0: '中孚:豚鱼吉,利涉大川,利贞。', 1: '初九:虞吉,有它不燕。', 2: '九二:鸣鹤在阴,其子和之,我有好爵,吾与尔靡之。', 3: '六三:得敌,或鼓或罢,或泣或歌。', 4: '六四:月几望,马匹亡,无咎。', 5: '九五:有孚挛如,无咎。', 6: '上九:翰音登于天,贞凶。'}, '001100': {0: '小过:亨,利贞,可小事,不可大事。飞鸟遗之音,不宜上,宜下,大吉。', 1: '初六:飞鸟以凶。', 2: '六二:过其祖,遇其妣;不及其君,遇其臣;无咎。', 3: '九三:弗过防之,从或戕之,凶。', 4: '九四:无咎,弗过遇之。往厉必戒,勿用永贞。', 5: '六五:密云不雨,自我西郊,公弋取彼在穴。', 6: '上六:弗遇过之,飞鸟离之,凶,是谓灾眚。'}, '101010': {0: '既济:亨,小利贞,初吉终乱。', 1: '初九:曳其轮,濡其尾,无咎。', 2: '六二:妇丧其茀,勿逐,七日得。', 3: '九三:高宗伐鬼方,三年克之,小人勿用。', 4: '六四:繻有衣袽,终日戒。', 5: '九五:东邻杀牛,不如西邻之禴祭,实受其福。', 6: '上六:濡其首,厉。'}, '010101': {0: '未济:亨,小狐汔济,濡其尾,无攸利。', 1: '初六:濡其尾,吝。', 2: '九二:曳其轮,贞吉。', 3: '六三:未济,征凶,利涉大川。', 4: '九四:贞吉,悔亡,震用伐鬼方,三年有赏于大国。', 5: '六五:贞吉,无悔,君子之光,有孚,吉。', 6: '上九:有孚于饮酒,无咎,濡其首,有孚失是。'}}
DICT_GUA2TEXT2 = {'乾': {0: '乾:元亨,利贞。', 1: '初九:潜龙,勿用。', 2: '九二:见龙在田,利见大人。', 3: '九三:君子终日乾乾,夕惕若,厉,无咎。', 4: '九四:或跃在渊,无咎。', 5: '九五:飞龙在天,利见大人。', 6: '上九:亢龙有悔。', 7: '用九:见群龙无首,吉。'},
'坤': {0: '坤:元亨,利牝马之贞。君子有攸往,先迷后得主,利西南得朋,东北丧朋。安贞,吉。', 1: '初六:履霜,坚冰至。', 2: '六二:直,方,大,不习无不利。', 3: '六三:含章可贞。或从王事,无成有终。', 4: '六四:括囊;无咎,无誉。', 5: '六五:黄裳,元吉。', 6: '上六:龙战于野,其血玄黄。', 7: '用六:利永贞。'},
'屯': {0: '屯:元亨,利贞,勿用有攸往,利建侯。', 1: '初九:磐桓;利居贞,利建侯。', 2: '六二:屯如邅如,乘马班如。匪寇婚媾,女子贞不字,十年乃字。', 3: '六三:即鹿无虞,惟入于林中,君子几不如舍,往吝。', 4: '六四:乘马班如,求婚媾,往吉,无不利。', 5: '九五:屯其膏,小贞吉,大贞凶。', 6: '上六:乘马班如,泣血涟如。'},
'蒙': {0: '蒙:亨。匪我求童蒙,童蒙求我。初筮告,再三渎,渎则不告。利贞。', 1: '初六:发蒙,利用刑人,用说桎梏,以往吝。', 2: '九二:包蒙吉;纳妇吉;子克家。', 3: '六三:勿用取女;见金夫,不有躬,无攸利。', 4: '六四:困蒙,吝。', 5: '六五:童蒙,吉。', 6: '上九:击蒙;不利为寇,利御寇。'}, '需': {0: '需:有孚,光亨,贞吉。利涉大川。', 1: '初九:需于郊。利用恒,无咎。', 2: '九二:需于沙。小有言,终吉。', 3: '九三:需于泥,致寇至。', 4: '六四:需于血,出自穴。', 5: '九五:需于酒食,贞吉。', 6: '上六:入于穴,有不速之客三人来,敬之终吉。'}, '讼': {0: '讼:有孚,窒。惕中吉。终凶。利见大人,不利涉大川。', 1: '初六:不永所事,小有言,终吉。', 2: '九二:不克讼,归而逋,其邑人三百户,无眚。', 3: '六三:食旧德,贞厉,终吉,或从王事,无成。', 4: '九四:不克讼,复即命渝,安贞吉。', 5: '九五:讼元吉。', 6: '上九:或锡之鞶带,终朝三褫之。'}, '师': {0: '师:贞,丈人,吉无咎。', 1: '初六:师出以律,否臧凶。', 2: '九二:在师中吉,无咎,王三锡命。', 3: '六三:师或舆尸,凶。', 4: '六四:师左次,无咎。', 5: '六五:田有禽,利执言,无咎。长子帅师,弟子舆尸,贞凶。', 6: '上六:大君有命,开国承家,小人勿用。'}, '比': {0: '比:吉。原筮元永贞,无咎。不宁方来,后夫凶。', 1: '初六:有孚,比之,无咎。有孚盈缶,终来有它吉。', 2: '六二:比之自内,贞吉。', 3: '六三:比之匪人。', 4: '六四:外比之,贞吉。', 5: '九五:显比,王用三驱,失前禽。邑人不诫,吉。', 6: '上六:比之无首,凶。'}, '小畜': {0: '小畜:亨。密云不雨,自我西郊。', 1: '初九:复自道,何其咎,吉。', 2: '九二:牵复,吉。', 3: '九三:舆说辐,夫妻反目。', 4: '六四:有孚,血去惕出,无咎。', 5: '九五:有孚挛如,富以其邻。', 6: '上九:既雨既处,尚德载,妇贞厉。月几望,君子征凶。'}, '履': {0: '履虎尾,不咥人,亨。', 1: '初九:素履,往无咎。', 2: '九二:履道坦坦,幽人贞吉。', 3: '六三:眇能视,跛能履,履虎尾,咥人,凶。武人为于大君。', 4: '九四:履虎尾,诉诉,终吉。', 5: '九五:夬履,贞厉。', 6: '上九:视履考祥,其旋元吉。'}, '泰': {0: '泰:小往大来,吉亨。', 1: '初九:拔茅茹,以其汇,征吉。', 2: '九二:包荒,用冯河,不遐遗,朋亡,得尚于中行。', 3: '九三:无平不陂,无往不复,艰贞无咎。勿恤其孚,于食有福。', 4: '六四:翩翩,不富,以其邻,不戒以孚。', 5: '六五:帝乙归妹,以祉元吉。', 6: '上六:城复于隍,勿用师。自邑告命,贞吝。'}, '否': {0: '否之匪人,不利君子贞,大往小来。', 1: '初六:拔茅茹,以其汇,贞吉亨。', 2: '六二:包承。小人吉,大人否,亨。', 3: '六三:包羞。', 4: '九四:有命,无咎,畴离祉。', 5: '九五:休否,大人吉。其亡其亡,系于苞桑。', 6: '上九:倾否,先否后喜。'}, '同人': {0: '同人于野,亨。利涉大川,利君子贞。', 1: '初九:同人于门,无咎。', 2: '六二:同人于宗,吝。', 3: '九三:伏戎于莽,升其高陵,三岁不兴。', 4: '九四:乘其墉,弗克攻,吉。', 5: '九五:同人,先号啕而后笑。大师克相遇。', 6: '上九:同人于郊,无悔。'}, '大有': {0: '大有:元亨。', 1: '初九:无交害,匪咎,艰则无咎。', 2: '九二:大车以载,有攸往,无咎。', 3: '九三:公用亨于天子,小人弗克。', 4: '九四:匪其彭,无咎。', 5: '六五:厥孚交如,威如;吉。', 6: '上九:自天佑之,吉无不利。'}, '谦': {0: '谦:亨,君子有终。', 1: '初六:谦谦君子,用涉大川,吉。', 2: '六二:鸣谦,贞吉。', 3: '九三:劳谦,君子有终,吉。', 4: '六四:无不利,撝谦。', 5: '六五:不富,以其邻,利用侵伐,无不利。', 6: '上六:鸣谦,利用行师,征邑国。'}, '豫': {0: '豫:利建侯,行师。', 1: '初六:鸣豫,凶。', 2: '六二:介于石,不终日,贞吉。', 3: '六三:盱豫,悔。迟有悔。', 4: '九四:由豫,大有得。勿疑。朋盍簪。', 5: '六五:贞疾,恒不死。', 6: '上六:冥豫,成有渝,无咎。'}, '随': {0: '随:元亨利贞,无咎。', 1: '初九:官有渝,贞吉。出门交有功。', 2: '六二:系小子,失丈夫。', 3: '六三:系丈夫,失小子。随有求得,利居贞。', 4: '九四:随有获,贞凶。有孚在道,以明,何咎。', 5: '九五:孚于嘉,吉。', 6: '上六:拘系之,乃从维之。王用亨于西山。'}, '蛊': {0: '蛊:元亨,利涉大川。先甲三日,后甲三日。', 1: '初六:干父之蛊,有子,考无咎,厉终吉。', 2: '九二:干母之蛊,不可贞。', 3: '九三:干父之蛊,小有悔,无大咎。', 4: '六四:裕父之蛊,往见吝。', 5: '六五:干父之蛊,用誉。', 6: '上九:不事王侯,高尚其事。'}, '临': {0: '临:元,亨,利,贞。至于八月有凶。', 1: '初九:咸临,贞吉。', 2: '九二:咸临,吉无不利。', 3: '六三:甘临,无攸利。既忧之,无咎。', 4: '六四:至临,无咎。', 5: '六五:知临,大君之宜,吉。', 6: '上六:敦临,吉无咎。'}, '观': {0: '观:盥而不荐,有孚顒若。', 1: '初六:童观,小人无咎,君子吝。', 2: '六二:闚观,利女贞。', 3: '六三:观我生,进退。', 4: '六四:观国之光,利用宾于王。', 5: '九五:观我生,君子无咎。', 6: '上九:观其生,君子无咎。'}, '噬嗑': {0: '噬嗑:亨。利用狱。', 1: '初九:屦校灭趾,无咎。', 2: '六二:噬肤灭鼻,无咎。', 3: '六三:噬腊肉,遇毒;小吝,无咎。', 4: '九四:噬乾胏,得金矢,利艰贞,吉。', 5: '六五:噬乾肉,得黄金,贞厉,无咎。', 6: '上九:何校灭耳,凶。'}, '贲': {0: '贲:亨。小利有攸往。', 1: '初九:贲其趾,舍车而徒。', 2: '六二:贲其须。', 3: '九三:贲如濡如,永贞吉。', 4: '六四:贲如皤如,白马翰如,匪寇婚媾。', 5: '六五:贲于丘园,束帛戋戋,吝,终吉。', 6: '上九:白贲,无咎。'}, '剥': {0: '剥:不利有攸往。', 1: '初六:剥床以足,蔑贞凶。', 2: '六二:剥床以辨,蔑贞凶。', 3: '六三:剥之,无咎。', 4: '六四:剥床以肤,凶。', 5: '六五:贯鱼,以宫人宠,无不利。', 6: '上九:硕果不食,君子得舆,小人剥庐。'}, '复': {0: '复:亨。出入无疾,朋来无咎。反复其道,七日来复,利有攸往。', 1: '初九:不远复,无祗悔,元吉。', 2: '六二:休复,吉。', 3: '六三:频复,厉无咎。', 4: '六四:中行独复。', 5: '六五:敦复,无悔。', 6: '上六:迷复,凶,有灾眚。用行师,终有大败,以其国君,凶;至于十年,不克征。'}, '无妄': {0: '无妄:元亨,利贞。其匪正有眚,不利有攸往。', 1: '初九:无妄,往吉。', 2: '六二:不耕获,不灾畲,则利有攸往。', 3: '六三:无妄之灾,或系之牛,行人之得,邑人之灾。', 4: '九四:可贞,无咎。', 5: '九五:无妄之疾,勿药有喜。', 6: '上九:无妄,行有眚,无攸利。'}, '大畜': {0: '大畜:利贞,不家食吉,利涉大川。', 1: '初九:有厉利已。', 2: '九二:舆说輹。', 3: '九三:良马逐,利艰贞。曰闲舆卫,利有攸往。', 4: '六四:童牛之牿,元吉。', 5: '六五:豶豕之牙,吉。', 6: '上九:何天之衢,亨。'}, '颐': {0: '颐:贞吉。观颐,自求口实。', 1: '初九:舍尔灵龟,观我朵颐,凶。', 2: '六二:颠颐,拂经,于丘颐,征凶。', 3: '六三:拂颐,贞凶,十年勿用,无攸利。', 4: '六四:颠颐,吉,虎视眈眈,其欲逐逐,无咎。', 5: '六五:拂经,居贞吉,不可涉大川。', 6: '上九:由颐,厉吉,利涉大川。'}, '大过': {0: '大过:栋桡,利有攸往,亨。', 1: '初六:藉用白茅,无咎。', 2: '九二:枯杨生稊,老夫得其女妻,无不利。', 3: '九三:栋桡,凶。', 4: '九四:栋隆,吉;有它吝。', 5: '九五:枯杨生华,老妇得士夫,无咎无誉。', 6: '上六:过涉灭顶,凶,无咎。'}, '坎': {0: '坎:习坎,有孚,维心亨,行有尚。', 1: '初六:习坎,入于坎窞,凶。', 2: '九二:坎有险,求小得。', 3: '六三:来之坎坎,险且枕,入于坎窞,勿用。', 4: '六四:樽酒簋贰,用缶,纳约自牖,终无咎。', 5: '九五:坎不盈,祗既平,无咎。', 6: '上六:系用徽纆,置于丛棘,三岁不得,凶。'}, '离': {0: '离:利贞,亨。畜牝牛,吉。', 1: '初九:履错然,敬之无咎。', 2: '六二:黄离,元吉。', 3: '九三:日昃之离,不鼓缶而歌,则大耋之嗟,凶。', 4: '九四:突如其来如,焚如,死如,弃如。', 5: '六五:出涕沱若,戚嗟若,吉。', 6: '上九:王用出征,有嘉折首,获匪其丑,无咎。'}, '咸': {0: '咸,亨,利贞,取女吉。', 1: '初六,咸其拇。', 2: '六二,咸其腓,凶,居吉。', 3: '九三,咸其股,执其随,往吝。', 4: '九四,贞吉,悔亡,憧憧往来,朋从尔思。', 5: '九五,咸其脢,无悔。', 6: '上六,咸其辅颊舌。'}, '恒': {0: '恒:亨,无咎,利贞,利有攸往。', 1: '初六:浚恒,贞凶,无攸利。', 2: '九二:悔亡。', 3: '九三:不恒其德,或承之羞,贞吝。', 4: '九四:田无禽。', 5: '六五:恒其德,贞,妇人吉,夫子凶。', 6: '上六:振恒,凶。'}, '遯': {0: '遯:亨,小利贞。', 1: '初六:遯尾,厉,勿用有攸往。', 2: '六二:执之用黄牛之革,莫之胜说。', 3: '九三:系遯,有疾厉,畜臣妾吉。', 4: '九四:好遯,君子吉,小人否。', 5: '九五:嘉遯,贞吉。', 6: '上九:肥遯,无不利。'}, '大壮': {0: '大壮:利贞。', 1: '初九:壮于趾,征凶,有孚。', 2: '九二:贞吉。', 3: '九三:小人用壮,君子用罔,贞厉。羝羊触藩,羸其角。', 4: '九四:贞吉悔亡,藩决不羸,壮于大舆之輹。', 5: '六五:丧羊于易,无悔。', 6: '上六:羝羊触藩,不能退,不能遂,无攸利,艰则吉。'}, '晋': {0: '晋:康侯用锡马蕃庶,昼日三接。', 1: '初六:晋如,摧如,贞吉。罔孚,裕无咎。', 2: '六二:晋如,愁如,贞吉。受兹介福,于其王母。', 3: '六三:众允,悔亡。', 4: '九四:晋如硕鼠,贞厉。', 5: '六五:悔亡,失得勿恤,往吉,无不利。', 6: '上九:晋其角,维用伐邑,厉吉无咎,贞吝。'}, '明夷': {0: '明夷:利艰贞。', 1: '初九:明夷于飞,垂其翼。君子于行,三日不食,有攸往,主人有言。', 2: '六二:明夷,夷于左股,用拯马壮,吉。', 3: '九三:明夷于南狩,得其大首,不可疾贞。', 4: '六四:入于左腹,获明夷之心,出于门庭。', 5: '六五:箕子之明夷,利贞。', 6: '上六:不明晦,初登于天,后入于地。'}, '家人': {0: '家人:利女贞。', 1: '初九:闲有家,悔亡。', 2: '六二:无攸遂,在中馈,贞吉。', 3: '九三:家人嗃嗃,悔厉吉;妇子嘻嘻,终吝。', 4: '六四:富家,大吉。', 5: '九五:王假有家,勿恤,往吉。', 6: '上九:有孚威如,终吉。'}, '睽': {0: '睽:小事吉。', 1: '初九:悔亡,丧马勿逐,自复;见恶人无咎。', 2: '九二:遇主于巷,无咎。', 3: '六三:见舆曳,其牛掣,其人天且劓,无初有终。', 4: '九四:睽孤,遇元夫,交孚,厉无咎。', 5: '六五:悔亡,厥宗噬肤,往何咎。', 6: '上九:睽孤,见豕负涂,载鬼一车,先张之弧,后说之弧,匪寇婚媾,往遇雨则吉。'}, '蹇': {0: '蹇:利西南,不利东北;利见大人,贞吉。', 1: '初六:往蹇,来誉。', 2: '六二:王臣蹇蹇,匪躬之故。', 3: '九三:往蹇来反。', 4: '六四:往蹇来连。', 5: '九五:大蹇朋来。', 6: '上六:往蹇来硕,吉;利见大人。'}, '解': {0: '解:利西南,无所往,其来复吉。有攸往,夙吉。', 1: '初六:无咎。', 2: '九二:田获三狐,得黄矢,贞吉。', 3: '六三:负且乘,致寇至,贞吝。', 4: '九四:解而拇,朋至斯孚。', 5: '六五:君子维有解,吉;有孚于小人。', 6: '上六:公用射隼于高墉之上,获之,无不利。'}, '损': {0: '损:有孚,元吉,无咎,可贞,利有攸往。曷之用,二簋可用享。', 1: '初九:巳事遄往,无咎,酌损之。', 2: '九二:利贞,征凶,弗损,益之。', 3: '六三:三人行,则损一人;一人行,则得其友。', 4: '六四:损其疾,使遄有喜,无咎。', 5: '六五:或益之,十朋之龟弗克违,元吉。', 6: '上九:弗损益之,无咎,贞吉,有攸往,得臣无家。'}, '益': {0: '益:利有攸往,利涉大川。', 1: '初九:利用为大作,元吉,无咎。', 2: '六二:或益之,十朋之龟弗克违,永贞吉。王用享于帝,吉。', 3: '六三:益之用凶事,无咎。有孚中行,告公用圭。', 4: '六四:中行,告公从。利用为依迁国。', 5: '九五:有孚惠心,勿问元吉。有孚惠我德。', 6: '上九:莫益之,或击之,立心勿恒,凶。'}, '夬': {0: '夬:扬于王庭,孚号,有厉,告自邑,不利即戎,利有攸往。', 1: '初九:壮于前趾,往不胜为咎。', 2: '九二:惕号,莫夜有戎,勿恤。', 3: '九三:壮于頄,有凶。君子夬夬,独行,遇雨,若濡,有愠,无咎。', 4: '九四:臀无肤,其行次且。牵羊悔亡,闻言不信。', 5: '九五:苋陆夬夬,中行无咎。', 6: '上六:无号,终有凶。'}, '姤': {0: '姤:女壮,勿用取女。', 1: '初六:系于金柅,贞吉,有攸往,见凶,羸豕孚蹢躅。', 2: '九二:包有鱼,无咎,不利宾。', 3: '九三:臀无肤,其行次且,厉,无大咎。', 4: '九四:包无鱼,起凶。', 5: '九五:以杞包瓜,含章,有陨自天。', 6: '上九:姤其角,吝,无咎。'}, '萃': {0: '萃:亨。王假有庙,利见大人,亨,利贞。用大牲吉,利有攸往。', 1: '初六:有孚不终,乃乱乃萃,若号一握为笑,勿恤,往无咎。', 2: '六二:引吉,无咎,孚乃利用禴。', 3: '六三:萃如,嗟如,无攸利,往无咎,小吝。', 4: '九四:大吉,无咎。', 5: '九五:萃有位,无咎。匪孚,元永贞,悔亡。', 6: '上六:赍咨涕洟,无咎。'}, '升': {0: '升:元亨,用见大人,勿恤,南征吉。', 1: '初六:允升,大吉。', 2: '九二:孚乃利用禴,无咎。', 3: '九三:升虚邑。', 4: '六四:王用亨于岐山,吉无咎。', 5: '六五:贞吉,升阶。', 6: '上六:冥升,利于不息之贞。'}, '困': {0: '困:亨,贞,大人吉,无咎,有言不信。', 1: '初六:臀困于株木,入于幽谷,三岁不觌。', 2: '九二:困于酒食,朱绂方来,利用享祀,征凶,无咎。', 3: '六三:困于石,据于蒺蔾,入于其宫,不见其妻,凶。', 4: '九四:来徐徐,困于金车,吝,有终。', 5: '九五:劓刖,困于赤绂,乃徐有说,利用祭祀。', 6: '上六:困于葛藟,于臲卼,曰动悔。有悔,征吉。'}, '井': {0: '井:改邑不改井,无丧无得,往来井井。汔至,亦未繘井,羸其瓶,凶。', 1: '初六:井泥不食,旧井无禽。', 2: '九二:井谷射鲋,瓮敝漏。', 3: '九三:井渫不食,为我心恻,可用汲,王明,并受其福。', 4: '六四:井甃,无咎。', 5: '九五:井冽,寒泉食。', 6: '上六:井收勿幕,有孚元吉。'}, '革': {0: '革:巳日乃孚,元亨利贞,悔亡。', 1: '初九:巩用黄牛之革。', 2: '六二:巳日乃革之,征吉,无咎。', 3: '九三:征凶,贞厉,革言三就,有孚。', 4: '九四:悔亡,有孚改命,吉。', 5: '九五:大人虎变,未占有孚。', 6: '上六:君子豹变,小人革面,征凶,居贞吉。'}, '鼎': {0: '鼎:元吉,亨。', 1: '初六:鼎颠趾,利出否,得妾以其子,无咎。', 2: '九二:鼎有实,我仇有疾,不我能即,吉。', 3: '九三:鼎耳革,其行塞,雉膏不食,方雨亏悔,终吉。', 4: '九四:鼎折足,覆公餗,其形渥,凶。', 5: '六五:鼎黄耳,金铉,利贞。', 6: '上九:鼎玉铉,大吉,无不利。'}, '震': {0: '震:亨。震来虩虩,笑言哑哑。震惊百里,不丧匕鬯。', 1: '初九:震来虩虩,后笑言哑哑,吉。', 2: '六二:震来厉,亿丧贝,跻于九陵,勿逐,七日得。', 3: '六三:震苏苏,震行无眚。', 4: '九四:震遂泥。', 5: '六五:震往来厉,亿无丧,有事。', 6: '上六:震索索,视矍矍,征凶。震不于其躬,于其邻,无咎。婚媾有言。'}, '艮': {0: '艮:艮其背,不获其身,行其庭,不见其人,无咎。', 1: '初六:艮其趾,无咎,利永贞。', 2: '六二:艮其腓,不拯其随,其心不快。', 3: '九三:艮其限,列其夤,厉薰心。', 4: '六四:艮其身,无咎。', 5: '六五:艮其辅,言有序,悔亡。', 6: '上九:敦艮,吉。'}, '渐': {0: '渐:女归吉,利贞。', 1: '初六:鸿渐于干,小子厉,有言,无咎。', 2: '六二:鸿渐于磐,饮食衎衎,吉。', 3: '九三:鸿渐于陆,夫征不复,妇孕不育,凶;利御寇。', 4: '六四:鸿渐于木,或得其桷,无咎。', 5: '九五:鸿渐于陵,妇三岁不孕,终莫之胜,吉。', 6: '上九:鸿渐于陆,其羽可用为仪,吉。'}, '归妹': {0: '归妹:征凶,无攸利。', 1: '初九:归妹以娣,跛能履,征吉。', 2: '九二:眇能视,利幽人之贞。', 3: '六三:归妹以须,反归以娣。', 4: '九四:归妹愆期,迟归有时。', 5: '六五:帝乙归妹,其君之袂,不如其娣之袂良,月几望,吉。', 6: '上六:女承筐无实,士刲羊无血,无攸利。'}, '丰': {0: '丰:亨,王假之,勿忧,宜日中。', 1: '初九:遇其配主,虽旬无咎,往有尚。', 2: '六二:丰其蔀,日中见斗,往得疑疾,有孚发若,吉。', 3: '九三:丰其沛,日中见沬,折其右肱,无咎。', 4: '九四:丰其蔀,日中见斗,遇其夷主,吉。', 5: '六五:来章,有庆誉,吉。', 6: '上六:丰其屋,蔀其家,闚其户,阒其无人,三岁不觌,凶。'}, '旅': {0: '旅:小亨,旅贞吉。', 1: '初六:旅琐琐,斯其所取灾。', 2: '六二:旅即次,怀其资,得童仆贞。', 3: '九三:旅焚其次,丧其童仆,贞厉。', 4: '九四:旅于处,得其资斧,我心不快。', 5: '六五:射雉一矢亡,终以誉命。', 6: '上九:鸟焚其巢,旅人先笑后号啕。丧牛于易,凶。'}, '巽': {0: '巽:小亨,利攸往,利见大人。', 1: '初六:进退,利武人之贞。', 2: '九二:巽在床下,用史巫纷若,吉,无咎。', 3: '九三:频巽,吝。', 4: '六四:悔亡,田获三品。', 5: '九五:贞吉悔亡,无不利。无初有终,先庚三日,后庚三日,吉。', 6: '上九:巽在床下,丧其资斧,贞凶。'}, '兑': {0: '兑:亨,利贞。', 1: '初九:和兑,吉。', 2: '九二:孚兑,吉,悔亡。', 3: '六三:来兑,凶。', 4: '九四:商兑,未宁,介疾有喜。', 5: '九五:孚于剥,有厉。', 6: '上六:引兑。'}, '涣': {0: '涣:亨。王假有庙,利涉大川,利贞。', 1: '初六:用拯马壮,吉。', 2: '九二:涣奔其机,悔亡。', 3: '六三:涣其躬,无悔。', 4: '六四:涣其群,元吉。涣有丘,匪夷所思。', 5: '九五:涣汗其大号,涣王居,无咎。', 6: '上九:涣其血,去逖出,无咎。'}, '节': {0: '节:亨。苦节,不可贞。', 1: '初九:不出户庭,无咎。', 2: '九二:不出门庭,凶。', 3: '六三:不节若,则嗟若,无咎。', 4: '六四:安节,亨。', 5: '九五:甘节,吉;往有尚。', 6: '上六:苦节,贞凶,悔亡。'}, '中孚': {0: '中孚:豚鱼吉,利涉大川,利贞。', 1: '初九:虞吉,有它不燕。', 2: '九二:鸣鹤在阴,其子和之,我有好爵,吾与尔靡之。', 3: '六三:得敌,或鼓或罢,或泣或歌。', 4: '六四:月几望,马匹亡,无咎。', 5: '九五:有孚挛如,无咎。', 6: '上九:翰音登于天,贞凶。'}, '小过': {0: '小过:亨,利贞,可小事,不可大事。飞鸟遗之音,不宜上,宜下,大吉。', 1: '初六:飞鸟以凶。', 2: '六二:过其祖,遇其妣;不及其君,遇其臣;无咎。', 3: '九三:弗过防之,从或戕之,凶。', 4: '九四:无咎,弗过遇之。往厉必戒,勿用永贞。', 5: '六五:密云不雨,自我西郊,公弋取彼在穴。', 6: '上六:弗遇过之,飞鸟离之,凶,是谓灾眚。'}, '既济': {0: '既济:亨,小利贞,初吉终乱。', 1: '初九:曳其轮,濡其尾,无咎。', 2: '六二:妇丧其茀,勿逐,七日得。', 3: '九三:高宗伐鬼方,三年克之,小人勿用。', 4: '六四:繻有衣袽,终日戒。', 5: '九五:东邻杀牛,不如西邻之禴祭,实受其福。', 6: '上六:濡其首,厉。'}, '未济': {0: '未济:亨,小狐汔济,濡其尾,无攸利。', 1: '初六:濡其尾,吝。', 2: '九二:曳其轮,贞吉。', 3: '六三:未济,征凶,利涉大川。', 4: '九四:贞吉,悔亡,震用伐鬼方,三年有赏于大国。', 5: '六五:贞吉,无悔,君子之光,有孚,吉。', 6: '上九:有孚于饮酒,无咎,濡其首,有孚失是。'}}
@staticmethod
def gua_name(gua) -> str:
return IChingData.DICT_GUA2NAME.get(gua)
@staticmethod
def gua_xiang(gua) -> str:
return IChingData.DICT_GUA2XIANG.get(gua)
@staticmethod
def gua_ci(gua, yao) -> str:
return IChingData.DICT_GUA2TEXT.get(gua).get(yao)
# turtle图形显示占卜结果
def show_results(gua_b, gua_c):
global g1, g2
g1 = GUA(-100)
g2 = GUA(100)
ht(); penup(); goto(0, 200)
write("周易占卜", align="center", font=("隶书", 60, ("bold")))
penup(); goto(0, 200)
for ch in gua_b:
g1.push(YAO(ch))
if gua_b != gua_c:
for ch in gua_c:
g2.push(YAO(ch))
result_guas, result_text = IChing.get_results(gua_b, gua_c)
penup(); goto(0, -100)
write(result_guas, align="center", font=("隶书", 40, ("bold")))
penup(); goto(0, -130); color('red')
write(result_text, align="center", font=("隶书", 20, ("bold")))
penup(); goto(0, -200)
yin(50, "black", "white")
yin(50, "white", "black")
return
# 阳爻阴爻图形
class YAO(Turtle):
def __init__(self, ch):
Turtle.__init__(self, shape="square", visible=False)
self.pu()
self.shapesize(1.2, 6 * 1.5, 2)
if ch == '1':
# 阳爻白色
self.fillcolor(1, 1, 1)
else:
# 阴爻黑色
self.fillcolor(0, 0, 0)
self.st()
# 卦图形,每卦包含六爻
class GUA(list):
def __init__(self, x):
self.x = x
def push(self, yao):
yao.setx(self.x)
yao.sety(-20 + 34 * len(self))
self.append(yao)
def play():
onkey(None, "space")
clearscreen()
main()
# 阴阳鱼小图
def yin(radius, color1, color2):
speed('fastest')
down()
color("black", color1)
begin_fill()
circle(radius / 2., 180)
circle(radius, 180)
left(180)
circle(-radius / 2., 180)
end_fill()
left(90)
up()
forward(radius * 0.35)
right(90)
down()
color(color1, color2)
begin_fill()
circle(radius * 0.15)
end_fill()
left(90)
up()
backward(radius * 0.35)
down()
left(90)
# 测试算得各卦的概率
def test(n):
# 算n次频率统计
R = []
t = time.perf_counter()
for _ in range(n):
gua_b, gua_c = IChing.get_guas()
R.append(IChing.get_gua_name(gua_b))
print('-------TEST-------')
print('After %d times & %.8f seconds, the result is:' % (n, time.perf_counter() - t))
C = Counter(R)
print(C)
L = list(C.values())
print('From the result, mean=%.2f, std=%.2f, std/mean=%.2f' % (
np.mean(L), np.std(L, ddof=1), np.std(L, ddof=1) / np.mean(L)))
print('-----TEST END-----')
# main() - 占卜并图形化显示
def main():
# 占得本卦,变卦
gua_b, gua_c = IChing.get_guas()
print([gua_b, IChing.get_gua_xiang(gua_b), IChing.get_gua_name(gua_b)])
print([gua_c, IChing.get_gua_xiang(gua_c), IChing.get_gua_name(gua_c)])
print(IChing.get_results(gua_b, gua_c))
# 可视化占卜结果
show_results(gua_b, gua_c)
onkey(play, "space")
listen()
return "EVENTLOOP"
if __name__ == "__main__":
msg = main()
# 测试10000次,看各卦概率是否平均
test(10000)
mainloop()