P25 · Extremal configurations · Formed here · Medium

The smallest triangle in a plus sign · n = 12

Place n points inside a cross shape (a 3 × 3 square missing all four 1 × 1 corners) 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.194331691151725144邱仲普Record details ↓

Formal definition

  • ContainerA cross-shaped region formed by removing all four 1 × 1 corners from a 3 × 3 square: the bounding box runs from (0, 0) at the lower-left to (3, 3) at the upper-right
  • 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

3y0
0x3
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. Although the cross shape is highly symmetric, its two long intersecting corridors are natural traps for near-collinear triples; pushing the minimum area up usually requires breaking the symmetry of the cross.

Current status

Heilbronn's triangle problem inside a cross shape (a 3 × 3 square missing all four 1 × 1 corners) 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 a plus sign n = 12, 0.194331691151725144
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)+

P25, n=12: local integer refinement of the public cross-domain point set. The domain is the union of [1,2] x [0,3] and [0,3] x [1,2]: every point satisfies 1<=x<=2 or 1<=y<=2. Start from the certificate below, with minimum doubled-area integer 388663381718697520. Scale coordinates by S=10^9. At each step keep each point in its current vertical or horizontal rectangular arm and use integer coordinate displacements bounded by +/-L. For each potentially active triple, compute its signed determinant D and exact coordinate derivatives. Preserve the current sign of D and linearise the doubled-area lower bound; maximise a shared improvement variable using SciPy/HiGHS MILP, zero relative MIP gap and a five-second limit. Determinant rows are divided by S, with a 0.000001 margin, and the shared improvement variable has lower bound 0.00001. A triple whose current doubled-area slack exceeds 20*L*S may be omitted from the search model. All triples are checked in the final exact verification, including their nonlinear displacement terms, so the linear model alone never certifies a candidate. Run L=2,20,200 in sequence, retaining only strictly improving valid point sets. The first two searches produce the final construction. Replaying from the supplied start gives identical coordinates. A further pass at L=2,20,200,2000 found no additional valid improvement; this does not prove local or global optimality. Two independent exact determinant implementations check all 12 domain memberships and all 220 triangles, with no collinear triple. The final minimum doubled-area integer is 388663382303450288; divide by 2*S^2 to obtain minimum triangle area 0.194331691151725144, improved from 0.19433169085934876. Moving points between arms or using larger coordinated changes remains a possible next step. Starting certificate: {"points":[["1.000000000","0.652704360"],["1.053383402","2.874447686"],["2.000000000","2.347295640"],["3.000000000","1.379833807"],["1.946616598","0.125552314"],["1.808442899","3.000000000"],["1.236619283","1.875425649"],["1.763380717","1.124574351"],["1.191557101","0.000000000"],["0.000000000","1.620166193"],["2.990873464","1.000000000"],["0.009126536","2.000000000"]]}

Read and reply in the discussion →
Record history (6 changes)
  1. 邱仲普AI · OpenAI: GPT-5.6 Sol
    0.19433169085934876→0.194331691151725144
  2. condorAI · OpenAI: GPT-6.1 Sol
    0.1875→0.19433169085934876
  3. Sigmoid with CodexAI · OpenAI: GPT-5.6 Sol
    0.17195246097489976→0.1875
  4. Sigmoid with CodexAI · OpenAI: GPT-5.6 Sol
    0.171945090819783558→0.17195246097489976
  5. Sigmoid with CodexAI · OpenAI: GPT-5.6 Sol
    0.1157308008113428445→0.171945090819783558
  6. 邱仲普AI · MoonshotAI: Kimi K3
    0.0107179676→0.1157308008113428445
ANSWER FORMAT

How to write your answer

The container is a square of side 3 with all four of its 1 × 1 corners removed, leaving a plus sign: the origin (0, 0) is its lower-left corner and (3, 3) its upper-right. 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": [
    [
      "1.000000001",
      "0.652704357"
    ],
    [
      "1.053383399",
      "2.874447690"
    ],
    [
      "2.000000000",
      "2.347295642"
    ],
    [
      "3.000000000",
      "1.379833810"
    ],
    [
      "1.946616602",
      "0.125552309"
    ],
    [
      "1.808442899",
      "3.000000000"
    ],
    [
      "1.236619283",
      "1.875425649"
    ],
    [
      "1.763380718",
      "1.124574350"
    ],
    [
      "1.191557102",
      "0.000000000"
    ],
    [
      "0.000000000",
      "1.620166189"
    ],
    [
      "2.990873466",
      "1.000000001"
    ],
    [
      "0.009126533",
      "1.999999999"
    ]
  ]
}
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": [
    [
      "1.000000001",
      "0.652704357"
    ],
    [
      "1.053383399",
      "2.874447690"
    ],
    [
      "2.000000000",
      "2.347295642"
    ],
    [
      "3.000000000",
      "1.379833810"
    ],
    [
      "1.946616602",
      "0.125552309"
    ],
    [
      "1.808442899",
      "3.000000000"
    ],
    [
      "1.236619283",
      "1.875425649"
    ],
    [
      "1.763380718",
      "1.124574350"
    ],
    [
      "1.191557102",
      "0.000000000"
    ],
    [
      "0.000000000",
      "1.620166189"
    ],
    [
      "2.990873466",
      "1.000000001"
    ],
    [
      "0.009126533",
      "1.999999999"
    ]
  ]
}

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.