Skip to content

@mai-kit/judgement-inference

@mai-kit/judgement-inference 根据谱面物量与目标成绩,使用 GLPK/WASM 反推一组可行的 完整判定分布。它与纯 TypeScript 的 @mai-kit/judgement-solver 分离,保持重依赖与 GPL-3.0-only 许可证只存在于最终应用按需使用的叶子包。

同一达成率和 DX 分可能对应多组判定;本包返回经过 @mai-kit/utils 回算验证的一组可行解, 不声称还原玩家真实原始判定。Node 动态加载 glpk.js/node,浏览器动态加载内置 Web Worker 的 glpk.js,公开 API 在两端一致。

示例

ts
import { inferJudgementDistribution } from "@mai-kit/judgement-inference";

const judgements = await inferJudgementDistribution(
  { tap: 10, hold: 0, slide: 0, touch: 0, break: 0 },
  { achievement: 90, dxScore: 20, judgementCounts: { great: 5 } },
);

console.log(judgements.tap.great); // 5

判定反推

名称描述
JudgementInferenceOptions反向求解的运行选项。
JudgementInferenceTarget反向求解必须满足的目标成绩。
JudgementCountConstraint可按全谱面汇总判定数量施加的精确约束。
JudgementInferenceFailureReason精确解失败的归一化原因。
JudgementInferenceSolverStatus底层求解器状态的稳定文本。
inferJudgementDistribution根据目标达成率、可选 DX 分与判定总数,反推一组满足条件的完整判定分布。

错误

名称描述
JudgementInferenceError判定反推包的统一错误。
JudgementInferenceNoExactSolutionError精确反推没有返回可用判定分布时的结构化错误。
isJudgementInferenceError判断错误是否来自判定反推包。
isJudgementInferenceNoExactSolutionError判断错误是否表示没有返回精确反推结果。