-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathBZBaseTools.py
160 lines (121 loc) · 6.11 KB
/
BZBaseTools.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
class BZBaseTools:
ganwuxing=[2,2,3,3,4,4,0,0,1,1]
zhiwuxing=[1,4,2,2,4,3,3,4,0,0,4,1]
#当令者旺,令生者相,生令者休,克令者囚,令克者死
# 季节 月建 旺 相 休 囚 死
# 春季 寅卯 木 火 水 金 土
# 夏季 巳午 火 土 木 水 金
# 秋季 申酉 金 水 土 火 木
# 冬季 亥子 水 木 金 土 火
# 四季 辰未戌丑 土 金 火 木 水
# 季节 月建 金 水 木 火 土
# 春季 寅卯 3囚 2休 0旺 1相 4死
# 夏季 巳午 4死 3囚 2休 0旺 1相
# 秋季 申酉 0旺 1相 4死 3囚 2休
# 冬季 亥子 2休 0旺 1相 4死 3囚
# 四季 辰未戌丑 1相 4死 3囚 2休 0旺
# 季节 月建 0金 1水 2木 3火 4土
# 冬季 0子 2休 0旺 1相 4死 3囚
# 四季 1丑 1相 4死 3囚 2休 0旺
# 春季 2寅 3囚 2休 0旺 1相 4死
# 春季 3卯 3囚 2休 0旺 1相 4死
# 四季 4辰 1相 4死 3囚 2休 0旺
# 夏季 5巳 4死 3囚 2休 0旺 1相
# 夏季 6午 4死 3囚 2休 0旺 1相
# 四季 7未 1相 4死 3囚 2休 0旺
# 秋季 8申 0旺 1相 4死 3囚 2休
# 秋季 9酉 0旺 1相 4死 3囚 2休
# 四季 10戌 1相 4死 3囚 2休 0旺
# 冬季 11亥 2休 0旺 1相 4死 3囚
#横坐标为地支,纵坐标为五行
WuxingShengwang=[
[2,0,1,4,3], [1,4,3,2,0], [3,2,0,1,4],[3,2,0,1,4],[1,4,3,2,0],[4,3,2,0,1],
[4,3,2,0,1], [1,4,3,2,0], [0,1,4,3,2],[0,1,4,3,2],[1,4,3,2,0],[2,0,1,4,3]
]
#["0春季","1夏季","2秋季","3冬季","4四季"]
#Zhi=["0子", "1丑", "2寅", "3卯", "4辰", "5巳", "6午", "7未", "8申", "9酉", "10戌", "11亥"]
Jijie=[3,4,0,0,4,1,1,4,2,2,4,3]
"""
0长生 1沐浴 2冠带 3临官 4帝旺 5衰 6病 7死 8墓 9绝 10胎 11养
甲 亥 子 丑 寅 卯 辰 巳 午 未 申 酉 戌
乙 午 巳 辰 卯 寅 丑 子 亥 戌 酉 申 未
丙 寅 卯 辰 巳 午 未 申 酉 戌 亥 子 丑
丁 酉 申 未 午 巳 辰 卯 寅 丑 子 亥 戌
戊 寅 卯 辰 巳 午 未 申 酉 戌 亥 子 丑
己 酉 申 未 午 巳 辰 卯 寅 丑 子 亥 戌
庚 巳 午 未 申 酉 戌 亥 子 丑 寅 卯 辰
辛 子 亥 戌 酉 申 未 午 巳 辰 卯 寅 丑
壬 申 酉 戌 亥 子 丑 寅 卯 辰 巳 午 未
癸 卯 寅 丑 子 亥 戌 酉 申 未 午 巳 辰
"""
#输入tgA,dzB,顺序为Gan,Zhi顺序, 从0开始,如 癸在未,则输入 (9,7)=8 墓 ;丁在午,输入(3,6)=3 临官
Shierchangsheng=[
[1,2,3,4,5,6,7,8,9,10,11,0],
[6,5,4,3,2,1,0,11,10,9,8,7],
[10,11,0,1,2,3,4,5,6,7,8,9],
[9,8,7,6,5,4,3,2,1,0,11,10],
[10,11,0,1,2,3,4,5,6,7,8,9],
[9,8,7,6,5,4,3,2,1,0,11,10],
[7,8,9,10,11,0,1,2,3,4,5,6],
[0,11,10,9,8,7,6,5,4,3,2,1],
[4,5,6,7,8,9,10,11,0,1,2,3],
[3,2,1,0,11,10,9,8,7,6,5,4]
]
"""
他干 甲 乙 丙 丁 戊 己 庚 辛 壬 癸
日干 甲 比肩 劫财 食神 伤官 偏财 正财 七杀 正官 偏印 正印
乙 劫财 比肩 伤官 食神 正财 偏财 正官 七杀 正印 偏印
丙 偏印 正印 比肩 劫财 食神 伤官 偏财 正财 七杀 正官
丁 正印 偏印 劫财 比肩 伤官 食神 正财 偏财 正官 七杀
戊 七杀 正官 偏印 正印 比肩 劫财 食神 伤官 偏财 正财
己 正官 七杀 正印 偏印 劫财 比肩 伤官 食神 正财 偏财
庚 偏财 正财 七杀 正官 偏印 正印 比肩 劫财 食神 伤官
辛 正财 偏财 正官 七杀 正印 偏印 劫财 比肩 伤官 食神
壬 食神 伤官 偏财 正财 七杀 正官 偏印 正印 比肩 劫财
癸 伤官 食神 正财 偏财 正官 七杀 正印 偏印 劫财 比肩
"""
# 天干对应食神,输入tgA,tgB。对应b是a的十神,如(甲,丁)输入为(1,4)=7,丁是甲的伤官。如()
ShishenList=[[4,5,6,7,9,8,1,0,3,2],
[5,4,7,6,8,9,0,1,2,3],
[3,2,4,5,6,7,9,8,1,0],
[2,3,5,4,7,6,8,9,0,1],
[1,0,3,2,4,5,6,7,9,8],
[0,1,2,3,5,4,7,6,8,9],
[8,9,1,0,3,2,4,5,6,7],
[9,8,0,1,2,3,5,4,7,6],
[6,7,9,8,1,0,3,2,4,5],
[7,6,8,9,0,1,2,3,5,4]
]
DzinTg=[[9],[5,9,7],[0,2,4],[1],[4,1,9],[2,6,4],[3,5],[5,3,1],[6,8,4],[7],[4,7,3],[8,0]]
"""
for x in DzinTg[8]:
print(x, end=" ")
"""
#得到两个天干之间的十神关系
def getShishenName(tg1,tg2):
value=BZBaseTools.ShishenList[tg1][tg2]
print(value)
"""
比如从n个元素选取k个出来组合,根据数学知识可知总共组合数为Cnk。
代码实现的基本思想就是,先选取一个元素出来,接下来任务就相当于是对后面的元素选取k-1个出来组合。这样就形成了递归调用!
"""
def Combinations(self,L, k):
"""List all combinations: choose k elements from list L"""
n=len(L)
result=[] # To Place Combination result
for i in range(n - k + 1):
if k > 1:
newL=L[i + 1:]
Comb= self.Combinations(newL, k - 1)
for item in Comb:
item.insert(0, L[i])
result.append(item)
else:
result.append([L[i]])
#return result, len(result) 可以返回两个参数!
return result
if __name__ == '__main__':
l=[1, 6, 9, 4,1]
tools=BZBaseTools()
print(tools.Combinations(l,2))
print("======")