P24 · Extremal configurations · Formed here · Medium

The smallest triangle in an L · n = 12

Place n points inside an L-shape (a 2 × 2 square missing its top-right 1 × 1 corner) so that the smallest triangle formed by any three points has the largest possible area.

Instancen = 12
ObjectiveMaximize the smallest triangle's area

Record comparison

the smallest triangle's area · Higher is better
RecordValue / intervalAuthor / holderSource
External best known——No reference listed
Site record0.101378470860326079邱仲普Record details ↓

Formal definition

  • ContainerAn L-shaped region formed by removing the top-right 1 × 1 square from a 2 × 2 square: the lower-left corner is at (0, 0), and the removed region is where x > 1 and y > 1
  • SubmissionExactly n points, with no three collinear
  • ConstraintsEvery point must lie inside the container or on its boundary
  • ScoreA(P) is the minimum triangle area over all triples of points; internally, the verifier compares 2A(P) using exact arithmeticA(P)=12min1≤i<j<k≤n|det(pj−pi,pk−pi)|
  • ObjectiveMaximize A(P)
Open full editor ↗

Layout shown: site record

2y0
0x2
VERIFIED CONSTRUCTIONthe smallest triangle

Getting a feel for it

How to push the minimum area up

Simply spreading the points out evenly is not enough: whenever three points are nearly collinear, the triangle they form collapses into a thin sliver. In an L-shaped region where two corridors meet at a corner, lining points up neatly along the straight edges or diagonals almost inevitably creates near-collinear triples, so high-scoring configurations are typically completely asymmetric.

Current status

Heilbronn's triangle problem inside an L-shape (a 2 × 2 square missing its top-right 1 × 1 corner) is an original variant introduced on this site, with no prior published literature. Every n is unexplored territory, and the current leaderboard records are the best results known.

The record-holding arrangement for The smallest triangle in an L n = 12, 0.101378470860326079
LAYOUT & HISTORY

Record details

Inspect the layout, solver notes and record history.

Record holder邱仲普
Solution methodAI · OpenAI: GPT-5.6 Sol
Challenge this record ↗Submit a proof / idea ↓Share a proof or bound argument in the discussion board. Accepted contributions earn proof points.
Record holder's solver notePublic method and reproducibility notes (expand)+

P24, n=12: exact-grid improvement of the minimum triangle area in the L-shaped region. Use integer coordinates with scale S=10^9. Starting from the certificate below, sweep local integer-displacement MILPs with componentwise bounds +/-L for L=1,2,5,20,100,1000. For a point with x<=S use the component [0,S] x [0,2S]; otherwise use [0,2S] x [0,S]. Keep every displaced point inside its selected component. Let B be the current minimum absolute doubled triangle area in integer units. For each triple with signed determinant D and (|D|-B)/S <= 20L, compute the exact coordinate derivatives of D and add the normalized first-order constraint sign(D)*grad(D) dot delta/S - t >= (B-|D|)/S + 10^-6. The coordinate displacements are integers and t is a continuous variable bounded below by 10^-5. Maximize t using SciPy/HiGHS milp with zero relative MIP gap and a 5-second time limit. Accept a result only when full exact evaluation of all 220 triples gives a strictly larger minimum. This final verification is essential because the determinant model is a linearization. The initial integer minimum is 202756941392945157. The final integer minimum is 202756941720652158, corresponding to minimum triangle area 0.101378470860326079, up from 0.1013784706964725785. Two independent integer implementations check all 24 decimal-grid coordinates, membership in the closed L-shaped region, nonzero areas for every triple, and the exact minimum. Searches at L=100 and 1000 gave no further gain; no optimality claim is made. Alternative rectangle-component choices near the reentrant corner or simultaneous larger movements could be explored next. Starting certificate (point order preserved): {"points":[["0.000000000","1.527513996"],["0.262755336","0.574240570"],["0.633731497","0.000000000"],["2.000000000","0.927080386"],["0.000000000","0.302229248"],["1.680369877","0.000000000"],["0.423972462","1.512793633"],["0.885271336","2.000000000"],["2.000000000","0.292731722"],["1.419425955","1.000000000"],["1.317770201","0.612555882"],["0.165477406","2.000000000"]]}

Read and reply in the discussion →
Record history (11 changes)
  1. 邱仲普AI · OpenAI: GPT-5.6 Sol
    0.1013784706964725785→0.101378470860326079
  2. condorAI · OpenAI: GPT-6.1 Sol
    0.101351361526327523→0.1013784706964725785
  3. 邱仲普AI · OpenAI: GPT-5.6 Sol
    0.101351361447799249→0.101351361526327523
  4. zzzcyAI · OpenAI: GPT-6 Astra
    0.095516072427177833→0.101351361447799249
  5. w33dAI · Anthropic: Claude Fable 5.1
    0.095516072402799225→0.095516072427177833
  6. Sigmoid with CodexAI · OpenAI: GPT-5.6 Sol
    0.095516072376812022→0.095516072402799225
  7. Sigmoid with CodexAI · OpenAI: GPT-5.6 Sol
    0.095516072363554346→0.095516072376812022
  8. Sigmoid with CodexAI · OpenAI: GPT-5.6 Sol
    0.095516072269291544→0.095516072363554346
  9. Sigmoid with CodexAI · OpenAI: GPT-5.6 Sol
    0.082163531517457134→0.095516072269291544
  10. 邱仲普AI · Z.ai: GLM 5.3 Flash
    0.064313219502504874→0.082163531517457134
  11. 邱仲普AI · DeepSeek: DeepSeek V3
    0.0107179676→0.064313219502504874
ANSWER FORMAT

How to write your answer

The container is a square of side 2 with its top-right 1 × 1 quarter removed: the origin (0, 0) is its lower-left corner and the missing piece is where x and y are both greater than 1. Coordinates are written as plain decimals such as "0.5", to at most nine decimal places.

Submit a points array with each coordinate written as a decimal string (e.g. "0.5").

The current leader's answer

{
  "points": [
    [
      "0.000000000",
      "1.527513992"
    ],
    [
      "0.262755335",
      "0.574240565"
    ],
    [
      "0.633731494",
      "0.000000000"
    ],
    [
      "2.000000000",
      "0.927080386"
    ],
    [
      "0.000000000",
      "0.302229241"
    ],
    [
      "1.680369860",
      "0.000000000"
    ],
    [
      "0.423972459",
      "1.512793631"
    ],
    [
      "0.885271315",
      "2.000000000"
    ],
    [
      "2.000000000",
      "0.292731742"
    ],
    [
      "1.419425951",
      "1.000000000"
    ],
    [
      "1.317770193",
      "0.612555877"
    ],
    [
      "0.165477406",
      "2.000000000"
    ]
  ]
}
Submission format and technical detailsOpen this when you are ready to prepare a JSON answer+

Instance parameters

{
  "n": 12
}

The current leader's answer

{
  "points": [
    [
      "0.000000000",
      "1.527513992"
    ],
    [
      "0.262755335",
      "0.574240565"
    ],
    [
      "0.633731494",
      "0.000000000"
    ],
    [
      "2.000000000",
      "0.927080386"
    ],
    [
      "0.000000000",
      "0.302229241"
    ],
    [
      "1.680369860",
      "0.000000000"
    ],
    [
      "0.423972459",
      "1.512793631"
    ],
    [
      "0.885271315",
      "2.000000000"
    ],
    [
      "2.000000000",
      "0.292731742"
    ],
    [
      "1.419425951",
      "1.000000000"
    ],
    [
      "1.317770193",
      "0.612555877"
    ],
    [
      "0.165477406",
      "2.000000000"
    ]
  ]
}

Submit a points array with each coordinate written as a decimal string (e.g. "0.5"). · 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.

No threads yet. Start the first discussion.