P05 · Packing and covering · Classic · Hard

Tilted equal squares in a circle · n = 14

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 = 14
ObjectiveMaximize the smallest side

Record comparison

the smallest side · Higher is better
RecordValue / intervalAuthor / holderSource
External best known2/5See source attributionErich Friedman ↗
Site recordNo player record yet——

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: starter layout

2y0
0x2
VERIFIED CONSTRUCTION14 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 current arrangement for Tilted equal squares in a circle n = 14
LAYOUT & HISTORY

Starter layout

Inspect the layout, solver notes and record history.

Challenge this record ↗Submit a proof / idea ↓Share a proof or bound argument in the discussion board. Accepted contributions earn proof points.
Record history (3 changes)
  1. Erich FriedmanHuman
    0.379130438→0.4
  2. NUE_13Human
    0.156521606→0.379130438
  3. lirdHuman
    0.142494094→0.156521606
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.

Starter answer

{
  "squares": [
    {
      "cx": "0.600000000",
      "cy": "1.600000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.000000000",
      "cy": "1.600000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.400000000",
      "cy": "1.600000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.400000000",
      "cy": "1.200000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.800000000",
      "cy": "1.200000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.200000000",
      "cy": "1.200000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.600000000",
      "cy": "1.200000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.400000000",
      "cy": "0.800000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.800000000",
      "cy": "0.800000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.200000000",
      "cy": "0.800000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.600000000",
      "cy": "0.800000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.600000000",
      "cy": "0.400000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.000000000",
      "cy": "0.400000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.400000000",
      "cy": "0.400000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    }
  ]
}
Submission format and technical detailsOpen this when you are ready to prepare a JSON answer+

Instance parameters

{
  "n": 14
}

Starter answer

{
  "squares": [
    {
      "cx": "0.600000000",
      "cy": "1.600000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.000000000",
      "cy": "1.600000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.400000000",
      "cy": "1.600000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.400000000",
      "cy": "1.200000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.800000000",
      "cy": "1.200000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.200000000",
      "cy": "1.200000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.600000000",
      "cy": "1.200000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.400000000",
      "cy": "0.800000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.800000000",
      "cy": "0.800000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.200000000",
      "cy": "0.800000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.600000000",
      "cy": "0.800000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.600000000",
      "cy": "0.400000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.000000000",
      "cy": "0.400000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    },
    {
      "cx": "1.400000000",
      "cy": "0.400000000",
      "ux": "0.200000000",
      "uy": "0.000000000"
    }
  ]
}

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.