@konoui/mjimage 0.0.13 → 0.0.15

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.
Files changed (87) hide show
  1. package/dist/mjs/index.d.ts +5 -9
  2. package/dist/mjs/index.js +5 -9
  3. package/dist/mjs/lib/calculator/calc.d.ts +263 -0
  4. package/dist/mjs/lib/calculator/calc.js +1386 -0
  5. package/dist/mjs/lib/calculator/efficiency.d.ts +19 -0
  6. package/dist/mjs/lib/calculator/efficiency.js +86 -0
  7. package/dist/mjs/lib/calculator/index.d.ts +2 -263
  8. package/dist/mjs/lib/calculator/index.js +14 -1382
  9. package/dist/mjs/lib/controller/controller.d.ts +4 -4
  10. package/dist/mjs/lib/controller/controller.js +34 -34
  11. package/dist/mjs/lib/controller/events.d.ts +3 -4
  12. package/dist/mjs/lib/controller/index.d.ts +1 -1
  13. package/dist/mjs/lib/controller/index.js +1 -1
  14. package/dist/mjs/lib/controller/managers.d.ts +2 -2
  15. package/dist/mjs/lib/controller/managers.js +1 -1
  16. package/dist/mjs/lib/controller/{efficiency.d.ts → player-efficiency.d.ts} +3 -20
  17. package/dist/mjs/lib/controller/{efficiency.js → player-efficiency.js} +3 -80
  18. package/dist/mjs/lib/controller/player.d.ts +1 -1
  19. package/dist/mjs/lib/controller/player.js +4 -4
  20. package/dist/mjs/lib/controller/river.d.ts +2 -2
  21. package/dist/mjs/lib/controller/state-machine.d.ts +2 -2
  22. package/dist/mjs/lib/controller/state-machine.js +2 -2
  23. package/dist/mjs/lib/controller/wall.d.ts +1 -1
  24. package/dist/mjs/lib/controller/wall.js +2 -2
  25. package/dist/mjs/lib/{constants.d.ts → core/constants.d.ts} +2 -0
  26. package/dist/mjs/lib/{constants.js → core/constants.js} +6 -1
  27. package/dist/mjs/lib/{image.d.ts → core/image.d.ts} +5 -5
  28. package/dist/mjs/lib/{image.js → core/image.js} +109 -111
  29. package/dist/mjs/lib/core/index.d.ts +3 -0
  30. package/dist/mjs/lib/core/index.js +19 -0
  31. package/dist/mjs/lib/{parser.d.ts → core/parser.d.ts} +10 -1
  32. package/dist/mjs/lib/{parser.js → core/parser.js} +28 -17
  33. package/dist/mjs/lib/{measure-text.js → measure-text/index.js} +1 -1
  34. package/dist/mjs/lib/mjai/event.d.ts +1 -1
  35. package/dist/mjs/lib/mjai/event.js +2 -2
  36. package/dist/mjs/lib/mjimage.d.ts +2 -1
  37. package/dist/mjs/lib/mjimage.js +9 -9
  38. package/dist/mjs/lib/table/index.d.ts +2 -0
  39. package/dist/mjs/lib/table/index.js +18 -0
  40. package/dist/mjs/lib/{table-parser.d.ts → table/table-parser.d.ts} +2 -2
  41. package/dist/mjs/lib/{table-parser.js → table/table-parser.js} +2 -2
  42. package/dist/mjs/lib/{table.d.ts → table/table.d.ts} +5 -3
  43. package/dist/mjs/lib/{table.js → table/table.js} +11 -4
  44. package/dist/mjs/svg/_0.svg +1 -1
  45. package/dist/mjs/svg/m0.svg +1 -1
  46. package/dist/mjs/svg/m1.svg +1 -1
  47. package/dist/mjs/svg/m2.svg +1 -1
  48. package/dist/mjs/svg/m3.svg +1 -1
  49. package/dist/mjs/svg/m4.svg +1 -1
  50. package/dist/mjs/svg/m5.svg +1 -1
  51. package/dist/mjs/svg/m6.svg +1 -1
  52. package/dist/mjs/svg/m7.svg +1 -1
  53. package/dist/mjs/svg/m8.svg +1 -1
  54. package/dist/mjs/svg/m9.svg +1 -1
  55. package/dist/mjs/svg/p0.svg +1 -1
  56. package/dist/mjs/svg/p1.svg +1 -1
  57. package/dist/mjs/svg/p2.svg +1 -1
  58. package/dist/mjs/svg/p3.svg +1 -1
  59. package/dist/mjs/svg/p4.svg +1 -1
  60. package/dist/mjs/svg/p5.svg +1 -1
  61. package/dist/mjs/svg/p6.svg +1 -1
  62. package/dist/mjs/svg/p7.svg +1 -1
  63. package/dist/mjs/svg/p8.svg +1 -1
  64. package/dist/mjs/svg/p9.svg +1 -1
  65. package/dist/mjs/svg/s0.svg +1 -1
  66. package/dist/mjs/svg/s1.svg +1 -1
  67. package/dist/mjs/svg/s2.svg +1 -1
  68. package/dist/mjs/svg/s3.svg +1 -1
  69. package/dist/mjs/svg/s4.svg +1 -1
  70. package/dist/mjs/svg/s5.svg +1 -1
  71. package/dist/mjs/svg/s6.svg +1 -1
  72. package/dist/mjs/svg/s7.svg +1 -1
  73. package/dist/mjs/svg/s8.svg +1 -1
  74. package/dist/mjs/svg/s9.svg +1 -1
  75. package/dist/mjs/svg/stick100.svg +1 -1
  76. package/dist/mjs/svg/stick1000.svg +1 -1
  77. package/dist/mjs/svg/z1.svg +1 -1
  78. package/dist/mjs/svg/z2.svg +1 -1
  79. package/dist/mjs/svg/z3.svg +1 -1
  80. package/dist/mjs/svg/z4.svg +1 -1
  81. package/dist/mjs/svg/z5.svg +1 -1
  82. package/dist/mjs/svg/z6.svg +1 -1
  83. package/dist/mjs/svg/z7.svg +1 -1
  84. package/package.json +6 -3
  85. /package/dist/mjs/lib/{lexer.d.ts → core/lexer.d.ts} +0 -0
  86. /package/dist/mjs/lib/{lexer.js → core/lexer.js} +0 -0
  87. /package/dist/mjs/lib/{measure-text.d.ts → measure-text/index.d.ts} +0 -0
@@ -0,0 +1,19 @@
1
+ import { Tile } from "../core/parser";
2
+ import { Hand } from "../calculator";
3
+ export interface Candidate {
4
+ tile: Tile;
5
+ candidates: Tile[];
6
+ shanten: number;
7
+ }
8
+ export declare class Efficiency {
9
+ static calcCandidates(hand: Hand, choices: Tile[]): Candidate[];
10
+ static candidateTiles(hand: Hand): {
11
+ shanten: number;
12
+ candidates: Tile[];
13
+ };
14
+ static partialCandidateTiles(input: string): {
15
+ shanten: number;
16
+ candidates: Tile[];
17
+ };
18
+ static partialShanten(input: string): number;
19
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Efficiency = void 0;
7
+ var assert_1 = __importDefault(require("assert"));
8
+ var constants_1 = require("../core/constants");
9
+ var parser_1 = require("../core/parser");
10
+ var calculator_1 = require("../calculator");
11
+ var Efficiency = (function () {
12
+ function Efficiency() {
13
+ }
14
+ Efficiency.calcCandidates = function (hand, choices) {
15
+ (0, assert_1.default)(choices.length > 0, "choices to discard is zero");
16
+ var ret = [];
17
+ for (var _i = 0, choices_1 = choices; _i < choices_1.length; _i++) {
18
+ var t = choices_1[_i];
19
+ var tiles = hand.dec([t]);
20
+ var c = Efficiency.candidateTiles(hand);
21
+ hand.inc(tiles);
22
+ if (ret.length == 0 || c.shanten < ret[0].shanten) {
23
+ ret = [
24
+ {
25
+ shanten: c.shanten,
26
+ candidates: c.candidates,
27
+ tile: t,
28
+ },
29
+ ];
30
+ }
31
+ else if (c.shanten == ret[0].shanten) {
32
+ ret.push({
33
+ candidates: c.candidates,
34
+ shanten: c.shanten,
35
+ tile: t,
36
+ });
37
+ }
38
+ }
39
+ return ret;
40
+ };
41
+ Efficiency.candidateTiles = function (hand) {
42
+ var r = Number.POSITIVE_INFINITY;
43
+ var candidates = [];
44
+ var sc = new calculator_1.ShantenCalculator(hand);
45
+ for (var _i = 0, _a = Object.values(constants_1.TYPE); _i < _a.length; _i++) {
46
+ var t = _a[_i];
47
+ if (t == constants_1.TYPE.BACK)
48
+ continue;
49
+ for (var n = 1; n < hand.getArrayLen(t); n++) {
50
+ if (hand.get(t, n) >= 4)
51
+ continue;
52
+ var tile = new parser_1.Tile(t, n);
53
+ var tiles = hand.inc([tile]);
54
+ var s = sc.calc();
55
+ hand.dec(tiles);
56
+ if (s < r) {
57
+ r = s;
58
+ candidates = [tile];
59
+ }
60
+ else if (s == r)
61
+ candidates.push(tile);
62
+ }
63
+ }
64
+ return {
65
+ shanten: r,
66
+ candidates: candidates,
67
+ };
68
+ };
69
+ Efficiency.partialCandidateTiles = function (input) {
70
+ var h = new calculator_1.Hand(input, true);
71
+ Array(13 - h.hands.length)
72
+ .fill(undefined)
73
+ .map(function () { return h.inc([new parser_1.Tile(constants_1.TYPE.BACK, 0)]); });
74
+ return Efficiency.candidateTiles(h);
75
+ };
76
+ Efficiency.partialShanten = function (input) {
77
+ var h = new calculator_1.Hand(input, true);
78
+ Array(13 - h.hands.length)
79
+ .fill(undefined)
80
+ .map(function () { return h.inc([new parser_1.Tile(constants_1.TYPE.BACK, 0)]); });
81
+ var sc = new calculator_1.ShantenCalculator(h);
82
+ return sc.calc();
83
+ };
84
+ return Efficiency;
85
+ }());
86
+ exports.Efficiency = Efficiency;
@@ -1,263 +1,2 @@
1
- import { TYPE, Round, Wind } from "../constants";
2
- import { Tile, BlockPon, BlockChi, BlockShoKan, BlockAnKan, BlockDaiKan, Type, Block } from "../parser";
3
- export type TupleOfSize<T, N extends number, R extends unknown[] = []> = R["length"] extends N ? R : TupleOfSize<T, N, [T, ...R]>;
4
- export interface HandData {
5
- [TYPE.M]: TupleOfSize<number, 10>;
6
- [TYPE.S]: TupleOfSize<number, 10>;
7
- [TYPE.P]: TupleOfSize<number, 10>;
8
- [TYPE.Z]: TupleOfSize<number, 8>;
9
- [TYPE.BACK]: [string, number];
10
- called: (BlockChi | BlockPon | BlockAnKan | BlockDaiKan | BlockShoKan)[];
11
- tsumo: Tile | null;
12
- reached: boolean;
13
- }
14
- export declare class Hand {
15
- private data;
16
- constructor(input: string, allowBackBlock?: boolean);
17
- private init;
18
- get hands(): Tile[];
19
- toString(): string;
20
- get called(): (BlockChi | BlockPon | BlockAnKan | BlockDaiKan | BlockShoKan)[];
21
- get reached(): boolean;
22
- get drawn(): Tile | null;
23
- get menzen(): boolean;
24
- getArrayLen(t: Type): 2 | 8 | 10;
25
- sum(t: Type): number;
26
- get(t: Type, n: number): number;
27
- inc(tiles: Tile[]): Tile[];
28
- dec(tiles: Tile[]): Tile[];
29
- draw(t: Tile): void;
30
- discard(t: Tile): void;
31
- reach(): void;
32
- call(b: BlockPon | BlockChi | BlockDaiKan): void;
33
- kan(b: BlockAnKan | BlockShoKan): void;
34
- clone(): Hand;
35
- }
36
- export declare class ShantenCalculator {
37
- hand: Hand;
38
- constructor(hand: Hand);
39
- calc(): number;
40
- sevenPairs(): number;
41
- thirteenOrphans(): number;
42
- fourSetsOnePair(): number;
43
- private commonByType;
44
- private groupRemainingTiles;
45
- private calcCommon;
46
- }
47
- export declare class BlockCalculator {
48
- hand: Hand;
49
- constructor(hand: Hand);
50
- calc(lastTile: Tile): Block[][];
51
- markDrawn(hands: Block[][], lastTile: Tile): Block[][];
52
- sevenPairs(): Block[][];
53
- thirteenOrphans(): Block[][];
54
- nineGates(): Block[][];
55
- fourSetsOnePair(): Block[][];
56
- private commonAll;
57
- private commonByType;
58
- }
59
- export interface BoardParams {
60
- doraMarkers: Tile[];
61
- blindDoraMarkers?: Tile[];
62
- round: Round;
63
- myWind: Wind;
64
- ronWind?: Wind;
65
- sticks?: {
66
- reach: number;
67
- dead: number;
68
- };
69
- reached?: 1 | 2;
70
- replacementWin?: boolean;
71
- quadWin?: boolean;
72
- finalWallWin?: boolean;
73
- finalDiscardWin?: boolean;
74
- oneShotWin?: boolean;
75
- }
76
- export interface WinResult {
77
- deltas: {
78
- [w in Wind]: number;
79
- };
80
- sum: number;
81
- fu: number;
82
- points: {
83
- name: string;
84
- double: number;
85
- }[];
86
- point: number;
87
- hand: Block[];
88
- params: BoardParams;
89
- }
90
- export declare class DoubleCalculator {
91
- hand: Hand;
92
- cfg: {
93
- doras: Tile[];
94
- blindDoras: Tile[];
95
- roundWind: Tile;
96
- myWind: Tile;
97
- reached: 0 | 1 | 2;
98
- sticks: {
99
- reach: number;
100
- dead: number;
101
- };
102
- replacementWin: boolean;
103
- quadWin: boolean;
104
- finalWallWin: boolean;
105
- finalDiscardWin: boolean;
106
- oneShotWin: boolean;
107
- orig: BoardParams;
108
- };
109
- constructor(hand: Hand, params: BoardParams);
110
- calc(hands: Block[][]): WinResult | false;
111
- calcPatterns(hands: Block[][]): {
112
- points: {
113
- name: string;
114
- double: number;
115
- }[];
116
- fu: number;
117
- hand: Block[];
118
- }[];
119
- private minus;
120
- dA1(h: Block[]): {
121
- name: string;
122
- double: number;
123
- }[];
124
- dB1(h: Block[]): {
125
- name: string;
126
- double: number;
127
- }[];
128
- dC1(h: Block[]): {
129
- name: string;
130
- double: number;
131
- }[];
132
- dD1(h: Block[]): {
133
- name: string;
134
- double: number;
135
- }[];
136
- dE1(h: Block[]): {
137
- name: string;
138
- double: number;
139
- }[];
140
- dF1(h: Block[]): {
141
- name: string;
142
- double: number;
143
- }[];
144
- dG1(h: Block[]): {
145
- name: string;
146
- double: number;
147
- }[];
148
- dH1(h: Block[]): {
149
- name: string;
150
- double: number;
151
- }[];
152
- dI1(h: Block[]): {
153
- name: string;
154
- double: number;
155
- }[];
156
- dJ1(h: Block[]): {
157
- name: string;
158
- double: number;
159
- }[];
160
- dK1(h: Block[]): {
161
- name: string;
162
- double: number;
163
- }[];
164
- dX1(h: Block[]): {
165
- name: string;
166
- double: number;
167
- }[];
168
- dA2(h: Block[]): {
169
- name: string;
170
- double: number;
171
- }[];
172
- dB2(h: Block[]): {
173
- name: string;
174
- double: number;
175
- }[];
176
- dC2(h: Block[]): {
177
- name: string;
178
- double: number;
179
- }[];
180
- dD2(h: Block[]): {
181
- name: string;
182
- double: number;
183
- }[];
184
- dE2(h: Block[]): {
185
- name: string;
186
- double: number;
187
- }[];
188
- dF2(h: Block[]): {
189
- name: string;
190
- double: number;
191
- }[];
192
- dG2(h: Block[]): {
193
- name: string;
194
- double: number;
195
- }[];
196
- dH2(h: Block[]): {
197
- name: string;
198
- double: number;
199
- }[];
200
- dI2(h: Block[]): {
201
- name: string;
202
- double: number;
203
- }[];
204
- dJ2(h: Block[]): {
205
- name: string;
206
- double: number;
207
- }[];
208
- dA3(h: Block[]): {
209
- name: string;
210
- double: number;
211
- }[];
212
- dB3(h: Block[]): {
213
- name: string;
214
- double: number;
215
- }[];
216
- dC3(h: Block[]): {
217
- name: string;
218
- double: number;
219
- }[];
220
- dA6(h: Block[]): {
221
- name: string;
222
- double: number;
223
- }[];
224
- dA13(h: Block[]): {
225
- name: string;
226
- double: number;
227
- }[];
228
- dB13(h: Block[]): {
229
- name: string;
230
- double: number;
231
- }[];
232
- dC13(h: Block[]): {
233
- name: string;
234
- double: number;
235
- }[];
236
- dD13(h: Block[]): {
237
- name: string;
238
- double: number;
239
- }[];
240
- dE13(h: Block[]): {
241
- name: string;
242
- double: number;
243
- }[];
244
- dF13(h: Block[]): {
245
- name: string;
246
- double: number;
247
- }[];
248
- dG13(h: Block[]): {
249
- name: string;
250
- double: number;
251
- }[];
252
- dH13(h: Block[]): {
253
- name: string;
254
- double: number;
255
- }[];
256
- dI13(h: Block[]): {
257
- name: string;
258
- double: number;
259
- }[];
260
- dJ13(h: Block[]): never[];
261
- dK13(h: Block[]): never[];
262
- calcFu(h: Block[]): number;
263
- }
1
+ export * from "./calc";
2
+ export * from "./efficiency";