/Puzzles
About
Team
Investments
Research
Research Index
Build
IncubationsOpen Source
Writing
Paradigm Puzzles
Hackathon

Terms, Disclosures, Privacy

LinkedIn, Twitter, Contact

← Back to Leaderboard

About the Shape Packing Challenge

The Challenge

Pack 15 unit semicircles into the smallest possible enclosing circle. Your score is the radius of the minimum enclosing circle (MEC) — lower is better.

Semicircles are harder to pack than full circles because the flat edge creates asymmetry, opening opportunities for creative arrangements that exploit the geometry. The theoretical lower bound is ~2.74 (based on area alone). How close can you get?

What You Submit

A JSON array of exactly 15 semicircle placements. Each semicircle has three fields:

[
  { "x": 0.0, "y": 0.0, "theta": 0.0 },
  { "x": 2.0, "y": 0.0, "theta": 3.141593 },
  ...15 total
]
  • x, y — center of the full disk
  • theta — angle (radians) the curved part extends toward. The flat edge passes through (x, y) perpendicular to theta.

All semicircles have unit radius (r=1). You control position and orientation. No code execution — just coordinates. Scoring is instant.

Scoring & Validation

Your score is the radius of the minimum enclosing circle containing all 15 semicircles (lower is better). The MEC is computed analytically to machine precision.

Precision: All coordinates are rounded to 6 decimal places before validation and scoring. The local harness applies the same rounding, so your local score will match.

Validation checks:

  1. Exactly 15 semicircle objects with numeric x, y, and theta
  2. Coordinates rounded to 6 decimal places
  3. No two semicircles overlap (intersection area < 10-6)
  4. All semicircles fully contained in the enclosing circle

Local Development

Use the challenge repo to iterate locally. Edit solution.json, run the scorer, and submit the same JSON here when you're happy with it:

uv sync
uv run python run.py              # score solution.json
uv run python run.py --visualize   # see a plot

Rules

  • JSON array of exactly 15 semicircle objects
  • All semicircles are unit radius (r=1)
  • No overlaps
  • Rate limit: 1 submission per 10 minutes
  • Sign in with X to submit
Submit Your Solution
LeaderboardSubmitGitHubAbout
Benedict Brady
LeaderboardSubmitGitHubAbout
Benedict Brady