P05 · Packing and covering · Classic · Hard

Tilted equal squares in a circle · n = 21

Also known assquares in circlespacking unit squares in a circle

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 = 21
ObjectiveMaximize the smallest side
Best known, unproven√34/17published value in this metric 0.34299717exhibited site certificate 0.342997158As printed in the source (container radius for unit squares): √34 / 2 = 2.915+r = √34 / 2, giving continuous score 4/34; found by Erich Friedman in 1997. The site digitised the squares' positions and orientations from the public figure, solved that fixed separating-axis structure and repaired it inward to a nine-decimal certificate scoring 0.117647050456019828; 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 CONSTRUCTION21 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 up to n = 35 come from Friedman's squares-in-circles survey (many contributors since 1997), none of them proven; n = 36–40 have no public record at all.

Source
The record-holding arrangement for Tilted equal squares in a circle n = 21, 0.342997158
Current leader

0.342997158

the smallest side

Answer sourceErich Friedman
Solution methodPublished reference construction
Challenge this record Submit a proof / idea Share a proof or idea in the discussion. Accepted contributions can earn proof points.
Record holder's solver noteNo solver note yet (expand)

The record holder has not shared a solver note yet.

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": "1.006568186",
      "cy": "1.690731137",
      "ux": "0.171490826",
      "uy": "-0.001630710"
    },
    {
      "cx": "0.312285984",
      "cy": "1.006539493",
      "ux": "0.171490826",
      "uy": "-0.001630717"
    },
    {
      "cx": "0.999935306",
      "cy": "0.993196327",
      "ux": "0.171490826",
      "uy": "-0.001630711"
    },
    {
      "cx": "1.692370320",
      "cy": "0.993416239",
      "ux": "0.171490826",
      "uy": "-0.001630710"
    },
    {
      "cx": "0.993403607",
      "cy": "0.306302566",
      "ux": "0.171490826",
      "uy": "-0.001630717"
    },
    {
      "cx": "0.663541185",
      "cy": "1.689224754",
      "ux": "0.171490826",
      "uy": "-0.001630712"
    },
    {
      "cx": "1.349504507",
      "cy": "1.682701908",
      "ux": "0.171490826",
      "uy": "-0.001630711"
    },
    {
      "cx": "0.317298090",
      "cy": "1.349504509",
      "ux": "0.171490826",
      "uy": "-0.001630718"
    },
    {
      "cx": "1.003205695",
      "cy": "1.337121088",
      "ux": "0.171490826",
      "uy": "-0.001630711"
    },
    {
      "cx": "1.689224748",
      "cy": "1.336458827",
      "ux": "0.171490826",
      "uy": "-0.001630709"
    },
    {
      "cx": "0.657018339",
      "cy": "1.003261424",
      "ux": "0.171490826",
      "uy": "-0.001630711"
    },
    {
      "cx": "1.349102866",
      "cy": "0.996680377",
      "ux": "0.171490826",
      "uy": "-0.001630710"
    },
    {
      "cx": "0.310775250",
      "cy": "0.663541180",
      "ux": "0.171490826",
      "uy": "-0.001630714"
    },
    {
      "cx": "0.996669870",
      "cy": "0.649791972",
      "ux": "0.171490826",
      "uy": "-0.001630717"
    },
    {
      "cx": "1.682701911",
      "cy": "0.650495497",
      "ux": "0.171490826",
      "uy": "-0.001630714"
    },
    {
      "cx": "0.650495486",
      "cy": "0.317298095",
      "ux": "0.171490826",
      "uy": "-0.001630715"
    },
    {
      "cx": "1.336458814",
      "cy": "0.310775249",
      "ux": "0.171490826",
      "uy": "-0.001630719"
    },
    {
      "cx": "0.660279758",
      "cy": "1.346243089",
      "ux": "0.171490826",
      "uy": "-0.001630714"
    },
    {
      "cx": "1.346243085",
      "cy": "1.339720246",
      "ux": "0.171490826",
      "uy": "-0.001630710"
    },
    {
      "cx": "0.653756916",
      "cy": "0.660279762",
      "ux": "0.171490826",
      "uy": "-0.001630711"
    },
    {
      "cx": "1.339720251",
      "cy": "0.653756916",
      "ux": "0.171490826",
      "uy": "-0.001630715"
    }
  ]
}
Submission format and technical detailsOpen this when you are ready to prepare a JSON answer

Instance parameters

{
  "n": 21
}

The current leader's answer

{
  "squares": [
    {
      "cx": "1.006568186",
      "cy": "1.690731137",
      "ux": "0.171490826",
      "uy": "-0.001630710"
    },
    {
      "cx": "0.312285984",
      "cy": "1.006539493",
      "ux": "0.171490826",
      "uy": "-0.001630717"
    },
    {
      "cx": "0.999935306",
      "cy": "0.993196327",
      "ux": "0.171490826",
      "uy": "-0.001630711"
    },
    {
      "cx": "1.692370320",
      "cy": "0.993416239",
      "ux": "0.171490826",
      "uy": "-0.001630710"
    },
    {
      "cx": "0.993403607",
      "cy": "0.306302566",
      "ux": "0.171490826",
      "uy": "-0.001630717"
    },
    {
      "cx": "0.663541185",
      "cy": "1.689224754",
      "ux": "0.171490826",
      "uy": "-0.001630712"
    },
    {
      "cx": "1.349504507",
      "cy": "1.682701908",
      "ux": "0.171490826",
      "uy": "-0.001630711"
    },
    {
      "cx": "0.317298090",
      "cy": "1.349504509",
      "ux": "0.171490826",
      "uy": "-0.001630718"
    },
    {
      "cx": "1.003205695",
      "cy": "1.337121088",
      "ux": "0.171490826",
      "uy": "-0.001630711"
    },
    {
      "cx": "1.689224748",
      "cy": "1.336458827",
      "ux": "0.171490826",
      "uy": "-0.001630709"
    },
    {
      "cx": "0.657018339",
      "cy": "1.003261424",
      "ux": "0.171490826",
      "uy": "-0.001630711"
    },
    {
      "cx": "1.349102866",
      "cy": "0.996680377",
      "ux": "0.171490826",
      "uy": "-0.001630710"
    },
    {
      "cx": "0.310775250",
      "cy": "0.663541180",
      "ux": "0.171490826",
      "uy": "-0.001630714"
    },
    {
      "cx": "0.996669870",
      "cy": "0.649791972",
      "ux": "0.171490826",
      "uy": "-0.001630717"
    },
    {
      "cx": "1.682701911",
      "cy": "0.650495497",
      "ux": "0.171490826",
      "uy": "-0.001630714"
    },
    {
      "cx": "0.650495486",
      "cy": "0.317298095",
      "ux": "0.171490826",
      "uy": "-0.001630715"
    },
    {
      "cx": "1.336458814",
      "cy": "0.310775249",
      "ux": "0.171490826",
      "uy": "-0.001630719"
    },
    {
      "cx": "0.660279758",
      "cy": "1.346243089",
      "ux": "0.171490826",
      "uy": "-0.001630714"
    },
    {
      "cx": "1.346243085",
      "cy": "1.339720246",
      "ux": "0.171490826",
      "uy": "-0.001630710"
    },
    {
      "cx": "0.653756916",
      "cy": "0.660279762",
      "ux": "0.171490826",
      "uy": "-0.001630711"
    },
    {
      "cx": "1.339720251",
      "cy": "0.653756916",
      "ux": "0.171490826",
      "uy": "-0.001630715"
    }
  ]
}

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

DISCUSSION

Discussion

Talk strategy, share methods, ask why you are stuck. Every signed-in user can post. Posts carry your public byline, the same name your records use; the #number after it is the account's signup ordinal, so a name cannot be worn by someone else. New posts appear after an automated review.

No threads yet. Be the first to talk about this problem?