soft-to-rigid-packing · cubes in cubes · n = 12

Twelve unit cubes fit in a cube of side 2.93151

Start with balls, squeeze them into a box, then harden them into cubes while the walls keep pushing. On 8 October 2026 this found a packing of 12 unit cubes 0.0012533 smaller than the July 2026 record. Everything needed to check it is below and in the repository.

2.9315185094797side, s_full (Friedman display 2.93151+)
2.9327717687previous record, H. Lin, July 2026
−0.0012533improvement
1.0 × 10⁻⁶min gap between any two cubes and to every wall
7,700random starts run, squares and cubes
6published square records rediscovered from random starts

The two winners

n = 12 cubes, new record. Seed 52: balls compress, harden into cubes, settle; the last frame is the published claim file. Dashed: the previous record's box. Drag to rotate.
n = 11 squares, where it started. The first run to reach Trump's 1979 packing (side 3.877084, proved optimal in 2026) from random disks. Dashed: Trump's box.

Verify it

The claim is a list of twelve poses. Pose i is a centre ci and a scalar-first unit quaternion qi; cube i is the unit cube centred at ci rotated by qi. The container is [0, s]³ with s = 2.9315185094797.

Corners. vi,g=ci+R(qi)g,g∈{−12,12}3
Inside the box. every coordinate of every corner satisfies 0<vk<s. Minimum wall gap: 1.0000000000e-06.
No overlaps. Two convex boxes are disjoint iff some axis separates their projections. For cubes it suffices to test 15 axes: the 3 face normals of each cube and the 9 cross products of their edges. Pair gap = max over those axes of the gap between projection intervals. Minimum over all 66 pairs: 1.0000000006e-06.
Exactly. certify_exact.py converts every number in the file to a rational, uses the exactly orthogonal rotation H(q)/|q|2, and exhibits a strictly separating plane for every pair with no rounding: CERTIFIED.

Run the same checks in this page:

Loads the JSON from this site and runs the 15-axis test on all 66 pairs.

Or from the repository:

git clone https://github.com/yoheinakajima/soft-to-rigid-packing.git && cd soft-to-rigid-packing
python3 verify.py claims/cubincub_n12/cubincub_n12.json        # standard library only, exits 1 on failure
python3 certify_exact.py claims/cubincub_n12/cubincub_n12.json # exact rational arithmetic
./scripts/reproduce_n12.sh                                      # rerun the search from seed 52

Same file format and checks as the current record file, Hyra-results/cubincub_n12.json, so the two can be compared line by line.

What we found

How we got here

  1. 7 Oct · squares, n = 11

    Can blobs that harden find the best packing?

    Yes: 6 of 160 starts reach Trump's packing; 0 of 120 rigid starts do.

  2. 7 Oct · squares, n = 2–30

    Same settings, every n

    Tilted records found up to n = 11, none beyond. Rigid starts win when a grid has empty cells; blobs win when it is full.

  3. 7 Oct · squares, n = 17 and 19

    Five setups on the same seeds

    Blobs reach Bidwell's n = 17 packing 10 times in 960 starts; rigid and octagon starts never do.

  4. 7 Oct · exact tightening

    From penalty slack to exact contact

    A constrained solver (corners in the box, a separating plane per pair) snaps near-misses onto the records to 10⁻¹².

  5. 8 Oct · squares, n = 26–29

    More hardening time

    At n = 26 the hit rate climbs from 2.5% to 10.4% as steps grow; n = 28 and 29 stay out of reach.

  6. 8 Oct · cubes, n = 9–12

    Same method, one dimension up

    Friedman's n = 9 packing is found 16 times in 64. At n = 12, seed 52 lands below the July 2026 record.

  7. 8 Oct · claim

    Certified and published

    Clearance of 10⁻⁶ added, exact certificate passed, file in the record's format. Submitted to Erich Friedman's catalogue: pending.

Every experiment, including dead ends, is in EXPERIMENT_LOG.md.

Paper

Twelve Unit Cubes in a Cube of Side 2.9315, Found by Hardening Balls into Cubes. Read it online, with the interactive 3D figure, or as a PDF. Both are rebuilt from paper/main.tex on every commit, so these links always point to the latest draft.

built from commit efe7a92 · 2026-10-08 21:39 UTC