P05 · Packing and covering · Classic · Hard

Tilted equal squares in a circle · n = 19

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.

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 CONSTRUCTION19 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 = 19, 0.356950988
Current leader

0.356950988

the smallest side

Matches the best known
Answer sourceMilan Kovacic
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": "0.689990833",
      "cy": "1.693345408",
      "ux": "0.178467092",
      "uy": "-0.001731854"
    },
    {
      "cx": "1.414126367",
      "cy": "1.279093406",
      "ux": "0.029306075",
      "uy": "0.176052993"
    },
    {
      "cx": "1.084897678",
      "cy": "0.610171818",
      "ux": "0.029306067",
      "uy": "0.176052994"
    },
    {
      "cx": "1.508266011",
      "cy": "0.450320044",
      "ux": "0.025777156",
      "uy": "0.176604192"
    },
    {
      "cx": "1.360804564",
      "cy": "0.926106679",
      "ux": "0.029306076",
      "uy": "0.176052992"
    },
    {
      "cx": "1.755699290",
      "cy": "1.135671359",
      "ux": "0.025777175",
      "uy": "0.176604189"
    },
    {
      "cx": "1.126700550",
      "cy": "0.227347117",
      "ux": "0.178467092",
      "uy": "-0.001731838"
    },
    {
      "cx": "1.062020276",
      "cy": "1.337705568",
      "ux": "0.029306072",
      "uy": "0.176052993"
    },
    {
      "cx": "1.008697878",
      "cy": "0.984718934",
      "ux": "0.029306073",
      "uy": "0.176052993"
    },
    {
      "cx": "0.702596510",
      "cy": "0.622319395",
      "ux": "0.178467092",
      "uy": "-0.001731837"
    },
    {
      "cx": "1.059013523",
      "cy": "1.803304046",
      "ux": "0.013076196",
      "uy": "0.177995830"
    },
    {
      "cx": "1.409766870",
      "cy": "1.641681859",
      "ux": "0.029306074",
      "uy": "0.176052993"
    },
    {
      "cx": "1.720918094",
      "cy": "0.780014654",
      "ux": "0.025777155",
      "uy": "0.176604192"
    },
    {
      "cx": "0.770095096",
      "cy": "0.264696491",
      "ux": "0.178467092",
      "uy": "-0.001731839"
    },
    {
      "cx": "0.322654995",
      "cy": "1.339942155",
      "ux": "0.178467092",
      "uy": "-0.001731817"
    },
    {
      "cx": "0.345662221",
      "cy": "0.625783048",
      "ux": "0.178467092",
      "uy": "-0.001731836"
    },
    {
      "cx": "0.679589322",
      "cy": "1.336478468",
      "ux": "0.001731852",
      "uy": "0.178467092"
    },
    {
      "cx": "0.204698583",
      "cy": "0.984118865",
      "ux": "0.178467092",
      "uy": "-0.001731833"
    },
    {
      "cx": "0.566150596",
      "cy": "0.980611374",
      "ux": "0.178467092",
      "uy": "-0.001731848"
    }
  ]
}
Submission format and technical detailsOpen this when you are ready to prepare a JSON answer

Instance parameters

{
  "n": 19
}

The current leader's answer

{
  "squares": [
    {
      "cx": "0.689990833",
      "cy": "1.693345408",
      "ux": "0.178467092",
      "uy": "-0.001731854"
    },
    {
      "cx": "1.414126367",
      "cy": "1.279093406",
      "ux": "0.029306075",
      "uy": "0.176052993"
    },
    {
      "cx": "1.084897678",
      "cy": "0.610171818",
      "ux": "0.029306067",
      "uy": "0.176052994"
    },
    {
      "cx": "1.508266011",
      "cy": "0.450320044",
      "ux": "0.025777156",
      "uy": "0.176604192"
    },
    {
      "cx": "1.360804564",
      "cy": "0.926106679",
      "ux": "0.029306076",
      "uy": "0.176052992"
    },
    {
      "cx": "1.755699290",
      "cy": "1.135671359",
      "ux": "0.025777175",
      "uy": "0.176604189"
    },
    {
      "cx": "1.126700550",
      "cy": "0.227347117",
      "ux": "0.178467092",
      "uy": "-0.001731838"
    },
    {
      "cx": "1.062020276",
      "cy": "1.337705568",
      "ux": "0.029306072",
      "uy": "0.176052993"
    },
    {
      "cx": "1.008697878",
      "cy": "0.984718934",
      "ux": "0.029306073",
      "uy": "0.176052993"
    },
    {
      "cx": "0.702596510",
      "cy": "0.622319395",
      "ux": "0.178467092",
      "uy": "-0.001731837"
    },
    {
      "cx": "1.059013523",
      "cy": "1.803304046",
      "ux": "0.013076196",
      "uy": "0.177995830"
    },
    {
      "cx": "1.409766870",
      "cy": "1.641681859",
      "ux": "0.029306074",
      "uy": "0.176052993"
    },
    {
      "cx": "1.720918094",
      "cy": "0.780014654",
      "ux": "0.025777155",
      "uy": "0.176604192"
    },
    {
      "cx": "0.770095096",
      "cy": "0.264696491",
      "ux": "0.178467092",
      "uy": "-0.001731839"
    },
    {
      "cx": "0.322654995",
      "cy": "1.339942155",
      "ux": "0.178467092",
      "uy": "-0.001731817"
    },
    {
      "cx": "0.345662221",
      "cy": "0.625783048",
      "ux": "0.178467092",
      "uy": "-0.001731836"
    },
    {
      "cx": "0.679589322",
      "cy": "1.336478468",
      "ux": "0.001731852",
      "uy": "0.178467092"
    },
    {
      "cx": "0.204698583",
      "cy": "0.984118865",
      "ux": "0.178467092",
      "uy": "-0.001731833"
    },
    {
      "cx": "0.566150596",
      "cy": "0.980611374",
      "ux": "0.178467092",
      "uy": "-0.001731848"
    }
  ]
}

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?