mj-simulator 0.1.0 → 0.2.0

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/cli.js CHANGED
@@ -44,6 +44,38 @@ function parseFlag(args, prefix) {
44
44
  }
45
45
  return undefined;
46
46
  }
47
+ function printFuroDetail(r) {
48
+ const fa = r.furoAnalysis;
49
+ if (!fa || !fa.route) {
50
+ console.log(" [副露] なし");
51
+ return;
52
+ }
53
+ const winPctFuro = (fa.furoWinRate * 100).toFixed(1);
54
+ const ponPct = (fa.ponSuccessRate * 100).toFixed(0);
55
+ const se = fa.scoreEstimate;
56
+ const routeLabel = fa.route === "yakuhai" ? "役牌" : fa.route === "tanyao" ? "断么九" : fa.route === "honitsu" ? "混一色" : "清一色";
57
+ const shantenLabel = fa.postFuroShanten === 0 ? "聴牌" : `${fa.postFuroShanten}向聴`;
58
+ // スコア内訳(全ポン時)
59
+ let scoreDetail = "";
60
+ if (se) {
61
+ const bd = se.breakdown;
62
+ const parts = [];
63
+ if (bd.yakuhai > 0)
64
+ parts.push(`役牌${bd.yakuhai}`);
65
+ if (bd.tanyao > 0)
66
+ parts.push(`断么九${bd.tanyao}`);
67
+ if (bd.honitsu > 0)
68
+ parts.push(`混一色${bd.honitsu}`);
69
+ if (bd.chinitsu > 0)
70
+ parts.push(`清一色${bd.chinitsu}`);
71
+ if (bd.dora > 0)
72
+ parts.push(`ドラ${bd.dora}`);
73
+ if (bd.redDora > 0)
74
+ parts.push(`赤${bd.redDora}`);
75
+ scoreDetail = ` 推定${bd.totalHan}翻${se.fu}符=${se.estimatedPoints}点 (${parts.join(" ")})`;
76
+ }
77
+ console.log(` [副露] ${routeLabel}ルート 全ポン後${shantenLabel}(受入${fa.postFuroAccept}枚) ポン率${ponPct}% 和了率${winPctFuro}% 平均打点${Math.round(fa.furoAvgPoints)}点${scoreDetail}`);
78
+ }
47
79
  async function main() {
48
80
  // テーブルをファイルから読み込み(毎回25秒の生成を回避)
49
81
  if (!isInitialized()) {
@@ -181,28 +213,34 @@ async function main() {
181
213
  turnsLeft,
182
214
  numSims,
183
215
  });
216
+ // 副露分析込みの評価
217
+ const riichiTurn = riichiTurnStr ? parseInt(riichiTurnStr) : currentTurn;
218
+ const evalResults = evaluateDiscards(hand, mcResults, {
219
+ turn: currentTurn,
220
+ hasRiichiPlayer: hasRiichi,
221
+ riichiTurn: hasRiichi ? riichiTurn : undefined,
222
+ visibleTiles: effectiveRemaining,
223
+ // 副露分析パラメータ
224
+ context,
225
+ remaining: effectiveRemaining,
226
+ turnsLeft,
227
+ });
184
228
  if (hasRiichi) {
185
- // リーチ者ありの場合、防御EVも計算
186
- const riichiTurn = riichiTurnStr ? parseInt(riichiTurnStr) : currentTurn;
187
- const evalResults = evaluateDiscards(hand, mcResults, {
188
- turn: currentTurn,
189
- hasRiichiPlayer: true,
190
- riichiTurn,
191
- visibleTiles: effectiveRemaining, // TODO: 場に見えている牌の正確な計算
192
- });
193
- console.log("打牌候補 (評価値順):");
229
+ console.log("打牌候補 (総合EV順):");
194
230
  for (const r of evalResults) {
195
231
  const label = shantenLabel(r.shantenAfter);
196
- console.log(` 打${tileToString(r.discard).padEnd(3)}: ${label.padEnd(4)} 受入${String(r.acceptCount).padStart(3)}枚 攻撃EV ${Math.round(r.attackEV).toString().padStart(6)} 防御EV ${Math.round(r.defenseEV).toString().padStart(5)} 総合EV ${Math.round(r.totalEV).toString().padStart(6)}点`);
232
+ console.log(` 打${tileToString(r.discard).padEnd(3)}: ${label.padEnd(4)} 受入${String(r.acceptCount).padStart(3)}枚 門前EV ${Math.round(r.menzenEV).toString().padStart(6)} 副露EV ${Math.round(r.furoEV).toString().padStart(6)} 攻撃EV ${Math.round(r.attackEV).toString().padStart(6)} 防御EV ${Math.round(r.defenseEV).toString().padStart(5)} 総合EV ${Math.round(r.totalEV).toString().padStart(6)}`);
233
+ printFuroDetail(r);
197
234
  }
198
235
  }
199
236
  else {
200
- // リーチ者なし: MC結果をそのまま表示
201
- console.log("打牌候補 (EV順):");
202
- for (const r of mcResults) {
237
+ console.log("打牌候補 (総合EV順):");
238
+ for (const r of evalResults) {
203
239
  const label = shantenLabel(r.shantenAfter);
204
- const winPct = (r.winRate * 100).toFixed(1);
205
- console.log(` 打${tileToString(r.discard).padEnd(3)}: ${label.padEnd(4)} 受入${String(r.acceptCount).padStart(3)}枚 和了率${winPct.padStart(5)}% 平均打点${Math.round(r.avgPoints).toString().padStart(6)} EV ${Math.round(r.ev).toString().padStart(6)}点`);
240
+ const mc = mcResults.find((m) => m.discard === r.discard);
241
+ const winPct = mc ? (mc.winRate * 100).toFixed(1) : "0.0";
242
+ console.log(` 打${tileToString(r.discard).padEnd(3)}: ${label.padEnd(4)} 受入${String(r.acceptCount).padStart(3)}枚 和了率${winPct.padStart(5)}% 門前EV ${Math.round(r.menzenEV).toString().padStart(6)} 副露EV ${Math.round(r.furoEV).toString().padStart(6)} 攻撃EV ${Math.round(r.attackEV).toString().padStart(6)}`);
243
+ printFuroDetail(r);
206
244
  }
207
245
  }
208
246
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,7 +13,7 @@ export { decomposeHand } from "./scoring/decomposer.js";
13
13
  export { determineWaitType, determineWaitTypes } from "./scoring/wait-type.js";
14
14
  export { evaluateYaku } from "./scoring/yaku.js";
15
15
  export { calculateFu } from "./scoring/fu.js";
16
- export { calculateScore } from "./scoring/score-calculator.js";
16
+ export { calculateScore, calcBasicPoints, tsumoPoints } from "./scoring/score-calculator.js";
17
17
  export type { MentsuType, Mentsu, RegularDecomposition, ChiitoiDecomposition, HandDecomposition, WaitType, YakuResult, GameContext, ScoreResult } from "./scoring/types.js";
18
18
  export { calculateEV13, calculateEV14 } from "./ev/ev-calculator.js";
19
19
  export type { EVOptions, EVResult } from "./ev/types.js";
@@ -23,5 +23,9 @@ export type { MCOptions, MCResult } from "./mc/simulator.js";
23
23
  export { TENPAI_PROB_BY_TURN, AVG_DEAL_IN_LOSS, tileDanger, getTenpaiProb, getAvgDealInLoss } from "./models/danger.js";
24
24
  export { evaluateDiscards } from "./models/evaluation.js";
25
25
  export type { EvalOptions, EvalResult } from "./models/evaluation.js";
26
+ export { analyzeFuroBoost, calculateReducedShanten } from "./models/furo-boost.js";
27
+ export type { FuroTarget, FuroAnalysis, FuroBoostOptions } from "./models/furo-boost.js";
28
+ export { estimateFuroScore, countBySuit, getPrimarySuit } from "./models/furo-scoring.js";
29
+ export type { FuroYakuBreakdown, FuroScoreEstimate } from "./models/furo-scoring.js";
26
30
  export { WorkerClient } from "./worker-client.js";
27
31
  export type { WorkerClientOptions } from "./worker-client.js";
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ export { decomposeHand } from "./scoring/decomposer.js";
12
12
  export { determineWaitType, determineWaitTypes } from "./scoring/wait-type.js";
13
13
  export { evaluateYaku } from "./scoring/yaku.js";
14
14
  export { calculateFu } from "./scoring/fu.js";
15
- export { calculateScore } from "./scoring/score-calculator.js";
15
+ export { calculateScore, calcBasicPoints, tsumoPoints } from "./scoring/score-calculator.js";
16
16
  // EV
17
17
  export { calculateEV13, calculateEV14 } from "./ev/ev-calculator.js";
18
18
  // Init (統合初期化)
@@ -22,6 +22,8 @@ export { simulateDiscards } from "./mc/simulator.js";
22
22
  // Models
23
23
  export { TENPAI_PROB_BY_TURN, AVG_DEAL_IN_LOSS, tileDanger, getTenpaiProb, getAvgDealInLoss } from "./models/danger.js";
24
24
  export { evaluateDiscards } from "./models/evaluation.js";
25
+ export { analyzeFuroBoost, calculateReducedShanten } from "./models/furo-boost.js";
26
+ export { estimateFuroScore, countBySuit, getPrimarySuit } from "./models/furo-scoring.js";
25
27
  // Worker Client
26
28
  export { WorkerClient } from "./worker-client.js";
27
29
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC5N,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEtI,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAErI,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC9I,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEhG,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,KAAK;AACL,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGrE,eAAe;AACf,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,SAAS;AACT,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC5N,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEtI,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAErI,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC9I,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEhG,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG7F,KAAK;AACL,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGrE,eAAe;AACf,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,SAAS;AACT,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEnF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1F,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -5,6 +5,8 @@
5
5
  import type { TileId } from "../core/tile.js";
6
6
  import type { HandArray } from "../core/hand.js";
7
7
  import type { MCResult } from "../mc/simulator.js";
8
+ import type { GameContext } from "../scoring/types.js";
9
+ import { type FuroAnalysis } from "./furo-boost.js";
8
10
  export interface EvalOptions {
9
11
  turn: number;
10
12
  hasRiichiPlayer: boolean;
@@ -12,6 +14,9 @@ export interface EvalOptions {
12
14
  riichiPlayerDiscards?: TileId[] | null;
13
15
  visibleTiles?: HandArray;
14
16
  numOpponents?: number;
17
+ context?: GameContext;
18
+ remaining?: HandArray;
19
+ turnsLeft?: number;
15
20
  }
16
21
  export interface EvalResult {
17
22
  discard: TileId;
@@ -20,6 +25,9 @@ export interface EvalResult {
20
25
  attackEV: number;
21
26
  defenseEV: number;
22
27
  totalEV: number;
28
+ menzenEV: number;
29
+ furoEV: number;
30
+ furoAnalysis: FuroAnalysis | null;
23
31
  }
24
32
  /**
25
33
  * 評価式: 和了確率 × 平均打点 − 放銃確率 × 平均失点
@@ -1,4 +1,5 @@
1
1
  import { tileDanger, getTenpaiProb, getAvgDealInLoss } from "./danger.js";
2
+ import { analyzeFuroBoost } from "./furo-boost.js";
2
3
  /**
3
4
  * 評価式: 和了確率 × 平均打点 − 放銃確率 × 平均失点
4
5
  *
@@ -10,8 +11,24 @@ export function evaluateDiscards(hand, mcResults, options) {
10
11
  const results = [];
11
12
  const numOpponents = options.numOpponents ?? 3;
12
13
  for (const mc of mcResults) {
13
- // 攻撃EV = 和了確率 × 平均打点
14
- const attackEV = mc.winRate * mc.avgPoints;
14
+ // 門前EV = 和了確率 × 平均打点
15
+ const menzenEV = mc.winRate * mc.avgPoints;
16
+ // 副露分析(context があれば実行)
17
+ let furoAnalysis = null;
18
+ let furoEV = 0;
19
+ if (options.context && options.remaining && options.turnsLeft != null) {
20
+ const hand13 = [...hand];
21
+ hand13[mc.discard]--;
22
+ furoAnalysis = analyzeFuroBoost(hand13, {
23
+ context: options.context,
24
+ remaining: options.remaining,
25
+ turnsLeft: options.turnsLeft,
26
+ });
27
+ furoEV = furoAnalysis.furoEV;
28
+ }
29
+ // 攻撃EV = 門前EV + 副露EV × (1 - 門前和了率)
30
+ // 門前で和了できなかった場合に副露で和了するチャンスを加算
31
+ const attackEV = menzenEV + furoEV * (1 - mc.winRate);
15
32
  // 防御EV = 放銃確率 × 平均失点
16
33
  let defenseEV = 0;
17
34
  if (options.hasRiichiPlayer) {
@@ -37,6 +54,9 @@ export function evaluateDiscards(hand, mcResults, options) {
37
54
  attackEV,
38
55
  defenseEV,
39
56
  totalEV,
57
+ menzenEV,
58
+ furoEV,
59
+ furoAnalysis,
40
60
  });
41
61
  }
42
62
  // 総合EV降順
@@ -1 +1 @@
1
- {"version":3,"file":"evaluation.js","sourceRoot":"","sources":["../../src/models/evaluation.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAoB1E;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAe,EACf,SAAqB,EACrB,OAAoB;IAEpB,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;IAE/C,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,qBAAqB;QACrB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;QAE3C,qBAAqB;QACrB,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,gCAAgC;YAChC,MAAM,MAAM,GAAG,UAAU,CACvB,EAAE,CAAC,OAAO,EACV,OAAO,CAAC,oBAAoB,IAAI,IAAI,EACpC,OAAO,CAAC,YAAY,IAAI,EAAE,CAC3B,CAAC;YACF,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;YAC1D,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/C,4BAA4B;YAC5B,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,YAAY,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,UAAU,CACvB,EAAE,CAAC,OAAO,EACV,IAAI,EACJ,OAAO,CAAC,YAAY,IAAI,EAAE,CAC3B,CAAC;YACF,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;YACjD,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;QAC/C,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;QAErC,OAAO,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,YAAY,EAAE,EAAE,CAAC,YAAY;YAC7B,WAAW,EAAE,EAAE,CAAC,WAAW;YAC3B,QAAQ;YACR,SAAS;YACT,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,SAAS;IACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAE9C,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"evaluation.js","sourceRoot":"","sources":["../../src/models/evaluation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * 副露ブーストモデル v3
3
+ *
4
+ * MCシミュレーション(門前)のベースラインに対し、副露ルートのEVを推定する。
5
+ * v3改善:
6
+ * 1. 段階的ポン評価(部分集合列挙)— 1ポンだけでも中間EVを反映
7
+ * 2. チー加速 — ポン後の塔子を上家チーで完成する効果を反映
8
+ * 3. 孤立牌ドラ補正 — ポン過程で切る牌のドラを打点から除外
9
+ */
10
+ import type { TileId } from "../core/tile.js";
11
+ import type { HandArray } from "../core/hand.js";
12
+ import type { GameContext } from "../scoring/types.js";
13
+ import { type FuroScoreEstimate } from "./furo-scoring.js";
14
+ export interface FuroTarget {
15
+ type: "pon";
16
+ tile: TileId;
17
+ adjustedProb: number;
18
+ }
19
+ export interface FuroAnalysis {
20
+ route: "yakuhai" | "tanyao" | "honitsu" | "chinitsu" | null;
21
+ targets: FuroTarget[];
22
+ furoWinRate: number;
23
+ furoEV: number;
24
+ furoAvgPoints: number;
25
+ ponSuccessRate: number;
26
+ postFuroShanten: number;
27
+ postFuroAccept: number;
28
+ scoreEstimate: FuroScoreEstimate | null;
29
+ }
30
+ export interface FuroBoostOptions {
31
+ context: GameContext;
32
+ remaining: HandArray;
33
+ turnsLeft: number;
34
+ }
35
+ /**
36
+ * 打牌後の13枚手牌に対して副露ブーストを分析する
37
+ */
38
+ export declare function analyzeFuroBoost(hand13: HandArray, options: FuroBoostOptions): FuroAnalysis;
39
+ /**
40
+ * ポン後の縮小手牌のシャンテン数を計算する
41
+ *
42
+ * 通常シャンテン計算の式: 8 - 2*M - min(P, 4-M) [-1 if jantou]
43
+ * 縮小版: 2*neededMentsu - 2*M - min(P, neededMentsu-M) [-1 if jantou]
44
+ */
45
+ export declare function calculateReducedShanten(reducedHand: HandArray, neededMentsu: number): number;
@@ -0,0 +1,522 @@
1
+ import { NUM_TILE_TYPES, NUM_TILE_TYPES_WITH_RED, JIHAI_OFFSET, SUIT_NUM, MANZU_OFFSET, PINZU_OFFSET, SOUZU_OFFSET, } from "../core/constants.js";
2
+ import { toNormalTile, getSuitIndex, isRedTile, nextTile } from "../core/tile.js";
3
+ import { splitToSuits, createHand } from "../core/hand.js";
4
+ import { calculateShanten } from "../shanten/shanten-calculator.js";
5
+ import { getSuitTable, getHonorTable, toIndex, lookupTable } from "../shanten/lookup-table.js";
6
+ import { estimateFuroScore, countBySuit, getPrimarySuit, } from "./furo-scoring.js";
7
+ // ─── ポン成功確率テーブル ───
8
+ /** ポンの1巡あたりベース確率(他家3人のうち誰かが切る確率) */
9
+ const PON_BASE_RATE = {
10
+ honor_raw: 0.045, // 生牌字牌(1巡あたり)
11
+ honor_1cut: 0.025, // 1枚切れ字牌
12
+ terminal: 0.020, // 端牌 (1, 9)
13
+ middle: 0.012, // 中張牌 (2-8)
14
+ };
15
+ // ─── 部分集合列挙ヘルパー ───
16
+ /**
17
+ * ポンターゲットの全非空部分集合を列挙する
18
+ * 最大3ターゲット → 最大7部分集合
19
+ */
20
+ function* enumeratePonSubsets(targets) {
21
+ const n = targets.length;
22
+ for (let mask = 1; mask < (1 << n); mask++) {
23
+ const subset = [];
24
+ for (let i = 0; i < n; i++) {
25
+ if (mask & (1 << i)) {
26
+ subset.push(targets[i]);
27
+ }
28
+ }
29
+ yield subset;
30
+ }
31
+ }
32
+ /**
33
+ * 部分集合Sが「ちょうどSのポンが成功し、それ以外は失敗する」確率
34
+ * P(exactly S) = Π p_i (i∈S) × Π (1-p_j) (j∉S)
35
+ */
36
+ function subsetExactProbability(subset, all) {
37
+ const subsetTiles = new Set(subset.map(t => t.tile));
38
+ let prob = 1.0;
39
+ for (const target of all) {
40
+ if (subsetTiles.has(target.tile)) {
41
+ prob *= target.adjustedProb;
42
+ }
43
+ else {
44
+ prob *= (1 - target.adjustedProb);
45
+ }
46
+ }
47
+ return prob;
48
+ }
49
+ // ─── メイン関数 ───
50
+ /**
51
+ * 打牌後の13枚手牌に対して副露ブーストを分析する
52
+ */
53
+ export function analyzeFuroBoost(hand13, options) {
54
+ const nullResult = {
55
+ route: null,
56
+ targets: [],
57
+ ponSuccessRate: 0,
58
+ postFuroShanten: -1,
59
+ postFuroAccept: 0,
60
+ furoWinRate: 0,
61
+ furoAvgPoints: 0,
62
+ furoEV: 0,
63
+ scoreEstimate: null,
64
+ };
65
+ // 制約: シャンテン数チェック
66
+ const shanten = calculateShanten(hand13);
67
+ // 聴牌手(shanten === 0): リーチの方が有利なのでブースト不適用
68
+ if (shanten <= 0)
69
+ return nullResult;
70
+ // 3向聴以上: 推定精度が低いのでブースト不適用
71
+ if (shanten >= 3)
72
+ return nullResult;
73
+ const { context, remaining, turnsLeft } = options;
74
+ // 副露ルート判定
75
+ const route = detectFuroRoute(hand13, shanten, context);
76
+ if (!route)
77
+ return nullResult;
78
+ // ポンターゲット検出(役牌ポンのみ、またはルート要件に合うポン)
79
+ const ponTargets = detectPonTargets(hand13, remaining, route, turnsLeft);
80
+ if (ponTargets.length === 0)
81
+ return nullResult;
82
+ // ─── 部分集合列挙による加重EV計算 ───
83
+ let totalFuroWinRate = 0;
84
+ let totalFuroEV = 0;
85
+ // 全ポン時の値(後方互換用)
86
+ let allPonShanten = -1;
87
+ let allPonAccept = 0;
88
+ let allPonScoreEstimate = null;
89
+ let allPonSuccessRate = 1.0;
90
+ for (const target of ponTargets) {
91
+ allPonSuccessRate *= target.adjustedProb;
92
+ }
93
+ for (const subset of enumeratePonSubsets(ponTargets)) {
94
+ const isAllPon = subset.length === ponTargets.length;
95
+ // P(ちょうどこの部分集合)
96
+ const probS = subsetExactProbability(subset, ponTargets);
97
+ if (probS < 1e-6)
98
+ continue;
99
+ // 縮小手牌を作成
100
+ const reducedHand = createHand();
101
+ for (let i = 0; i < hand13.length; i++) {
102
+ reducedHand[i] = hand13[i];
103
+ }
104
+ for (const target of subset) {
105
+ reducedHand[target.tile] -= 2;
106
+ }
107
+ const numPons = subset.length;
108
+ const neededMentsu = 4 - numPons;
109
+ // 縮小手牌のシャンテン数
110
+ const shantenS = calculateReducedShanten(reducedHand, neededMentsu);
111
+ // remaining からポンターゲット分を調整
112
+ const adjustedRemaining = [...remaining];
113
+ for (const target of subset) {
114
+ if (adjustedRemaining[target.tile] > 0) {
115
+ adjustedRemaining[target.tile]--;
116
+ }
117
+ }
118
+ // 受入枚数
119
+ const acceptS = countReducedAcceptance(reducedHand, adjustedRemaining, neededMentsu);
120
+ // チーレート(改善2)
121
+ const totalRemaining = adjustedRemaining.reduce((s, v) => s + v, 0);
122
+ const chiRate = computeChiRate(reducedHand, adjustedRemaining, totalRemaining);
123
+ // 副露和了率(ponSuccessRate=1.0: 確率は外側で掛けるため)
124
+ const winRateS = estimateFuroWinRate(shantenS, acceptS, totalRemaining, turnsLeft, 1.0, chiRate);
125
+ // デッドタイル特定(改善3)
126
+ const deadTiles = findDeadTiles(reducedHand, neededMentsu, numPons, context);
127
+ // 推定打点
128
+ const scoreS = estimateFuroScore(hand13, context, {
129
+ type: route.type,
130
+ yakuhaiTiles: route.yakuhaiTiles,
131
+ primarySuit: route.primarySuit,
132
+ }, deadTiles);
133
+ const evS = winRateS * scoreS.estimatedPoints;
134
+ totalFuroWinRate += probS * winRateS;
135
+ totalFuroEV += probS * evS;
136
+ // 全ポン時の値を保存
137
+ if (isAllPon) {
138
+ allPonShanten = shantenS;
139
+ allPonAccept = acceptS;
140
+ allPonScoreEstimate = scoreS;
141
+ }
142
+ }
143
+ const furoAvgPoints = totalFuroWinRate > 0 ? totalFuroEV / totalFuroWinRate : 0;
144
+ return {
145
+ route: route.type,
146
+ targets: ponTargets,
147
+ ponSuccessRate: allPonSuccessRate,
148
+ postFuroShanten: allPonShanten,
149
+ postFuroAccept: allPonAccept,
150
+ furoWinRate: totalFuroWinRate,
151
+ furoAvgPoints,
152
+ furoEV: totalFuroEV,
153
+ scoreEstimate: allPonScoreEstimate,
154
+ };
155
+ }
156
+ // ─── 縮小手牌のシャンテン数計算 ───
157
+ /**
158
+ * ポン後の縮小手牌のシャンテン数を計算する
159
+ *
160
+ * 通常シャンテン計算の式: 8 - 2*M - min(P, 4-M) [-1 if jantou]
161
+ * 縮小版: 2*neededMentsu - 2*M - min(P, neededMentsu-M) [-1 if jantou]
162
+ */
163
+ export function calculateReducedShanten(reducedHand, neededMentsu) {
164
+ const suits = splitToSuits(reducedHand);
165
+ const sTable = getSuitTable();
166
+ const hTable = getHonorTable();
167
+ const indices = [
168
+ toIndex(suits[0]),
169
+ toIndex(suits[1]),
170
+ toIndex(suits[2]),
171
+ toIndex(suits[3]),
172
+ ];
173
+ const tables = [sTable, sTable, sTable, hTable];
174
+ let best = 2 * neededMentsu; // 最悪ケース
175
+ // 面子配分の全パターン列挙
176
+ for (let m0 = 0; m0 <= neededMentsu; m0++) {
177
+ for (let m1 = 0; m0 + m1 <= neededMentsu; m1++) {
178
+ for (let m2 = 0; m0 + m1 + m2 <= neededMentsu; m2++) {
179
+ for (let m3 = 0; m0 + m1 + m2 + m3 <= neededMentsu; m3++) {
180
+ const M = m0 + m1 + m2 + m3;
181
+ const ms = [m0, m1, m2, m3];
182
+ const n0 = lookupTable(tables[0], indices[0], m0, false);
183
+ const n1 = lookupTable(tables[1], indices[1], m1, false);
184
+ const n2 = lookupTable(tables[2], indices[2], m2, false);
185
+ const n3 = lookupTable(tables[3], indices[3], m3, false);
186
+ if (n0 < 0 || n1 < 0 || n2 < 0 || n3 < 0)
187
+ continue;
188
+ // 雀頭なし
189
+ const P = n0 + n1 + n2 + n3;
190
+ const remain = neededMentsu - M;
191
+ const s1 = 2 * neededMentsu - 2 * M - Math.min(P, remain);
192
+ if (s1 < best)
193
+ best = s1;
194
+ // 雀頭あり
195
+ const noJ = [n0, n1, n2, n3];
196
+ for (let k = 0; k < 4; k++) {
197
+ const wJ = lookupTable(tables[k], indices[k], ms[k], true);
198
+ if (wJ < 0)
199
+ continue;
200
+ const P2 = wJ + P - noJ[k];
201
+ const s2 = 2 * neededMentsu - 2 * M - Math.min(P2, remain) - 1;
202
+ if (s2 < best)
203
+ best = s2;
204
+ }
205
+ }
206
+ }
207
+ }
208
+ }
209
+ return best;
210
+ }
211
+ // ─── 縮小手牌の受入枚数計算 ───
212
+ /**
213
+ * 縮小手牌に対して、シャンテン数を下げる牌の枚数を数える
214
+ */
215
+ function countReducedAcceptance(reducedHand, remaining, neededMentsu) {
216
+ const currentShanten = calculateReducedShanten(reducedHand, neededMentsu);
217
+ let count = 0;
218
+ for (let i = 0; i < NUM_TILE_TYPES_WITH_RED; i++) {
219
+ if (remaining[i] <= 0)
220
+ continue;
221
+ reducedHand[i]++;
222
+ const newShanten = calculateReducedShanten(reducedHand, neededMentsu);
223
+ reducedHand[i]--;
224
+ if (newShanten < currentShanten) {
225
+ count += remaining[i];
226
+ }
227
+ }
228
+ return count;
229
+ }
230
+ // ─── チーレート計算(改善2)───
231
+ /**
232
+ * 縮小手牌中の数牌塔子について、上家からチーで完成する効果を推定する
233
+ *
234
+ * 上家1人からのチーなので、ツモ確率の1/3として扱う
235
+ */
236
+ function computeChiRate(reducedHand, remaining, totalRemaining) {
237
+ if (totalRemaining <= 0)
238
+ return 0;
239
+ const chiMissingTiles = new Set();
240
+ // 各数牌色の塔子を検出
241
+ for (const offset of [MANZU_OFFSET, PINZU_OFFSET, SOUZU_OFFSET]) {
242
+ for (let pos = 0; pos < SUIT_NUM; pos++) {
243
+ const tileId = offset + pos;
244
+ if (reducedHand[tileId] <= 0)
245
+ continue;
246
+ // 両面: hand[pos] > 0 && hand[pos+1] > 0
247
+ if (pos + 1 < SUIT_NUM && reducedHand[offset + pos + 1] > 0) {
248
+ // 待ち: pos-1, pos+2
249
+ if (pos - 1 >= 0)
250
+ chiMissingTiles.add(offset + pos - 1);
251
+ if (pos + 2 < SUIT_NUM)
252
+ chiMissingTiles.add(offset + pos + 2);
253
+ }
254
+ // 嵌張: hand[pos] > 0 && hand[pos+2] > 0
255
+ if (pos + 2 < SUIT_NUM && reducedHand[offset + pos + 2] > 0) {
256
+ chiMissingTiles.add(offset + pos + 1);
257
+ }
258
+ }
259
+ }
260
+ // 待ち牌の残り枚数を合算
261
+ let chiTargetCount = 0;
262
+ for (const tile of chiMissingTiles) {
263
+ chiTargetCount += remaining[tile];
264
+ }
265
+ // 上家1人のみ(3人中1人)
266
+ return chiTargetCount / totalRemaining / 3;
267
+ }
268
+ // ─── デッドタイル特定(改善3)───
269
+ /**
270
+ * ポン過程で切る牌を特定する
271
+ *
272
+ * ポン |S| 回後の縮小手牌から、プレイヤーが切るであろう浮き牌を推定する。
273
+ * ドラでない牌を優先的に切る(=ドラは手に残す)想定。
274
+ */
275
+ function findDeadTiles(reducedHand, neededMentsu, numDeadTiles, context) {
276
+ if (numDeadTiles <= 0)
277
+ return [];
278
+ const currentShanten = calculateReducedShanten(reducedHand, neededMentsu);
279
+ // 浮き牌候補: 1枚抜いてもシャンテンが変わらない牌
280
+ const candidates = [];
281
+ for (let i = 0; i < NUM_TILE_TYPES_WITH_RED; i++) {
282
+ if (reducedHand[i] <= 0)
283
+ continue;
284
+ reducedHand[i]--;
285
+ if (calculateReducedShanten(reducedHand, neededMentsu) <= currentShanten) {
286
+ candidates.push(i);
287
+ }
288
+ reducedHand[i]++;
289
+ }
290
+ // プレイヤーはドラでない牌を優先的に切る
291
+ const doraTiles = context.doraIndicators.map(d => nextTile(d));
292
+ candidates.sort((a, b) => tileDoraValue(a, doraTiles, context) - tileDoraValue(b, doraTiles, context));
293
+ return candidates.slice(0, numDeadTiles);
294
+ }
295
+ /**
296
+ * 牌のドラ価値を返す(ソート用)
297
+ * ドラでも赤ドラでもない = 0、ドラ = 1、赤ドラ = 1、両方 = 2
298
+ */
299
+ function tileDoraValue(tile, doraTiles, context) {
300
+ let value = 0;
301
+ const normalId = toNormalTile(tile);
302
+ for (const doraTile of doraTiles) {
303
+ if (normalId === toNormalTile(doraTile)) {
304
+ value += 1;
305
+ break;
306
+ }
307
+ }
308
+ if (isRedTile(tile)) {
309
+ value += 1;
310
+ }
311
+ return value;
312
+ }
313
+ // ─── 副露和了率推定(menzenWinRate 非依存)───
314
+ /**
315
+ * ポン後の縮小手牌の品質に基づいて副露和了率を推定する
316
+ *
317
+ * ポアソン近似を使用:
318
+ * λ = turnsLeft × (acceptCount / totalRemaining)
319
+ * P(complete) = 1 - P(Poisson(λ) < neededDraws)
320
+ * neededDraws = postFuroShanten + 1(シャンテン進行 + 最終和了ツモ)
321
+ *
322
+ * ただし各段階で受入幅が狭まるため、段階ごとに異なる λ を使用する。
323
+ */
324
+ function estimateFuroWinRate(postFuroShanten, postFuroAcceptCount, totalRemaining, turnsLeft, ponSuccessRate, chiRate = 0) {
325
+ if (postFuroShanten < 0)
326
+ return ponSuccessRate;
327
+ const drawRate = postFuroAcceptCount / Math.max(totalRemaining, 1);
328
+ const effectiveDrawRate = drawRate + chiRate;
329
+ if (postFuroShanten === 0) {
330
+ // 聴牌: 和了牌を引くだけ
331
+ const lambda = turnsLeft * effectiveDrawRate;
332
+ const completionProb = 1 - Math.exp(-lambda);
333
+ return ponSuccessRate * completionProb;
334
+ }
335
+ if (postFuroShanten === 1) {
336
+ // 1向聴: 聴牌進行 + 和了
337
+ // 前半で聴牌進行、後半で和了牌ツモ
338
+ const advanceTurns = turnsLeft * 0.6;
339
+ const advanceLambda = advanceTurns * effectiveDrawRate;
340
+ const advanceProb = 1 - Math.exp(-advanceLambda);
341
+ // 聴牌後の待ちは1向聴の受入枚数に関わらず平均的な聴牌待ち幅を使用
342
+ // 一般的な聴牌の平均待ち枚数は約5枚
343
+ const AVG_TENPAI_WAIT = 5;
344
+ const tenpaiDrawRate = AVG_TENPAI_WAIT / Math.max(totalRemaining, 1);
345
+ const effectiveTenpaiRate = tenpaiDrawRate + chiRate;
346
+ const winTurns = turnsLeft * 0.4;
347
+ const winLambda = winTurns * effectiveTenpaiRate;
348
+ const winProb = 1 - Math.exp(-winLambda);
349
+ return ponSuccessRate * advanceProb * winProb;
350
+ }
351
+ // 2向聴以上: 非常に低い確率
352
+ const stepsNeeded = postFuroShanten + 1;
353
+ const lambda = turnsLeft * effectiveDrawRate;
354
+ const completionProb = 1 - poissonCDF(lambda, stepsNeeded - 1);
355
+ // 各段階で受入が狭まるため保守的に補正
356
+ return ponSuccessRate * completionProb * 0.3;
357
+ }
358
+ /**
359
+ * ポアソン分布の累積分布関数 P(X <= k)
360
+ */
361
+ function poissonCDF(lambda, k) {
362
+ if (lambda <= 0)
363
+ return 1;
364
+ let sum = 0;
365
+ let term = Math.exp(-lambda);
366
+ sum += term;
367
+ for (let i = 1; i <= k; i++) {
368
+ term *= lambda / i;
369
+ sum += term;
370
+ }
371
+ return Math.min(sum, 1);
372
+ }
373
+ /**
374
+ * 手牌から副露ルートを判定する
375
+ * 複数ルートが該当する場合は最も有利なルートを返す
376
+ */
377
+ function detectFuroRoute(hand13, shanten, context) {
378
+ const routes = [];
379
+ // 役牌ポンチェック
380
+ const yakuhaiTiles = detectYakuhaiPairs(hand13, context);
381
+ // ホンイツ/チンイツチェック
382
+ const primarySuit = getPrimarySuit(hand13);
383
+ const [manzu, pinzu, souzu, jihai] = countBySuit(hand13);
384
+ const suitCounts = [manzu, pinzu, souzu];
385
+ const primaryCount = suitCounts[primarySuit];
386
+ const totalCount = manzu + pinzu + souzu + jihai;
387
+ const offSuitCount = totalCount - primaryCount - jihai;
388
+ // チンイツ判定: 字牌なし + 他色が shanten+1 以下
389
+ if (jihai === 0 && offSuitCount <= shanten + 1) {
390
+ routes.push({
391
+ type: "chinitsu",
392
+ yakuhaiTiles: [],
393
+ primarySuit,
394
+ });
395
+ }
396
+ // ホンイツ判定: 主色+字牌以外が shanten+1 以下
397
+ if (offSuitCount <= shanten + 1) {
398
+ routes.push({
399
+ type: "honitsu",
400
+ yakuhaiTiles: yakuhaiTiles,
401
+ primarySuit,
402
+ });
403
+ }
404
+ // 役牌ポン判定
405
+ if (yakuhaiTiles.length > 0) {
406
+ routes.push({
407
+ type: "yakuhai",
408
+ yakuhaiTiles,
409
+ });
410
+ }
411
+ // タンヤオ判定: 么九牌が shanten+1 以下
412
+ const yaochuCount = countYaochu(hand13);
413
+ if (yaochuCount <= shanten + 1) {
414
+ routes.push({
415
+ type: "tanyao",
416
+ yakuhaiTiles: [],
417
+ });
418
+ }
419
+ if (routes.length === 0)
420
+ return null;
421
+ // 最も有利なルートを選択(チンイツ > ホンイツ > 役牌 > タンヤオ)
422
+ return routes[0];
423
+ }
424
+ /**
425
+ * 手牌中の役牌対子を検出する
426
+ */
427
+ function detectYakuhaiPairs(hand13, context) {
428
+ const yakuhaiTiles = [];
429
+ // 三元牌: 白(31), 發(32), 中(33)
430
+ for (let i = 31; i <= 33; i++) {
431
+ if (hand13[i] >= 2) {
432
+ yakuhaiTiles.push(i);
433
+ }
434
+ }
435
+ // 場風
436
+ if (hand13[context.roundWind] >= 2 && !yakuhaiTiles.includes(context.roundWind)) {
437
+ yakuhaiTiles.push(context.roundWind);
438
+ }
439
+ // 自風
440
+ if (hand13[context.seatWind] >= 2 &&
441
+ !yakuhaiTiles.includes(context.seatWind)) {
442
+ yakuhaiTiles.push(context.seatWind);
443
+ }
444
+ return yakuhaiTiles;
445
+ }
446
+ /**
447
+ * 手牌中の么九牌枚数をカウントする
448
+ */
449
+ function countYaochu(hand13) {
450
+ let count = 0;
451
+ for (const offset of [MANZU_OFFSET, PINZU_OFFSET, SOUZU_OFFSET]) {
452
+ count += hand13[offset]; // 1
453
+ count += hand13[offset + 8]; // 9
454
+ }
455
+ for (let i = JIHAI_OFFSET; i < JIHAI_OFFSET + 7; i++) {
456
+ count += hand13[i];
457
+ }
458
+ return count;
459
+ }
460
+ // ─── ポンターゲット検出 ───
461
+ function detectPonTargets(hand13, remaining, route, turnsLeft) {
462
+ const targets = [];
463
+ for (let i = 0; i < NUM_TILE_TYPES; i++) {
464
+ if (hand13[i] < 2)
465
+ continue;
466
+ if (remaining[i] <= 0)
467
+ continue;
468
+ // ルートに合致するターゲットのみ
469
+ if (!isTileValidForRoute(i, route))
470
+ continue;
471
+ // 残り巡数内にポンが成功する確率
472
+ const perTurnRate = getPonPerTurnRate(i, remaining);
473
+ // P(少なくとも1回出る) = 1 - (1 - perTurnRate)^turnsLeft
474
+ const adjustedProb = 1 - Math.pow(1 - perTurnRate, turnsLeft);
475
+ targets.push({
476
+ type: "pon",
477
+ tile: i,
478
+ adjustedProb,
479
+ });
480
+ }
481
+ return targets;
482
+ }
483
+ /**
484
+ * ポンの1巡あたり確率を取得する(残り枚数でスケーリング)
485
+ */
486
+ function getPonPerTurnRate(tile, remaining) {
487
+ let baseRate;
488
+ if (tile >= JIHAI_OFFSET) {
489
+ baseRate = remaining[tile] >= 2 ? PON_BASE_RATE.honor_raw : PON_BASE_RATE.honor_1cut;
490
+ }
491
+ else {
492
+ const num = (tile % SUIT_NUM) + 1;
493
+ baseRate = (num === 1 || num === 9) ? PON_BASE_RATE.terminal : PON_BASE_RATE.middle;
494
+ }
495
+ // 残り枚数でスケーリング(remaining[tile] / 2 が期待比率)
496
+ return baseRate * (remaining[tile] / 2);
497
+ }
498
+ /**
499
+ * 牌が副露ルートに適合するか判定する
500
+ */
501
+ function isTileValidForRoute(tile, route) {
502
+ switch (route.type) {
503
+ case "yakuhai":
504
+ // 役牌ルート: 役牌対子のみがポンターゲット
505
+ return route.yakuhaiTiles.includes(tile);
506
+ case "tanyao": {
507
+ if (tile >= JIHAI_OFFSET)
508
+ return false;
509
+ const num = (tile % SUIT_NUM) + 1;
510
+ return num >= 2 && num <= 8;
511
+ }
512
+ case "honitsu": {
513
+ const suitIdx = getSuitIndex(tile);
514
+ return suitIdx === route.primarySuit || suitIdx === 3;
515
+ }
516
+ case "chinitsu":
517
+ return getSuitIndex(tile) === route.primarySuit;
518
+ default:
519
+ return false;
520
+ }
521
+ }
522
+ //# sourceMappingURL=furo-boost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"furo-boost.js","sourceRoot":"","sources":["../../src/models/furo-boost.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * 副露ルートの推定打点計算
3
+ * フル面子分解は行わず、翻数カウント + 固定符(30) で推定する
4
+ */
5
+ import type { TileId } from "../core/tile.js";
6
+ import type { HandArray } from "../core/hand.js";
7
+ import type { GameContext } from "../scoring/types.js";
8
+ export interface FuroYakuBreakdown {
9
+ yakuhai: number;
10
+ tanyao: number;
11
+ honitsu: number;
12
+ chinitsu: number;
13
+ dora: number;
14
+ redDora: number;
15
+ totalHan: number;
16
+ }
17
+ export interface FuroScoreEstimate {
18
+ breakdown: FuroYakuBreakdown;
19
+ fu: number;
20
+ estimatedPoints: number;
21
+ }
22
+ /**
23
+ * 副露ルートの推定打点を計算する
24
+ *
25
+ * @param hand13 打牌後の13枚手牌
26
+ * @param context ゲームコンテキスト
27
+ * @param route 副露ルート情報
28
+ * @returns 推定打点
29
+ */
30
+ export declare function estimateFuroScore(hand13: HandArray, context: GameContext, route: {
31
+ type: "yakuhai" | "tanyao" | "honitsu" | "chinitsu";
32
+ yakuhaiTiles: TileId[];
33
+ primarySuit?: number;
34
+ }, deadTiles?: TileId[]): FuroScoreEstimate;
35
+ /**
36
+ * 手牌の色別枚数を集計する
37
+ * @returns [manzu, pinzu, souzu, jihai] の枚数
38
+ */
39
+ export declare function countBySuit(hand13: HandArray): [number, number, number, number];
40
+ /**
41
+ * 主色(最も枚数が多い数牌の色)を返す
42
+ * @returns 色インデックス (0=萬子, 1=筒子, 2=索子)
43
+ */
44
+ export declare function getPrimarySuit(hand13: HandArray): number;
@@ -0,0 +1,141 @@
1
+ import { toNormalTile, nextTile, isRedTile, getSuitIndex } from "../core/tile.js";
2
+ import { calcBasicPoints, tsumoPoints } from "../scoring/score-calculator.js";
3
+ /**
4
+ * 副露ルートの推定打点を計算する
5
+ *
6
+ * @param hand13 打牌後の13枚手牌
7
+ * @param context ゲームコンテキスト
8
+ * @param route 副露ルート情報
9
+ * @returns 推定打点
10
+ */
11
+ export function estimateFuroScore(hand13, context, route, deadTiles) {
12
+ let yakuhai = 0;
13
+ let tanyao = 0;
14
+ let honitsu = 0;
15
+ let chinitsu = 0;
16
+ // 役牌ポンの翻数
17
+ for (const tile of route.yakuhaiTiles) {
18
+ yakuhai += 1;
19
+ // 連風牌チェック(自風 === 場風)
20
+ if (tile === context.seatWind && tile === context.roundWind) {
21
+ yakuhai += 1;
22
+ }
23
+ }
24
+ // タンヤオ
25
+ if (route.type === "tanyao") {
26
+ tanyao = 1;
27
+ }
28
+ // ホンイツ(鳴き2翻)
29
+ if (route.type === "honitsu") {
30
+ honitsu = 2;
31
+ }
32
+ // チンイツ(鳴き5翻)
33
+ if (route.type === "chinitsu") {
34
+ chinitsu = 5;
35
+ }
36
+ // ドラカウント(副露ルートで残る牌のみ)
37
+ const doraTiles = context.doraIndicators.map((d) => nextTile(d));
38
+ let dora = 0;
39
+ let redDora = 0;
40
+ for (let i = 0; i < hand13.length; i++) {
41
+ if (hand13[i] === 0)
42
+ continue;
43
+ // ホンイツ/チンイツルートでは、主色+字牌以外の牌はカウントしない
44
+ if (route.type === "honitsu" || route.type === "chinitsu") {
45
+ const suitIdx = getSuitIndex(i);
46
+ if (suitIdx !== route.primarySuit && suitIdx !== 3) {
47
+ continue;
48
+ }
49
+ // チンイツでは字牌もカウントしない
50
+ if (route.type === "chinitsu" && suitIdx === 3) {
51
+ continue;
52
+ }
53
+ }
54
+ const normalId = toNormalTile(i);
55
+ // ドラ枚数
56
+ for (const doraTile of doraTiles) {
57
+ if (normalId === toNormalTile(doraTile)) {
58
+ dora += hand13[i];
59
+ }
60
+ }
61
+ // 赤ドラ
62
+ if (isRedTile(i)) {
63
+ redDora += hand13[i];
64
+ }
65
+ }
66
+ // デッドタイル(ポン過程で切る牌)のドラ/赤ドラを減算
67
+ if (deadTiles) {
68
+ for (const dt of deadTiles) {
69
+ const normalDt = toNormalTile(dt);
70
+ // ドラ判定
71
+ for (const doraTile of doraTiles) {
72
+ if (normalDt === toNormalTile(doraTile)) {
73
+ dora = Math.max(0, dora - 1);
74
+ break;
75
+ }
76
+ }
77
+ // 赤ドラ判定
78
+ if (isRedTile(dt)) {
79
+ redDora = Math.max(0, redDora - 1);
80
+ }
81
+ }
82
+ }
83
+ const totalHan = yakuhai + tanyao + honitsu + chinitsu + dora + redDora;
84
+ // 翻が0なら点数なし
85
+ if (totalHan === 0) {
86
+ return {
87
+ breakdown: { yakuhai, tanyao, honitsu, chinitsu, dora, redDora, totalHan },
88
+ fu: 30,
89
+ estimatedPoints: 0,
90
+ };
91
+ }
92
+ const fu = 30;
93
+ const isDealer = context.seatWind === 27; // 東 = 親
94
+ const basicPoints = calcBasicPoints(totalHan, fu);
95
+ const estimatedPoints = tsumoPoints(basicPoints, isDealer);
96
+ return {
97
+ breakdown: { yakuhai, tanyao, honitsu, chinitsu, dora, redDora, totalHan },
98
+ fu,
99
+ estimatedPoints,
100
+ };
101
+ }
102
+ /**
103
+ * 手牌の色別枚数を集計する
104
+ * @returns [manzu, pinzu, souzu, jihai] の枚数
105
+ */
106
+ export function countBySuit(hand13) {
107
+ let manzu = 0, pinzu = 0, souzu = 0, jihai = 0;
108
+ for (let i = 0; i < hand13.length; i++) {
109
+ if (hand13[i] === 0)
110
+ continue;
111
+ const suitIdx = getSuitIndex(i);
112
+ switch (suitIdx) {
113
+ case 0:
114
+ manzu += hand13[i];
115
+ break;
116
+ case 1:
117
+ pinzu += hand13[i];
118
+ break;
119
+ case 2:
120
+ souzu += hand13[i];
121
+ break;
122
+ case 3:
123
+ jihai += hand13[i];
124
+ break;
125
+ }
126
+ }
127
+ return [manzu, pinzu, souzu, jihai];
128
+ }
129
+ /**
130
+ * 主色(最も枚数が多い数牌の色)を返す
131
+ * @returns 色インデックス (0=萬子, 1=筒子, 2=索子)
132
+ */
133
+ export function getPrimarySuit(hand13) {
134
+ const [manzu, pinzu, souzu] = countBySuit(hand13);
135
+ if (manzu >= pinzu && manzu >= souzu)
136
+ return 0;
137
+ if (pinzu >= souzu)
138
+ return 1;
139
+ return 2;
140
+ }
141
+ //# sourceMappingURL=furo-scoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"furo-scoring.js","sourceRoot":"","sources":["../../src/models/furo-scoring.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,17 @@
1
1
  import { HandArray } from "../core/hand.js";
2
2
  import { TileId } from "../core/tile.js";
3
3
  import type { GameContext, ScoreResult } from "./types.js";
4
+ /**
5
+ * ツモ和了の点数を基本点から計算する
6
+ * @param basicPoints 基本点
7
+ * @param isDealer 親かどうか
8
+ * @returns 合計獲得点数
9
+ */
10
+ export declare function tsumoPoints(basicPoints: number, isDealer: boolean): number;
11
+ /**
12
+ * 翻と符から基本点を計算する
13
+ */
14
+ export declare function calcBasicPoints(han: number, fu: number): number;
4
15
  /**
5
16
  * 手牌と和了牌から得点を計算する
6
17
  * @param hand 14枚の和了形
@@ -10,7 +10,7 @@ import { calculateFu } from "./fu.js";
10
10
  * @param isDealer 親かどうか
11
11
  * @returns 合計獲得点数
12
12
  */
13
- function tsumoPoints(basicPoints, isDealer) {
13
+ export function tsumoPoints(basicPoints, isDealer) {
14
14
  if (isDealer) {
15
15
  // 親ツモ: 子3人から各 ceil(basicPoints*2/100)*100
16
16
  const each = Math.ceil((basicPoints * 2) / 100) * 100;
@@ -24,7 +24,7 @@ function tsumoPoints(basicPoints, isDealer) {
24
24
  /**
25
25
  * 翻と符から基本点を計算する
26
26
  */
27
- function calcBasicPoints(han, fu) {
27
+ export function calcBasicPoints(han, fu) {
28
28
  if (han >= 13)
29
29
  return 8000;
30
30
  if (han >= 11)
@@ -1 +1 @@
1
- {"version":3,"file":"score-calculator.js","sourceRoot":"","sources":["../../src/scoring/score-calculator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"score-calculator.js","sourceRoot":"","sources":["../../src/scoring/score-calculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAU,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,WAAmB,EAAE,QAAiB;IAChE,IAAI,QAAQ,EAAE,CAAC;QACb,0CAA0C;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACtD,OAAO,IAAI,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,yEAAyE;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACrD,OAAO,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,EAAU;IACrD,IAAI,GAAG,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,GAAG,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,IAAe;IACvC,oCAAoC;IACpC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,mDAAmD;IACnD,MAAM,IAAI,GAAG,IAAI,KAAK,CAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;IAChC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,CAAW,EAAE,CAAW;IAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAe,EAAE,QAAgB;IACxD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,MAAgD,EAChD,SAAiB,EACjB,QAAkB,EAClB,IAAe,EACf,OAAoB,EACpB,QAAiB;IAEjB,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEvD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAe,EACf,SAAiB,EACjB,OAAoB;IAEpB,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,QAAQ;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,GAAG,CAAC,CAAC;IAEtD,IAAI,UAAU,GAAuB,IAAI,CAAC;IAE1C,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,YAAY;YACZ,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YACrF,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,WAAW,GAAG,UAAU;oBAC5B,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC;oBAChF,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;gBACvB,IAAI,UAAU,KAAK,IAAI,IAAI,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;oBAChE,UAAU,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC;gBAClF,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,gBAAgB;YAChB,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACxD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACtF,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,WAAW,GAAG,UAAU;wBAC5B,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC;wBAChF,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;oBACvB,IAAI,UAAU,KAAK,IAAI,IAAI,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;wBAChE,UAAU,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC;oBAClF,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,IAAe,EACf,OAAe,EACf,EAAU,EACV,QAAiB,EACjB,QAAgB;IAEhB,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QAC3B,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,CAAC;QACxB,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAClD,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC"}
@@ -35,7 +35,10 @@ export declare class WorkerClient {
35
35
  /** MCシミュレーション */
36
36
  simulate(hand: HandArray, options: MCOptions): Promise<MCResult[]>;
37
37
  /** MC + 総合評価 */
38
- evaluate(hand: HandArray, mcOptions: MCOptions, evalOptions: EvalOptions): Promise<EvalResult[]>;
38
+ evaluate(hand: HandArray, mcOptions: MCOptions, evalOptions: EvalOptions): Promise<{
39
+ mcResults: MCResult[];
40
+ evalResults: EvalResult[];
41
+ }>;
39
42
  /** Worker 終了 */
40
43
  terminate(): void;
41
44
  private request;
@@ -1 +1 @@
1
- {"version":3,"file":"worker-client.js","sourceRoot":"","sources":["../src/worker-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-client.js","sourceRoot":"","sources":["../src/worker-client.ts"],"names":[],"mappings":"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"}
package/dist/worker.js CHANGED
@@ -52,7 +52,7 @@ self.onmessage = async (e) => {
52
52
  case "evaluate": {
53
53
  const mcResults = simulateDiscards(payload.hand, payload.mcOptions);
54
54
  const evalResults = evaluateDiscards(payload.hand, mcResults, payload.evalOptions);
55
- reply("evaluate", requestId, evalResults);
55
+ reply("evaluate", requestId, { mcResults, evalResults });
56
56
  break;
57
57
  }
58
58
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "mj-simulator",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
- "description": "麻雀シミュレーター - シャンテン数計算・受入解析・MCシミュレーション",
5
+ "description": "麻雀シミュレーター - シャンテン数計算・受入解析・MCシミュレーション・副露評価",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "exports": {