数字我 Digital Me:全量入库(大文件走 Git LFS)
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s

This commit is contained in:
2026-10-10 16:24:43 +08:00
commit 0593ff7e62
1893 changed files with 361723 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
// ★ 择路排序器【自洽吗】—— TIE_TOL=5 是【容差】,而容差不传递。
// 一个不传递的比较器交给 Array.sort,结果是【实现定义】的:ranked[0] 可以不是极大元。
// 本表逐字写过:「『碰巧成立』和『守着』是两回事」。⇒ 跑出来。
import { DYNASTIES, computeAxes, getDynasty, AXES } from '../src/dynasties.js';
import { SUB_REGISTRY } from '../src/talents.js';
const SUBS = SUB_REGISTRY.map((s) => s.id);
const TIE_TOL = 5;
const clamp = (n, lo, hi) => Math.max(lo, Math.min(hi, n));
const xuanOf = (c) => (c && c.xuan) || { seat: 0, kemu: [], key: [] };
function lexCompare(a, b, val) {
const ka = xuanOf(a).key || [], kb = xuanOf(b).key || [];
const n = Math.min(ka.length, kb.length);
for (let i = 0; i < n; i++) {
const va = val(ka[i]), vb = val(kb[i]);
if (Math.abs(va - vb) > TIE_TOL) return vb - va;
}
return 0;
}
let lexNonTrans = 0, cells = 0, tieNonEquiv = 0, tieNonEquivCells = 0;
for (let m = 0; m < (1 << 16); m++) {
const subs = []; for (let i = 0; i < 16; i++) if (m & (1 << i)) subs.push(SUBS[i]);
const axes = computeAxes(subs);
for (const wang of [0, 29, 30, 54, 55, 74, 75, 100]) for (const d of DYNASTIES) {
const val = (k) => (k === 'wang' ? wang : k === 'lao' ? 0 : clamp(Number(axes[k] || 0), 0, 100));
const open = d.channels.filter((c) => Object.entries(c.gate || {}).every(([k, need]) => val(k) >= need));
if (open.length < 3) continue;
cells++;
const ceilOf = (c) => c.ceiling?.tier ?? 5;
const tierOf = (c) => {
const kemu = xuanOf(c).kemu || [];
let n = 0; for (const k of kemu) { if (val(k.axis) >= k.need) n++; else break; }
return clamp((xuanOf(c).seat || 0) + n, 0, ceilOf(c));
};
// ①【lexCompare 的「均」传递吗】A≈B、B≈C ⇒ A≈C ?
for (const A of open) for (const B of open) for (const C of open) {
if (A === B || B === C || A === C) continue;
if (lexCompare(A, B, val) === 0 && lexCompare(B, C, val) === 0 && lexCompare(A, C, val) !== 0) lexNonTrans++;
}
// ②【老板判据的打平集合,内部两两真的都同 tier 同 ceiling 吗】(= 是等价关系吗)
const best = open.slice().sort((a, b) =>
tierOf(b) - tierOf(a) || ceilOf(b) - ceilOf(a) || lexCompare(a, b, val) || 0)[0];
const tie = open.filter((c) => tierOf(c) === tierOf(best) && ceilOf(c) === ceilOf(best));
let bad = 0;
for (const A of tie) for (const B of tie)
if (A !== B && (tierOf(A) !== tierOf(B) || ceilOf(A) !== ceilOf(B))) bad++;
tieNonEquiv += bad; if (bad) tieNonEquivCells++;
}
}
const N = (n) => n.toLocaleString();
console.log(`\n扫了 ${N(cells)} 个【≥3 条路开着】的格子`);
console.log(`①【lexCompare 的「均」不传递】的三元组:${N(lexNonTrans)} 次`);
console.log(` ⇒ 容差关系 |a−b|≤5 【不是等价关系】。而 idx 的成员资格【是拿它定义的】。`);
console.log(`②【老板判据(同 tier 同 ceiling)】内部不自洽:${N(tieNonEquiv)} 次(${N(tieNonEquivCells)} 格)`);
console.log(` ⇒ 相等【是】等价关系。老板的判据是良定义的,我上一刀那个不是。`);