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.
@@ -12,7 +12,7 @@ export declare class BlockHaisList {
12
12
  blockToString(): string;
13
13
  sort(): void;
14
14
  private calcShuntsuMachiType;
15
- calcMachiType(haiId: number): Set<MachiType>;
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;IAuB5C,YAAY,IAAI,SAAS,EAAE;IAI3B,KAAK,IAAI,aAAa;CAGzB"}
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 Set();
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.add(MachiType.TANKI);
62
+ machiTypeSet.set(MachiType.TANKI, block);
63
63
  break;
64
64
  case BlockType.KOTSU:
65
- machiTypeSet.add(MachiType.SHANPON);
65
+ machiTypeSet.set(MachiType.SHANPON, block);
66
66
  break;
67
67
  case BlockType.SHUNTSU:
68
- machiTypeSet.add(this.calcShuntsuMachiType(block, haiId));
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":"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"}
@@ -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 getMachiTypeSet(haisNum, haiId) {
8
+ function getMachiType(haisNum, haiId) {
8
9
  const results = getBlockHaisList(haisNum);
9
- let resultMachiType = new Set();
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 = getMachiTypeSet([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 12);
16
- const expected = new Set([MachiType.TANKI]);
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 = getMachiTypeSet([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 10);
21
- const expected = new Set([MachiType.SHANPON]);
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 = getMachiTypeSet([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 1);
26
- const expected = new Set([MachiType.RYANMEN]);
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 = getMachiTypeSet([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 4);
31
- const expected = new Set([MachiType.RYANMEN]);
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 = getMachiTypeSet([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 6);
36
- const expected = new Set([MachiType.RYANMEN]);
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 = getMachiTypeSet([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 3);
41
- const expected = new Set([MachiType.PENCHAN]);
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 = getMachiTypeSet([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 7);
46
- const expected = new Set([MachiType.PENCHAN]);
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 = getMachiTypeSet([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 12, 12], 5);
51
- const expected = new Set([MachiType.KANCHAN]);
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 = getMachiTypeSet([1, 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10], 2);
56
- const expected = new Set([MachiType.KANCHAN, MachiType.TANKI]);
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 = getMachiTypeSet([1, 2, 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10], 2);
61
- const expected = new Set([MachiType.SHANPON, MachiType.KANCHAN]);
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 = getMachiTypeSet([1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 11, 11], 1);
66
- const expected = new Set([MachiType.RYANMEN, MachiType.TANKI]);
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 = getMachiTypeSet([1, 1, 2, 2, 3, 3, 5, 5, 5, 6, 6, 6, 7, 7], 2);
71
- const expected = new Set([MachiType.KANCHAN]);
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 = getMachiTypeSet([1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 11, 11, 11], 4);
76
- const expected = new Set([MachiType.RYANMEN]);
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":"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"}
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,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,SAAS,gBAAgB,CAAC,OAAiB;IACvC,OAAO,IAAI,YAAY,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAClE,CAAC;AACD,SAAS,YAAY,CAAC,OAAiB,EAAE,KAAa;IAClD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,eAAe,GAA8B,IAAI,GAAG,EAAwB,CAAC;IACjF,IAAG,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3E,OAAO,eAAe,CAAC;AAC3B,CAAC;AAED,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;IACjB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE7E,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACnB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE7E,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACnB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACnB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACnB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACnB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACnB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACnB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACnB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACzG,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACnB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3G,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACnB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACzG,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;IACjB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvE,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;IACjB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3G,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC"}
@@ -63,23 +63,23 @@ export class BlockHaisList {
63
63
  return MachiType.RYANMEN;
64
64
  }
65
65
 
66
- calcMachiType(haiId: number): Set<MachiType> {
67
- const machiTypeSet = new Set<MachiType>();
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.add(MachiType.TANKI);
74
+ machiTypeSet.set(MachiType.TANKI, block);
75
75
  break;
76
76
 
77
77
  case BlockType.KOTSU:
78
- machiTypeSet.add(MachiType.SHANPON);
78
+ machiTypeSet.set(MachiType.SHANPON, block);
79
79
  break;
80
80
 
81
81
  case BlockType.SHUNTSU:
82
- machiTypeSet.add(this.calcShuntsuMachiType(block, haiId));
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(): Set<MachiType>{
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.13",
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-public": "npx tsc && npm publish --access public",
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",
@@ -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 getMachiTypeSet(haisNum: number[], haiId: number){
10
+ function getMachiType(haisNum: number[], haiId: number){
10
11
  const results = getBlockHaisList(haisNum);
11
- let resultMachiType: Set<MachiType> = new Set();
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 = getMachiTypeSet([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 12);
18
+ const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 12);
18
19
 
19
- const expected = new Set([MachiType.TANKI]);
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 = getMachiTypeSet([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 10);
25
+ const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 10);
24
26
 
25
- const expected = new Set([MachiType.SHANPON]);
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 = getMachiTypeSet([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 1);
32
+ const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 1);
30
33
 
31
- const expected = new Set([MachiType.RYANMEN]);
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 = getMachiTypeSet([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 4);
39
+ const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 4);
36
40
 
37
- const expected = new Set([MachiType.RYANMEN]);
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 = getMachiTypeSet([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 6);
46
+ const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 6);
42
47
 
43
- const expected = new Set([MachiType.RYANMEN]);
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 = getMachiTypeSet([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 3);
53
+ const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 3);
48
54
 
49
- const expected = new Set([MachiType.PENCHAN]);
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 = getMachiTypeSet([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 7);
60
+ const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 7);
54
61
 
55
- const expected = new Set([MachiType.PENCHAN]);
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 = getMachiTypeSet([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 5);
67
+ const resultMachiType = getMachiType([1,2,3,4,5,6,7,8,9,10,10,10,12,12], 5);
60
68
 
61
- const expected = new Set([MachiType.KANCHAN]);
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 = getMachiTypeSet([1,2,2,2,3,4,5,6,7,8,9,10,10,10], 2);
74
+ const resultMachiType = getMachiType([1,2,2,2,3,4,5,6,7,8,9,10,10,10], 2);
66
75
 
67
- const expected = new Set([MachiType.KANCHAN, MachiType.TANKI]);
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 = getMachiTypeSet([1,2,2,2,2,3,4,5,6,7,8,9,10,10], 2);
82
+ const resultMachiType = getMachiType([1,2,2,2,2,3,4,5,6,7,8,9,10,10], 2);
72
83
 
73
- const expected = new Set([MachiType.SHANPON, MachiType.KANCHAN]);
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 = getMachiTypeSet([1,1,1,2,3,4,5,6,7,8,9,11,11,11], 1);
90
+ const resultMachiType = getMachiType([1,1,1,2,3,4,5,6,7,8,9,11,11,11], 1);
78
91
 
79
- const expected = new Set([MachiType.RYANMEN, MachiType.TANKI]);
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 = getMachiTypeSet([1,1,2,2,3,3,5,5,5,6,6,6,7,7], 2);
98
+ const resultMachiType = getMachiType([1,1,2,2,3,3,5,5,5,6,6,6,7,7], 2);
84
99
 
85
- const expected = new Set([MachiType.KANCHAN]);
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 = getMachiTypeSet([1,1,2,3,4,4,5,6,7,8,9,11,11,11], 4);
105
+ const resultMachiType = getMachiType([1,1,2,3,4,4,5,6,7,8,9,11,11,11], 4);
90
106
 
91
- const expected = new Set([MachiType.RYANMEN]);
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
  });