mahjong_engine 1.0.13 → 1.0.14
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/dist/modules/BlockHaisList.d.ts +1 -1
- package/dist/modules/BlockHaisList.d.ts.map +1 -1
- package/dist/modules/BlockHaisList.js +4 -4
- package/dist/modules/BlockHaisList.js.map +1 -1
- package/dist/tests/machiType.test.js +47 -29
- package/dist/tests/machiType.test.js.map +1 -1
- package/modules/BlockHaisList.ts +5 -5
- package/modules/tensuu/FuCalculator.ts +1 -1
- package/package.json +2 -2
- package/tests/machiType.test.ts +47 -29
|
@@ -12,7 +12,7 @@ export declare class BlockHaisList {
|
|
|
12
12
|
blockToString(): string;
|
|
13
13
|
sort(): void;
|
|
14
14
|
private calcShuntsuMachiType;
|
|
15
|
-
calcMachiType(haiId: number):
|
|
15
|
+
calcMachiType(haiId: number): Map<MachiType, BlockHais>;
|
|
16
16
|
getBlockHais(): BlockHais[];
|
|
17
17
|
clone(): BlockHaisList;
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockHaisList.d.ts","sourceRoot":"","sources":["../../modules/BlockHaisList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE1D,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;gBAE9B,MAAM,GAAE,SAAS,EAAO;IAIpC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAEjB,IAAI,CAAC,CAAC,EAAE,SAAS;IAGjB,GAAG;IAGH,MAAM;IAIN,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAI9B,cAAc,CAAC,MAAM,EAAE,MAAM;IAI7B,aAAa,IAAI,MAAM;IAIvB,IAAI;IAoBJ,OAAO,CAAC,oBAAoB;IAW5B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"BlockHaisList.d.ts","sourceRoot":"","sources":["../../modules/BlockHaisList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE1D,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;gBAE9B,MAAM,GAAE,SAAS,EAAO;IAIpC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAEjB,IAAI,CAAC,CAAC,EAAE,SAAS;IAGjB,GAAG;IAGH,MAAM;IAIN,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAI9B,cAAc,CAAC,MAAM,EAAE,MAAM;IAI7B,aAAa,IAAI,MAAM;IAIvB,IAAI;IAoBJ,OAAO,CAAC,oBAAoB;IAW5B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;IAuBvD,YAAY,IAAI,SAAS,EAAE;IAI3B,KAAK,IAAI,aAAa;CAGzB"}
|
|
@@ -53,19 +53,19 @@ export class BlockHaisList {
|
|
|
53
53
|
return MachiType.RYANMEN;
|
|
54
54
|
}
|
|
55
55
|
calcMachiType(haiId) {
|
|
56
|
-
const machiTypeSet = new
|
|
56
|
+
const machiTypeSet = new Map();
|
|
57
57
|
for (const block of this.blocks) {
|
|
58
58
|
if (!block.containsHai(haiId))
|
|
59
59
|
continue;
|
|
60
60
|
switch (block.getType()) {
|
|
61
61
|
case BlockType.JANTO:
|
|
62
|
-
machiTypeSet.
|
|
62
|
+
machiTypeSet.set(MachiType.TANKI, block);
|
|
63
63
|
break;
|
|
64
64
|
case BlockType.KOTSU:
|
|
65
|
-
machiTypeSet.
|
|
65
|
+
machiTypeSet.set(MachiType.SHANPON, block);
|
|
66
66
|
break;
|
|
67
67
|
case BlockType.SHUNTSU:
|
|
68
|
-
machiTypeSet.
|
|
68
|
+
machiTypeSet.set(this.calcShuntsuMachiType(block, haiId), block);
|
|
69
69
|
break;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockHaisList.js","sourceRoot":"","sources":["../../modules/BlockHaisList.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"BlockHaisList.js","sourceRoot":"","sources":["../../modules/BlockHaisList.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,OAAO,aAAa;IACL,MAAM,GAAgB,EAAE,CAAC;IAE1C,YAAY,SAAsB,EAAE;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9D,IAAI,CAAC,CAAY;QACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,GAAG;QACC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IACD,MAAM;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAe;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC;IAC/D,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,CAAC;IACzH,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI;QACA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtB,iBAAiB;YACjB,IAAG,CAAC,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC,CAAC;YACjF,IAAG,CAAC,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC;YAEhF,iBAAiB;YACjB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACnE,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,IAAI,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC;YAChC,CAAC;YAED,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,oBAAoB,CAAC,KAAgB,EAAE,KAAa;QACxD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAClC,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;QAE/B,MAAM,SAAS,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QAC3G,IAAG,SAAS;YAAE,OAAO,SAAS,CAAC,OAAO,CAAC;QACvC,IAAG,QAAQ,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC,OAAO,CAAC;QAE5C,OAAO,SAAS,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,aAAa,CAAC,KAAa;QACvB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAwB,CAAC;QACrD,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAC,CAAC;YAC5B,IAAG,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;gBAAE,SAAS;YAEvC,QAAO,KAAK,CAAC,OAAO,EAAE,EAAC,CAAC;gBAEpB,KAAK,SAAS,CAAC,KAAK;oBAChB,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACzC,MAAM;gBAEV,KAAK,SAAS,CAAC,KAAK;oBAChB,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC3C,MAAM;gBAEV,KAAK,SAAS,CAAC,OAAO;oBAClB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;oBACjE,MAAM;YACd,CAAC;QACL,CAAC;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,KAAK;QACD,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;CACJ"}
|
|
@@ -1,79 +1,97 @@
|
|
|
1
1
|
import { Hais } from "../modules/Hais";
|
|
2
2
|
import { BlockDivider } from '../modules/BlockDivider';
|
|
3
|
-
import { MachiType } from "../modules/MahjongConsts";
|
|
3
|
+
import { BlockType, MachiType } from "../modules/MahjongConsts";
|
|
4
|
+
import { BlockHais } from "../modules";
|
|
4
5
|
function getBlockHaisList(haisNum) {
|
|
5
6
|
return new BlockDivider(new Hais(haisNum).getHais()).divide();
|
|
6
7
|
}
|
|
7
|
-
function
|
|
8
|
+
function getMachiType(haisNum, haiId) {
|
|
8
9
|
const results = getBlockHaisList(haisNum);
|
|
9
|
-
let resultMachiType = new
|
|
10
|
+
let resultMachiType = new Map();
|
|
10
11
|
if (results.length === 1)
|
|
11
12
|
resultMachiType = results[0].calcMachiType(haiId);
|
|
12
13
|
return resultMachiType;
|
|
13
14
|
}
|
|
14
15
|
test("tanki_1", () => {
|
|
15
|
-
const resultMachiType =
|
|
16
|
-
const
|
|
16
|
+
const resultMachiType = getMachiType([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 12);
|
|
17
|
+
const block = BlockHais.from(12, BlockType.JANTO);
|
|
18
|
+
const expected = new Map([[MachiType.TANKI, block]]);
|
|
17
19
|
expect(resultMachiType).toEqual(expected);
|
|
18
20
|
});
|
|
19
21
|
test("shanpon_1", () => {
|
|
20
|
-
const resultMachiType =
|
|
21
|
-
const
|
|
22
|
+
const resultMachiType = getMachiType([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 10);
|
|
23
|
+
const block = BlockHais.from(10, BlockType.KOTSU);
|
|
24
|
+
const expected = new Map([[MachiType.SHANPON, block]]);
|
|
22
25
|
expect(resultMachiType).toEqual(expected);
|
|
23
26
|
});
|
|
24
27
|
test("ryanmen_1", () => {
|
|
25
|
-
const resultMachiType =
|
|
26
|
-
const
|
|
28
|
+
const resultMachiType = getMachiType([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 1);
|
|
29
|
+
const block = BlockHais.from(1, BlockType.SHUNTSU);
|
|
30
|
+
const expected = new Map([[MachiType.RYANMEN, block]]);
|
|
27
31
|
expect(resultMachiType).toEqual(expected);
|
|
28
32
|
});
|
|
29
33
|
test("ryanmen_2", () => {
|
|
30
|
-
const resultMachiType =
|
|
31
|
-
const
|
|
34
|
+
const resultMachiType = getMachiType([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 4);
|
|
35
|
+
const block = BlockHais.from(4, BlockType.SHUNTSU);
|
|
36
|
+
const expected = new Map([[MachiType.RYANMEN, block]]);
|
|
32
37
|
expect(resultMachiType).toEqual(expected);
|
|
33
38
|
});
|
|
34
39
|
test("ryanmen_3", () => {
|
|
35
|
-
const resultMachiType =
|
|
36
|
-
const
|
|
40
|
+
const resultMachiType = getMachiType([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 6);
|
|
41
|
+
const block = BlockHais.from(4, BlockType.SHUNTSU);
|
|
42
|
+
const expected = new Map([[MachiType.RYANMEN, block]]);
|
|
37
43
|
expect(resultMachiType).toEqual(expected);
|
|
38
44
|
});
|
|
39
45
|
test("penchan_1", () => {
|
|
40
|
-
const resultMachiType =
|
|
41
|
-
const
|
|
46
|
+
const resultMachiType = getMachiType([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 3);
|
|
47
|
+
const block = BlockHais.from(1, BlockType.SHUNTSU);
|
|
48
|
+
const expected = new Map([[MachiType.PENCHAN, block]]);
|
|
42
49
|
expect(resultMachiType).toEqual(expected);
|
|
43
50
|
});
|
|
44
51
|
test("penchan_2", () => {
|
|
45
|
-
const resultMachiType =
|
|
46
|
-
const
|
|
52
|
+
const resultMachiType = getMachiType([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 7);
|
|
53
|
+
const block = BlockHais.from(7, BlockType.SHUNTSU);
|
|
54
|
+
const expected = new Map([[MachiType.PENCHAN, block]]);
|
|
47
55
|
expect(resultMachiType).toEqual(expected);
|
|
48
56
|
});
|
|
49
57
|
test("kanchan_1", () => {
|
|
50
|
-
const resultMachiType =
|
|
51
|
-
const
|
|
58
|
+
const resultMachiType = getMachiType([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 5);
|
|
59
|
+
const block = BlockHais.from(4, BlockType.SHUNTSU);
|
|
60
|
+
const expected = new Map([[MachiType.KANCHAN, block]]);
|
|
52
61
|
expect(resultMachiType).toEqual(expected);
|
|
53
62
|
});
|
|
54
63
|
test("complex_1", () => {
|
|
55
|
-
const resultMachiType =
|
|
56
|
-
const
|
|
64
|
+
const resultMachiType = getMachiType([1, 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10], 2);
|
|
65
|
+
const block1 = BlockHais.from(1, BlockType.SHUNTSU);
|
|
66
|
+
const block2 = BlockHais.from(2, BlockType.JANTO);
|
|
67
|
+
const expected = new Map([[MachiType.KANCHAN, block1], [MachiType.TANKI, block2]]);
|
|
57
68
|
expect(resultMachiType).toEqual(expected);
|
|
58
69
|
});
|
|
59
70
|
test("complex_2", () => {
|
|
60
|
-
const resultMachiType =
|
|
61
|
-
const
|
|
71
|
+
const resultMachiType = getMachiType([1, 2, 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10], 2);
|
|
72
|
+
const block1 = BlockHais.from(2, BlockType.KOTSU);
|
|
73
|
+
const block2 = BlockHais.from(1, BlockType.SHUNTSU);
|
|
74
|
+
const expected = new Map([[MachiType.SHANPON, block1], [MachiType.KANCHAN, block2]]);
|
|
62
75
|
expect(resultMachiType).toEqual(expected);
|
|
63
76
|
});
|
|
64
77
|
test("complex_3", () => {
|
|
65
|
-
const resultMachiType =
|
|
66
|
-
const
|
|
78
|
+
const resultMachiType = getMachiType([1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 11, 11], 1);
|
|
79
|
+
const block1 = BlockHais.from(1, BlockType.SHUNTSU);
|
|
80
|
+
const block2 = BlockHais.from(1, BlockType.JANTO);
|
|
81
|
+
const expected = new Map([[MachiType.RYANMEN, block1], [MachiType.TANKI, block2]]);
|
|
67
82
|
expect(resultMachiType).toEqual(expected);
|
|
68
83
|
});
|
|
69
84
|
test("multi_1", () => {
|
|
70
|
-
const resultMachiType =
|
|
71
|
-
const
|
|
85
|
+
const resultMachiType = getMachiType([1, 1, 2, 2, 3, 3, 5, 5, 5, 6, 6, 6, 7, 7], 2);
|
|
86
|
+
const block = BlockHais.from(1, BlockType.SHUNTSU);
|
|
87
|
+
const expected = new Map([[MachiType.KANCHAN, block]]);
|
|
72
88
|
expect(resultMachiType).toEqual(expected);
|
|
73
89
|
});
|
|
74
90
|
test("multi_2", () => {
|
|
75
|
-
const resultMachiType =
|
|
76
|
-
const
|
|
91
|
+
const resultMachiType = getMachiType([1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 11, 11, 11], 4);
|
|
92
|
+
const block1 = BlockHais.from(2, BlockType.SHUNTSU);
|
|
93
|
+
const block2 = BlockHais.from(4, BlockType.SHUNTSU);
|
|
94
|
+
const expected = new Map([[MachiType.RYANMEN, block1], [MachiType.RYANMEN, block2]]);
|
|
77
95
|
expect(resultMachiType).toEqual(expected);
|
|
78
96
|
});
|
|
79
97
|
//# sourceMappingURL=machiType.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machiType.test.js","sourceRoot":"","sources":["../../tests/machiType.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"machiType.test.js","sourceRoot":"","sources":["../../tests/machiType.test.ts"],"names":[],"mappings":"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"}
|
package/modules/BlockHaisList.ts
CHANGED
|
@@ -63,23 +63,23 @@ export class BlockHaisList {
|
|
|
63
63
|
return MachiType.RYANMEN;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
calcMachiType(haiId: number):
|
|
67
|
-
const machiTypeSet = new
|
|
66
|
+
calcMachiType(haiId: number): Map<MachiType, BlockHais> {
|
|
67
|
+
const machiTypeSet = new Map<MachiType, BlockHais>();
|
|
68
68
|
for(const block of this.blocks){
|
|
69
69
|
if(!block.containsHai(haiId)) continue;
|
|
70
70
|
|
|
71
71
|
switch(block.getType()){
|
|
72
72
|
|
|
73
73
|
case BlockType.JANTO:
|
|
74
|
-
machiTypeSet.
|
|
74
|
+
machiTypeSet.set(MachiType.TANKI, block);
|
|
75
75
|
break;
|
|
76
76
|
|
|
77
77
|
case BlockType.KOTSU:
|
|
78
|
-
machiTypeSet.
|
|
78
|
+
machiTypeSet.set(MachiType.SHANPON, block);
|
|
79
79
|
break;
|
|
80
80
|
|
|
81
81
|
case BlockType.SHUNTSU:
|
|
82
|
-
machiTypeSet.
|
|
82
|
+
machiTypeSet.set(this.calcShuntsuMachiType(block, haiId), block);
|
|
83
83
|
break;
|
|
84
84
|
}
|
|
85
85
|
}
|
|
@@ -111,7 +111,7 @@ export class FuCalculator{
|
|
|
111
111
|
];
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
private calcMachiType():
|
|
114
|
+
private calcMachiType(): Map<MachiType, BlockHais>{
|
|
115
115
|
const agariHaiId = this.context.ctx.agariHai.getId();
|
|
116
116
|
return this.context.block.calcMachiType(agariHaiId);
|
|
117
117
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mahjong_engine",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.14",
|
|
4
4
|
"description": "mahjong",
|
|
5
5
|
"homepage": "https://github.com/daicharn/IsTheOrderaMahjong#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"main": "dist/modules/index.js",
|
|
16
16
|
"types": "dist/modules/index.d.ts",
|
|
17
17
|
"scripts": {
|
|
18
|
-
"publish
|
|
18
|
+
"publish": "npx tsc && npm publish --access public",
|
|
19
19
|
"test": "jest",
|
|
20
20
|
"coverage": "jest --coverage",
|
|
21
21
|
"build": "npx tsc -p tsconfig.build.json",
|
package/tests/machiType.test.ts
CHANGED
|
@@ -1,93 +1,111 @@
|
|
|
1
1
|
import { Hais } from "../modules/Hais";
|
|
2
2
|
import { BlockHaisList } from "../modules/BlockHaisList";
|
|
3
3
|
import { BlockDivider } from '../modules/BlockDivider';
|
|
4
|
-
import { MachiType } from "../modules/MahjongConsts";
|
|
4
|
+
import { BlockType, MachiType } from "../modules/MahjongConsts";
|
|
5
|
+
import { BlockHais } from "../modules";
|
|
5
6
|
|
|
6
7
|
function getBlockHaisList(haisNum: number[]): BlockHaisList[]{
|
|
7
8
|
return new BlockDivider(new Hais(haisNum).getHais()).divide();
|
|
8
9
|
}
|
|
9
|
-
function
|
|
10
|
+
function getMachiType(haisNum: number[], haiId: number){
|
|
10
11
|
const results = getBlockHaisList(haisNum);
|
|
11
|
-
let resultMachiType:
|
|
12
|
+
let resultMachiType: Map<MachiType, BlockHais> = new Map<MachiType, BlockHais>();
|
|
12
13
|
if(results.length === 1) resultMachiType = results[0].calcMachiType(haiId);
|
|
13
14
|
return resultMachiType;
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
test("tanki_1", () => {
|
|
17
|
-
const resultMachiType =
|
|
18
|
+
const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 12);
|
|
18
19
|
|
|
19
|
-
const
|
|
20
|
+
const block = BlockHais.from(12, BlockType.JANTO);
|
|
21
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.TANKI, block]]);
|
|
20
22
|
expect(resultMachiType).toEqual(expected);
|
|
21
23
|
});
|
|
22
24
|
test("shanpon_1", () => {
|
|
23
|
-
const resultMachiType =
|
|
25
|
+
const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 10);
|
|
24
26
|
|
|
25
|
-
const
|
|
27
|
+
const block = BlockHais.from(10, BlockType.KOTSU);
|
|
28
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.SHANPON, block]]);
|
|
26
29
|
expect(resultMachiType).toEqual(expected);
|
|
27
30
|
});
|
|
28
31
|
test("ryanmen_1", () => {
|
|
29
|
-
const resultMachiType =
|
|
32
|
+
const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 1);
|
|
30
33
|
|
|
31
|
-
const
|
|
34
|
+
const block = BlockHais.from(1, BlockType.SHUNTSU);
|
|
35
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.RYANMEN, block]]);
|
|
32
36
|
expect(resultMachiType).toEqual(expected);
|
|
33
37
|
});
|
|
34
38
|
test("ryanmen_2", () => {
|
|
35
|
-
const resultMachiType =
|
|
39
|
+
const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 4);
|
|
36
40
|
|
|
37
|
-
const
|
|
41
|
+
const block = BlockHais.from(4, BlockType.SHUNTSU);
|
|
42
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.RYANMEN, block]]);
|
|
38
43
|
expect(resultMachiType).toEqual(expected);
|
|
39
44
|
});
|
|
40
45
|
test("ryanmen_3", () => {
|
|
41
|
-
const resultMachiType =
|
|
46
|
+
const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 6);
|
|
42
47
|
|
|
43
|
-
const
|
|
48
|
+
const block = BlockHais.from(4, BlockType.SHUNTSU);
|
|
49
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.RYANMEN, block]]);
|
|
44
50
|
expect(resultMachiType).toEqual(expected);
|
|
45
51
|
});
|
|
46
52
|
test("penchan_1", () => {
|
|
47
|
-
const resultMachiType =
|
|
53
|
+
const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 3);
|
|
48
54
|
|
|
49
|
-
const
|
|
55
|
+
const block = BlockHais.from(1, BlockType.SHUNTSU);
|
|
56
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.PENCHAN, block]]);
|
|
50
57
|
expect(resultMachiType).toEqual(expected);
|
|
51
58
|
});
|
|
52
59
|
test("penchan_2", () => {
|
|
53
|
-
const resultMachiType =
|
|
60
|
+
const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 7);
|
|
54
61
|
|
|
55
|
-
const
|
|
62
|
+
const block = BlockHais.from(7, BlockType.SHUNTSU);
|
|
63
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.PENCHAN, block]]);
|
|
56
64
|
expect(resultMachiType).toEqual(expected);
|
|
57
65
|
});
|
|
58
66
|
test("kanchan_1", () => {
|
|
59
|
-
const resultMachiType =
|
|
67
|
+
const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 5);
|
|
60
68
|
|
|
61
|
-
const
|
|
69
|
+
const block = BlockHais.from(4, BlockType.SHUNTSU);
|
|
70
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.KANCHAN, block]]);
|
|
62
71
|
expect(resultMachiType).toEqual(expected);
|
|
63
72
|
});
|
|
64
73
|
test("complex_1", () => {
|
|
65
|
-
const resultMachiType =
|
|
74
|
+
const resultMachiType = getMachiType([1,2,2,2,3,4,5,6,7,8,9,10,10,10], 2);
|
|
66
75
|
|
|
67
|
-
const
|
|
76
|
+
const block1 = BlockHais.from(1, BlockType.SHUNTSU);
|
|
77
|
+
const block2 = BlockHais.from(2, BlockType.JANTO);
|
|
78
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.KANCHAN, block1], [MachiType.TANKI, block2]]);
|
|
68
79
|
expect(resultMachiType).toEqual(expected);
|
|
69
80
|
});
|
|
70
81
|
test("complex_2", () => {
|
|
71
|
-
const resultMachiType =
|
|
82
|
+
const resultMachiType = getMachiType([1,2,2,2,2,3,4,5,6,7,8,9,10,10], 2);
|
|
72
83
|
|
|
73
|
-
const
|
|
84
|
+
const block1 = BlockHais.from(2, BlockType.KOTSU);
|
|
85
|
+
const block2 = BlockHais.from(1, BlockType.SHUNTSU);
|
|
86
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.SHANPON, block1], [MachiType.KANCHAN, block2]]);
|
|
74
87
|
expect(resultMachiType).toEqual(expected);
|
|
75
88
|
});
|
|
76
89
|
test("complex_3", () => {
|
|
77
|
-
const resultMachiType =
|
|
90
|
+
const resultMachiType = getMachiType([1,1,1,2,3,4,5,6,7,8,9,11,11,11], 1);
|
|
78
91
|
|
|
79
|
-
const
|
|
92
|
+
const block1 = BlockHais.from(1, BlockType.SHUNTSU);
|
|
93
|
+
const block2 = BlockHais.from(1, BlockType.JANTO);
|
|
94
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.RYANMEN, block1], [MachiType.TANKI, block2]]);
|
|
80
95
|
expect(resultMachiType).toEqual(expected);
|
|
81
96
|
});
|
|
82
97
|
test("multi_1", () => {
|
|
83
|
-
const resultMachiType =
|
|
98
|
+
const resultMachiType = getMachiType([1,1,2,2,3,3,5,5,5,6,6,6,7,7], 2);
|
|
84
99
|
|
|
85
|
-
const
|
|
100
|
+
const block = BlockHais.from(1, BlockType.SHUNTSU);
|
|
101
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.KANCHAN, block]]);
|
|
86
102
|
expect(resultMachiType).toEqual(expected);
|
|
87
103
|
});
|
|
88
104
|
test("multi_2", () => {
|
|
89
|
-
const resultMachiType =
|
|
105
|
+
const resultMachiType = getMachiType([1,1,2,3,4,4,5,6,7,8,9,11,11,11], 4);
|
|
90
106
|
|
|
91
|
-
const
|
|
107
|
+
const block1 = BlockHais.from(2, BlockType.SHUNTSU);
|
|
108
|
+
const block2 = BlockHais.from(4, BlockType.SHUNTSU);
|
|
109
|
+
const expected = new Map<MachiType, BlockHais>([[MachiType.RYANMEN, block1], [MachiType.RYANMEN, block2]]);
|
|
92
110
|
expect(resultMachiType).toEqual(expected);
|
|
93
111
|
});
|