πŸ₯Œ Curling Bank Shot Optimizer

You have the hammer (last shot). The opponent has placed two guards in front of the house and parked a third stone right on the button. The direct line is blocked. To score you must either draw heavy curl around the guards or play a bank-shot takeout off the corner guard. Medium weight + no curl crashes into the centre guard for zero.

🧠 Human Raphson

Throw a manual shot β€” slide, release, compete against the algorithms.

Algorithm

Each throw is animated at ~2Γ— the final-replay speed. At 50 throws that's about a minute of watchable search.

Score0
Outcomeβ€”
Throws tried0
Best so farβ€”
Lineβ€”
Weightβ€”
Rotationβ€”
Sweep releaseβ€”

Leaderboard (this session)

Each row is the best throw a given algorithm found. With the direct line blocked by guards, scoring throws fall into two narrow basins β€” a heavy draw with strong curl that bends around the guards, or a fast bank-shot off the corner guard that ricochets into the house. Population-based methods tend to find both basins; pure-local methods often plateau on one.

AlgorithmScoreThrows usedLineΒ° / Weight / Rot / Sweep
β€” no runs yet β€”

What's happening

A top-down 2-D curling sheet: hack on the left, house on the right. The house has four concentric rings (12-foot, 8-foot, 4-foot, button). Three red opponent stones are already in play β€” two guards in front of the house and one parked on the button. You throw a single yellow stone from the left and choose four release parameters: line, weight, rotation, sweep release.

The lateral curl of the stone is modelled as a force proportional to rotation Γ— (1 / current speed) β€” so slower stones curl more, matching real-ice behaviour. Sweeping reduces friction so the stone stays alive longer; in this model that increases the integrated curl (more time on ice β‰ˆ more lateral drift). The sweep release parameter sets how far down the sheet sweeping continues before full friction resumes β€” so high values give more curl, low values give a flatter line.

Score = 100 Γ— (1 βˆ’ distance_to_button / house_radius) if your stone ends up closer to the button than any opponent stone, else 0. Knocking the parked opponent out of the house is usually necessary to score, since it sits on the button by default.


Physics powered by Matter.js β€” rigid-body collisions, friction. Curl is modelled as an additional lateral force on the stone proportional to its angular velocity and inverse linear speed.

🌱 Save the Planet

If your hyper-parameter searches are heating the Earth, drop this in Cursor or Claude:

Read https://raw.githubusercontent.com/microprediction/humpday/main/SKILL.md
and create a project skill from it.
View SKILL.md β†’