P05 · Packing and covering · Classic

Tilted equal squares in a circle · n = 12

Place n freely rotatable squares of one common side inside a circle of radius 1, none overlapping, making that side as large as possible.

Instancen = 12
ObjectiveMaximize the smallest side
Best known, unproven√5/5the best a certificate can hold 0.447213595r = √5, so the score is 1/5; found by Erich Friedman in 1997, optimality openSubmissions are decimal, so a record chases the writable value. If you believe you have the exact closed form, send it in. minmaxarena.com@gmail.com

Formal definition

  • ContainerA circle of radius 1 centred at (1, 1), so both coordinates run from 0 to 2
  • SubmissionEach square is {cx, cy, ux, uy}: a centre plus one half-edge vector, the other fixed as (−uy, ux)
  • ConstraintsEvery square tilts freely; all lie inside the container; no two overlap in their interiors, touching allowed. Only the smallest square is scored, so unequal sides gain nothing
  • ObjectiveMake the common side as large as possible; compared internally by its square, exactly
Open the full editor
2y0
0x2
VERIFIED CONSTRUCTION12 squares

Getting a feel for it

Where the room for improvement is

A circular container has no corners: straight sides cannot hug the arc, so optima are almost always tilted, squares bracing corner against corner.

Where the frontier is

n = 4 is proven; the other best known values come from Friedman's squares-in-circles survey (many contributors since 1997), none of them proven.

Source
Current leader

0.166090954

the smallest side

Record holderFounding benchmark
Solution methodHuman
Challenge this record
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} per square: a centre plus one half-edge vector, the other half-edge being (-uy,ux). Write every number as a decimal string such as "0.4", every angle is free, and the smallest square is the one scored, so writing them equal is the winning move. The side is almost always irrational, so what you write is the half-edge vector and the side follows from it exactly.

The current leader's answer

{
  "squares": [
    {
      "cx": "0.086499753",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "0.252590707",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "0.418681661",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "0.584772615",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "0.750863569",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "0.916954523",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "1.083045477",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "1.249136431",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "1.415227385",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "1.581318339",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "1.747409293",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "1.913500247",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    }
  ]
}
Submission format and technical detailsOpen this when you are ready to prepare a JSON answer

Instance parameters

{
  "n": 12
}

The current leader's answer

{
  "squares": [
    {
      "cx": "0.086499753",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "0.252590707",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "0.418681661",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "0.584772615",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "0.750863569",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "0.916954523",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "1.083045477",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "1.249136431",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "1.415227385",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "1.581318339",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "1.747409293",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    },
    {
      "cx": "1.913500247",
      "cy": "1",
      "ux": "0.083045477",
      "uy": "0"
    }
  ]
}

Submit {cx,cy,ux,uy} per square: a centre plus one half-edge vector, the other half-edge being (-uy,ux). Write every number as a decimal string such as "0.4", every angle is free, and the smallest square is the one scored, so writing them equal is the winning move. The side is almost always irrational, so what you write is the half-edge vector and the side follows from it exactly. · Verifier v1.0.0