mahjong_engine 1.0.12 → 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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"}
@@ -2,6 +2,7 @@ export { Hai } from './Hai.js';
2
2
  export { Hais } from './Hais.js';
3
3
  export { Meld } from './Meld.js';
4
4
  export { Melds } from './Melds.js';
5
+ export { BlockHais } from './BlockHais.js';
5
6
  export { BlockDivider } from './BlockDivider.js';
6
7
  export { PlayerHand } from './PlayerHand.js';
7
8
  export { PlayerContext } from './PlayerContext.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,cAAc,oBAAoB,CAAC;AACnC,mBAAmB,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,cAAc,oBAAoB,CAAC;AACnC,mBAAmB,eAAe,CAAC"}
@@ -2,6 +2,7 @@ export { Hai } from './Hai.js';
2
2
  export { Hais } from './Hais.js';
3
3
  export { Meld } from './Meld.js';
4
4
  export { Melds } from './Melds.js';
5
+ export { BlockHais } from './BlockHais.js';
5
6
  export { BlockDivider } from './BlockDivider.js';
6
7
  export { PlayerHand } from './PlayerHand.js';
7
8
  export { PlayerContext } from './PlayerContext.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,cAAc,oBAAoB,CAAC"}
@@ -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
  }
package/modules/index.ts CHANGED
@@ -2,6 +2,7 @@ export { Hai } from './Hai.js';
2
2
  export { Hais } from './Hais.js';
3
3
  export { Meld } from './Meld.js';
4
4
  export { Melds } from './Melds.js';
5
+ export { BlockHais } from './BlockHais.js'
5
6
  export { BlockDivider } from './BlockDivider.js';
6
7
  export { PlayerHand } from './PlayerHand.js';
7
8
  export { PlayerContext } from './PlayerContext.js';
@@ -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.12",
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
  });