@konoui/mjimage 0.0.6 → 0.0.8
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/mjs/lib/calculator/index.d.ts +10 -10
- package/dist/mjs/lib/calculator/index.js +95 -95
- package/dist/mjs/lib/constants.d.ts +1 -1
- package/dist/mjs/lib/constants.js +2 -2
- package/dist/mjs/lib/controller/controller.js +45 -45
- package/dist/mjs/lib/controller/efficiency.js +21 -21
- package/dist/mjs/lib/controller/managers.d.ts +2 -2
- package/dist/mjs/lib/controller/managers.js +15 -15
- package/dist/mjs/lib/controller/state-machine.js +1 -1
- package/dist/mjs/lib/controller/wall.js +11 -11
- package/dist/mjs/lib/image.js +7 -7
- package/dist/mjs/lib/mjai/event.js +12 -12
- package/dist/mjs/lib/parser.d.ts +5 -5
- package/dist/mjs/lib/parser.js +46 -46
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Tile, BlockPon, BlockChi, BlockShoKan, BlockAnKan, BlockDaiKan,
|
|
1
|
+
import { TYPE, Round, Wind } from "../constants";
|
|
2
|
+
import { Tile, BlockPon, BlockChi, BlockShoKan, BlockAnKan, BlockDaiKan, Type, Block } from "../parser";
|
|
3
3
|
type FixedNumber = [
|
|
4
4
|
number,
|
|
5
5
|
number,
|
|
@@ -13,11 +13,11 @@ type FixedNumber = [
|
|
|
13
13
|
number
|
|
14
14
|
];
|
|
15
15
|
export interface HandData {
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
19
|
-
[
|
|
20
|
-
[
|
|
16
|
+
[TYPE.M]: FixedNumber;
|
|
17
|
+
[TYPE.S]: FixedNumber;
|
|
18
|
+
[TYPE.P]: FixedNumber;
|
|
19
|
+
[TYPE.Z]: [number, number, number, number, number, number, number, number];
|
|
20
|
+
[TYPE.BACK]: [number];
|
|
21
21
|
called: (BlockChi | BlockPon | BlockAnKan | BlockDaiKan | BlockShoKan)[];
|
|
22
22
|
tsumo: Tile | null;
|
|
23
23
|
reached: boolean;
|
|
@@ -32,9 +32,9 @@ export declare class Hand {
|
|
|
32
32
|
get reached(): boolean;
|
|
33
33
|
get drawn(): Tile | null;
|
|
34
34
|
get menzen(): boolean;
|
|
35
|
-
getArrayLen(k:
|
|
36
|
-
sum(k:
|
|
37
|
-
get(k:
|
|
35
|
+
getArrayLen(k: Type): 1 | 8 | 10;
|
|
36
|
+
sum(k: Type): number;
|
|
37
|
+
get(k: Type, n: number): number;
|
|
38
38
|
inc(tiles: Tile[]): Tile[];
|
|
39
39
|
dec(tiles: Tile[]): Tile[];
|
|
40
40
|
draw(t: Tile): void;
|
|
@@ -20,11 +20,11 @@ var Hand = (function () {
|
|
|
20
20
|
function Hand(input) {
|
|
21
21
|
var _a;
|
|
22
22
|
this.data = (_a = {},
|
|
23
|
-
_a[constants_1.
|
|
24
|
-
_a[constants_1.
|
|
25
|
-
_a[constants_1.
|
|
26
|
-
_a[constants_1.
|
|
27
|
-
_a[constants_1.
|
|
23
|
+
_a[constants_1.TYPE.M] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
24
|
+
_a[constants_1.TYPE.P] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
25
|
+
_a[constants_1.TYPE.S] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
26
|
+
_a[constants_1.TYPE.Z] = [0, 0, 0, 0, 0, 0, 0, 0],
|
|
27
|
+
_a[constants_1.TYPE.BACK] = [0],
|
|
28
28
|
_a.called = [],
|
|
29
29
|
_a.reached = false,
|
|
30
30
|
_a.tsumo = null,
|
|
@@ -49,7 +49,7 @@ var Hand = (function () {
|
|
|
49
49
|
this.inc(b.tiles);
|
|
50
50
|
continue;
|
|
51
51
|
}
|
|
52
|
-
else if (input.split("").every(function (v) { return v === constants_1.
|
|
52
|
+
else if (input.split("").every(function (v) { return v === constants_1.TYPE.BACK; })) {
|
|
53
53
|
this.inc(b.tiles);
|
|
54
54
|
continue;
|
|
55
55
|
}
|
|
@@ -59,11 +59,11 @@ var Hand = (function () {
|
|
|
59
59
|
Object.defineProperty(Hand.prototype, "hands", {
|
|
60
60
|
get: function () {
|
|
61
61
|
var tiles = [];
|
|
62
|
-
for (var _i = 0, _a = Object.values(constants_1.
|
|
62
|
+
for (var _i = 0, _a = Object.values(constants_1.TYPE); _i < _a.length; _i++) {
|
|
63
63
|
var k = _a[_i];
|
|
64
64
|
for (var n = 0; n < this.getArrayLen(k); n++) {
|
|
65
65
|
var count = this.get(k, n);
|
|
66
|
-
if (k != constants_1.
|
|
66
|
+
if (k != constants_1.TYPE.Z && n == 5)
|
|
67
67
|
count -= this.get(k, 0);
|
|
68
68
|
for (var i = 0; i < count; i++) {
|
|
69
69
|
tiles.push(new parser_1.Tile(k, n));
|
|
@@ -135,20 +135,20 @@ var Hand = (function () {
|
|
|
135
135
|
var backup = [];
|
|
136
136
|
for (var _i = 0, tiles_1 = tiles; _i < tiles_1.length; _i++) {
|
|
137
137
|
var t = tiles_1[_i];
|
|
138
|
-
if (t.
|
|
138
|
+
if (t.t != constants_1.TYPE.BACK && this.get(t.t, t.n) > 4) {
|
|
139
139
|
this.dec(backup);
|
|
140
140
|
throw new Error("unable to increase ".concat(t, " in ").concat(this.toString()));
|
|
141
141
|
}
|
|
142
142
|
backup.push(t);
|
|
143
|
-
if (!(t.
|
|
144
|
-
this.data[t.
|
|
143
|
+
if (!(t.t == constants_1.TYPE.Z || t.t == constants_1.TYPE.BACK) && t.n == 0) {
|
|
144
|
+
this.data[t.t][5] += 1;
|
|
145
145
|
}
|
|
146
|
-
this.data[t.
|
|
147
|
-
if (t.
|
|
146
|
+
this.data[t.t][t.n] += 1;
|
|
147
|
+
if (t.t != constants_1.TYPE.Z &&
|
|
148
148
|
t.n == 5 &&
|
|
149
|
-
this.get(t.
|
|
150
|
-
this.get(t.
|
|
151
|
-
this.data[t.
|
|
149
|
+
this.get(t.t, 5) == 4 &&
|
|
150
|
+
this.get(t.t, 0) == 0) {
|
|
151
|
+
this.data[t.t][0] = 1;
|
|
152
152
|
var c = backup.pop().clone();
|
|
153
153
|
c.n = 0;
|
|
154
154
|
backup.push(c);
|
|
@@ -157,28 +157,28 @@ var Hand = (function () {
|
|
|
157
157
|
return backup;
|
|
158
158
|
};
|
|
159
159
|
Hand.prototype.dec = function (tiles) {
|
|
160
|
-
if (this.hands.every(function (t) { return t.
|
|
161
|
-
var toRemove = tiles.map(function (v) { return new parser_1.Tile(constants_1.
|
|
162
|
-
this.data[constants_1.
|
|
160
|
+
if (this.hands.every(function (t) { return t.t == constants_1.TYPE.BACK; })) {
|
|
161
|
+
var toRemove = tiles.map(function (v) { return new parser_1.Tile(constants_1.TYPE.BACK, 0); });
|
|
162
|
+
this.data[constants_1.TYPE.BACK][0] -= tiles.length;
|
|
163
163
|
return toRemove;
|
|
164
164
|
}
|
|
165
165
|
var backup = [];
|
|
166
166
|
for (var _i = 0, tiles_2 = tiles; _i < tiles_2.length; _i++) {
|
|
167
167
|
var t = tiles_2[_i];
|
|
168
|
-
if (this.get(t.
|
|
168
|
+
if (this.get(t.t, t.n) < 1) {
|
|
169
169
|
this.inc(backup);
|
|
170
170
|
throw new Error("unable to decrease ".concat(t.toString(), " in ").concat(this.toString()));
|
|
171
171
|
}
|
|
172
172
|
backup.push(t);
|
|
173
|
-
if (!(t.
|
|
174
|
-
this.data[t.
|
|
173
|
+
if (!(t.t == constants_1.TYPE.Z || t.t == constants_1.TYPE.BACK) && t.n == 0) {
|
|
174
|
+
this.data[t.t][5] -= 1;
|
|
175
175
|
}
|
|
176
|
-
this.data[t.
|
|
177
|
-
if (t.
|
|
176
|
+
this.data[t.t][t.n] -= 1;
|
|
177
|
+
if (t.t != constants_1.TYPE.Z &&
|
|
178
178
|
t.n == 5 &&
|
|
179
|
-
this.get(t.
|
|
180
|
-
this.get(t.
|
|
181
|
-
this.data[t.
|
|
179
|
+
this.get(t.t, 5) == 0 &&
|
|
180
|
+
this.get(t.t, 0) > 0) {
|
|
181
|
+
this.data[t.t][0] = 0;
|
|
182
182
|
var c = backup.pop().clone();
|
|
183
183
|
c.n = 0;
|
|
184
184
|
backup.push(c);
|
|
@@ -219,7 +219,7 @@ var Hand = (function () {
|
|
|
219
219
|
};
|
|
220
220
|
Hand.prototype.kan = function (b) {
|
|
221
221
|
if (b instanceof parser_1.BlockAnKan) {
|
|
222
|
-
var t = b.tiles.filter(function (v) { return v.
|
|
222
|
+
var t = b.tiles.filter(function (v) { return v.t != constants_1.TYPE.BACK && v.n != 0; });
|
|
223
223
|
this.dec([t[0], t[0], t[0], t[0]]);
|
|
224
224
|
this.data.called.push(b);
|
|
225
225
|
this.data.tsumo = null;
|
|
@@ -231,7 +231,7 @@ var Hand = (function () {
|
|
|
231
231
|
throw new Error("unable to find ".concat(b.tiles[0]));
|
|
232
232
|
var t = b.tiles[0].clone();
|
|
233
233
|
if (t.isNum() && t.n == 0) {
|
|
234
|
-
t = new parser_1.Tile(t.
|
|
234
|
+
t = new parser_1.Tile(t.t, 5);
|
|
235
235
|
}
|
|
236
236
|
this.data.called.splice(idx, 1);
|
|
237
237
|
this.dec([t]);
|
|
@@ -270,7 +270,7 @@ var ShantenCalculator = (function () {
|
|
|
270
270
|
return Infinity;
|
|
271
271
|
var nPairs = 0;
|
|
272
272
|
var nIsolated = 0;
|
|
273
|
-
for (var _i = 0, _a = Object.values(constants_1.
|
|
273
|
+
for (var _i = 0, _a = Object.values(constants_1.TYPE); _i < _a.length; _i++) {
|
|
274
274
|
var k = _a[_i];
|
|
275
275
|
for (var n = 1; n < this.hand.getArrayLen(k); n++) {
|
|
276
276
|
if (this.hand.get(k, n) == 2)
|
|
@@ -290,11 +290,11 @@ var ShantenCalculator = (function () {
|
|
|
290
290
|
return Infinity;
|
|
291
291
|
var nOrphans = 0;
|
|
292
292
|
var nPairs = 0;
|
|
293
|
-
for (var _i = 0, _a = Object.values(constants_1.
|
|
293
|
+
for (var _i = 0, _a = Object.values(constants_1.TYPE); _i < _a.length; _i++) {
|
|
294
294
|
var k = _a[_i];
|
|
295
|
-
if (k == constants_1.
|
|
295
|
+
if (k == constants_1.TYPE.BACK)
|
|
296
296
|
continue;
|
|
297
|
-
var nn = k == constants_1.
|
|
297
|
+
var nn = k == constants_1.TYPE.Z ? [1, 2, 3, 4, 5, 6, 7] : [1, 9];
|
|
298
298
|
for (var _b = 0, nn_1 = nn; _b < nn_1.length; _b++) {
|
|
299
299
|
var n = nn_1[_b];
|
|
300
300
|
if (this.hand.get(k, n) >= 1)
|
|
@@ -309,7 +309,7 @@ var ShantenCalculator = (function () {
|
|
|
309
309
|
var _this = this;
|
|
310
310
|
var calc = function (hasPair) {
|
|
311
311
|
var z = [0, 0, 0];
|
|
312
|
-
var k = constants_1.
|
|
312
|
+
var k = constants_1.TYPE.Z;
|
|
313
313
|
for (var n = 1; n < _this.hand.getArrayLen(k); n++) {
|
|
314
314
|
if (_this.hand.get(k, n) >= 3)
|
|
315
315
|
z[0]++;
|
|
@@ -319,9 +319,9 @@ var ShantenCalculator = (function () {
|
|
|
319
319
|
z[2]++;
|
|
320
320
|
}
|
|
321
321
|
var min = 13;
|
|
322
|
-
var mr = _this.commonByKind(constants_1.
|
|
323
|
-
var pr = _this.commonByKind(constants_1.
|
|
324
|
-
var sr = _this.commonByKind(constants_1.
|
|
322
|
+
var mr = _this.commonByKind(constants_1.TYPE.M);
|
|
323
|
+
var pr = _this.commonByKind(constants_1.TYPE.P);
|
|
324
|
+
var sr = _this.commonByKind(constants_1.TYPE.S);
|
|
325
325
|
for (var _i = 0, _a = [mr.patternA, mr.patternB]; _i < _a.length; _i++) {
|
|
326
326
|
var m = _a[_i];
|
|
327
327
|
for (var _b = 0, _c = [pr.patternA, pr.patternB]; _b < _c.length; _b++) {
|
|
@@ -342,7 +342,7 @@ var ShantenCalculator = (function () {
|
|
|
342
342
|
return min;
|
|
343
343
|
};
|
|
344
344
|
var min = calc(false);
|
|
345
|
-
for (var _i = 0, _a = Object.values(constants_1.
|
|
345
|
+
for (var _i = 0, _a = Object.values(constants_1.TYPE); _i < _a.length; _i++) {
|
|
346
346
|
var k = _a[_i];
|
|
347
347
|
for (var n = 1; n < this.hand.getArrayLen(k); n++) {
|
|
348
348
|
if (this.hand.get(k, n) >= 2) {
|
|
@@ -457,16 +457,16 @@ var ExShantenCalculator = (function () {
|
|
|
457
457
|
var vPon = null;
|
|
458
458
|
for (var _i = 0, _a = [1, 2, 3, 4, 5, 6, 7]; _i < _a.length; _i++) {
|
|
459
459
|
var n = _a[_i];
|
|
460
|
-
if (this.h.get(constants_1.
|
|
460
|
+
if (this.h.get(constants_1.TYPE.Z, n) >= 3)
|
|
461
461
|
three++;
|
|
462
|
-
else if (this.h.get(constants_1.
|
|
463
|
-
var t = new parser_1.Tile(constants_1.
|
|
462
|
+
else if (this.h.get(constants_1.TYPE.Z, n) == 2) {
|
|
463
|
+
var t = new parser_1.Tile(constants_1.TYPE.Z, n);
|
|
464
464
|
vPon = new parser_1.BlockPon([t, t.clone(), t.clone()]);
|
|
465
465
|
}
|
|
466
466
|
else
|
|
467
467
|
for (var _b = 0, _c = this.h.called; _b < _c.length; _b++) {
|
|
468
468
|
var b = _c[_b];
|
|
469
|
-
if (b.tiles[0].
|
|
469
|
+
if (b.tiles[0].t == constants_1.TYPE.Z && b.tiles[0].n == n)
|
|
470
470
|
three++;
|
|
471
471
|
}
|
|
472
472
|
}
|
|
@@ -534,9 +534,9 @@ var TileCalculator = (function () {
|
|
|
534
534
|
if (this.hand.called.length > 0)
|
|
535
535
|
return [];
|
|
536
536
|
var ret = [];
|
|
537
|
-
for (var _i = 0, _a = Object.values(constants_1.
|
|
537
|
+
for (var _i = 0, _a = Object.values(constants_1.TYPE); _i < _a.length; _i++) {
|
|
538
538
|
var k = _a[_i];
|
|
539
|
-
if (k == constants_1.
|
|
539
|
+
if (k == constants_1.TYPE.BACK)
|
|
540
540
|
continue;
|
|
541
541
|
for (var n = 1; n < this.hand.getArrayLen(k); n++) {
|
|
542
542
|
var v = this.hand.get(k, n);
|
|
@@ -553,11 +553,11 @@ var TileCalculator = (function () {
|
|
|
553
553
|
TileCalculator.prototype.thirteenOrphans = function () {
|
|
554
554
|
var ret = [];
|
|
555
555
|
var pairs = "";
|
|
556
|
-
for (var _i = 0, _a = Object.values(constants_1.
|
|
556
|
+
for (var _i = 0, _a = Object.values(constants_1.TYPE); _i < _a.length; _i++) {
|
|
557
557
|
var k = _a[_i];
|
|
558
|
-
if (k == constants_1.
|
|
558
|
+
if (k == constants_1.TYPE.BACK)
|
|
559
559
|
continue;
|
|
560
|
-
var nn = k == constants_1.
|
|
560
|
+
var nn = k == constants_1.TYPE.Z ? [1, 2, 3, 4, 5, 6, 7] : [1, 9];
|
|
561
561
|
for (var _b = 0, nn_2 = nn; _b < nn_2.length; _b++) {
|
|
562
562
|
var n = nn_2[_b];
|
|
563
563
|
if (this.hand.get(k, n) == 1)
|
|
@@ -575,11 +575,11 @@ var TileCalculator = (function () {
|
|
|
575
575
|
var cond = function (k, n, want) {
|
|
576
576
|
return want.includes(_this.hand.get(k, n));
|
|
577
577
|
};
|
|
578
|
-
for (var _i = 0, _a = Object.values(constants_1.
|
|
578
|
+
for (var _i = 0, _a = Object.values(constants_1.TYPE); _i < _a.length; _i++) {
|
|
579
579
|
var k = _a[_i];
|
|
580
|
-
if (k == constants_1.
|
|
580
|
+
if (k == constants_1.TYPE.BACK)
|
|
581
581
|
continue;
|
|
582
|
-
if (k == constants_1.
|
|
582
|
+
if (k == constants_1.TYPE.Z)
|
|
583
583
|
continue;
|
|
584
584
|
var cond1 = cond(k, 1, [3, 4]) &&
|
|
585
585
|
cond(k, 9, [3, 4]) &&
|
|
@@ -599,9 +599,9 @@ var TileCalculator = (function () {
|
|
|
599
599
|
};
|
|
600
600
|
TileCalculator.prototype.fourSetsOnePair = function () {
|
|
601
601
|
var ret = [];
|
|
602
|
-
for (var _i = 0, _a = Object.values(constants_1.
|
|
602
|
+
for (var _i = 0, _a = Object.values(constants_1.TYPE); _i < _a.length; _i++) {
|
|
603
603
|
var k = _a[_i];
|
|
604
|
-
if (k == constants_1.
|
|
604
|
+
if (k == constants_1.TYPE.BACK)
|
|
605
605
|
continue;
|
|
606
606
|
var _loop_1 = function (n) {
|
|
607
607
|
if (this_1.hand.get(k, n) >= 2) {
|
|
@@ -627,7 +627,7 @@ var TileCalculator = (function () {
|
|
|
627
627
|
var _this = this;
|
|
628
628
|
var handleZ = function () {
|
|
629
629
|
var z = [];
|
|
630
|
-
var k = constants_1.
|
|
630
|
+
var k = constants_1.TYPE.Z;
|
|
631
631
|
for (var n = 1; n < _this.hand.getArrayLen(k); n++) {
|
|
632
632
|
if (_this.hand.get(k, n) == 0)
|
|
633
633
|
continue;
|
|
@@ -638,9 +638,9 @@ var TileCalculator = (function () {
|
|
|
638
638
|
return z.length == 0 ? [] : [z];
|
|
639
639
|
};
|
|
640
640
|
var vvv = [
|
|
641
|
-
this.commonByKind(constants_1.
|
|
642
|
-
this.commonByKind(constants_1.
|
|
643
|
-
this.commonByKind(constants_1.
|
|
641
|
+
this.commonByKind(constants_1.TYPE.M),
|
|
642
|
+
this.commonByKind(constants_1.TYPE.P),
|
|
643
|
+
this.commonByKind(constants_1.TYPE.S),
|
|
644
644
|
handleZ(),
|
|
645
645
|
[this.hand.called],
|
|
646
646
|
].sort(function (a, b) { return b.length - a.length; });
|
|
@@ -894,7 +894,7 @@ var DoubleCalculator = (function () {
|
|
|
894
894
|
};
|
|
895
895
|
DoubleCalculator.prototype.dD1 = function (h) {
|
|
896
896
|
var cond = h.some(function (block) {
|
|
897
|
-
return block.tiles.some(function (t) { return t.
|
|
897
|
+
return block.tiles.some(function (t) { return t.t == constants_1.TYPE.Z || [1, 9].includes(t.n); });
|
|
898
898
|
});
|
|
899
899
|
return cond ? [] : [{ name: "断么九", double: 1 }];
|
|
900
900
|
};
|
|
@@ -911,7 +911,7 @@ var DoubleCalculator = (function () {
|
|
|
911
911
|
if (block instanceof parser_1.BlockPair)
|
|
912
912
|
return;
|
|
913
913
|
var tile = block.tiles[0];
|
|
914
|
-
if (tile.
|
|
914
|
+
if (tile.t == constants_1.TYPE.Z) {
|
|
915
915
|
if (tile.equals(_this.cfg.myWind))
|
|
916
916
|
ret.push({ name: "自風", double: 1 });
|
|
917
917
|
if (tile.equals(_this.cfg.roundWind))
|
|
@@ -983,9 +983,9 @@ var DoubleCalculator = (function () {
|
|
|
983
983
|
if (!check(block))
|
|
984
984
|
return "continue";
|
|
985
985
|
var tile = block.minTile();
|
|
986
|
-
if (tile.
|
|
986
|
+
if (tile.t == constants_1.TYPE.Z)
|
|
987
987
|
return "continue";
|
|
988
|
-
var filteredKinds = [constants_1.
|
|
988
|
+
var filteredKinds = [constants_1.TYPE.M, constants_1.TYPE.P, constants_1.TYPE.S].filter(function (v) { return v != tile.t; });
|
|
989
989
|
var cond1 = h.some(function (b) {
|
|
990
990
|
var newTile = new parser_1.Tile(filteredKinds[0], tile.n);
|
|
991
991
|
return check(b) && newTile.equals(b.minTile(), true);
|
|
@@ -1048,9 +1048,9 @@ var DoubleCalculator = (function () {
|
|
|
1048
1048
|
if (!check(block))
|
|
1049
1049
|
return "continue";
|
|
1050
1050
|
var tile = block.minTile();
|
|
1051
|
-
if (tile.
|
|
1051
|
+
if (tile.t == constants_1.TYPE.Z)
|
|
1052
1052
|
return "continue";
|
|
1053
|
-
var filteredKinds = [constants_1.
|
|
1053
|
+
var filteredKinds = [constants_1.TYPE.M, constants_1.TYPE.P, constants_1.TYPE.S].filter(function (v) { return v != tile.t; });
|
|
1054
1054
|
var cond1 = h.some(function (b) {
|
|
1055
1055
|
var newTile = new parser_1.Tile(filteredKinds[0], tile.n);
|
|
1056
1056
|
return check(b) && newTile.equals(b.minTile(), true);
|
|
@@ -1073,13 +1073,13 @@ var DoubleCalculator = (function () {
|
|
|
1073
1073
|
DoubleCalculator.prototype.dG2 = function (h) {
|
|
1074
1074
|
var l = h.filter(function (b) {
|
|
1075
1075
|
var t = b.tiles[0];
|
|
1076
|
-
return t.
|
|
1076
|
+
return t.t == constants_1.TYPE.Z && [5, 6, 7].includes(t.n);
|
|
1077
1077
|
}).length;
|
|
1078
1078
|
return l == 3 ? [{ name: "小三元", double: 2 }] : [];
|
|
1079
1079
|
};
|
|
1080
1080
|
DoubleCalculator.prototype.dH2 = function (h) {
|
|
1081
1081
|
var cond = h.every(function (b) {
|
|
1082
|
-
var values = b.tiles[0].
|
|
1082
|
+
var values = b.tiles[0].t == constants_1.TYPE.Z ? [1, 2, 3, 4, 5, 6, 7] : [1, 9];
|
|
1083
1083
|
return b.tiles.every(function (t) { return values.includes(t.n); });
|
|
1084
1084
|
});
|
|
1085
1085
|
return cond ? [{ name: "混老頭", double: 2 }] : [];
|
|
@@ -1087,10 +1087,10 @@ var DoubleCalculator = (function () {
|
|
|
1087
1087
|
DoubleCalculator.prototype.dI2 = function (h) {
|
|
1088
1088
|
if (!h.some(function (b) { return b instanceof parser_1.BlockRun; }) && !(h.length == 7))
|
|
1089
1089
|
return [];
|
|
1090
|
-
if (!h.some(function (b) { return b.tiles[0].
|
|
1090
|
+
if (!h.some(function (b) { return b.tiles[0].t == constants_1.TYPE.Z; }))
|
|
1091
1091
|
return [];
|
|
1092
1092
|
var cond = h.every(function (block) {
|
|
1093
|
-
var values = block.tiles[0].
|
|
1093
|
+
var values = block.tiles[0].t == constants_1.TYPE.Z ? [1, 2, 3, 4, 5, 6, 7] : [1, 9];
|
|
1094
1094
|
return block.tiles.some(function (t) { return values.includes(t.n); });
|
|
1095
1095
|
});
|
|
1096
1096
|
return cond ? [{ name: "混全帯么九", double: 2 - this.minus() }] : [];
|
|
@@ -1100,25 +1100,25 @@ var DoubleCalculator = (function () {
|
|
|
1100
1100
|
if (this.minus() != 0)
|
|
1101
1101
|
return [];
|
|
1102
1102
|
var m = (_a = {},
|
|
1103
|
-
_a[constants_1.
|
|
1104
|
-
_a[constants_1.
|
|
1105
|
-
_a[constants_1.
|
|
1103
|
+
_a[constants_1.TYPE.M] = [0, 0, 0],
|
|
1104
|
+
_a[constants_1.TYPE.S] = [0, 0, 0],
|
|
1105
|
+
_a[constants_1.TYPE.P] = [0, 0, 0],
|
|
1106
1106
|
_a);
|
|
1107
1107
|
for (var _i = 0, h_4 = h; _i < h_4.length; _i++) {
|
|
1108
1108
|
var block = h_4[_i];
|
|
1109
1109
|
var tile = block.minTile();
|
|
1110
|
-
if (tile.
|
|
1110
|
+
if (tile.t == constants_1.TYPE.BACK)
|
|
1111
1111
|
continue;
|
|
1112
|
-
if (tile.
|
|
1112
|
+
if (tile.t == constants_1.TYPE.Z)
|
|
1113
1113
|
continue;
|
|
1114
1114
|
if (!(block instanceof parser_1.BlockRun))
|
|
1115
1115
|
continue;
|
|
1116
1116
|
if (tile.n == 1)
|
|
1117
|
-
m[tile.
|
|
1117
|
+
m[tile.t][0]++;
|
|
1118
1118
|
if (tile.n == 4)
|
|
1119
|
-
m[tile.
|
|
1119
|
+
m[tile.t][1]++;
|
|
1120
1120
|
if (tile.n == 7)
|
|
1121
|
-
m[tile.
|
|
1121
|
+
m[tile.t][2]++;
|
|
1122
1122
|
}
|
|
1123
1123
|
for (var _b = 0, _c = Object.values(m); _b < _c.length; _b++) {
|
|
1124
1124
|
var v = _c[_b];
|
|
@@ -1128,16 +1128,16 @@ var DoubleCalculator = (function () {
|
|
|
1128
1128
|
return [];
|
|
1129
1129
|
};
|
|
1130
1130
|
DoubleCalculator.prototype.dA3 = function (h) {
|
|
1131
|
-
var cond = !h.some(function (block) { return block.tiles[0].
|
|
1131
|
+
var cond = !h.some(function (block) { return block.tiles[0].t == constants_1.TYPE.Z; });
|
|
1132
1132
|
if (cond)
|
|
1133
1133
|
return [];
|
|
1134
1134
|
var _loop_4 = function (k) {
|
|
1135
|
-
var ok = h.every(function (b) { return b.tiles[0].
|
|
1135
|
+
var ok = h.every(function (b) { return b.tiles[0].t == constants_1.TYPE.Z || b.tiles[0].t == k; });
|
|
1136
1136
|
if (ok)
|
|
1137
1137
|
return { value: [{ name: "混一色", double: 3 - this_3.minus() }] };
|
|
1138
1138
|
};
|
|
1139
1139
|
var this_3 = this;
|
|
1140
|
-
for (var _i = 0, _a = Object.values(constants_1.
|
|
1140
|
+
for (var _i = 0, _a = Object.values(constants_1.TYPE); _i < _a.length; _i++) {
|
|
1141
1141
|
var k = _a[_i];
|
|
1142
1142
|
var state_3 = _loop_4(k);
|
|
1143
1143
|
if (typeof state_3 === "object")
|
|
@@ -1148,10 +1148,10 @@ var DoubleCalculator = (function () {
|
|
|
1148
1148
|
DoubleCalculator.prototype.dB3 = function (h) {
|
|
1149
1149
|
if (!h.some(function (b) { return b instanceof parser_1.BlockRun; }) && !(h.length == 7))
|
|
1150
1150
|
return [];
|
|
1151
|
-
if (h.some(function (b) { return b.tiles[0].
|
|
1151
|
+
if (h.some(function (b) { return b.tiles[0].t == constants_1.TYPE.Z; }))
|
|
1152
1152
|
return [];
|
|
1153
1153
|
var cond = h.every(function (b) {
|
|
1154
|
-
var values = b.tiles[0].
|
|
1154
|
+
var values = b.tiles[0].t == constants_1.TYPE.Z ? [1, 2, 3, 4, 5, 6, 7] : [1, 9];
|
|
1155
1155
|
return b.tiles.some(function (t) { return values.includes(t.n); });
|
|
1156
1156
|
});
|
|
1157
1157
|
return cond ? [{ name: "純全帯么九色", double: 3 - this.minus() }] : [];
|
|
@@ -1163,17 +1163,17 @@ var DoubleCalculator = (function () {
|
|
|
1163
1163
|
return count == 2 ? [{ name: "ニ盃口", double: 3 }] : [];
|
|
1164
1164
|
};
|
|
1165
1165
|
DoubleCalculator.prototype.dA6 = function (h) {
|
|
1166
|
-
if (h.some(function (block) { return block.tiles[0].
|
|
1166
|
+
if (h.some(function (block) { return block.tiles[0].t == constants_1.TYPE.Z; }))
|
|
1167
1167
|
return [];
|
|
1168
1168
|
var _loop_5 = function (k) {
|
|
1169
|
-
if (k == constants_1.
|
|
1169
|
+
if (k == constants_1.TYPE.Z)
|
|
1170
1170
|
return "continue";
|
|
1171
|
-
var ok = h.every(function (v) { return v.tiles[0].
|
|
1171
|
+
var ok = h.every(function (v) { return v.tiles[0].t == k; });
|
|
1172
1172
|
if (ok)
|
|
1173
1173
|
return { value: [{ name: "清一色", double: 6 - this_4.minus() }] };
|
|
1174
1174
|
};
|
|
1175
1175
|
var this_4 = this;
|
|
1176
|
-
for (var _i = 0, _a = Object.values(constants_1.
|
|
1176
|
+
for (var _i = 0, _a = Object.values(constants_1.TYPE); _i < _a.length; _i++) {
|
|
1177
1177
|
var k = _a[_i];
|
|
1178
1178
|
var state_4 = _loop_5(k);
|
|
1179
1179
|
if (typeof state_4 === "object")
|
|
@@ -1220,17 +1220,17 @@ var DoubleCalculator = (function () {
|
|
|
1220
1220
|
var z = [5, 6, 7];
|
|
1221
1221
|
var cond = h.filter(function (b) {
|
|
1222
1222
|
return !(b instanceof parser_1.BlockPair) &&
|
|
1223
|
-
b.tiles.some(function (t) { return t.
|
|
1223
|
+
b.tiles.some(function (t) { return t.t == constants_1.TYPE.Z && z.includes(t.n); });
|
|
1224
1224
|
}).length == 3;
|
|
1225
1225
|
return cond ? [{ name: "大三元", double: 13 }] : [];
|
|
1226
1226
|
};
|
|
1227
1227
|
DoubleCalculator.prototype.dE13 = function (h) {
|
|
1228
|
-
var cond = h.every(function (b) { return b.tiles.every(function (t) { return t.
|
|
1228
|
+
var cond = h.every(function (b) { return b.tiles.every(function (t) { return t.t == constants_1.TYPE.Z; }); });
|
|
1229
1229
|
return cond ? [{ name: "字一色", double: 13 }] : [];
|
|
1230
1230
|
};
|
|
1231
1231
|
DoubleCalculator.prototype.dF13 = function (h) {
|
|
1232
1232
|
var cond = h.every(function (b) {
|
|
1233
|
-
return b.tiles.every(function (t) { return t.
|
|
1233
|
+
return b.tiles.every(function (t) { return t.t != constants_1.TYPE.Z && [1, 9].includes(t.n); });
|
|
1234
1234
|
});
|
|
1235
1235
|
return cond ? [{ name: "清老頭", double: 13 }] : [];
|
|
1236
1236
|
};
|
|
@@ -1248,22 +1248,22 @@ var DoubleCalculator = (function () {
|
|
|
1248
1248
|
if (h.length == 7)
|
|
1249
1249
|
return [];
|
|
1250
1250
|
var zn = [1, 2, 3, 4];
|
|
1251
|
-
var cond1 = h.filter(function (b) { return b.tiles.some(function (t) { return t.
|
|
1251
|
+
var cond1 = h.filter(function (b) { return b.tiles.some(function (t) { return t.t == constants_1.TYPE.Z && zn.includes(t.n); }); })
|
|
1252
1252
|
.length == 4;
|
|
1253
1253
|
if (!cond1)
|
|
1254
1254
|
return [];
|
|
1255
1255
|
var cond2 = h
|
|
1256
1256
|
.find(function (b) { return b instanceof parser_1.BlockPair; })
|
|
1257
|
-
.tiles.some(function (t) { return t.
|
|
1257
|
+
.tiles.some(function (t) { return t.t == constants_1.TYPE.Z && zn.includes(t.n); });
|
|
1258
1258
|
return cond2
|
|
1259
1259
|
? [{ name: "小四喜", double: 13 }]
|
|
1260
1260
|
: [{ name: "大四喜", double: 13 }];
|
|
1261
1261
|
};
|
|
1262
1262
|
DoubleCalculator.prototype.dI13 = function (h) {
|
|
1263
1263
|
var check = function (t) {
|
|
1264
|
-
if (t.equals(new parser_1.Tile(constants_1.
|
|
1264
|
+
if (t.equals(new parser_1.Tile(constants_1.TYPE.Z, 6)))
|
|
1265
1265
|
return true;
|
|
1266
|
-
if (t.
|
|
1266
|
+
if (t.t == constants_1.TYPE.S && [2, 3, 4, 6, 8].includes(t.n))
|
|
1267
1267
|
return true;
|
|
1268
1268
|
return false;
|
|
1269
1269
|
};
|
|
@@ -1291,9 +1291,9 @@ var DoubleCalculator = (function () {
|
|
|
1291
1291
|
var isTsumo = lastBlock.tiles.some(function (t) { return t.has(constants_1.OPERATOR.TSUMO); });
|
|
1292
1292
|
var calcTriple = function (b, base) {
|
|
1293
1293
|
var tile = b.tiles[0];
|
|
1294
|
-
if (tile.
|
|
1294
|
+
if (tile.t == constants_1.TYPE.Z && [5, 6, 7].includes(tile.n))
|
|
1295
1295
|
return base * 2;
|
|
1296
|
-
else if (tile.
|
|
1296
|
+
else if (tile.t == constants_1.TYPE.Z && [myWind, round].includes(tile.n))
|
|
1297
1297
|
return base * 2;
|
|
1298
1298
|
else if ([1, 9].includes(tile.n))
|
|
1299
1299
|
return base * 2;
|
|
@@ -1336,7 +1336,7 @@ var DoubleCalculator = (function () {
|
|
|
1336
1336
|
fu += calcLast(lastBlock);
|
|
1337
1337
|
var pair = h.find(function (b) { return b instanceof parser_1.BlockPair; });
|
|
1338
1338
|
var tile = pair.tiles[0];
|
|
1339
|
-
if (tile.
|
|
1339
|
+
if (tile.t == constants_1.TYPE.Z) {
|
|
1340
1340
|
if ([5, 6, 7].includes(tile.n))
|
|
1341
1341
|
fu += 2;
|
|
1342
1342
|
if (tile.n == round)
|
|
@@ -1361,7 +1361,7 @@ var DoubleCalculator = (function () {
|
|
|
1361
1361
|
}());
|
|
1362
1362
|
exports.DoubleCalculator = DoubleCalculator;
|
|
1363
1363
|
var buildKey = function (b) {
|
|
1364
|
-
return b.tiles.reduce(function (a, b) { return "".concat(a).concat(b.n).concat(b.
|
|
1364
|
+
return b.tiles.reduce(function (a, b) { return "".concat(a).concat(b.n).concat(b.t); }, "");
|
|
1365
1365
|
};
|
|
1366
1366
|
var countSameBlocks = function (h) {
|
|
1367
1367
|
var m = {};
|
|
@@ -1385,6 +1385,6 @@ var countSameBlocks = function (h) {
|
|
|
1385
1385
|
};
|
|
1386
1386
|
var toDora = function (doraMarker) {
|
|
1387
1387
|
var n = doraMarker.isNum() && doraMarker.n == 0 ? 5 : doraMarker.n;
|
|
1388
|
-
var k = doraMarker.
|
|
1388
|
+
var k = doraMarker.t;
|
|
1389
1389
|
return new parser_1.Tile(k, (n % 9) + 1);
|
|
1390
1390
|
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.WIND_MAP = exports.ROUND_MAP = exports.WIND = exports.BLOCK = exports.OPERATOR = exports.
|
|
4
|
+
exports.WIND_MAP = exports.ROUND_MAP = exports.WIND = exports.BLOCK = exports.OPERATOR = exports.TYPE = exports.INPUT_SEPARATOR = exports.TABLE_CONTEXT = exports.TILE_CONTEXT = exports.FONT_FAMILY = void 0;
|
|
5
5
|
exports.FONT_FAMILY = "MS Gothic, sans-serif";
|
|
6
6
|
exports.TILE_CONTEXT = { WIDTH: 66, HEIGHT: 90 };
|
|
7
7
|
exports.TABLE_CONTEXT = { BASE: 40 };
|
|
8
8
|
exports.INPUT_SEPARATOR = ",";
|
|
9
|
-
exports.
|
|
9
|
+
exports.TYPE = {
|
|
10
10
|
M: "m",
|
|
11
11
|
P: "p",
|
|
12
12
|
S: "s",
|