How It Works

Jump to: Overview · 3BLD Algs · Cascading Pseudo/Weak Swap · Edge Stats · Corner Stats · LTCT & T2C · Group Order · Big BLD · Reproduction

All tables generated in runtime. 3BLD: --. Big BLD: --.

Warning: these numbers have not been cross-verified yet and may contain errors — please open a GitHub issue if anything looks off. Full floating examples and CPS examples are working in progress and bugs are expected, so please check back later for updates.

A 3BLD solution decomposes the 12 edges and 8 corners into independent permutation–orientation structures. This tool exhaustively enumerates every cycle configuration and precomputes how many distinct scrambles realise it, giving exact probabilities for any filter.

Cycle Configuration

A cycle configuration is described by the buffer cycle $(p_0, o_0)$ and a list of non-buffer cycle types $(p_j, o_j)*r_j$, where $p_j$ is the cycle length, $o_j$ the net orientation, and $r_j$ the number of cycles of that type.

Here $o$ is the net orientation of a cycle: $o = \bigl(\sum_{\text{cycle}} o_i\bigr) \bmod O$, where $O=2$ for edges and $O=3$ for corners. Orientation values: $0$ = correct, $1$ = flipped (edges) or CW-twisted (corners), $2$ = CCW-twisted (corners). A 3-cycle with $o=0$ is orientation-clean and can be solved by a single 3-style alg. The global constraint $\sum_{\text{all}} o_i \equiv 0\pmod{O}$ always holds.

Field names

Each enumerated configuration is exposed as an object whose fields are referenced throughout this page. Non-buffer cycles means all cycles except the buffer cycle.

FieldDefinition
parity0 (even) or 1 (odd)
breaksnumber of non-buffer cycles with $p > 1$
closedN ($N=1..5$)number of non-buffer cycles of type $(N, 0)$
openN ($N=1..5$)number of non-buffer cycles of type $(N, o)$ with $o \neq 0$
cwTwistnumber of non-buffer corner cycles of type $(1, 1)$ — CW-twisted-in-place corners (corner-only; always 0 for edges)
ccwTwistnumber of non-buffer corner cycles of type $(1, 2)$ — CCW-twisted-in-place corners (corner-only; always 0 for edges)
algalg count under Basic
algsalg count under Floating plain 3-cycles
algFFalg count under Full Floating
algFFPalg count under Full Floating Parity
countnumber of distinct scrambles realising this configuration

Counting Scrambles per Configuration

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

Parity & Sampling

Any valid 3BLD scramble has equal edge and corner permutation parity, so filtering one automatically filters both. Because parity is a top-level filter, configurations are split by parity into two separate weighted pools — an even-parity pool and an odd-parity pool — each with its own CDF weighted by scramble count.

To generate a scramble: if both parities are enabled, pick a pool in proportion to its total weight (so the joint distribution still matches the unfiltered scramble distribution); sample a configuration from that pool's CDF; instantiate a random permutation and orientation assignment matching the configuration; solve the resulting cube state with min2phase.js.

Random Worked Example

Edges:

Raw:
Execution (Basic):
Execution (Full Floating):

Corners:

Raw:
Execution (Basic):
Execution (Full Floating):
Letter Scheme

Default = Chichu edge + Speffz-expanded corner, which I've been using. Traditional Chichu users are strongly recommended to switch.

▲ Collapse

Full Floating notation: (X:)YZ is one floating alg with floating buffer X cycling pieces Y and Z. Pairing is greedy and may be sub-optimal in rare configurations. The execution shown is just trying to match the alg count and does NOT stand for recommended solutions.

EdgesCorners
Parity
Breaks
Flip / Twist
Algs (Basic)
Algs (Floating plain 3-cycles)
Algs (Full Floating)
Algs (Full Floating Parity)
Count

If anything doesn't add up, please report the issue on GitHub.

▲ Collapse

3BLD Algs

Exact scramble counts for 3BLD with buffers UF (edges, $P=12$, $O=2$) and UFR (corners, $P=8$, $O=3$), over all $980{,}995{,}276{,}800$ edge states and $88{,}179{,}840$ corner states. Select a skill set to see the corresponding alg count distribution.

Skill levels (single-buffer 3-style):

Comparison with Forsthofer & Hiesl (2021). This page assumes full parity on single buffer, which gives less algo count in all categories compared to their results with fixed-pair weak swap. Their parity convention "UR–UF pseudo swap" is the length-1 special case of the cascading pseudo/weak swap (row #1). For BLDers mastering only a fixed edge pair, roughly additional 0.5 algs are expected. But the reality is quite nuanced, since if UF-UR pair is mastered, UF-LU or UF-RB pair is basically mastered for free since they are just one S-slice setup away.

Full Floating Reduction Logic (Long Boring Text Alert)

With arbitrary floating 3-cycles, any non-buffer cycle can be reduced systematically in three phases:

Phase 1 — Shrink long cycles

For each non-buffer cycle with $p \ge 3$, apply $\lfloor(p-1)/2\rfloor$ floating 3-cycles to shrink it by 2 per step. Orientation $o$ is preserved by a well-chosen cycle. After Phase 1, only $(2,o)$ and $(1,o)$ cycles remain among non-buffer cycles:

  • Edges ($O=2$): $(2,0),\;(2,1),\;(1,1)$ — where $(1,0)$ is solved and ignored.
  • Corners ($O=3$): $(2,0),\;(2,1),\;(2,2),\;(1,1),\;(1,2)$.

Phase 2 — Pair 2-cycles (edges)

Let post-Phase-1 counts be $r_{20},\,r_{21},\,r_{11}$. Reductions are applied in order, each pair costing 2 floating algs:

  1. $(2,0)+(2,0) \to$ solved: pairs $\lfloor r_{20}/2\rfloor$, then $r_{20} \leftarrow r_{20} \bmod 2$.
  2. $(2,1)+(2,1) \to$ solved: pairs $\lfloor r_{21}/2\rfloor$, then $r_{21} \leftarrow r_{21} \bmod 2$.
  3. Mixed $(2,0)+(2,1) \to (1,1)$: pairs $m = \min(r_{20}, r_{21})$, with $r_{20} \mathrel{-}= m$, $r_{21} \mathrel{-}= m$, $r_{11} \mathrel{+}= m$.

After Phase 2, at most one residual 2-cycle remains: $R = r_{20} + r_{21} \le 1$. Each contributes $1.5$ algs.

Phase 2 — Pair 2-cycles (corners)

Let post-Phase-1 counts be $r_{20},\,r_{21},\,r_{22},\,r_{11},\,r_{12}$. Reductions are applied in order, each pair costing 2 floating algs:

  1. $(2,0)+(2,0) \to$ solved: pairs $\lfloor r_{20}/2\rfloor$, then $r_{20} \leftarrow r_{20} \bmod 2$.
  2. Mixed $(2,1)+(2,2) \to$ solved (twists cancel mod 3): pairs $\min(r_{21}, r_{22})$.
  3. Same-type $(2,1)+(2,1) \to$ twisted $(1,\cdot)$: pairs $\lfloor r_{21}/2\rfloor$, contributing $\lfloor r_{21}/2\rfloor$ to $r_{12}$, then $r_{21} \leftarrow r_{21} \bmod 2$.
  4. Same-type $(2,2)+(2,2) \to$ twisted $(1,\cdot)$: pairs $\lfloor r_{22}/2\rfloor$, contributing $\lfloor r_{22}/2\rfloor$ to $r_{12}$, then $r_{22} \leftarrow r_{22} \bmod 2$.
  5. Mixed $(2,0)+(2,1) \to (1,1)$: pairs $\min(r_{20}, r_{21})$, transferring into $r_{11}$.
  6. Mixed $(2,0)+(2,2) \to (1,2)$: pairs $\min(r_{20}, r_{22})$, transferring into $r_{12}$.

After Phase 2, at most one residual 2-cycle remains: $R = r_{20} + r_{21} + r_{22} \le 1$. Each contributes $1.5$ algs. (The bookkeeping bucket — $r_{11}$ vs $r_{12}$ — for same-type pairings doesn't affect the final alg count, since the Phase-3 twist formula is symmetric in $r_{11}$ and $r_{12}$.)

Phase 3 — Count remaining algs

Edge 2-flip and 4-flip; corner 2-twist and 3-twist each count as 1 alg.

  • Twist algs: edges $\lceil r_{11}/4\rceil$; corners $\lfloor r_{11}/3\rfloor + \lfloor r_{12}/3\rfloor + \lceil(r_{11} \bmod 3 + r_{12} \bmod 3)/3\rceil$.
  • Residual 2-cycles: $1.5\,R$ algs.
  • Buffer cycle of length $p_0$: $(p_0-1)/2$ algs.

Total: $\text{twist} + 1.5\,R + (p_0-1)/2$. All arithmetic is done in the $2\times$ form (integers) to avoid float precision issues, then divided by 2.

Note: the reduction above uses a fixed greedy pairing order for simplicity. In some configurations a different pairing strategy could yield a lower alg count, so the statistics presented here should be taken as an upper bound on the true optimum.

Full Floating Parity

When parity is odd and a residual $(2,0)$ remains, it is absorbed into the parity end-pair of the buffer cycle, reducing its cost from $1.5$ to $0.5$ algs — a saving of 1. A residual $(2,1)$ or $(2,2)$ cannot be absorbed cleanly, so it stays at cost $1.5$ and parity yields no saving.

▲ Collapse
Edge
Corner
Parity
Edge Algs
AlgsCountProbabilityCumulative

Mean: , Std:

Corner Algs
AlgsCountProbabilityCumulative

Mean: , Std:

Total Algs
AlgsCountProbabilityCumulative

Mean: , Std:

Saved-alg Statistics

Mean alg counts by skill level, computed over all valid scramble states:

Skill LevelEdge meanSavedCorner meanSavedTotal meanSaved
Basic
Floating plain 3-cycles
Full Floating
Full Floating Parity

Bruh, would you really want to learn 2,768 full-floating 3-style algs just to save algs per scramble on average, and another 11,088 full-floating parity algs just to save more algs per scramble? These are only theoretical upper bounds, without accounting for human-level practicality. Life is short, be happy :)

To be clear, I am not discouraging floating and I like to improvise floating all the time. I am highlighting the cost-benefit tradeoff. With limited time and energy, more algs mean less mastery per case and more mental overhead.

Distribution of algs saved per scramble by skill level (vs. Basic):

Edge

SavedFloating plain 3-cyclesFull FloatingFull Floating Parity

Corner

SavedFloating plain 3-cyclesFull FloatingFull Floating Parity

Total

SavedFloating plain 3-cyclesFull FloatingFull Floating Parity

Cascading Pseudo/Weak Swap (CPS)

Intro

On odd-parity scrambles the solver has to fold a 2-swap (parity alg) into the execution. Cascading Pseudo/Weak Swap avoids learning every possible parity pair: pick a fixed preference order over the 11 non-buffer edge positions, then during memo scan that list and use the first applicable one as the parity target. The smaller the slot index, the more likely the parity case lands inside the small set of pairs you've actually mastered.

It never hurts to run the same routine on even-parity scrambles — the alg count is unchanged. (Unlike a fixed weak swap, which can add an alg when applied unconditionally.) Another small win: the chosen letter is deferred to the final parity swap, so once you've spotted which slot CPS will pick you can drop that letter from the running memo — a small but real saving over fixed weak swap, where you'd say UR's letter regardless.

Hard-coded preference order: AGEDPITXKQYN

MWP = Mid-Way Parity: when a pref letter shows up at an even index inside the buffer cycle (with matching orientation), tag that letter as the parity swap in-place instead of deferring to the end.

Edge flip insertion is commonly integrated with CPS to fold a flipped non-buffer edge into the parity swap, but isn't shown in this demo yet.

Scramble:    
Edge config: 
Raw: 
Execution (basic): 
Execution (CPS ): 
Execution (CPS+MWP ): 

This card doesn't fold in floating reductions yet. Combining floating with CPS gets pretty intricate, and so far not many solvers have interests. Anyway let's leave space for arts in 3BLD :)

▲ Collapse
Theory (Long Boring Text Alert)

When a 3BLD scramble has odd parity, the solver must incorporate a 2-swap (parity algorithm) into their execution. The cascading pseudo/weak swap technique resolves parity by designating a fixed preference order among the 11 non-buffer edge positions (e.g., UR first, then UB, UL, …). During memo, the solver checks each preferred position in order until one is applicable — meaning it can serve as the parity-swap target with the buffer.

Forsthofer & Hiesl (2021) use the "UR–UF pseudo swap", which is the length-1 special case of the cascading version below (preference list = {UR}).

For buffer UF, a position X is applicable as a swap target if any of these hold:

  • The UF piece is sitting at X — skip the letter and leave it for the parity swap at the end.
  • X is not in the buffer cycle — start a new cycle ending at X, leaving the swap at the end.
  • The X piece is flipped in place — solve it as two letters (e.g., RU then UR), executing RU in cycle and leaving UR at the end.

Conversely, X is not applicable if:

  • X is already correctly solved — there is no need to swap it.
  • X is in the middle of the buffer cycle — it cannot be extracted without disrupting tracing.
  • The UF piece is sitting at $\overline{\mathrm{X}}$ (the flipped sticker of X) — this forces a letter into the buffer cycle that cannot be deferred.

These two sets are in bijection: swapping the physical UF and X pieces maps each applicable case to the corresponding not-applicable case and vice versa. This gives a clean 50% probability that the first preferred position (index #1) is applicable, regardless of parity. The remaining position at the end of the buffer cycle ($p_0 > 1$) can have either orientation with equal probability, so it contributes half to each side.

Formally, for a cycle configuration with buffer cycle length $p_0$ and $f$ solved-in-place edges among non-buffer cycles:

  • $a = 11 - h - n$: fully applicable positions (not in buffer cycle, not solved)
  • $h = \mathbf{1}_{p_0 > 1}$: the last position in the buffer cycle — applicable iff its orientation is correct (probability $\frac{1}{2}$)
  • $n = \max(0,\, p_0 - 2) + f$: never-applicable positions (mid-buffer-cycle + solved)

After the coin flip on $h$, we have $a'$ applicable and $n' = 11 - a'$ not-applicable positions uniformly distributed among the 11 preference slots. The probability that the first applicable slot is at index $k$ is:

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

where $x^{\underline{m}} = x(x-1)\cdots(x-m+1)$ is the falling factorial. The — row collects configurations where $a' = 0$ (no applicable target exists).

Edge Buffer Index
IndexCountProbabilityCumulative

Indices #12–#22 represent cases with no applicable position (no edge cycle breaks and ending on a wrong-orientation edge), spread evenly to make the curve continuous.

Corner Buffer Index

Same algorithm with corner buffer UFR over 7 non-buffer corner positions. The end-of-buffer-cycle position is applicable with probability $\tfrac{1}{3}$ (instead of $\tfrac{1}{2}$ for edges) since corners have three orientations.

IndexCountProbabilityCumulative

Indices #8–#21 represent cases with no applicable position, spread evenly across 14 buckets to make the curve continuous.

Cycle Breaks

Edges
BreaksCountProbabilityCumulative

Mean: , Std:

Corners
BreaksCountProbabilityCumulative

Mean: , Std:

Flip / Twist

Flipped Edges (buffer excluded)
NumberCountProbabilityCumulative

Mean: , Std:

Solved-in-place edges (buffer excluded) follow the same distribution by orientation symmetry.

Twisted Corners (buffer excluded)
NumberCountProbabilityCumulative

Mean: , Std:

4-flip / 3-twist Probability

Probability that a scramble's non-buffer cycles invoke a 4-flip or 3-twist alg. Edge 4-flip: open1>=3. Corner 3-twist: cwTwist>=3 || ccwTwist>=3 || cwTwist==2 && ccwTwist==0 || ccwTwist==2 && cwTwist==0.

TypeCountProbability
Edge 4-flip
Corner 3-twist

LTCT & T2C

Results

LTCT (Last Target Corner Twist) combines solving the final corner target with twisting two misoriented corners into a single algorithm, saving one twist alg. It requires odd parity and at least one twisted non-buffer corner (open1>=1).

T2C (Twisted 2 Corners) solves the final corner target when the buffer corner is twisted and two remaining corners are swapped, combining the swap and buffer untwist into one algorithm. It requires odd parity and at least one misoriented non-buffer 2-cycle (open2>=1).

Note: In practice, most BLDers specialize in LTCT or T2C algorithms for a fixed edge pair (e.g., UF–UR), so the actual applicable cases are even fewer—roughly half of those shown above when using cascading pseudo/weak swap.

TechniqueCountProbability
LTCT
T2C

Order of 3x3x3 Rubik's Cube Group Elements

Results

Every move sequence eventually returns the cube to its start state. The order is the number of repetitions required. The table shows how many distinct cube states (scrambles) have each order.

OrderCount

Bonus: Big BLD Statistics

Wing: Algs
Skill
Parity
AlgsCountProbabilityCumulative

Mean: , Std:

Wing parity counts as 1 alg. Basic floating includes floating pure 3-cycles and one pure 2-cycle for wing parity.

Wing: Saved-alg Statistics

Mean wing alg counts by skill level, computed over all 4x4x4 wing states:

Skill LevelMeanSaved
Basic
Basic floating
Full Floating

Distribution of algs saved per scramble by skill level (vs. Basic):

SavedBasic floatingFull Floating
Wing: Cycle Breaks
BreaksCountProbabilityCumulative

Mean: , Std:

Wing: Solved Non-Buffer Pieces
NumberCountProbabilityCumulative

Mean: , Std:

Wing: Floating Plain 2-Cycles
NumberCountProbabilityCumulative

Mean: , Std:

Wing: Floating Plain 3-Cycles
NumberCountProbabilityCumulative

Mean: , Std:

Unsolved x/t-Centers
NumberCountProbabilityCumulative

Mean: , Std:

Reproduction

All statistics on this page can be independently verified. Clone the repo and run with Node.js:

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

Requires Node.js ≥ 14 (for BigInt support).