P18 · Packing and covering · Classic · Weak baseline

Tilted equal squares in the unit square · n = 14

Also known assquares in squarespacking unit squares in a squaretilted square packing

Pack n equal squares inside the unit square, each free to tilt at any angle without overlapping, so that their common side length is as large as possible.

Instancen = 14
ObjectiveMaximize the smallest side

Record comparison

the smallest side · Higher is better
RecordValue / intervalAuthor / holderSource
Proven optimum1/4See source attributionErich Friedman ↗
Site recordNo player record yet——

FinishedA construction reaching the theoretical ceiling is already published, leaving nothing further to improve

Formal definition

  • ContainerThe unit square [0, 1] × [0, 1], with lower-left corner (0, 0) and upper-right corner (1, 1)
  • 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 unit square; 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)
Inspect in editor ↗

Layout shown: starter layout

1y0
0x1
VERIFIED CONSTRUCTION14 squares

Getting a feel for it

How tilted squares save space

When n is not a perfect square, axis-aligned grids leave unused strips of space. Allowing rotations lets subsets of squares tilt into those gaps; for example, the optimal configuration for n = 5 places four axis-aligned squares in the corners and one 45° tilted square in the center.

Proven optima and open frontier

This is the classic square-in-square packing problem (often formulated via the minimum container side s(n)): optimality is proven for n = 3, 4, 6..9, 14..16, and 25 (Göbel, Kearney–Shiu, and others), while the remaining cases are open. Erich Friedman's squares survey tracks the best-known constructions.

Source
The current arrangement for Tilted equal squares in the unit square n = 14
LAYOUT & HISTORY

Starter layout

Inspect the layout, solver notes and record history.

The optimum is proven; no further improvement is possibleSubmit a proof / idea ↓Share a proof or bound argument in the discussion board. Accepted contributions earn proof points.
ANSWER FORMAT

How to write your answer

The container is a square of side 1. Its lower-left corner is the origin (0, 0) and its upper-right corner is (1, 1). Coordinates and vectors share one unit and are written as plain decimals such as "0.1", 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.1". 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.125000000",
      "cy": "0.125000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.375000000",
      "cy": "0.125000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.625000000",
      "cy": "0.125000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.875000000",
      "cy": "0.125000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.125000000",
      "cy": "0.375000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.375000000",
      "cy": "0.375000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.625000000",
      "cy": "0.375000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.875000000",
      "cy": "0.375000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.125000000",
      "cy": "0.625000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.375000000",
      "cy": "0.625000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.625000000",
      "cy": "0.625000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.875000000",
      "cy": "0.625000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.125000000",
      "cy": "0.875000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.375000000",
      "cy": "0.875000000",
      "ux": "0.125000000",
      "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.125000000",
      "cy": "0.125000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.375000000",
      "cy": "0.125000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.625000000",
      "cy": "0.125000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.875000000",
      "cy": "0.125000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.125000000",
      "cy": "0.375000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.375000000",
      "cy": "0.375000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.625000000",
      "cy": "0.375000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.875000000",
      "cy": "0.375000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.125000000",
      "cy": "0.625000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.375000000",
      "cy": "0.625000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.625000000",
      "cy": "0.625000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.875000000",
      "cy": "0.625000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.125000000",
      "cy": "0.875000000",
      "ux": "0.125000000",
      "uy": "0.000000000"
    },
    {
      "cx": "0.375000000",
      "cy": "0.875000000",
      "ux": "0.125000000",
      "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.1". 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.