原理说明

如果有能力最好读英文版How It Works,因为中文版是AI翻译的,以后慢慢修~

跳转: 概览 · 公式数 · 固定借位法 · 小循环 · 翻色 · LTCT & T2C · 群元素阶 · 高盲 · 复现

所有表格均为运行时生成。3BLD: --。Big BLD: --

警告:本页数据尚未经过交叉验证,可能存在错误,如发现异常欢迎在 GitHub 提交 issue全浮动示例CPS 示例仍在开发中,可能存在 bug,请稍后再回来看更新。

一个三盲状态可分解为 12 条棱块与 8 个角块的独立「置换-朝向」结构。本工具会穷举所有循环配置,并预计算每种配置可对应的不同打乱数量,从而给出任意筛选条件下的精确概率。

示例

考虑打乱 U2 L2 U' R D2 F' L D B' D R2 F2 L2 F2 U' R2 U B2 U2 B2 U。在缓冲位 UF(棱)与 UFR(角)下,其循环分解为:

棱:

$$\underbrace{(\mathrm{UF},\,\mathrm{BU},\,\mathrm{DL},\,\mathrm{FL})}_{o=0,\;\text{buffer}}\;\underbrace{(\mathrm{UR},\,\mathrm{RB})}_{o=0}\;\underbrace{(\mathrm{UL},\,\mathrm{LB})}_{o=0}\;\underbrace{(\mathrm{FR},\,\mathrm{BD})}_{o=1}\;\underbrace{(\mathrm{DR})}_{o=1}\;\underbrace{(\mathrm{DF})}_{o=0,\;\text{solved}}$$

角:

$$\underbrace{(\mathrm{UFR},\,\mathrm{LDF},\,\mathrm{LUB},\,\mathrm{BDR},\,\mathrm{DBL},\,\mathrm{RUB},\,\mathrm{RDF})}_{o=2,\;\text{buffer}}\;\underbrace{(\mathrm{UFL})}_{o=1}$$

这里的 $o$ 是该循环的净朝向:$o = \bigl(\sum_{\text{cycle}} o_i\bigr) \bmod O$,其中棱块 $O=2$,角块 $O=3$。朝向取值为:$0$ = 正向,$1$ = 翻棱或顺时针翻角,$2$ = 逆时针翻角。当 三循环 的 $o=0$ 时,朝向正确,可用一个三循环公式解决。全局约束 $\sum_{\text{all}} o_i \equiv 0\pmod{O}$ 始终成立。

循环配置

循环配置由缓冲循环 $(p_0, o_0)$ 与一组小循环类型 $(p_j, o_j)*r_j$ 描述,其中 $p_j$ 为循环长度,$o_j$ 为净朝向,$r_j$ 为该类型循环个数。对上面的打乱:

类型缓冲 $(p_0,o_0)$小循环类型 $(p_j,o_j)*r_j$
$(4,0)$$(2,0)*2 + (2,1) + (1,1) + (1,0)$
$(7,2)$$(1,1)$

每种配置的打乱计数

$$\operatorname{count} = \frac{(P-1)!\cdot O^{P-1-\sum_j r_j}}{\displaystyle\prod_j p_j^{r_j} \cdot r_j!}$$

对该打乱(棱块 $P=12,\,O=2$;角块 $P=8,\,O=3$):

$$\operatorname{count}_{\mathrm{edges}} = \frac{11!\cdot 2^{12-1-5}}{2^2\cdot2!\;\cdot\;2^1} = \frac{39{,}916{,}800\cdot 64}{16} = 159{,}667{,}200$$ $$\operatorname{count}_{\mathrm{corners}} = 7!\cdot 3^{8-1-1} = 5040\cdot 729 = 3{,}674{,}160$$

奇偶与采样

任何有效的三盲打乱,其棱与角的置换奇偶必然一致,因此筛一个就等于同时筛两者。由于奇偶是顶层筛选项,配置会按奇偶拆成两个独立加权池:偶池与奇池;两者各自维护按打乱计数加权的 CDF。

生成打乱时:若两种奇偶都开启,则按总权重比例先选池(保证联合分布仍与未筛选分布一致);再从该池的 CDF 中抽取一个配置;随后随机实例化与该配置匹配的置换与朝向赋值;最后用 min2phase.js 还原得到打乱。

随机示例

棱块:

原始:
执行(基础):
执行(全浮动):

角块:

原始:
执行(基础):
执行(全浮动):
编码方案

默认 = 彳亍 棱块 + Speffz 扩展角块,我一直在用的方案。传统 彳亍 用户强烈建议切换。

▲ 收起

全浮动记号:(X:)YZ 表示一个以 X 为浮动缓冲、循环 YZ 两块的浮动公式。配对采用贪心策略,在极少配置下可能并非最优。该执行仅以匹配公式数为目标,不等于推荐的实际解法。

棱块角块
奇偶
小循环
翻色
公式(基础)
公式(仅浮动纯三循环)
公式(全浮动)
公式(全浮动奇偶)
计数

如果有任何地方对不上,请于GitHub反馈 issue。

▲ 收起

三盲公式数

在缓冲位 UF(棱,$P=12$, $O=2$)与 UFR(角,$P=8$, $O=3$)下,对全部 $980{,}995{,}276{,}800$ 种棱状态与 $88{,}179{,}840$ 种角状态给出精确打乱计数。选择技巧组合可查看对应的公式计数分布。

技巧等级(单缓冲 3-style):

与 Forsthofer & Hiesl (2021) 的对照。本页假设单缓冲完全处理奇偶,因此各类别下的公式数都低于他们采用固定对 weak swap 的结果。他们的奇偶约定「UR–UF pseudo swap」即固定借位法在优先列表长度为 1 时的特例(对应第 1 行)。对只掌握固定一对棱的盲拧选手,预计大约会多 0.5 个公式。但实情颇为微妙:掌握 UF-UR 对之后,UF-LU 或 UF-RB 对基本算是免费掌握,因为它们只差一次 S 层 setup。

全浮动归约逻辑(又臭又长警告)

在可使用任意浮动 三循环 的前提下,任何非缓冲循环都可按三阶段系统归约:

阶段 1 - 缩短长循环

对每个满足 $p \ge 3$ 的非缓冲循环,应用 $\lfloor(p-1)/2\rfloor$ 次浮动 3-cycle,每步将长度缩短 2。通过合适选取循环可保持朝向 $o$ 不变。阶段 1 后,非缓冲循环仅剩 $(2,o)$ 与 $(1,o)$:

  • 棱块($O=2$):$(2,0),\;(2,1),\;(1,1)$,其中 $(1,0)$ 视为已还原并忽略。
  • 角块($O=3$):$(2,0),\;(2,1),\;(2,2),\;(1,1),\;(1,2)$。

阶段 2 - 配对 2-cycle(棱块)

记阶段 1 后计数为 $r_{20},\,r_{21},\,r_{11}$。按以下顺序进行归约,每次配对耗 2 个浮动公式:

  1. $(2,0)+(2,0) \to$ 还原:配对数 $\lfloor r_{20}/2\rfloor$,更新 $r_{20} \leftarrow r_{20} \bmod 2$。
  2. $(2,1)+(2,1) \to$ 还原:配对数 $\lfloor r_{21}/2\rfloor$,更新 $r_{21} \leftarrow r_{21} \bmod 2$。
  3. 混合 $(2,0)+(2,1) \to (1,1)$:配对数 $m = \min(r_{20}, r_{21})$,并令 $r_{20} \mathrel{-}= m$、$r_{21} \mathrel{-}= m$、$r_{11} \mathrel{+}= m$。

阶段 2 结束后,最多剩余一个 2-cycle:$R = r_{20} + r_{21} \le 1$。每个贡献 $1.5$ 个公式。

阶段 2 - 配对 2-cycle(角块)

记阶段 1 后计数为 $r_{20},\,r_{21},\,r_{22},\,r_{11},\,r_{12}$。按以下顺序进行归约,每次配对耗 2 个浮动公式:

  1. $(2,0)+(2,0) \to$ 还原:配对数 $\lfloor r_{20}/2\rfloor$,更新 $r_{20} \leftarrow r_{20} \bmod 2$。
  2. 混合 $(2,1)+(2,2) \to$ 还原(mod 3 下翻角相消):配对数 $\min(r_{21}, r_{22})$。
  3. 同类 $(2,1)+(2,1) \to$ 翻角 $(1,\cdot)$:配对数 $\lfloor r_{21}/2\rfloor$,将 $\lfloor r_{21}/2\rfloor$ 计入 $r_{12}$,更新 $r_{21} \leftarrow r_{21} \bmod 2$。
  4. 同类 $(2,2)+(2,2) \to$ 翻角 $(1,\cdot)$:配对数 $\lfloor r_{22}/2\rfloor$,将 $\lfloor r_{22}/2\rfloor$ 计入 $r_{12}$,更新 $r_{22} \leftarrow r_{22} \bmod 2$。
  5. 混合 $(2,0)+(2,1) \to (1,1)$:配对数 $\min(r_{20}, r_{21})$,转入 $r_{11}$。
  6. 混合 $(2,0)+(2,2) \to (1,2)$:配对数 $\min(r_{20}, r_{22})$,转入 $r_{12}$。

阶段 2 结束后,最多剩余一个 2-cycle:$R = r_{20} + r_{21} + r_{22} \le 1$。每个贡献 $1.5$ 个公式。(同类配对的记账桶——计入 $r_{11}$ 还是 $r_{12}$——不会影响最终公式数,因为阶段 3 的翻角公式对 $r_{11}$ 与 $r_{12}$ 对称。)

阶段 3 - 统计剩余公式

棱块 2 翻棱和 4 翻棱;角块 2 翻角和 3 翻角,各计为 1 个公式。

  • 翻角公式:棱块为 $\lceil r_{11}/4\rceil$;角块为 $\lfloor r_{11}/3\rfloor + \lfloor r_{12}/3\rfloor + \lceil(r_{11} \bmod 3 + r_{12} \bmod 3)/3\rceil$。
  • 残余 2-cycle:共 $1.5\,R$ 个公式。
  • 缓冲循环长度为 $p_0$ 时贡献 $(p_0-1)/2$ 个公式。

总计:$\text{twist} + 1.5\,R + (p_0-1)/2$。实现时全部以 $2\times$ 整数形式计算,避免浮点精度误差,最后再除以 2。

注意:上述归约使用固定的贪心配对顺序,以求简洁。某些配置下,不同的配对策略可能得到更少的公式数,因此此处统计结果应视为真实最优的上界。

全浮动奇偶

当奇偶为奇且存在残余 $(2,0)$ 时,可将其吸收到缓冲循环末尾的奇偶对换中,使其成本由 $1.5$ 降到 $0.5$ 个公式,净省 1。残余 $(2,1)$ 或 $(2,2)$ 无法被干净地吸收,成本仍为 $1.5$,奇偶不会带来节省。

▲ 收起
棱块
角块
奇偶
棱块公式
公式计数概率累积

均值:,标准差:

角块公式
公式计数概率累积

均值:,标准差:

总公式
公式计数概率累积

均值:,标准差:

节省公式统计

按技巧等级统计的平均公式数(在所有有效打乱状态上计算):

技巧等级棱块均值节省角块均值节省总均值节省
基础
仅浮动纯三循环
全浮动
全浮动奇偶

你真的会想背 2768 个全浮动三循环公式,只为了平均每把少 个公式;再多背 11088 个全浮动奇偶公式,也只再平均每把少 个公式吗?这些都只是理论上界,还没考虑人类实际能力。人生苦短,别背了~

当然我没有劝退浮动,我自己就喜欢不用新公式即兴浮动,只是想说背那么多新公式要考虑代价。

每把节省公式数的分布(相对基础):

棱块

节省仅浮动纯三循环全浮动全浮动奇偶

角块

节省仅浮动纯三循环全浮动全浮动奇偶

总计

节省仅浮动纯三循环全浮动全浮动奇偶

固定借位法 (CPS)

简介

三盲打乱为奇偶为奇时,执行里必须塞进一个 2-swap(奇偶公式)。固定借位法不要求记下所有可能的奇偶配对:在 11 个非缓冲棱位上预设一个固定优先顺序,记忆时按顺序扫描,第一个可用的位置就是奇偶交换目标。索引越靠前,落进你已掌握的少数配对里的概率就越高。

奇偶为偶的打乱也可以套用这个流程,没有副作用:最坏情况下选出的槽位恰好就是循环本来就要收尾的位置,公式数不变。(这点和固定 weak swap 不同——后者无条件套用可能会增加一条公式。)

另一个小好处:选中的字母会被推迟到末尾的奇偶交换处理,所以一旦认出了应该选哪个槽位,记忆时就可以略过这个字母——比固定 weak swap 总要把 UR 字母念出来要省一点。

硬编码优先顺序:AGEDPITXKQYN

MWP = Mid-Way Parity(中途奇偶):当某个优先字母正好落在缓冲循环内的偶数位(且朝向匹配)时,将该字母就地标作奇偶交换,不再推迟到末尾。

在 CPS 中常见地集成翻棱插入(把一个非缓冲翻棱并入奇偶交换),不过本演示暂未展示。

演示仅限奇偶为奇且原位翻转棱块数 ≤ 1 的情形。多翻转(flip > 1)情况渲染较复杂,后续如有需要再补充。

另外,此演示采用保守的「将槽位字母推迟到末尾」写法。还有一种更广义的写法——把奇偶交换放在执行流中间,使其落在本演示视为不可用的槽位上,但这要求你在执行前就知道是奇偶为奇的情况,因此只有在先记角后记棱时才实用。先记棱 + 棱 CPS 只能用这里的保守写法。

小提示:此卡片暂未把浮动归约纳入考虑。浮动与 CPS 的耦合相当微妙,目前关注的人不多——如果有更多盲拧选手感兴趣,再来打磨这块。

打乱:    
棱配置: 
原始: 
执行(基础): 
执行(CPS ): 
执行(CPS+MWP ): 
▲ 收起
原理(又臭又长警告)

当三盲打乱为奇偶为奇时,执行中必须并入一个 2-swap(奇偶公式)。固定借位法通过预先设定 11 个非缓冲棱位的固定优先顺序(例如先 UR,再 UB、UL……)来处理奇偶。记忆时按顺序检查这些位置,直到找到一个可用位置作为与缓冲交换的目标。

对缓冲 UF,位置 X 在满足以下任一条件时可作为交换目标:

  • UF 块在 X 上:跳过该字母,留到末尾奇偶交换处理。
  • X 不在缓冲循环内:新开一个以 X 结束的循环,把交换留到最后。
  • X 对应块原地翻棱:按两个字母处理(如 RU 再 UR),在循环内执行 RU,把 UR 留到末尾。

反之,X 在以下情况不可用

  • X 已正确还原:没有交换必要。
  • X 位于缓冲循环中段:无法在不破坏追踪的情况下抽出。
  • UF 块在 $\overline{\mathrm{X}}$(X 的反向贴纸)上:这会强制一个字母进入缓冲循环,无法后置。

这两类情况之间是一一对应:交换 UF 与 X 的实体块后,每个可用案例都对应一个不可用案例,反之亦然。因此无论奇偶如何,首选位置(索引 #1)可用概率都恰为 50%。当缓冲循环末位存在($p_0 > 1$)时,其朝向两种可能等概率,对两侧各贡献一半。

形式化地,若某循环配置的缓冲循环长度为 $p_0$,小循环中原地还原棱块数为 $f$:

  • $a = 11 - h - n$:完全可用位置数(不在缓冲循环且未还原)
  • $h = \mathbf{1}_{p_0 > 1}$:缓冲循环末位;仅当朝向正确时可用(概率 $\frac{1}{2}$)
  • $n = \max(0,\, p_0 - 2) + f$:永不可用位置数(缓冲循环中段 + 已还原)

对 $h$ 做一次二项分支后,得到 $a'$ 个可用位与 $n' = 11 - a'$ 个不可用位,并在 11 个优先槽中均匀分布。首个可用槽位出现在索引 $k$ 的概率为:

$$P(k \mid a', n') \;=\; \frac{a' \cdot n'^{\underline{k-1}}}{11^{\underline{k}}}$$

其中 $x^{\underline{m}} = x(x-1)\cdots(x-m+1)$ 为下降阶乘。表中 “—” 行汇总了 $a' = 0$(不存在可用目标)的配置。

棱缓冲索引
索引计数概率累积

索引 #12–#22 表示无可用借位位置(无棱小循环且停在错朝向棱块)的情况,均匀分摊以让曲线连续。

角缓冲索引

同样的流程,缓冲位 UFR,覆盖 7 个非缓冲角位。缓冲循环末位的可用概率为 $\tfrac{1}{3}$(棱为 $\tfrac{1}{2}$),因为角块有三种朝向。

索引计数概率累积

索引 #8–#21 表示无可用借位位置的情况,均匀分摊到 14 个槽位以让曲线连续。

小循环

棱块
小循环数计数概率累积

均值:,标准差:

角块
小循环数计数概率累积

均值:,标准差:

翻色

翻棱数(不含缓冲)
数量计数概率累积

均值:,标准差:

由朝向对称性可知,原地还原棱块数(不含缓冲)服从同一分布。

翻角数(不含缓冲)
数量计数概率累积

均值:,标准差:

4-翻棱 / 3-翻角概率

触发 4-翻棱或 3-翻角公式的概率。4-翻棱:open1>=3。3-翻角:cwTwist>=3 || ccwTwist>=3 || cwTwist==2 && ccwTwist==0 || ccwTwist==2 && cwTwist==0.

类型计数概率
4-翻棱
3-翻角

LTCT & T2C

结果

LTCT(Last Target Corner Twist)将最后一个角目标的处理与两角翻转合并为一个公式,可节省 1 个翻角公式。要求奇偶为奇,且至少有一个非缓冲翻角(open1>=1)。

T2C(Twisted 2 Corners)用于缓冲角已翻且另外两角互换时,把交换与缓冲解翻合并为一个公式来处理最后角目标。要求奇偶为奇,且至少存在一个错朝向小循环 2-cycle(open2>=1)。

:实际中多数 BLD 选手只专精固定棱对(如 UF-UR)下的 LTCT 或 T2C,因此真正可用的情况会更少;在固定借位法下,通常约为上表的一半。

技巧计数概率
LTCT
T2C

3x3x3 群元素的阶

结果

任意操作序列重复足够多次后都将回到初始状态。其即所需重复次数。下表给出每个阶对应的不同魔方状态(打乱)数量。

计数

附:高盲统计

翼棱:公式
技巧
奇偶
公式计数概率累积

均值:,标准差:

翼棱奇偶计为 1 个公式。

翼棱:节省公式统计

按技巧等级统计的平均翼棱公式数(在所有 4x4x4 翼棱状态上计算):

技巧等级均值节省
基础
仅浮动纯三循环
全浮动

每把节省公式数的分布(相对基础):

节省仅浮动纯三循环全浮动
翼棱小循环
小循环数计数概率累积

均值:,标准差:

已还原翼棱(不含缓冲)
数量计数概率累积

均值:,标准差:

翼棱浮动二循环(不含缓冲)
数量计数概率累积

均值:,标准差:

翼棱浮动三循环(不含缓冲)
数量计数概率累积

均值:,标准差:

未还原角心/棱心
数量计数概率累积

均值:,标准差:

复现

本页所有统计都可独立验证。克隆仓库后用 Node.js 运行:

git clone https://github.com/helloluxi/bld-scr.git
cd bld-scr
node src/reproduction.js

需要 Node.js ≥ 14(支持 BigInt)。