icfpc-layout-optimizer

Compresses ICFPC 2026 Littleman .man layouts via simulated-annealing placement and exact-length pipe routing.

1|Updated Jul 30, 2026
One-click install
npx skills add https://github.com/d-experts/public-icfpc-2026 --skill icfpc-layout-optimizer-d-experts
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: icfpc-layout-optimizer
Source: https://github.com/d-experts/public-icfpc-2026/tree/main/member-18/.agents/skills/icfpc-layout-optimizer
Command: npx skills add https://github.com/d-experts/public-icfpc-2026 --skill icfpc-layout-optimizer-d-experts

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Shrinking an existing Littleman .man program's footprint without changing its behavior is tedious and error-prone by hand. This Skill automates layout compression by rigidly translating room/display components and re-routing pipes with preserved connection points, orientations, and cell counts, while verifying per-case ticks stay identical when the problem is known. ## Core Features & Use Cases - Simulated-annealing placement: Moves rigid components into smaller target bounding boxes using optimize-layout.mjs with tunable cluster thresholds, seeds, iterations, and restarts. - Exact-length pipe re-routing: Reuses pipes that survive translation and re-routes the rest with equal cell counts, including parity repair and local short-pipe repair passes. - Iterative compression chains: Feeds each successful candidate into the next round, stepping target side down gradually instead of jumping to the theoretical lower bound. - Performance verification: Judges candidates with judge.mjs --no-save --no-submit to confirm suite fingerprints and per-case ticks match the baseline before reporting score reduction. - Use Case: Given a working but oversized .man solution, repeatedly compress it from side 40 down toward the lower bound, verifying each candidate still passes all public cases with identical ticks. ## Quick Start Use the icfpc-layout-optimizer skill to compress this Littleman .man file to a smaller footprint while preserving its structure and per-case ticks.

Frequently Asked Questions about icfpc-layout-optimizer

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I compress a Littleman .man file to a smaller footprint?▼

Run optimize-layout.mjs with a target side 1-5 smaller than the original, using cluster 12, 20000 iterations, and 6 restarts. Feed each successful candidate back as input and lower the target gradually rather than jumping to the lower bound.

How to reduce ICFPC 2026 Littleman score without changing program behavior?▼

Compress the layout with rigid translation of rooms and displays while keeping pipe connection points, orientations, and cell counts fixed. Verify the final candidate with judge.mjs to confirm per-case ticks and suite fingerprint match the baseline exactly.

Does layout compression preserve Littleman program performance?▼

Structural validation alone does not guarantee identical performance. When the problem is known, the candidate is judged against the baseline and only accepted if all public cases pass with identical case names, order, and per-case ticks.

Why does the optimizer report not-found for a target size?▼

A not-found result is not a proof of impossibility; it only means the current search budget failed. Try iterative compression through intermediate candidates, different cluster values like 8, 6, 4, or 2, alternate seeds, or larger iteration and restart budgets.

What cluster-pipe-length value should I use for layout optimization?▼

Start with cluster 12, then lower it to 8, 6, 4, or 2 if the lower bound blocks the target. Lower values increase placement freedom but require more re-routing, which reduces routing success rates; 6 is a good intermediate when 8 stalls on short pipes.

Can the optimizer save or submit compressed solutions automatically?▼

No, saving local bests and official submission are optional integrations performed only when explicitly requested. Compression-only requests never modify .local-judge objects or run submit-all.mjs.