mingpan 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -44
- package/dist/core/qimen/FlyingRule.d.ts +60 -0
- package/dist/core/qimen/FlyingRule.d.ts.map +1 -0
- package/dist/core/qimen/FlyingRule.js +94 -0
- package/dist/core/qimen/FlyingRule.js.map +1 -0
- package/dist/core/qimen/GongMapping.d.ts +29 -0
- package/dist/core/qimen/GongMapping.d.ts.map +1 -0
- package/dist/core/qimen/GongMapping.js +83 -0
- package/dist/core/qimen/GongMapping.js.map +1 -0
- package/dist/core/qimen/RotatingRule.d.ts +76 -0
- package/dist/core/qimen/RotatingRule.d.ts.map +1 -0
- package/dist/core/qimen/RotatingRule.js +126 -0
- package/dist/core/qimen/RotatingRule.js.map +1 -0
- package/dist/core/qimen/YinYangDunCalculator.d.ts +28 -0
- package/dist/core/qimen/YinYangDunCalculator.d.ts.map +1 -0
- package/dist/core/qimen/YinYangDunCalculator.js +79 -0
- package/dist/core/qimen/YinYangDunCalculator.js.map +1 -0
- package/dist/core/qimen/index.d.ts +10 -0
- package/dist/core/qimen/index.d.ts.map +1 -0
- package/dist/core/qimen/index.js +58 -0
- package/dist/core/qimen/index.js.map +1 -0
- package/dist/core/qimen/types.d.ts +19 -0
- package/dist/core/qimen/types.d.ts.map +1 -0
- package/dist/core/qimen/types.js +7 -0
- package/dist/core/qimen/types.js.map +1 -0
- package/dist/index.js +269 -2
- package/dist/index.js.map +1 -1
- package/dist/output/qimenTextRenderer.d.ts +40 -0
- package/dist/output/qimenTextRenderer.d.ts.map +1 -0
- package/dist/output/qimenTextRenderer.js +363 -0
- package/dist/output/qimenTextRenderer.js.map +1 -0
- package/dist/services/qimen/QimenService.d.ts +93 -0
- package/dist/services/qimen/QimenService.d.ts.map +1 -0
- package/dist/services/qimen/QimenService.js +427 -0
- package/dist/services/qimen/QimenService.js.map +1 -0
- package/dist/services/qimen/calculators/BaMenCalculator.d.ts +53 -0
- package/dist/services/qimen/calculators/BaMenCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/BaMenCalculator.js +105 -0
- package/dist/services/qimen/calculators/BaMenCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/BaShenCalculator.d.ts +34 -0
- package/dist/services/qimen/calculators/BaShenCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/BaShenCalculator.js +57 -0
- package/dist/services/qimen/calculators/BaShenCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/GeJuCalculator.d.ts +141 -0
- package/dist/services/qimen/calculators/GeJuCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/GeJuCalculator.js +711 -0
- package/dist/services/qimen/calculators/GeJuCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.d.ts +56 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.js +98 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.d.ts +54 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.js +117 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/JuShuCalculator.d.ts +57 -0
- package/dist/services/qimen/calculators/JuShuCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/JuShuCalculator.js +115 -0
- package/dist/services/qimen/calculators/JuShuCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.d.ts +117 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.js +237 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts +50 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js +86 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.d.ts +80 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.js +300 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/YongShenCalculator.d.ts +78 -0
- package/dist/services/qimen/calculators/YongShenCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/YongShenCalculator.js +497 -0
- package/dist/services/qimen/calculators/YongShenCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/ZeRiCalculator.d.ts +78 -0
- package/dist/services/qimen/calculators/ZeRiCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/ZeRiCalculator.js +431 -0
- package/dist/services/qimen/calculators/ZeRiCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts +118 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.js +260 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.js.map +1 -0
- package/dist/services/qimen/data/constants.d.ts +105 -0
- package/dist/services/qimen/data/constants.d.ts.map +1 -0
- package/dist/services/qimen/data/constants.js +295 -0
- package/dist/services/qimen/data/constants.js.map +1 -0
- package/dist/services/qimen/data/shensha-rules.d.ts +177 -0
- package/dist/services/qimen/data/shensha-rules.d.ts.map +1 -0
- package/dist/services/qimen/data/shensha-rules.js +397 -0
- package/dist/services/qimen/data/shensha-rules.js.map +1 -0
- package/dist/services/qimen/data/yongshen-rules.d.ts +115 -0
- package/dist/services/qimen/data/yongshen-rules.d.ts.map +1 -0
- package/dist/services/qimen/data/yongshen-rules.js +365 -0
- package/dist/services/qimen/data/yongshen-rules.js.map +1 -0
- package/dist/services/qimen/index.d.ts +20 -0
- package/dist/services/qimen/index.d.ts.map +1 -0
- package/dist/services/qimen/index.js +43 -0
- package/dist/services/qimen/index.js.map +1 -0
- package/dist/services/qimen/types.d.ts +390 -0
- package/dist/services/qimen/types.d.ts.map +1 -0
- package/dist/services/qimen/types.js +20 -0
- package/dist/services/qimen/types.js.map +1 -0
- package/dist/services/qimen/utils/gongUtils.d.ts +80 -0
- package/dist/services/qimen/utils/gongUtils.d.ts.map +1 -0
- package/dist/services/qimen/utils/gongUtils.js +164 -0
- package/dist/services/qimen/utils/gongUtils.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,711 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 格局计算器
|
|
4
|
+
* 识别奇门遁甲中的吉格和凶格
|
|
5
|
+
*
|
|
6
|
+
* 中宫处理说明:
|
|
7
|
+
* - 中宫(5)寄坤二宫,其门/神继承自坤二
|
|
8
|
+
* - 涉及"门克宫"的格局(如门迫)需跳过中宫,因中宫无独立门
|
|
9
|
+
* - 涉及"对冲"的格局(如反吟)需跳过中宫,因中宫无对冲宫
|
|
10
|
+
* - 涉及"相合"的格局跳过中宫,避免与坤二重复计数
|
|
11
|
+
* - 涉及"天盘干"的格局(如入墓、九遁)可检查中宫
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.GeJuCalculator = void 0;
|
|
15
|
+
const constants_1 = require("../data/constants");
|
|
16
|
+
/**
|
|
17
|
+
* 格局计算器
|
|
18
|
+
*/
|
|
19
|
+
class GeJuCalculator {
|
|
20
|
+
/**
|
|
21
|
+
* 计算所有格局
|
|
22
|
+
*
|
|
23
|
+
* @param gongs 九宫信息
|
|
24
|
+
* @param yinYangDun 阴阳遁
|
|
25
|
+
* @param dayGan 日干(时盘/日盘使用日干,月盘使用月干,年盘使用年干)
|
|
26
|
+
* @param hourGan 时干(仅时盘提供,其他盘类型为 null)
|
|
27
|
+
* @param hourZhi 时支(仅时盘提供,其他盘类型为 null)
|
|
28
|
+
* @param xunShou 旬首信息
|
|
29
|
+
* @param panType 盘类型(默认时盘)
|
|
30
|
+
*
|
|
31
|
+
* 格局分类:
|
|
32
|
+
* - 日干格局:只需要 dayGan,所有盘类型都检测
|
|
33
|
+
* - 时辰格局:需要 hourGan 和/或 hourZhi,仅时盘检测
|
|
34
|
+
* - 五不遇时:需要 dayGan + hourGan
|
|
35
|
+
* - 飞干格/伏干格:需要 dayGan + hourGan
|
|
36
|
+
* - 天显时格:需要 hourZhi
|
|
37
|
+
* - 地私门格:需要 hourZhi
|
|
38
|
+
*/
|
|
39
|
+
static calculate(gongs, yinYangDun, dayGan, hourGan, hourZhi, xunShou, panType = '时盘') {
|
|
40
|
+
const geJuList = [];
|
|
41
|
+
// ============= 日干格局(所有盘类型都检测) =============
|
|
42
|
+
geJuList.push(...this.checkSanQiGeJu(gongs));
|
|
43
|
+
geJuList.push(...this.checkSanQiDeMenGeJu(gongs));
|
|
44
|
+
geJuList.push(...this.checkYuNuShouMenGeJu(gongs));
|
|
45
|
+
geJuList.push(...this.checkJiuDunGeJu(gongs));
|
|
46
|
+
geJuList.push(...this.checkMenPoGeJu(gongs));
|
|
47
|
+
geJuList.push(...this.checkRuMuGeJu(gongs));
|
|
48
|
+
geJuList.push(...this.checkJiXingGeJu(gongs));
|
|
49
|
+
geJuList.push(...this.checkFuYinGeJu(gongs, xunShou));
|
|
50
|
+
geJuList.push(...this.checkQingLongTaoGeJu(gongs));
|
|
51
|
+
geJuList.push(...this.checkBaiHuChangKuangGeJu(gongs));
|
|
52
|
+
geJuList.push(...this.checkQiYiZuHeGeJu(gongs)); // 奇仪组合格局(核心)
|
|
53
|
+
geJuList.push(...this.checkFanYinGeJu(gongs, xunShou));
|
|
54
|
+
geJuList.push(...this.checkQiYiXiangHeGeJu(gongs));
|
|
55
|
+
geJuList.push(...this.checkWangGaiGeJu(gongs));
|
|
56
|
+
geJuList.push(...this.checkTianLaoGeJu(gongs));
|
|
57
|
+
// ============= 时辰格局(仅时盘检测) =============
|
|
58
|
+
if (panType === '时盘' && hourGan !== null && hourZhi !== null) {
|
|
59
|
+
// 五不遇时:需要 dayGan + hourGan
|
|
60
|
+
geJuList.push(...this.checkWuBuYuShiGeJu(dayGan, hourGan));
|
|
61
|
+
// 飞干格/伏干格:需要 dayGan + hourGan
|
|
62
|
+
geJuList.push(...this.checkFeiGanFuGanGeJu(gongs, dayGan, hourGan, xunShou));
|
|
63
|
+
// 天显时格:需要 hourZhi
|
|
64
|
+
geJuList.push(...this.checkTianXianShiGeJu(gongs, hourZhi));
|
|
65
|
+
// 地私门格:需要 hourZhi
|
|
66
|
+
geJuList.push(...this.checkDiSiMenGeJu(gongs, hourZhi));
|
|
67
|
+
}
|
|
68
|
+
return geJuList;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 三奇格局(乙丙丁为三奇)
|
|
72
|
+
*/
|
|
73
|
+
static checkSanQiGeJu(gongs) {
|
|
74
|
+
const results = [];
|
|
75
|
+
const sanQi = ['乙', '丙', '丁'];
|
|
76
|
+
const jiMen = ['开', '休', '生'];
|
|
77
|
+
for (const gong of Object.values(gongs)) {
|
|
78
|
+
// 三奇得使:乙丙丁临开休生三吉门
|
|
79
|
+
if (sanQi.includes(gong.tianPanGan) && jiMen.includes(gong.men)) {
|
|
80
|
+
results.push({
|
|
81
|
+
name: '三奇得使',
|
|
82
|
+
type: '吉格',
|
|
83
|
+
description: `${gong.tianPanGan}奇临${gong.men}门于${gong.gongName}宫`,
|
|
84
|
+
gongs: [gong.gong],
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
// 三奇贵人:乙丙丁遇值符
|
|
88
|
+
if (sanQi.includes(gong.tianPanGan) && gong.shen === '符') {
|
|
89
|
+
results.push({
|
|
90
|
+
name: '三奇贵人',
|
|
91
|
+
type: '吉格',
|
|
92
|
+
description: `${gong.tianPanGan}奇遇值符于${gong.gongName}宫`,
|
|
93
|
+
gongs: [gong.gong],
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return results;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* 三奇得门格局(吉格)
|
|
101
|
+
* 比三奇得使更精确:乙配开门、丙配生门、丁配休门
|
|
102
|
+
*
|
|
103
|
+
* 口诀:乙奇开门最为良,丙奇生门福禄昌,丁奇休门多吉庆
|
|
104
|
+
*/
|
|
105
|
+
static checkSanQiDeMenGeJu(gongs) {
|
|
106
|
+
const results = [];
|
|
107
|
+
// 三奇得门的精确配对
|
|
108
|
+
const sanQiMenPair = {
|
|
109
|
+
'乙': '开', // 乙奇配开门
|
|
110
|
+
'丙': '生', // 丙奇配生门
|
|
111
|
+
'丁': '休', // 丁奇配休门
|
|
112
|
+
};
|
|
113
|
+
for (const gong of Object.values(gongs)) {
|
|
114
|
+
const expectedMen = sanQiMenPair[gong.tianPanGan];
|
|
115
|
+
if (expectedMen && gong.men === expectedMen) {
|
|
116
|
+
results.push({
|
|
117
|
+
name: '三奇得门',
|
|
118
|
+
type: '吉格',
|
|
119
|
+
description: `${gong.tianPanGan}奇得${gong.men}门于${gong.gongName}宫`,
|
|
120
|
+
gongs: [gong.gong],
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return results;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 玉女守门格局(吉格)
|
|
128
|
+
* 丁奇临开门或休门,且遇太阴或六合
|
|
129
|
+
*
|
|
130
|
+
* 主阴人暗助、贵人相扶,利于谋事求人
|
|
131
|
+
*/
|
|
132
|
+
static checkYuNuShouMenGeJu(gongs) {
|
|
133
|
+
const results = [];
|
|
134
|
+
for (const gong of Object.values(gongs)) {
|
|
135
|
+
// 丁奇临开门或休门
|
|
136
|
+
if (gong.tianPanGan === '丁' && (gong.men === '开' || gong.men === '休')) {
|
|
137
|
+
// 且遇太阴或六合
|
|
138
|
+
if (gong.shen === '阴' || gong.shen === '合') {
|
|
139
|
+
const shenName = gong.shen === '阴' ? '太阴' : '六合';
|
|
140
|
+
results.push({
|
|
141
|
+
name: '玉女守门',
|
|
142
|
+
type: '吉格',
|
|
143
|
+
description: `丁奇临${gong.men}门遇${shenName}于${gong.gongName}宫`,
|
|
144
|
+
gongs: [gong.gong],
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return results;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* 九遁格局
|
|
153
|
+
*/
|
|
154
|
+
static checkJiuDunGeJu(gongs) {
|
|
155
|
+
const results = [];
|
|
156
|
+
for (const gong of Object.values(gongs)) {
|
|
157
|
+
// 天遁:丙+生门+天心
|
|
158
|
+
if (gong.tianPanGan === '丙' && gong.men === '生' && gong.xing === '心') {
|
|
159
|
+
results.push({
|
|
160
|
+
name: '天遁',
|
|
161
|
+
type: '吉格',
|
|
162
|
+
description: `丙奇临生门天心于${gong.gongName}宫`,
|
|
163
|
+
gongs: [gong.gong],
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
// 地遁:乙+开门+地盘己
|
|
167
|
+
if (gong.tianPanGan === '乙' && gong.men === '开' && gong.diPanGan === '己') {
|
|
168
|
+
results.push({
|
|
169
|
+
name: '地遁',
|
|
170
|
+
type: '吉格',
|
|
171
|
+
description: `乙奇临开门遇地盘己于${gong.gongName}宫`,
|
|
172
|
+
gongs: [gong.gong],
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
// 人遁:丁+休门+太阴
|
|
176
|
+
if (gong.tianPanGan === '丁' && gong.men === '休' && gong.shen === '阴') {
|
|
177
|
+
results.push({
|
|
178
|
+
name: '人遁',
|
|
179
|
+
type: '吉格',
|
|
180
|
+
description: `丁奇临休门遇太阴于${gong.gongName}宫`,
|
|
181
|
+
gongs: [gong.gong],
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
// 神遁:丙+生门+九天
|
|
185
|
+
if (gong.tianPanGan === '丙' && gong.men === '生' && gong.shen === '天') {
|
|
186
|
+
results.push({
|
|
187
|
+
name: '神遁',
|
|
188
|
+
type: '吉格',
|
|
189
|
+
description: `丙奇临生门遇九天于${gong.gongName}宫`,
|
|
190
|
+
gongs: [gong.gong],
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
// 鬼遁:乙+生门+九地
|
|
194
|
+
if (gong.tianPanGan === '乙' && gong.men === '生' && gong.shen === '地') {
|
|
195
|
+
results.push({
|
|
196
|
+
name: '鬼遁',
|
|
197
|
+
type: '吉格',
|
|
198
|
+
description: `乙奇临生门遇九地于${gong.gongName}宫`,
|
|
199
|
+
gongs: [gong.gong],
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
// 龙遁:乙+休门+六合(合为六合)
|
|
203
|
+
if (gong.tianPanGan === '乙' && gong.men === '休' && gong.shen === '合') {
|
|
204
|
+
results.push({
|
|
205
|
+
name: '龙遁',
|
|
206
|
+
type: '吉格',
|
|
207
|
+
description: `乙奇临休门遇六合于${gong.gongName}宫`,
|
|
208
|
+
gongs: [gong.gong],
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
// 虎遁:乙+开门+太阴
|
|
212
|
+
if (gong.tianPanGan === '乙' && gong.men === '开' && gong.shen === '阴') {
|
|
213
|
+
results.push({
|
|
214
|
+
name: '虎遁',
|
|
215
|
+
type: '吉格',
|
|
216
|
+
description: `乙奇临开门遇太阴于${gong.gongName}宫`,
|
|
217
|
+
gongs: [gong.gong],
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
// 风遁:乙+开门+天辅
|
|
221
|
+
if (gong.tianPanGan === '乙' && gong.men === '开' && gong.xing === '辅') {
|
|
222
|
+
results.push({
|
|
223
|
+
name: '风遁',
|
|
224
|
+
type: '吉格',
|
|
225
|
+
description: `乙奇临开门天辅于${gong.gongName}宫`,
|
|
226
|
+
gongs: [gong.gong],
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
// 云遁:乙+休门+六合+天芮
|
|
230
|
+
if (gong.tianPanGan === '乙' && gong.men === '休' && gong.shen === '合' && gong.xing === '芮') {
|
|
231
|
+
results.push({
|
|
232
|
+
name: '云遁',
|
|
233
|
+
type: '吉格',
|
|
234
|
+
description: `乙奇临休门遇六合天芮于${gong.gongName}宫`,
|
|
235
|
+
gongs: [gong.gong],
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return results;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* 门迫格局(凶格)
|
|
243
|
+
*/
|
|
244
|
+
static checkMenPoGeJu(gongs) {
|
|
245
|
+
const results = [];
|
|
246
|
+
// 门克宫为门迫
|
|
247
|
+
const menWuXing = {
|
|
248
|
+
'休': '水',
|
|
249
|
+
'生': '土',
|
|
250
|
+
'伤': '木',
|
|
251
|
+
'杜': '木',
|
|
252
|
+
'景': '火',
|
|
253
|
+
'死': '土',
|
|
254
|
+
'惊': '金',
|
|
255
|
+
'开': '金',
|
|
256
|
+
};
|
|
257
|
+
const keMap = {
|
|
258
|
+
'木': ['土'],
|
|
259
|
+
'火': ['金'],
|
|
260
|
+
'土': ['水'],
|
|
261
|
+
'金': ['木'],
|
|
262
|
+
'水': ['火'],
|
|
263
|
+
};
|
|
264
|
+
for (const gong of Object.values(gongs)) {
|
|
265
|
+
if (gong.gong === 5)
|
|
266
|
+
continue; // 中宫跳过
|
|
267
|
+
const menWX = menWuXing[gong.men];
|
|
268
|
+
const gongWX = gong.wuXing;
|
|
269
|
+
// 门克宫
|
|
270
|
+
if (keMap[menWX]?.includes(gongWX)) {
|
|
271
|
+
results.push({
|
|
272
|
+
name: '门迫',
|
|
273
|
+
type: '凶格',
|
|
274
|
+
description: `${gong.men}门克${gong.gongName}宫`,
|
|
275
|
+
gongs: [gong.gong],
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return results;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* 入墓格局(凶格)
|
|
283
|
+
* 注:甲遁于六仪,不会出现在天盘,故不检测甲入墓
|
|
284
|
+
*/
|
|
285
|
+
static checkRuMuGeJu(gongs) {
|
|
286
|
+
const results = [];
|
|
287
|
+
// 天干入墓宫位(三奇六仪)- 采用传统五行墓库
|
|
288
|
+
// 木墓未(坤2),火土墓戌(乾6),金墓丑(艮8),水墓辰(巽4)
|
|
289
|
+
const ganMuGong = {
|
|
290
|
+
'乙': 2, // 乙(木)墓在坤(未)
|
|
291
|
+
'丙': 6, // 丙(火)墓在乾(戌)
|
|
292
|
+
'丁': 6, // 丁(火)墓在乾(戌)
|
|
293
|
+
'戊': 6, // 戊(土)墓在乾(戌)
|
|
294
|
+
'己': 6, // 己(土)墓在乾(戌)
|
|
295
|
+
'庚': 8, // 庚(金)墓在艮(丑)
|
|
296
|
+
'辛': 8, // 辛(金)墓在艮(丑)
|
|
297
|
+
'壬': 4, // 壬(水)墓在巽(辰)
|
|
298
|
+
'癸': 4, // 癸(水)墓在巽(辰)
|
|
299
|
+
};
|
|
300
|
+
for (const gong of Object.values(gongs)) {
|
|
301
|
+
const muGong = ganMuGong[gong.tianPanGan];
|
|
302
|
+
if (muGong && gong.gong === muGong) {
|
|
303
|
+
// 三奇入墓尤为严重
|
|
304
|
+
const isSanQi = ['乙', '丙', '丁'].includes(gong.tianPanGan);
|
|
305
|
+
results.push({
|
|
306
|
+
name: isSanQi ? '三奇入墓' : '入墓',
|
|
307
|
+
type: '凶格',
|
|
308
|
+
description: `${gong.tianPanGan}入墓于${gong.gongName}宫`,
|
|
309
|
+
gongs: [gong.gong],
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return results;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* 六仪击刑格局(凶格)
|
|
317
|
+
*/
|
|
318
|
+
static checkJiXingGeJu(gongs) {
|
|
319
|
+
const results = [];
|
|
320
|
+
// 六仪所临刑宫(基于地支三刑)
|
|
321
|
+
// 六仪对应旬首:戊(甲子)、己(甲戌)、庚(甲申)、辛(甲午)、壬(甲辰)、癸(甲寅)
|
|
322
|
+
// 三刑规则:子刑卯、寅巳申三刑、丑戌未三刑、辰午酉亥自刑
|
|
323
|
+
const liuYiXingGong = {
|
|
324
|
+
'戊': 3, // 戊(甲子):子刑卯 → 震3宫
|
|
325
|
+
'己': 2, // 己(甲戌):戌刑未 → 坤2宫
|
|
326
|
+
'庚': 8, // 庚(甲申):申刑寅 → 艮8宫
|
|
327
|
+
'辛': 9, // 辛(甲午):午自刑 → 离9宫
|
|
328
|
+
'壬': 4, // 壬(甲辰):辰自刑 → 巽4宫
|
|
329
|
+
'癸': 4, // 癸(甲寅):寅刑巳 → 巽4宫
|
|
330
|
+
};
|
|
331
|
+
for (const gong of Object.values(gongs)) {
|
|
332
|
+
const xingGong = liuYiXingGong[gong.tianPanGan];
|
|
333
|
+
if (xingGong && gong.gong === xingGong) {
|
|
334
|
+
results.push({
|
|
335
|
+
name: '六仪击刑',
|
|
336
|
+
type: '凶格',
|
|
337
|
+
description: `${gong.tianPanGan}击刑于${gong.gongName}宫`,
|
|
338
|
+
gongs: [gong.gong],
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return results;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* 五不遇时(凶格)
|
|
346
|
+
* 时干克日干,且阴阳属性相同(同性相克)
|
|
347
|
+
*
|
|
348
|
+
* 口诀:
|
|
349
|
+
* 甲日最怕庚午时,乙日忌见辛巳知,
|
|
350
|
+
* 丙日壬辰最难当,丁日癸卯必须防,
|
|
351
|
+
* 戊日甲寅时上忌,己日乙丑最为凶,
|
|
352
|
+
* 庚日丙子不为良,辛日丁酉时中藏,
|
|
353
|
+
* 壬日戊申时上忌,癸日己未定不昌。
|
|
354
|
+
*/
|
|
355
|
+
static checkWuBuYuShiGeJu(dayGan, hourGan) {
|
|
356
|
+
const results = [];
|
|
357
|
+
// 五不遇时映射:日干 → 所忌时干
|
|
358
|
+
const wuBuYuShiMap = {
|
|
359
|
+
'甲': '庚', // 甲日庚时(阳木被阳金克)
|
|
360
|
+
'乙': '辛', // 乙日辛时(阴木被阴金克)
|
|
361
|
+
'丙': '壬', // 丙日壬时(阳火被阳水克)
|
|
362
|
+
'丁': '癸', // 丁日癸时(阴火被阴水克)
|
|
363
|
+
'戊': '甲', // 戊日甲时(阳土被阳木克)
|
|
364
|
+
'己': '乙', // 己日乙时(阴土被阴木克)
|
|
365
|
+
'庚': '丙', // 庚日丙时(阳金被阳火克)
|
|
366
|
+
'辛': '丁', // 辛日丁时(阴金被阴火克)
|
|
367
|
+
'壬': '戊', // 壬日戊时(阳水被阳土克)
|
|
368
|
+
'癸': '己', // 癸日己时(阴水被阴土克)
|
|
369
|
+
};
|
|
370
|
+
if (wuBuYuShiMap[dayGan] === hourGan) {
|
|
371
|
+
results.push({
|
|
372
|
+
name: '五不遇时',
|
|
373
|
+
type: '凶格',
|
|
374
|
+
description: `时干${hourGan}克日干${dayGan}`,
|
|
375
|
+
gongs: [],
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
return results;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* 伏吟/反吟格局
|
|
382
|
+
*/
|
|
383
|
+
static checkFuYinGeJu(gongs, xunShou) {
|
|
384
|
+
const results = [];
|
|
385
|
+
// 星门伏吟:值符临本宫
|
|
386
|
+
if (xunShou.zhiFuGong === xunShou.zhiFuLuoGong) {
|
|
387
|
+
results.push({
|
|
388
|
+
name: '星伏吟',
|
|
389
|
+
type: '中性',
|
|
390
|
+
description: '值符星临本宫',
|
|
391
|
+
gongs: [xunShou.zhiFuGong],
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
// 门伏吟:值使临本宫
|
|
395
|
+
if (xunShou.zhiShiGong === xunShou.zhiShiLuoGong) {
|
|
396
|
+
results.push({
|
|
397
|
+
name: '门伏吟',
|
|
398
|
+
type: '中性',
|
|
399
|
+
description: '值使门临本宫',
|
|
400
|
+
gongs: [xunShou.zhiShiGong],
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
// 天盘地盘相同为伏吟
|
|
404
|
+
let fuYinCount = 0;
|
|
405
|
+
for (const gong of Object.values(gongs)) {
|
|
406
|
+
if (gong.tianPanGan === gong.diPanGan) {
|
|
407
|
+
fuYinCount++;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
if (fuYinCount >= 8) {
|
|
411
|
+
results.push({
|
|
412
|
+
name: '天地伏吟',
|
|
413
|
+
type: '中性',
|
|
414
|
+
description: '天盘地盘干支相同',
|
|
415
|
+
gongs: [],
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
return results;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* 青龙逃走(吉格)
|
|
422
|
+
*/
|
|
423
|
+
static checkQingLongTaoGeJu(gongs) {
|
|
424
|
+
const results = [];
|
|
425
|
+
for (const gong of Object.values(gongs)) {
|
|
426
|
+
// 日干临生门逢六合
|
|
427
|
+
if (gong.men === '生' && gong.shen === '合') {
|
|
428
|
+
results.push({
|
|
429
|
+
name: '青龙逃走',
|
|
430
|
+
type: '吉格',
|
|
431
|
+
description: `生门遇六合于${gong.gongName}宫`,
|
|
432
|
+
gongs: [gong.gong],
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return results;
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* 白虎猖狂(凶格)
|
|
440
|
+
*/
|
|
441
|
+
static checkBaiHuChangKuangGeJu(gongs) {
|
|
442
|
+
const results = [];
|
|
443
|
+
for (const gong of Object.values(gongs)) {
|
|
444
|
+
// 庚临开门逢白虎
|
|
445
|
+
if (gong.tianPanGan === '庚' && gong.men === '开' && gong.shen === '虎') {
|
|
446
|
+
results.push({
|
|
447
|
+
name: '白虎猖狂',
|
|
448
|
+
type: '凶格',
|
|
449
|
+
description: `庚临开门遇白虎于${gong.gongName}宫`,
|
|
450
|
+
gongs: [gong.gong],
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
return results;
|
|
455
|
+
}
|
|
456
|
+
// ============= 新增格局检测方法 =============
|
|
457
|
+
/**
|
|
458
|
+
* 奇仪组合格局检测(断卦核心)
|
|
459
|
+
* 检测天盘干+地盘干的特定组合
|
|
460
|
+
*
|
|
461
|
+
* 包含33种格局:
|
|
462
|
+
* - 吉格10种:青龙返首、飞鸟跌穴、丁遇戊格、日月会合、乙奇伏吟、丙奇伏吟等
|
|
463
|
+
* - 凶格23种:青龙折足、朱雀投江、大格、小格、刑格、辛仪伏吟、戊仪伏吟等
|
|
464
|
+
*/
|
|
465
|
+
static checkQiYiZuHeGeJu(gongs) {
|
|
466
|
+
const results = [];
|
|
467
|
+
for (const gong of Object.values(gongs)) {
|
|
468
|
+
// 遍历奇仪组合格局映射表
|
|
469
|
+
for (const geJuDef of constants_1.QI_YI_GEJU_MAP) {
|
|
470
|
+
if (gong.tianPanGan === geJuDef.tianGan && gong.diPanGan === geJuDef.diGan) {
|
|
471
|
+
results.push({
|
|
472
|
+
name: geJuDef.name,
|
|
473
|
+
type: geJuDef.type,
|
|
474
|
+
description: `${geJuDef.description},于${gong.gongName}宫`,
|
|
475
|
+
gongs: [gong.gong],
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
return results;
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* 反吟格局检测
|
|
484
|
+
*/
|
|
485
|
+
static checkFanYinGeJu(gongs, xunShou) {
|
|
486
|
+
const results = [];
|
|
487
|
+
// 星反吟:值符星落对宫
|
|
488
|
+
const zhiFuChongGong = constants_1.CHONG_GONG_MAP[xunShou.zhiFuGong];
|
|
489
|
+
if (zhiFuChongGong && xunShou.zhiFuLuoGong === zhiFuChongGong) {
|
|
490
|
+
results.push({
|
|
491
|
+
name: '星反吟',
|
|
492
|
+
type: '中性',
|
|
493
|
+
description: '值符星落对冲宫',
|
|
494
|
+
gongs: [xunShou.zhiFuLuoGong],
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
// 门反吟:值使门落对宫
|
|
498
|
+
const zhiShiChongGong = constants_1.CHONG_GONG_MAP[xunShou.zhiShiGong];
|
|
499
|
+
if (zhiShiChongGong && xunShou.zhiShiLuoGong === zhiShiChongGong) {
|
|
500
|
+
results.push({
|
|
501
|
+
name: '门反吟',
|
|
502
|
+
type: '中性',
|
|
503
|
+
description: '值使门落对冲宫',
|
|
504
|
+
gongs: [xunShou.zhiShiLuoGong],
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
// 天地反吟(传统定义):某宫的天盘干 = 该宫对冲宫的地盘干
|
|
508
|
+
// 即天盘干落到了地盘干的对冲位置
|
|
509
|
+
let fanYinCount = 0;
|
|
510
|
+
for (const gong of Object.values(gongs)) {
|
|
511
|
+
if (gong.gong === 5)
|
|
512
|
+
continue; // 跳过中宫
|
|
513
|
+
const chongGong = constants_1.CHONG_GONG_MAP[gong.gong];
|
|
514
|
+
if (chongGong && chongGong !== 5) {
|
|
515
|
+
// 获取对冲宫的地盘干
|
|
516
|
+
const chongGongInfo = gongs[chongGong];
|
|
517
|
+
// 检查当前宫的天盘干是否等于对冲宫的地盘干
|
|
518
|
+
if (chongGongInfo && gong.tianPanGan === chongGongInfo.diPanGan) {
|
|
519
|
+
fanYinCount++;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
// 当大多数宫位(6宫以上)符合反吟条件时,判定为天地反吟
|
|
524
|
+
if (fanYinCount >= 6) {
|
|
525
|
+
results.push({
|
|
526
|
+
name: '天地反吟',
|
|
527
|
+
type: '中性',
|
|
528
|
+
description: '天盘干多落对冲宫地盘干位',
|
|
529
|
+
gongs: [],
|
|
530
|
+
});
|
|
531
|
+
}
|
|
532
|
+
return results;
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* 查找干所在的宫位(辅助方法)
|
|
536
|
+
*/
|
|
537
|
+
static findGanGong(gan, gongs) {
|
|
538
|
+
for (const gong of Object.values(gongs)) {
|
|
539
|
+
if (gong.diPanGan === gan) {
|
|
540
|
+
return gong.gong;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
return null;
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* 奇仪相合格局检测
|
|
547
|
+
*/
|
|
548
|
+
static checkQiYiXiangHeGeJu(gongs) {
|
|
549
|
+
const results = [];
|
|
550
|
+
for (const gong of Object.values(gongs)) {
|
|
551
|
+
if (gong.gong === 5)
|
|
552
|
+
continue; // 跳过中宫
|
|
553
|
+
const tianGan = gong.tianPanGan;
|
|
554
|
+
const diGan = gong.diPanGan;
|
|
555
|
+
// 检查天盘干与地盘干是否相合
|
|
556
|
+
if (constants_1.GAN_HE_MAP[tianGan] === diGan) {
|
|
557
|
+
const heName = `${tianGan}${diGan}合`;
|
|
558
|
+
results.push({
|
|
559
|
+
name: heName,
|
|
560
|
+
type: '吉格',
|
|
561
|
+
description: `${tianGan}与${diGan}相合于${gong.gongName}宫`,
|
|
562
|
+
gongs: [gong.gong],
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
return results;
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* 飞干格/伏干格检测
|
|
570
|
+
*/
|
|
571
|
+
static checkFeiGanFuGanGeJu(gongs, dayGan, hourGan, xunShou) {
|
|
572
|
+
const results = [];
|
|
573
|
+
// 处理甲干:甲遁于六仪,需要找到对应的六仪
|
|
574
|
+
const effectiveDayGan = dayGan === '甲' ? (0, constants_1.getLiuYiGan)(xunShou.xunShou) : dayGan;
|
|
575
|
+
const effectiveHourGan = hourGan === '甲' ? (0, constants_1.getLiuYiGan)(xunShou.xunShou) : hourGan;
|
|
576
|
+
// 找日干在地盘的位置
|
|
577
|
+
const dayGanDiPanGong = this.findGanGong(effectiveDayGan, gongs);
|
|
578
|
+
// 找时干在地盘的位置
|
|
579
|
+
const hourGanDiPanGong = this.findGanGong(effectiveHourGan, gongs);
|
|
580
|
+
// 找日干在天盘的位置
|
|
581
|
+
let dayGanTianPanGong = null;
|
|
582
|
+
let hourGanTianPanGong = null;
|
|
583
|
+
for (const gong of Object.values(gongs)) {
|
|
584
|
+
if (gong.tianPanGan === effectiveDayGan) {
|
|
585
|
+
dayGanTianPanGong = gong.gong;
|
|
586
|
+
}
|
|
587
|
+
if (gong.tianPanGan === effectiveHourGan) {
|
|
588
|
+
hourGanTianPanGong = gong.gong;
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
// 飞干格:时干天盘落日干地盘宫
|
|
592
|
+
if (hourGanTianPanGong && dayGanDiPanGong && hourGanTianPanGong === dayGanDiPanGong) {
|
|
593
|
+
const dayGanDesc = dayGan === '甲' ? `甲(遁${effectiveDayGan})` : dayGan;
|
|
594
|
+
const hourGanDesc = hourGan === '甲' ? `甲(遁${effectiveHourGan})` : hourGan;
|
|
595
|
+
results.push({
|
|
596
|
+
name: '飞干格',
|
|
597
|
+
type: '凶格',
|
|
598
|
+
description: `时干${hourGanDesc}飞临日干${dayGanDesc}地盘宫`,
|
|
599
|
+
gongs: [hourGanTianPanGong],
|
|
600
|
+
});
|
|
601
|
+
}
|
|
602
|
+
// 伏干格:日干天盘落时干地盘宫
|
|
603
|
+
if (dayGanTianPanGong && hourGanDiPanGong && dayGanTianPanGong === hourGanDiPanGong) {
|
|
604
|
+
const dayGanDesc = dayGan === '甲' ? `甲(遁${effectiveDayGan})` : dayGan;
|
|
605
|
+
const hourGanDesc = hourGan === '甲' ? `甲(遁${effectiveHourGan})` : hourGan;
|
|
606
|
+
results.push({
|
|
607
|
+
name: '伏干格',
|
|
608
|
+
type: '凶格',
|
|
609
|
+
description: `日干${dayGanDesc}伏于时干${hourGanDesc}地盘宫`,
|
|
610
|
+
gongs: [dayGanTianPanGong],
|
|
611
|
+
});
|
|
612
|
+
}
|
|
613
|
+
return results;
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* 天显时格检测
|
|
617
|
+
*/
|
|
618
|
+
static checkTianXianShiGeJu(gongs, hourZhi) {
|
|
619
|
+
const results = [];
|
|
620
|
+
const sanQi = ['乙', '丙', '丁'];
|
|
621
|
+
const jiMen = ['开', '休', '生'];
|
|
622
|
+
const hourGong = constants_1.DI_ZHI_GONG[hourZhi];
|
|
623
|
+
for (const gong of Object.values(gongs)) {
|
|
624
|
+
if (gong.gong !== hourGong)
|
|
625
|
+
continue;
|
|
626
|
+
// 三奇落时支宫位且逢吉门
|
|
627
|
+
if (sanQi.includes(gong.tianPanGan) && jiMen.includes(gong.men)) {
|
|
628
|
+
results.push({
|
|
629
|
+
name: '天显时格',
|
|
630
|
+
type: '吉格',
|
|
631
|
+
description: `${gong.tianPanGan}奇临${gong.men}门于${hourZhi}时宫`,
|
|
632
|
+
gongs: [gong.gong],
|
|
633
|
+
});
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
return results;
|
|
637
|
+
}
|
|
638
|
+
/**
|
|
639
|
+
* 地私门格检测
|
|
640
|
+
*/
|
|
641
|
+
static checkDiSiMenGeJu(gongs, hourZhi) {
|
|
642
|
+
const results = [];
|
|
643
|
+
const liuYi = ['戊', '己', '庚', '辛', '壬', '癸'];
|
|
644
|
+
const xiongMen = ['死', '惊', '杜'];
|
|
645
|
+
const hourGong = constants_1.DI_ZHI_GONG[hourZhi];
|
|
646
|
+
for (const gong of Object.values(gongs)) {
|
|
647
|
+
if (gong.gong !== hourGong)
|
|
648
|
+
continue;
|
|
649
|
+
// 六仪落时支宫位且逢凶门
|
|
650
|
+
if (liuYi.includes(gong.tianPanGan) && xiongMen.includes(gong.men)) {
|
|
651
|
+
results.push({
|
|
652
|
+
name: '地私门格',
|
|
653
|
+
type: '凶格',
|
|
654
|
+
description: `${gong.tianPanGan}临${gong.men}门于${hourZhi}时宫`,
|
|
655
|
+
gongs: [gong.gong],
|
|
656
|
+
});
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
return results;
|
|
660
|
+
}
|
|
661
|
+
/**
|
|
662
|
+
* 网盖格检测
|
|
663
|
+
*/
|
|
664
|
+
static checkWangGaiGeJu(gongs) {
|
|
665
|
+
const results = [];
|
|
666
|
+
for (const gong of Object.values(gongs)) {
|
|
667
|
+
// 天网四张:戊落乾6宫逢死/惊门
|
|
668
|
+
if (gong.gong === 6 && gong.tianPanGan === '戊' && (gong.men === '死' || gong.men === '惊')) {
|
|
669
|
+
results.push({
|
|
670
|
+
name: '天网四张',
|
|
671
|
+
type: '凶格',
|
|
672
|
+
description: `戊临${gong.men}门于乾宫`,
|
|
673
|
+
gongs: [gong.gong],
|
|
674
|
+
});
|
|
675
|
+
}
|
|
676
|
+
// 地网盖:癸落巽4宫逢凶门/凶神
|
|
677
|
+
if (gong.gong === 4 && gong.tianPanGan === '癸' && (gong.men === '死' || gong.men === '杜')) {
|
|
678
|
+
results.push({
|
|
679
|
+
name: '地网盖',
|
|
680
|
+
type: '凶格',
|
|
681
|
+
description: `癸临${gong.men}门于巽宫`,
|
|
682
|
+
gongs: [gong.gong],
|
|
683
|
+
});
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
return results;
|
|
687
|
+
}
|
|
688
|
+
/**
|
|
689
|
+
* 天牢格检测
|
|
690
|
+
* 庚+杜门 = 天牢,主阻滞闭塞、官司牢狱
|
|
691
|
+
*
|
|
692
|
+
* 注:庚+开门+白虎 由"白虎猖狂"格局检测,不再重复
|
|
693
|
+
*/
|
|
694
|
+
static checkTianLaoGeJu(gongs) {
|
|
695
|
+
const results = [];
|
|
696
|
+
for (const gong of Object.values(gongs)) {
|
|
697
|
+
// 庚+杜门 = 天牢
|
|
698
|
+
if (gong.tianPanGan === '庚' && gong.men === '杜') {
|
|
699
|
+
results.push({
|
|
700
|
+
name: '天牢',
|
|
701
|
+
type: '凶格',
|
|
702
|
+
description: `庚临杜门于${gong.gongName}宫,主阻滞闭塞`,
|
|
703
|
+
gongs: [gong.gong],
|
|
704
|
+
});
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
return results;
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
exports.GeJuCalculator = GeJuCalculator;
|
|
711
|
+
//# sourceMappingURL=GeJuCalculator.js.map
|