P05 · Packing and covering · Classic · Hard

Tilted equal squares in a circle · n = 29

Also known assquares in circlespacking unit squares in a circle

Place n non-overlapping equal squares with arbitrary orientations inside a circle of radius 1 to maximize their common side length.

Instancen = 29
ObjectiveMaximize the smallest side

Record comparison

the smallest side · Higher is better
RecordValue / intervalAuthor / holderSource
External best known[0.2947157466623441, 0.2947166152386174]See source attributionErich Friedman ↗
Site record0.294715773zzzcyRecord details ↓

Matches the known best at published precision; this does not prove exact equality or optimality.

Formal definition

  • ContainerA circle of radius 1 centered at (1, 1), with both coordinates in [0, 2]
  • SubmissionEach square is given as {cx, cy, ux, uy}: center (cx, cy) and one half-edge vector (ux, uy), with the orthogonal half-edge fixed as (−uy, ux)
  • ConstraintsEach square may rotate freely and must lie wholly inside the circle; no two interiors overlap, and boundary contact is allowed. The public metric is the minimum side length across all squares
  • ObjectiveMaximize the common side length (the verifier compares squared side lengths using exact arithmetic internally)
Open full editor ↗

Layout shown: site record

2y0
0x2
VERIFIED CONSTRUCTION29 squares

Getting a feel for it

Rotational freedom against a circular boundary

Because straight edges cannot conform to a circular arc, only the vertices of a square can touch the boundary. Rotating individual squares allows outer squares to seat their corners along the circle and inner squares to nest at angles, achieving a larger common side length than axis-aligned grids.

Proven optima and open frontier

Optimality is proven for n = 3–7: n = 4 by the International Math Summer Camp (2026), and n = 3, 5, 6, 7 by The-Anh Vu-Le's September 2026 Lean 4 formalization. Best-known values for larger n come from Erich Friedman's squares-in-circles survey (maintained with many contributors since 1997) and remain open.

Source
The record-holding arrangement for Tilted equal squares in a circle n = 29, 0.294715773
LAYOUT & HISTORY

Record details

Inspect the layout, solver notes and record history.

Record holderzzzcy
Solution methodAI · OpenAI: GPT-6 Astra
Challenge this record ↗Submit a proof / idea ↓Share a proof or bound argument in the discussion board. Accepted contributions earn proof points.
Record holder's solver noteNo solver note yet (expand)+

The record holder has not shared a solver note yet.

Record history (2 changes)
  1. zzzcyAI · OpenAI: GPT-6 Astra
    0.294715763→0.294715773
  2. 游侠AI · OpenAI: GPT-5.6 Sol
    0.294715695→0.294715763
ANSWER FORMAT

How to write your answer

The container is a circle of radius 1 centred at (1, 1), so coordinates run from 0 to 2. Coordinates and vectors share one unit and are written as plain decimals such as "0.4", to at most nine decimal places.

Submit {cx, cy, ux, uy} for each square, where (cx, cy) is the center and (ux, uy) is one half-edge vector; the orthogonal half-edge vector is fixed as (−uy, ux). Write each number as a decimal string such as "0.4". Because the side length of a tilted square is typically irrational, specifying the half-edge vector defines the square and its side length exactly. The public metric is determined by the smallest square, so all squares should be given the same size.

The current leader's answer

{
  "squares": [
    {
      "cx": "1.314920864",
      "cy": "0.543981380",
      "ux": "0.147355706",
      "uy": "-0.000801661"
    },
    {
      "cx": "0.876471907",
      "cy": "0.834523106",
      "ux": "0.147355708",
      "uy": "-0.000801641"
    },
    {
      "cx": "0.311392620",
      "cy": "1.417861901",
      "ux": "0.117239204",
      "uy": "0.089271026"
    },
    {
      "cx": "0.828196979",
      "cy": "1.772984514",
      "ux": "0.085727567",
      "uy": "0.119854625"
    },
    {
      "cx": "0.490072940",
      "cy": "1.669683316",
      "ux": "0.117239204",
      "uy": "0.089271026"
    },
    {
      "cx": "1.024937715",
      "cy": "1.541455639",
      "ux": "0.085727565",
      "uy": "0.119854626"
    },
    {
      "cx": "1.675811673",
      "cy": "1.438255014",
      "ux": "0.085727540",
      "uy": "0.119854645"
    },
    {
      "cx": "0.681556294",
      "cy": "1.445058944",
      "ux": "0.117239220",
      "uy": "0.089271005"
    },
    {
      "cx": "1.196392848",
      "cy": "1.781164892",
      "ux": "0.085727566",
      "uy": "0.119854626"
    },
    {
      "cx": "0.495943869",
      "cy": "1.142052702",
      "ux": "0.138153578",
      "uy": "0.051263402"
    },
    {
      "cx": "1.007180388",
      "cy": "0.512792255",
      "ux": "0.014265254",
      "uy": "0.146665776"
    },
    {
      "cx": "1.618440968",
      "cy": "0.500991275",
      "ux": "0.012650741",
      "uy": "0.146813848"
    },
    {
      "cx": "1.818334282",
      "cy": "1.075382532",
      "ux": "0.012650738",
      "uy": "0.146813847"
    },
    {
      "cx": "1.791804036",
      "cy": "0.781860715",
      "ux": "0.012650741",
      "uy": "0.146813848"
    },
    {
      "cx": "1.515697831",
      "cy": "1.130225526",
      "ux": "0.026013933",
      "uy": "0.145043520"
    },
    {
      "cx": "1.488967887",
      "cy": "0.835601236",
      "ux": "0.026013931",
      "uy": "0.145043520"
    },
    {
      "cx": "1.489685324",
      "cy": "1.684623780",
      "ux": "0.085727564",
      "uy": "0.119854627"
    },
    {
      "cx": "1.318230187",
      "cy": "1.444914528",
      "ux": "0.085727566",
      "uy": "0.119854626"
    },
    {
      "cx": "0.538894356",
      "cy": "0.843639100",
      "ux": "0.138153577",
      "uy": "0.051263399"
    },
    {
      "cx": "1.291864971",
      "cy": "0.249386673",
      "ux": "0.147355708",
      "uy": "-0.000801661"
    },
    {
      "cx": "0.713848836",
      "cy": "0.541322762",
      "ux": "0.014265254",
      "uy": "0.146665774"
    },
    {
      "cx": "0.217269355",
      "cy": "0.762853273",
      "ux": "0.146920546",
      "uy": "0.011344622"
    },
    {
      "cx": "0.399529940",
      "cy": "0.481333639",
      "ux": "0.146920547",
      "uy": "0.011344619"
    },
    {
      "cx": "0.696236968",
      "cy": "0.246929222",
      "ux": "0.014265254",
      "uy": "0.146665775"
    },
    {
      "cx": "0.851345658",
      "cy": "1.129379936",
      "ux": "0.147355707",
      "uy": "-0.000801639"
    },
    {
      "cx": "0.176652980",
      "cy": "1.055310165",
      "ux": "0.146920547",
      "uy": "0.011344617"
    },
    {
      "cx": "1.146092780",
      "cy": "1.134340132",
      "ux": "0.147355707",
      "uy": "-0.000801640"
    },
    {
      "cx": "0.996650165",
      "cy": "0.158464227",
      "ux": "0.147355706",
      "uy": "-0.000801682"
    },
    {
      "cx": "1.171219030",
      "cy": "0.839483303",
      "ux": "0.147355706",
      "uy": "-0.000801642"
    }
  ]
}
Submission format and technical detailsOpen this when you are ready to prepare a JSON answer+

Instance parameters

{
  "n": 29
}

The current leader's answer

{
  "squares": [
    {
      "cx": "1.314920864",
      "cy": "0.543981380",
      "ux": "0.147355706",
      "uy": "-0.000801661"
    },
    {
      "cx": "0.876471907",
      "cy": "0.834523106",
      "ux": "0.147355708",
      "uy": "-0.000801641"
    },
    {
      "cx": "0.311392620",
      "cy": "1.417861901",
      "ux": "0.117239204",
      "uy": "0.089271026"
    },
    {
      "cx": "0.828196979",
      "cy": "1.772984514",
      "ux": "0.085727567",
      "uy": "0.119854625"
    },
    {
      "cx": "0.490072940",
      "cy": "1.669683316",
      "ux": "0.117239204",
      "uy": "0.089271026"
    },
    {
      "cx": "1.024937715",
      "cy": "1.541455639",
      "ux": "0.085727565",
      "uy": "0.119854626"
    },
    {
      "cx": "1.675811673",
      "cy": "1.438255014",
      "ux": "0.085727540",
      "uy": "0.119854645"
    },
    {
      "cx": "0.681556294",
      "cy": "1.445058944",
      "ux": "0.117239220",
      "uy": "0.089271005"
    },
    {
      "cx": "1.196392848",
      "cy": "1.781164892",
      "ux": "0.085727566",
      "uy": "0.119854626"
    },
    {
      "cx": "0.495943869",
      "cy": "1.142052702",
      "ux": "0.138153578",
      "uy": "0.051263402"
    },
    {
      "cx": "1.007180388",
      "cy": "0.512792255",
      "ux": "0.014265254",
      "uy": "0.146665776"
    },
    {
      "cx": "1.618440968",
      "cy": "0.500991275",
      "ux": "0.012650741",
      "uy": "0.146813848"
    },
    {
      "cx": "1.818334282",
      "cy": "1.075382532",
      "ux": "0.012650738",
      "uy": "0.146813847"
    },
    {
      "cx": "1.791804036",
      "cy": "0.781860715",
      "ux": "0.012650741",
      "uy": "0.146813848"
    },
    {
      "cx": "1.515697831",
      "cy": "1.130225526",
      "ux": "0.026013933",
      "uy": "0.145043520"
    },
    {
      "cx": "1.488967887",
      "cy": "0.835601236",
      "ux": "0.026013931",
      "uy": "0.145043520"
    },
    {
      "cx": "1.489685324",
      "cy": "1.684623780",
      "ux": "0.085727564",
      "uy": "0.119854627"
    },
    {
      "cx": "1.318230187",
      "cy": "1.444914528",
      "ux": "0.085727566",
      "uy": "0.119854626"
    },
    {
      "cx": "0.538894356",
      "cy": "0.843639100",
      "ux": "0.138153577",
      "uy": "0.051263399"
    },
    {
      "cx": "1.291864971",
      "cy": "0.249386673",
      "ux": "0.147355708",
      "uy": "-0.000801661"
    },
    {
      "cx": "0.713848836",
      "cy": "0.541322762",
      "ux": "0.014265254",
      "uy": "0.146665774"
    },
    {
      "cx": "0.217269355",
      "cy": "0.762853273",
      "ux": "0.146920546",
      "uy": "0.011344622"
    },
    {
      "cx": "0.399529940",
      "cy": "0.481333639",
      "ux": "0.146920547",
      "uy": "0.011344619"
    },
    {
      "cx": "0.696236968",
      "cy": "0.246929222",
      "ux": "0.014265254",
      "uy": "0.146665775"
    },
    {
      "cx": "0.851345658",
      "cy": "1.129379936",
      "ux": "0.147355707",
      "uy": "-0.000801639"
    },
    {
      "cx": "0.176652980",
      "cy": "1.055310165",
      "ux": "0.146920547",
      "uy": "0.011344617"
    },
    {
      "cx": "1.146092780",
      "cy": "1.134340132",
      "ux": "0.147355707",
      "uy": "-0.000801640"
    },
    {
      "cx": "0.996650165",
      "cy": "0.158464227",
      "ux": "0.147355706",
      "uy": "-0.000801682"
    },
    {
      "cx": "1.171219030",
      "cy": "0.839483303",
      "ux": "0.147355706",
      "uy": "-0.000801642"
    }
  ]
}

Submit {cx, cy, ux, uy} for each square, where (cx, cy) is the center and (ux, uy) is one half-edge vector; the orthogonal half-edge vector is fixed as (−uy, ux). Write each number as a decimal string such as "0.4". Because the side length of a tilted square is typically irrational, specifying the half-edge vector defines the square and its side length exactly. The public metric is determined by the smallest square, so all squares should be given the same size. · Verifier v1.0.0

DISCUSSION

Discussion

Discuss strategies, share construction methods, or ask questions. Any signed-in user can post under their public byline and unique #UID. New posts appear after moderation.