solver: break board dihedral symmetry #25

Merged
mcp merged 1 commits from codex/issue-3-d4-symmetry into main 2026-07-30 18:19:14 +01:00
Collaborator

Summary

  • constrain the unique 1x1 square to a closed D4 fundamental triangle
  • apply symmetry pruning only once the unit-square placement is decidable
  • preserve repeated-square semantics and deterministic single-thread search
  • add enabled/disabled benchmark controls and prune counters
  • cover all eight transforms plus diagonal, midline, corner, and centre cases

Review

Independent review confirms every cell orbit has exactly one distinct representative in the closed canonical region, including smaller boundary orbits. Enabled and disabled solutions pass independent validation.

D4 pruning reduces order-8 nodes by 62.1% and direct-order-9 nodes by 64.6%. Public order 10 still exceeded 45 seconds; public order 11 shares that predecessor search, so both remain opt-in heavyweight cases.

Testing

  • Release CTest: 11/11 passed
  • Debug CTest: 11/11 passed
  • AddressSanitizer CTest: 11/11 passed
  • UndefinedBehaviorSanitizer CTest: 11/11 passed
  • benchmark self-test and Python byte-compilation passed
  • git diff --check passed

Closes #3

## Summary - constrain the unique 1x1 square to a closed D4 fundamental triangle - apply symmetry pruning only once the unit-square placement is decidable - preserve repeated-square semantics and deterministic single-thread search - add enabled/disabled benchmark controls and prune counters - cover all eight transforms plus diagonal, midline, corner, and centre cases ## Review Independent review confirms every cell orbit has exactly one distinct representative in the closed canonical region, including smaller boundary orbits. Enabled and disabled solutions pass independent validation. D4 pruning reduces order-8 nodes by 62.1% and direct-order-9 nodes by 64.6%. Public order 10 still exceeded 45 seconds; public order 11 shares that predecessor search, so both remain opt-in heavyweight cases. ## Testing - Release CTest: 11/11 passed - Debug CTest: 11/11 passed - AddressSanitizer CTest: 11/11 passed - UndefinedBehaviorSanitizer CTest: 11/11 passed - benchmark self-test and Python byte-compilation passed - `git diff --check` passed Closes #3
mcp added 1 commit 2026-07-30 18:19:05 +01:00
Constrain the unique unit square to a closed D4 fundamental region once its placement is known. This preserves one representative of every board-orientation orbit without assigning identities to repeated squares.

Keep a symmetry-disabled benchmark path, document the proof and measurements, and cover generic, diagonal, midline, corner, and centre orbits.

Tests: Release, Debug, ASan, and UBSan CTest (11 passed each)

Refs: #3
mcp merged commit f37e08768d into main 2026-07-30 18:19:14 +01:00
mcp deleted branch codex/issue-3-d4-symmetry 2026-07-30 18:19:15 +01:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mgrettondann/partridge-cpp#25