dsh-metaphysics 0.38.2 → 0.50.1

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/engine/liuyao.js CHANGED
@@ -66,6 +66,7 @@ const LIUSHEN_START = { 甲: 0, 乙: 0, 丙: 1, 丁: 1, 戊: 2, 己: 3, 庚: 4,
66
66
  const ZHI_CHONG_PAIRS = [['子', '午'], ['丑', '未'], ['寅', '申'], ['卯', '酉'], ['辰', '戌'], ['巳', '亥']];
67
67
  const ZHI_HE_PAIRS = [['子', '丑'], ['寅', '亥'], ['卯', '戌'], ['辰', '酉'], ['巳', '申'], ['午', '未']];
68
68
  const CHONG_OF = Object.fromEntries(ZHI_CHONG_PAIRS.flatMap(([a, b]) => [[a, b], [b, a]]));
69
+ const HE_OF = Object.fromEntries(ZHI_HE_PAIRS.flatMap(([a, b]) => [[a, b], [b, a]]));
69
70
  const TRIGRAM_OPPOSITE = { 乾: '巽', 巽: '乾', 坎: '离', 离: '坎', 艮: '坤', 坤: '艮', 震: '兑', 兑: '震' };
70
71
 
71
72
  // ── 化进神 / 化退神 ────────────────────────────────────────────────
@@ -701,6 +702,91 @@ export function yongshenStrength(result, useGod, opts = {}) {
701
702
  };
702
703
  }
703
704
 
705
+ // ── 伏神出伏:飞伏生克 + 月建日辰,只判条件、不出应期 ─────────────────
706
+ // 知识卡只承诺四件事:飞神生伏、伏神克飞、日月生扶算得力,飞神克伏算受压。
707
+ // 这里把「助」与「压」分开列,再按四档归并;不排各家优先级,也不推日期。
708
+ export const FUSHEN_VERDICTS = ['可出', '有助有压', '受压难出', '未得助'];
709
+
710
+ /**
711
+ * 伏神出不出得来:先看飞伏生克,再叠月建与日辰。
712
+ * 助:飞生伏、伏克飞、日辰生/比和、月建旺/相;
713
+ * 压:飞克伏、日辰克、月破。旬空只标出,不并入档位。
714
+ * @param {object} result buildLiuyao 的结果
715
+ * @param {object} useGod yongshenOf 的结果
716
+ * @param {{monthBranch?: string, dayBranch?: string}} opts
717
+ */
718
+ export function fushenAccess(result, useGod, opts = {}) {
719
+ if (!useGod || !Array.isArray(useGod.fushen) || !useGod.fushen.length) return null;
720
+ const monthBranch = opts.monthBranch || null;
721
+ const dayBranch = opts.dayBranch || (result && result.dayGanZhi ? result.dayGanZhi.branch : null);
722
+ const monthElement = monthBranch ? zhiElementOf(monthBranch) : null;
723
+ const dayElement = dayBranch ? zhiElementOf(dayBranch) : null;
724
+ const kong = Array.isArray(result && result.xunKong)
725
+ ? result.xunKong
726
+ : (result && typeof result.xunKong === 'string' ? result.xunKong.split('') : []);
727
+
728
+ const items = useGod.fushen.map((f) => {
729
+ const element = f.element || zhiElementOf(f.branch);
730
+ const relation = f.relation || null;
731
+ const monthState = monthStateOf(element, monthElement);
732
+ const monthChong = !!(monthBranch && CHONG_OF[f.branch] === monthBranch);
733
+ const dayRelation = dayRelationOf(element, dayElement);
734
+ const kongz = kong.includes(f.branch);
735
+
736
+ const supports = [];
737
+ if (relation === '飞生伏') supports.push('飞神生伏');
738
+ if (relation === '伏克飞') supports.push('伏神克飞');
739
+ if (dayRelation === '日生') supports.push('日辰生伏');
740
+ if (dayRelation === '比和') supports.push('日辰比和');
741
+ if (monthState === '旺') supports.push('月建同气');
742
+ if (monthState === '相') supports.push('月建相生');
743
+
744
+ const pressures = [];
745
+ if (relation === '飞克伏') pressures.push('飞神克伏');
746
+ if (dayRelation === '日克') pressures.push('日辰克伏');
747
+ if (monthChong) pressures.push('月破');
748
+
749
+ const verdict = !relation ? '飞伏未知'
750
+ : supports.length && pressures.length ? '有助有压'
751
+ : supports.length ? '可出'
752
+ : pressures.length ? '受压难出' : '未得助';
753
+ const basis = monthBranch && dayBranch ? '月建日辰' : monthBranch ? '月建' : dayBranch ? '日辰' : '飞伏';
754
+
755
+ const facts = [];
756
+ if (relation) facts.push(`飞伏${relation}`);
757
+ if (monthBranch) facts.push(`月建${monthBranch}(${monthElement})${monthState}${monthChong ? '、月破' : ''}`);
758
+ if (dayBranch) facts.push(`日辰${dayBranch}(${dayElement})${dayRelation}`);
759
+ if (kongz) facts.push('伏神旬空');
760
+ const say = `第${f.position}爻${f.branch}${element}:${facts.join(',')} → ${verdict}` +
761
+ `(助:${supports.join('、') || '无'};压:${pressures.join('、') || '无'})`;
762
+
763
+ return {
764
+ position: f.position,
765
+ branch: f.branch,
766
+ element,
767
+ relation,
768
+ fei: f.fei || null,
769
+ monthState,
770
+ monthChong,
771
+ dayRelation,
772
+ kong: kongz,
773
+ basis,
774
+ supports,
775
+ pressures,
776
+ verdict,
777
+ say,
778
+ };
779
+ });
780
+
781
+ return {
782
+ month: monthBranch ? { branch: monthBranch, element: monthElement } : null,
783
+ day: dayBranch ? { branch: dayBranch, element: dayElement } : null,
784
+ items,
785
+ labels: items.map((it) => `第${it.position}爻${it.verdict}`),
786
+ note: '出伏只看「有没有助、有没有压」两件事:飞生伏、伏克飞、日辰生/比和、月建旺/相算助;飞克伏、日辰克、月破算压。四档只把条件并列,不排各家优先级;旬空只标出,不并入档位,也不出应期。',
787
+ };
788
+ }
789
+
704
790
  // ── 全卦逐爻旺衰:月建日辰落到六爻全部 ──────────────────────────────
705
791
  // 与用神旺衰同一套判定(月令五态、日辰五关系、三种冲法),区别只在不挑用神:
706
792
  // 六爻每一爻都给一次,世应、动爻、旬空另标,看得出整张卦的气压在哪一头。
@@ -845,3 +931,102 @@ export function jinTuiPower(result, opts = {}) {
845
931
  note: '进退只说这一爻往哪边走;力重是把它放回月建日辰,看有没有托着——得令则进得动、退得慢,失令则进得虚、退得实,月破压过一切。仍不直接定吉凶:用神化进为喜,忌神化进反而是忌。',
846
932
  };
847
933
  }
934
+
935
+ // ── 应期线索:只列「该留意哪一支」,不给日期 ─────────────────────────
936
+ // 知识卡 liuyao-yingqi 的承诺是「只作时间窗口的提示」:传统取用神逢值、
937
+ // 逢冲、逢合之期,旬空另等出空、冲空。这里只把这些地支列出来,再按月建给
938
+ // 一个快慢方向;不换算成日期、不排先后、不判忌神受制,也不叠动变连环。
939
+ export const YINGQI_TEMPO = ['偏速', '偏缓', '待解', '未定'];
940
+ const TEMPO_SAY = {
941
+ 偏速: '用神得月令之气,应期偏近',
942
+ 偏缓: '用神失月令之气,应期偏远',
943
+ 待解: '有月破或旬空的用神,先等条件解除',
944
+ 未定: '快慢不定(缺月建,或用神两现而旺衰不一)',
945
+ };
946
+ const TRIGGER_ORDER = ['逢值', '逢冲', '逢合', '出空填实', '冲空'];
947
+
948
+ /**
949
+ * 应期线索:用神逢值、逢冲、逢合,旬空另标出空与冲空。
950
+ * @param {object} result buildLiuyao 的结果
951
+ * @param {object} useGod yongshenOf 的结果
952
+ * @param {{monthBranch?: string}} opts
953
+ */
954
+ export function yingqiWindow(result, useGod, opts = {}) {
955
+ if (!useGod || !useGod.liuqin) return null;
956
+ const found = Array.isArray(useGod.found) ? useGod.found : [];
957
+ const fushen = Array.isArray(useGod.fushen) ? useGod.fushen : [];
958
+ const viaFushen = !found.length && fushen.length > 0;
959
+ const source = found.length ? found : fushen;
960
+ if (!source.length) return null;
961
+ const monthBranch = opts.monthBranch || null;
962
+ const monthElement = monthBranch ? zhiElementOf(monthBranch) : null;
963
+ const kong = Array.isArray(result && result.xunKong)
964
+ ? result.xunKong
965
+ : (result && typeof result.xunKong === 'string' ? result.xunKong.split('') : []);
966
+
967
+ const items = source.map((l) => {
968
+ const branch = l.branch;
969
+ const element = l.element || zhiElementOf(branch);
970
+ const monthState = monthStateOf(element, monthElement);
971
+ const isEmpty = kong.includes(branch);
972
+ const monthChong = !!(monthBranch && CHONG_OF[branch] === monthBranch);
973
+ const tempo = monthChong ? '待解'
974
+ : isEmpty ? '待解'
975
+ : monthState === 'unknown' ? '未定'
976
+ : (monthState === '旺' || monthState === '相') ? '偏速' : '偏缓';
977
+ const tempoSay = monthChong ? `遭${monthBranch}冲(月破),先待出月或填实`
978
+ : isEmpty ? '用神旬空,先待出空填实'
979
+ : monthState === 'unknown' ? '缺月建,快慢不定'
980
+ : `月建${monthState},${tempo === '偏速' ? '应期偏近' : '应期偏远'}`;
981
+ const triggers = [
982
+ { branch, labels: ['逢值'] },
983
+ { branch: CHONG_OF[branch] || null, labels: ['逢冲'] },
984
+ { branch: HE_OF[branch] || null, labels: ['逢合'] },
985
+ ];
986
+ if (isEmpty) {
987
+ triggers[0].labels.push('出空填实');
988
+ triggers[1].labels.push('冲空');
989
+ }
990
+ return {
991
+ position: l.position,
992
+ branch,
993
+ element,
994
+ monthState,
995
+ monthChong,
996
+ kong: isEmpty,
997
+ tempo,
998
+ tempoSay,
999
+ triggers,
1000
+ };
1001
+ });
1002
+
1003
+ // 用神两现时各爻的支可能不同:按支归并标签,不替谁选主用
1004
+ const merged = new Map();
1005
+ for (const it of items) {
1006
+ for (const t of it.triggers) {
1007
+ if (!t.branch) continue;
1008
+ const cur = merged.get(t.branch) || { branch: t.branch, labels: [] };
1009
+ for (const lb of t.labels) if (!cur.labels.includes(lb)) cur.labels.push(lb);
1010
+ merged.set(t.branch, cur);
1011
+ }
1012
+ }
1013
+ const triggers = [...merged.values()].map((t) => ({
1014
+ branch: t.branch,
1015
+ labels: [...t.labels].sort((a, b) => TRIGGER_ORDER.indexOf(a) - TRIGGER_ORDER.indexOf(b)),
1016
+ }));
1017
+ const tempos = items.map((x) => x.tempo);
1018
+ const tempo = tempos.includes('待解') ? '待解'
1019
+ : tempos.every((t) => t === '偏速') ? '偏速'
1020
+ : tempos.every((t) => t === '偏缓') ? '偏缓' : '未定';
1021
+
1022
+ return {
1023
+ month: monthBranch ? { branch: monthBranch, element: monthElement } : null,
1024
+ viaFushen,
1025
+ tempo,
1026
+ tempoSay: TEMPO_SAY[tempo],
1027
+ items,
1028
+ triggers,
1029
+ labels: [`应期${tempo}`, ...triggers.map((t) => `${t.labels.join('/')}${t.branch}`)],
1030
+ note: '应期只给「该留意哪一支」与快慢方向:用神逢值、逢冲、逢合,旬空另标出空与冲空。不换算成日期、不排先后、不判忌神受制;近事以日计、远事以月计,用哪把尺由事情远近决定,本插件不代选。',
1031
+ };
1032
+ }
@@ -0,0 +1,229 @@
1
+ // 起名用字的数据层:读音(声调用数字另存)+ 康熙笔画、常见姓氏笔画与读音、81 数理。
2
+ //
3
+ // 笔画口径(写清楚,别让人猜):
4
+ // - 按康熙字典的繁体字形计。简体字取对应繁体:华→華14、马→馬10、荣→榮14、宁→寧14、
5
+ // 灵→靈24、兰→蘭23、丰→豐18、书→書10、画→畫12、云→雲12、风→風9、阳→陽17、涛→濤18。
6
+ // - 偏旁按本字计:氵→水(4)、艹→艸(6)、辶→辵(7)、忄→心(4)、扌→手(4)、
7
+ // 阝(左)→阜(8)、阝(右)→邑(7)、王/玉旁→玉(5)、衤→衣(6)、礻→示(5)、
8
+ // 讠→言(7)、钅→金(8)、纟→糸(6)、饣→食(9)。
9
+ // - 各派五格工具对个别字取法不一(如 沈、蒋),这里取最常见的一种;
10
+ // 调用方可以用 strokeOverrides 覆盖任意字的笔画,覆盖值会被标注为「用户指定」。
11
+ //
12
+ // 读数口径:拼音只写声母韵母(ü 写作 v),声调 1–4 单独一列;轻声不收录(人名用字几乎不读轻声)。
13
+
14
+ /** [字, 拼音(无声调), 声调, 康熙笔画] */
15
+ export const READING = [
16
+ // ── 木 ──
17
+ ['梓', 'zi', 3, 11], ['桐', 'tong', 2, 10], ['楠', 'nan', 2, 13], ['楷', 'kai', 3, 13],
18
+ ['松', 'song', 1, 8], ['柏', 'bai', 3, 9], ['枫', 'feng', 1, 13], ['榕', 'rong', 2, 14],
19
+ ['槿', 'jin', 3, 15], ['棠', 'tang', 2, 12], ['楚', 'chu', 3, 13], ['柯', 'ke', 1, 9],
20
+ ['桓', 'huan', 2, 10], ['榆', 'yu', 2, 13], ['栩', 'xu', 3, 10], ['榛', 'zhen', 1, 14],
21
+ ['芸', 'yun', 2, 10], ['芷', 'zhi', 3, 10], ['芮', 'rui', 4, 10], ['若', 'ruo', 4, 11],
22
+ ['茜', 'qian', 4, 12], ['茵', 'yin', 1, 12], ['茗', 'ming', 2, 12], ['莎', 'sha', 1, 13],
23
+ ['茉', 'mo', 4, 11], ['筱', 'xiao', 3, 13], ['蓉', 'rong', 2, 16], ['萱', 'xuan', 1, 15],
24
+ ['蕙', 'hui', 4, 18], ['蕊', 'rui', 3, 18], ['菲', 'fei', 1, 14], ['蔓', 'man', 4, 17],
25
+ ['荣', 'rong', 2, 14], ['茂', 'mao', 4, 11], ['栋', 'dong', 4, 12], ['梁', 'liang', 2, 11],
26
+ ['朴', 'pu', 3, 6], ['本', 'ben', 3, 5], ['林', 'lin', 2, 8], ['森', 'sen', 1, 12],
27
+ ['枝', 'zhi', 1, 8], ['果', 'guo', 3, 8], ['禾', 'he', 2, 5], ['秀', 'xiu', 4, 7],
28
+ ['穗', 'sui', 4, 17], ['稼', 'jia', 4, 15], ['颖', 'ying', 3, 16], ['苗', 'miao', 2, 8],
29
+ ['菁', 'jing', 1, 14], ['菡', 'han', 4, 14], ['蕴', 'yun', 4, 22], ['蕾', 'lei', 3, 19],
30
+ ['薇', 'wei', 1, 19], ['薏', 'yi', 4, 19], ['菀', 'wan', 3, 14], ['荷', 'he', 2, 13],
31
+ ['莲', 'lian', 2, 17], ['菱', 'ling', 2, 14], ['苇', 'wei', 3, 15], ['荻', 'di', 2, 13],
32
+ ['筠', 'yun', 2, 13], ['笛', 'di', 2, 11], ['杉', 'shan', 1, 7], ['柠', 'ning', 2, 18],
33
+ ['桢', 'zhen', 1, 13], ['樾', 'yue', 4, 16], ['柘', 'zhe', 4, 9], ['权', 'quan', 2, 22],
34
+ ['材', 'cai', 2, 7], ['杭', 'hang', 2, 8], ['枚', 'mei', 2, 8], ['梧', 'wu', 2, 11],
35
+ ['竹', 'zhu', 2, 6], ['简', 'jian', 3, 18], ['策', 'ce', 4, 12], ['筹', 'chou', 2, 20],
36
+ ['芬', 'fen', 1, 10], ['芳', 'fang', 1, 10], ['花', 'hua', 1, 10], ['菊', 'ju', 2, 14],
37
+ ['兰', 'lan', 2, 23], ['芝', 'zhi', 1, 10], ['芹', 'qin', 2, 10], ['荃', 'quan', 2, 12],
38
+ ['萃', 'cui', 4, 14], ['蓁', 'zhen', 1, 16], ['荞', 'qiao', 2, 18], ['莞', 'wan', 3, 13],
39
+ ['萦', 'ying', 2, 16], ['蔚', 'wei', 4, 17], ['芃', 'peng', 2, 9], ['芩', 'qin', 2, 10],
40
+ ['苡', 'yi', 3, 11], ['莱', 'lai', 2, 14], ['萌', 'meng', 2, 14], ['葆', 'bao', 3, 15],
41
+ ['萧', 'xiao', 1, 18], ['樟', 'zhang', 1, 15], ['樱', 'ying', 1, 21], ['栎', 'li', 4, 19],
42
+ ['棹', 'zhao', 4, 12], ['楸', 'qiu', 1, 13], ['槐', 'huai', 2, 14], ['橙', 'cheng', 2, 16],
43
+ ['檀', 'tan', 2, 17],
44
+ // ── 火 ──
45
+ ['炎', 'yan', 2, 8], ['灿', 'can', 4, 17], ['炫', 'xuan', 4, 9], ['炜', 'wei', 3, 13],
46
+ ['烨', 'ye', 4, 14], ['煜', 'yu', 4, 13], ['熙', 'xi', 1, 13], ['煊', 'xuan', 1, 13],
47
+ ['焕', 'huan', 4, 13], ['熠', 'yi', 4, 15], ['炅', 'jiong', 3, 8], ['昱', 'yu', 4, 9],
48
+ ['晗', 'han', 2, 11], ['旭', 'xu', 4, 6], ['昊', 'hao', 4, 8], ['晟', 'sheng', 4, 11],
49
+ ['晨', 'chen', 2, 11], ['景', 'jing', 3, 12], ['曜', 'yao', 4, 18], ['曦', 'xi', 1, 20],
50
+ ['朗', 'lang', 3, 11], ['昭', 'zhao', 1, 9], ['昕', 'xin', 1, 8], ['昀', 'yun', 2, 8],
51
+ ['暖', 'nuan', 3, 13], ['灵', 'ling', 2, 24], ['丹', 'dan', 1, 4], ['彤', 'tong', 2, 7],
52
+ ['冉', 'ran', 3, 5], ['南', 'nan', 2, 9], ['丰', 'feng', 1, 18], ['日', 'ri', 4, 4],
53
+ ['阳', 'yang', 2, 17], ['光', 'guang', 1, 6], ['亮', 'liang', 4, 9], ['明', 'ming', 2, 8],
54
+ ['晶', 'jing', 1, 12], ['晴', 'qing', 2, 12], ['夏', 'xia', 4, 10], ['智', 'zhi', 4, 12],
55
+ ['卓', 'zhuo', 2, 8], ['乐', 'le', 4, 15], ['恺', 'kai', 3, 14], ['恬', 'tian', 2, 10],
56
+ ['甜', 'tian', 2, 11], ['亭', 'ting', 2, 9], ['俊', 'jun', 4, 9], ['丙', 'bing', 3, 5],
57
+ ['丁', 'ding', 1, 2], ['鼎', 'ding', 3, 13], ['陶', 'tao', 2, 16], ['熹', 'xi', 1, 16],
58
+ ['炀', 'yang', 2, 13], ['烜', 'xuan', 3, 10], ['暻', 'jing', 3, 16], ['晖', 'hui', 1, 13],
59
+ ['晔', 'ye', 4, 16], ['旻', 'min', 2, 8], ['晏', 'yan', 4, 10], ['晓', 'xiao', 3, 16],
60
+ ['暄', 'xuan', 1, 13], ['昆', 'kun', 1, 8], ['伶', 'ling', 2, 7],
61
+ // ── 土 ──
62
+ ['坤', 'kun', 1, 8], ['垚', 'yao', 2, 9], ['培', 'pei', 2, 11], ['城', 'cheng', 2, 10],
63
+ ['域', 'yu', 4, 11], ['坚', 'jian', 1, 11], ['墨', 'mo', 4, 15], ['均', 'jun', 1, 7],
64
+ ['坦', 'tan', 3, 8], ['基', 'ji', 1, 11], ['堂', 'tang', 2, 11], ['圣', 'sheng', 4, 13],
65
+ ['在', 'zai', 4, 6], ['岳', 'yue', 4, 8], ['峰', 'feng', 1, 10], ['峻', 'jun', 4, 10],
66
+ ['岚', 'lan', 2, 12], ['岩', 'yan', 2, 8], ['崇', 'chong', 2, 11], ['岐', 'qi', 2, 7],
67
+ ['屿', 'yu', 3, 17], ['磊', 'lei', 3, 15], ['尧', 'yao', 2, 12], ['圆', 'yuan', 2, 13],
68
+ ['恩', 'en', 1, 10], ['惟', 'wei', 2, 11], ['轩', 'xuan', 1, 10], ['逸', 'yi', 4, 15],
69
+ ['山', 'shan', 1, 3], ['岸', 'an', 4, 8], ['岑', 'cen', 2, 7], ['巍', 'wei', 1, 21],
70
+ ['嵩', 'song', 1, 13], ['岭', 'ling', 3, 17], ['奥', 'ao', 4, 13], ['宜', 'yi', 2, 8],
71
+ ['容', 'rong', 2, 10], ['意', 'yi', 4, 13], ['依', 'yi', 1, 8], ['悠', 'you', 1, 11],
72
+ ['维', 'wei', 2, 14], ['纬', 'wei', 3, 15], ['永', 'yong', 3, 5], ['远', 'yuan', 3, 17],
73
+ ['辰', 'chen', 2, 7], ['壁', 'bi', 4, 16], ['田', 'tian', 2, 5], ['由', 'you', 2, 5],
74
+ ['画', 'hua', 4, 12], ['延', 'yan', 2, 7], ['建', 'jian', 4, 9], ['音', 'yin', 1, 9],
75
+ ['韵', 'yun', 4, 19], ['玮', 'wei', 3, 14], ['雍', 'yong', 1, 13], ['懿', 'yi', 4, 22],
76
+ ['宇', 'yu', 3, 6], ['亦', 'yi', 4, 6], ['安', 'an', 1, 6], ['宁', 'ning', 2, 14],
77
+ // ── 金 ──
78
+ ['锋', 'feng', 1, 15], ['钢', 'gang', 1, 16], ['钧', 'jun', 1, 12], ['铭', 'ming', 2, 14],
79
+ ['锐', 'rui', 4, 15], ['锡', 'xi', 1, 16], ['锦', 'jin', 3, 16], ['鑫', 'xin', 1, 24],
80
+ ['键', 'jian', 4, 17], ['鉴', 'jian', 4, 22], ['钦', 'qin', 1, 12], ['镇', 'zhen', 4, 18],
81
+ ['铮', 'zheng', 1, 16], ['钰', 'yu', 4, 13], ['铠', 'kai', 3, 18], ['珊', 'shan', 1, 10],
82
+ ['珠', 'zhu', 1, 10], ['琳', 'lin', 2, 13], ['琦', 'qi', 2, 13], ['琪', 'qi', 2, 13],
83
+ ['瑜', 'yu', 2, 14], ['瑞', 'rui', 4, 14], ['瑄', 'xuan', 1, 14], ['璇', 'xuan', 2, 16],
84
+ ['璟', 'jing', 3, 17], ['璐', 'lu', 4, 18], ['瑾', 'jin', 3, 16], ['珏', 'jue', 2, 9],
85
+ ['环', 'huan', 2, 18], ['玲', 'ling', 2, 10], ['珑', 'long', 2, 21], ['瑶', 'yao', 2, 15],
86
+ ['莹', 'ying', 2, 15], ['铎', 'duo', 2, 21], ['金', 'jin', 1, 8], ['秋', 'qiu', 1, 9],
87
+ ['书', 'shu', 1, 10], ['舒', 'shu', 1, 12], ['善', 'shan', 4, 12], ['信', 'xin', 4, 9],
88
+ ['修', 'xiu', 1, 10], ['素', 'su', 4, 10], ['静', 'jing', 4, 16], ['心', 'xin', 1, 4],
89
+ ['新', 'xin', 1, 13], ['正', 'zheng', 4, 5], ['世', 'shi', 4, 5], ['少', 'shao', 3, 4],
90
+ ['西', 'xi', 1, 6], ['白', 'bai', 2, 5], ['辛', 'xin', 1, 7], ['成', 'cheng', 2, 7],
91
+ ['利', 'li', 4, 7], ['剑', 'jian', 4, 15], ['刚', 'gang', 1, 10], ['则', 'ze', 2, 9],
92
+ ['初', 'chu', 1, 7], ['硕', 'shuo', 4, 14], ['尚', 'shang', 4, 8], ['臣', 'chen', 2, 6],
93
+ ['川', 'chuan', 1, 3], ['舟', 'zhou', 1, 6], ['州', 'zhou', 1, 6], ['祖', 'zu', 3, 10],
94
+ ['祥', 'xiang', 2, 11], ['禄', 'lu', 4, 13], ['禧', 'xi', 3, 17], ['珍', 'zhen', 1, 10],
95
+ ['宣', 'xuan', 1, 9], ['序', 'xu', 4, 7], ['谦', 'qian', 1, 17], ['赞', 'zan', 4, 19],
96
+ ['超', 'chao', 1, 12], ['锴', 'kai', 3, 17], ['承', 'cheng', 2, 8], ['语', 'yu', 3, 14],
97
+ ['诺', 'nuo', 4, 16], ['诗', 'shi', 1, 13], ['梦', 'meng', 4, 14], ['思', 'si', 1, 9],
98
+ ['悦', 'yue', 4, 11], ['欣', 'xin', 1, 8], ['嘉', 'jia', 1, 14], ['佳', 'jia', 1, 8],
99
+ ['博', 'bo', 2, 12], ['睿', 'rui', 4, 14], ['知', 'zhi', 1, 8], ['星', 'xing', 1, 9],
100
+ ['言', 'yan', 2, 7], ['和', 'he', 2, 8],
101
+ // ── 水 ──
102
+ ['江', 'jiang', 1, 7], ['河', 'he', 2, 9], ['海', 'hai', 3, 11], ['洋', 'yang', 2, 10],
103
+ ['波', 'bo', 1, 9], ['涛', 'tao', 1, 18], ['涵', 'han', 2, 12], ['清', 'qing', 1, 12],
104
+ ['澈', 'che', 4, 16], ['澄', 'cheng', 2, 16], ['润', 'run', 4, 16], ['泽', 'ze', 2, 17],
105
+ ['沛', 'pei', 4, 8], ['沁', 'qin', 4, 8], ['泓', 'hong', 2, 9], ['泉', 'quan', 2, 9],
106
+ ['汐', 'xi', 1, 7], ['淇', 'qi', 2, 12], ['鸿', 'hong', 2, 17], ['滋', 'zi', 1, 13],
107
+ ['淼', 'miao', 3, 12], ['雨', 'yu', 3, 8], ['雪', 'xue', 3, 11], ['霖', 'lin', 2, 16],
108
+ ['霏', 'fei', 1, 16], ['露', 'lu', 4, 21], ['霆', 'ting', 2, 15], ['雯', 'wen', 2, 12],
109
+ ['霓', 'ni', 2, 16], ['湉', 'tian', 2, 13], ['沐', 'mu', 4, 8], ['宸', 'chen', 2, 10],
110
+ ['然', 'ran', 2, 12], ['文', 'wen', 2, 4], ['月', 'yue', 4, 4], ['水', 'shui', 3, 4],
111
+ ['冰', 'bing', 1, 6], ['洁', 'jie', 2, 16], ['浩', 'hao', 4, 11], ['瀚', 'han', 4, 20],
112
+ ['渊', 'yuan', 1, 12], ['澜', 'lan', 2, 21], ['潮', 'chao', 2, 16], ['溪', 'xi', 1, 14],
113
+ ['湘', 'xiang', 1, 13], ['渝', 'yu', 2, 13], ['深', 'shen', 1, 12], ['湛', 'zhan', 4, 13],
114
+ ['汇', 'hui', 4, 13], ['洲', 'zhou', 1, 10], ['湾', 'wan', 1, 26], ['云', 'yun', 2, 12],
115
+ ['风', 'feng', 1, 9], ['北', 'bei', 3, 5], ['冬', 'dong', 1, 5], ['玄', 'xuan', 2, 5],
116
+ ['子', 'zi', 3, 3], ['平', 'ping', 2, 5], ['方', 'fang', 1, 4], ['帆', 'fan', 1, 6],
117
+ ['航', 'hang', 2, 10], ['敏', 'min', 3, 11], ['慧', 'hui', 4, 15], ['惠', 'hui', 4, 12],
118
+ ['霈', 'pei', 4, 15], ['灏', 'hao', 4, 25], ['湄', 'mei', 2, 13], ['滨', 'bin', 1, 18],
119
+ ['洛', 'luo', 4, 10], ['津', 'jin', 1, 10], ['泊', 'bo', 2, 9], ['沧', 'cang', 1, 14],
120
+ ['浦', 'pu', 3, 11],
121
+ ];
122
+
123
+ /** 常见单姓的康熙笔画(复姓见 DOUBLE_SURNAMES)。没有的姓可用 surnameStrokes 传入。 */
124
+ export const SURNAME_STROKES = {
125
+ 王: 4, 李: 7, 张: 11, 刘: 15, 陈: 16, 杨: 13, 黄: 12, 赵: 14, 吴: 7, 周: 8,
126
+ 徐: 10, 孙: 10, 马: 10, 朱: 6, 胡: 11, 郭: 15, 何: 7, 高: 10, 林: 8, 罗: 20,
127
+ 郑: 19, 梁: 11, 谢: 17, 宋: 7, 唐: 10, 许: 11, 韩: 17, 冯: 12, 曹: 11, 彭: 12,
128
+ 曾: 12, 萧: 18, 田: 5, 董: 15, 潘: 16, 袁: 10, 蔡: 17, 余: 7, 于: 3, 杜: 7,
129
+ 叶: 15, 程: 12, 魏: 18, 吕: 7, 丁: 2, 任: 6, 姚: 9, 卢: 16, 姜: 9, 崔: 11,
130
+ 钟: 17, 谭: 19, 陆: 16, 范: 15, 金: 8, 石: 5, 廖: 14, 贾: 13, 夏: 10, 韦: 9,
131
+ 付: 5, 方: 4, 白: 5, 邹: 17, 孟: 8, 熊: 14, 秦: 10, 邱: 12, 江: 7, 尹: 4,
132
+ 薛: 19, 段: 9, 雷: 13, 侯: 9, 龙: 16, 史: 5, 陶: 16, 黎: 15, 贺: 12, 顾: 21,
133
+ 毛: 4, 郝: 14, 龚: 22, 邵: 12, 钱: 16, 严: 20, 武: 8, 戴: 18, 莫: 13, 孔: 4,
134
+ 向: 6, 常: 11, 康: 11, 易: 8, 文: 4, 施: 9, 洪: 10, 安: 6, 颜: 18, 温: 13,
135
+ 章: 11, 鲁: 15, 葛: 15, 伍: 6, 申: 5, 尤: 4, 焦: 12, 柳: 9, 邢: 11, 路: 13,
136
+ 岳: 8, 乔: 12, 赖: 20, 万: 15, 苏: 22, 蒋: 17, 沈: 8, 汪: 8, 邓: 19, 覃: 12,
137
+ 房: 8, 边: 22, 辛: 7, 涂: 11, 甘: 5, 封: 9, 储: 18, 邬: 17, 路: 13, 詹: 13,
138
+ };
139
+
140
+ /** 常见单姓读音:[拼音, 声调] */
141
+ export const SURNAME_READING = {
142
+ 王: ['wang', 2], 李: ['li', 3], 张: ['zhang', 1], 刘: ['liu', 2], 陈: ['chen', 2],
143
+ 杨: ['yang', 2], 黄: ['huang', 2], 赵: ['zhao', 4], 吴: ['wu', 2], 周: ['zhou', 1],
144
+ 徐: ['xu', 2], 孙: ['sun', 1], 马: ['ma', 3], 朱: ['zhu', 1], 胡: ['hu', 2],
145
+ 郭: ['guo', 1], 何: ['he', 2], 高: ['gao', 1], 林: ['lin', 2], 罗: ['luo', 2],
146
+ 郑: ['zheng', 4], 梁: ['liang', 2], 谢: ['xie', 4], 宋: ['song', 4], 唐: ['tang', 2],
147
+ 许: ['xu', 3], 韩: ['han', 2], 冯: ['feng', 2], 曹: ['cao', 2], 彭: ['peng', 2],
148
+ 曾: ['zeng', 1], 萧: ['xiao', 1], 田: ['tian', 2], 董: ['dong', 3], 潘: ['pan', 1],
149
+ 袁: ['yuan', 2], 蔡: ['cai', 4], 余: ['yu', 2], 于: ['yu', 2], 杜: ['du', 4],
150
+ 叶: ['ye', 4], 程: ['cheng', 2], 魏: ['wei', 4], 吕: ['lv', 3], 丁: ['ding', 1],
151
+ 任: ['ren', 2], 姚: ['yao', 2], 卢: ['lu', 2], 姜: ['jiang', 1], 崔: ['cui', 1],
152
+ 钟: ['zhong', 1], 谭: ['tan', 2], 陆: ['lu', 4], 范: ['fan', 4], 金: ['jin', 1],
153
+ 石: ['shi', 2], 廖: ['liao', 4], 贾: ['jia', 3], 夏: ['xia', 4], 韦: ['wei', 2],
154
+ 付: ['fu', 4], 方: ['fang', 1], 白: ['bai', 2], 邹: ['zou', 1], 孟: ['meng', 4],
155
+ 熊: ['xiong', 2], 秦: ['qin', 2], 邱: ['qiu', 1], 江: ['jiang', 1], 尹: ['yin', 3],
156
+ 薛: ['xue', 1], 段: ['duan', 4], 雷: ['lei', 2], 侯: ['hou', 2], 龙: ['long', 2],
157
+ 史: ['shi', 3], 陶: ['tao', 2], 黎: ['li', 2], 贺: ['he', 4], 顾: ['gu', 4],
158
+ 毛: ['mao', 2], 郝: ['hao', 3], 龚: ['gong', 1], 邵: ['shao', 4], 钱: ['qian', 2],
159
+ 严: ['yan', 2], 武: ['wu', 3], 戴: ['dai', 4], 莫: ['mo', 4], 孔: ['kong', 3],
160
+ 向: ['xiang', 4], 常: ['chang', 2], 康: ['kang', 1], 易: ['yi', 4], 文: ['wen', 2],
161
+ 施: ['shi', 1], 洪: ['hong', 2], 安: ['an', 1], 颜: ['yan', 2], 温: ['wen', 1],
162
+ 章: ['zhang', 1], 鲁: ['lu', 3], 葛: ['ge', 3], 伍: ['wu', 3], 申: ['shen', 1],
163
+ 尤: ['you', 2], 焦: ['jiao', 1], 柳: ['liu', 3], 邢: ['xing', 2], 路: ['lu', 4],
164
+ 岳: ['yue', 4], 乔: ['qiao', 2], 赖: ['lai', 4], 万: ['wan', 4], 苏: ['su', 1],
165
+ 蒋: ['jiang', 3], 沈: ['shen', 3], 汪: ['wang', 1], 邓: ['deng', 4], 覃: ['tan', 2],
166
+ 房: ['fang', 2], 边: ['bian', 1], 辛: ['xin', 1], 涂: ['tu', 2], 甘: ['gan', 1],
167
+ 封: ['feng', 1], 储: ['chu', 3], 邬: ['wu', 1], 詹: ['zhan', 1],
168
+ 欧: ['ou', 1],
169
+ 阳: ['yang', 2],
170
+ 司: ['si', 1],
171
+ 上: ['shang', 4],
172
+ 官: ['guan', 1],
173
+ 诸: ['zhu', 1],
174
+ 东: ['dong', 1],
175
+ 皇: ['huang', 2],
176
+ 甫: ['fu', 3],
177
+ 尉: ['yu', 4],
178
+ 迟: ['chi', 2],
179
+ 令: ['ling', 4],
180
+ 狐: ['hu', 2],
181
+ 慕: ['mu', 4],
182
+ 徒: ['tu', 2],
183
+ 公: ['gong', 1],
184
+ };
185
+
186
+ /** 常见复姓:两字各自的康熙笔画(s)与读音(首字拼音连写,声调取首字) */
187
+ export const DOUBLE_SURNAMES = {
188
+ 欧阳: { s: [15, 17], py: 'ouyang', tone: 1 },
189
+ 司马: { s: [5, 10], py: 'sima', tone: 1 },
190
+ 上官: { s: [3, 8], py: 'shangguan', tone: 4 },
191
+ 诸葛: { s: [15, 15], py: 'zhuge', tone: 1 },
192
+ 东方: { s: [8, 4], py: 'dongfang', tone: 1 },
193
+ 皇甫: { s: [9, 7], py: 'huangfu', tone: 2 },
194
+ 尉迟: { s: [11, 19], py: 'yuchi', tone: 4 },
195
+ 令狐: { s: [5, 8], py: 'linghu', tone: 4 },
196
+ 慕容: { s: [14, 10], py: 'murong', tone: 4 },
197
+ 宇文: { s: [6, 4], py: 'yuwen', tone: 3 },
198
+ 司徒: { s: [5, 10], py: 'situ', tone: 1 },
199
+ 夏侯: { s: [10, 9], py: 'xiahou', tone: 4 },
200
+ 公孙: { s: [4, 10], py: 'gongsun', tone: 1 },
201
+ };
202
+
203
+ /**
204
+ * 81 数理(通行本):索引即数,[吉凶, 意象]。
205
+ * 吉凶分三档:吉 / 半吉 / 凶。各派工具对少数数取法有出入,这里取通行本,页面会标明。
206
+ */
207
+ export const SHULI_81 = [null,
208
+ ['吉', '太极之数'], ['凶', '两仪之数'], ['吉', '三才之数'], ['凶', '四象之数'],
209
+ ['吉', '五行之数'], ['吉', '六爻之数'], ['吉', '七政之数'], ['吉', '八卦之数'],
210
+ ['凶', '大成之数'], ['凶', '终结之数'], ['吉', '旱苗逢雨'], ['凶', '掘井无泉'],
211
+ ['吉', '春日牡丹'], ['凶', '破兆之数'], ['吉', '福寿之数'], ['吉', '厚重之数'],
212
+ ['吉', '刚强之数'], ['吉', '铁镜重磨'], ['凶', '多难之数'], ['凶', '屋下藏金'],
213
+ ['吉', '明月中天'], ['凶', '秋草逢霜'], ['吉', '壮丽之数'], ['吉', '掘藏得金'],
214
+ ['吉', '荣俊之数'], ['凶', '变怪之数'], ['半吉', '增长之数'], ['凶', '阔水浮萍'],
215
+ ['吉', '智谋之数'], ['半吉', '非运之数'], ['吉', '春日花开'], ['吉', '宝马金鞍'],
216
+ ['吉', '旭日升天'], ['凶', '破家之数'], ['吉', '高楼望月'], ['凶', '波澜重叠'],
217
+ ['吉', '猛虎出林'], ['半吉', '磨铁成针'], ['吉', '富贵荣华'], ['半吉', '退安之数'],
218
+ ['吉', '有德之数'], ['半吉', '寒蝉在柳'], ['凶', '散财破产'], ['凶', '烦闷之数'],
219
+ ['吉', '顺风之数'], ['凶', '浪里淘金'], ['吉', '点石成金'], ['吉', '古松立鹤'],
220
+ ['半吉', '转变之数'], ['半吉', '小舟入海'], ['半吉', '沉浮之数'], ['吉', '先见之明'],
221
+ ['半吉', '曲卷难星'], ['凶', '石上栽花'], ['半吉', '善恶之数'], ['凶', '浪里行舟'],
222
+ ['吉', '日照春松'], ['半吉', '晚行遇月'], ['凶', '寒蝉悲风'], ['凶', '无谋之数'],
223
+ ['吉', '牡丹芙蓉'], ['凶', '衰败之数'], ['吉', '舟归平海'], ['凶', '非命之数'],
224
+ ['吉', '巨流归海'], ['凶', '岩头步马'], ['吉', '通达之数'], ['吉', '顺风吹帆'],
225
+ ['凶', '非业之数'], ['凶', '残菊经霜'], ['半吉', '石上金花'], ['凶', '劳苦之数'],
226
+ ['半吉', '志高力微'], ['凶', '残菊逢霜'], ['半吉', '退守之数'], ['凶', '离散之数'],
227
+ ['半吉', '半吉之数'], ['半吉', '晚苦之数'], ['凶', '云头望月'], ['半吉', '遁吉之数'],
228
+ ['吉', '万物回春'],
229
+ ];