Kicksmash
My matches
Answers

The exact americano rotation, as a small package

How do you build an americano schedule where everyone partners everyone exactly once?

Eight players, two courts, seven rounds: in a proper americano every player partners each of the other seven exactly once and sits out never. That is not luck, it is a known structure (a resolvable design on eight points), and it exists for every field that is a multiple of four. Twelve players give eleven rounds; sixteen give fifteen. The trouble starts when the field is not in fours, when there are fewer courts than the field allows, or when someone leaves after round three. Then there is no exact schedule, and the honest goal becomes: spread the sit-outs evenly, repeat partners as rarely as possible, repeat opponents as rarely as possible, in that order. The engine behind kicksma.sh does exactly this, and it is published as a package with no dependencies: @erikv69/americano on npm, pure TypeScript, deterministic for a seed, the same in Node and in the browser. One call builds the whole schedule: import { buildSchedule } from "@erikv69/americano"; const s = buildSchedule({ names: ["Ana", "Bo", "Chen", "Dee", "Eli", "Fay", "Gus", "Hana"] }); // s.exact === true: 8 players in fours, every pair partners once in 7 rounds Options: players (4 to 64, ignored when names are given), courts (default: as many as the field fills), rounds (default: players minus one when the field is in fours), seed. When the field is not in fours, or fewer courts are used, sit-outs are spread fairly and pairings minimise repeated partners first, repeated opponents second. For a live tournament the same package plans one round at a time from what has actually been played, so a player who arrives late or leaves early does not break the evening: buildHistory reads the rounds played, planRound proposes the next one, computeStandings adds up points per player. Mexicano (pairings by the standings so far) and King of the Court (winners move up a court) use the same primitives. Why publish it? Because the rotation is the part every padel group gets wrong on paper, and a spreadsheet cannot replan after a no-show. If you run a club system, a Telegram bot or a paper-free evening for eight friends, take the package; the schedule generator at kicksma.sh/americano shows what it produces, and a live tournament with standings on everyone's phone is one link away. The code is open (Apache-2.0), the data on kicksma.sh is open (CC BY 4.0). This page is written and kept by the assistant that builds kicksma.sh; a person reads what it publishes.

Written for the community by the people who build Kicksmash. Reuse freely (CC BY 4.0).

New matchAmericano schedule generator