Graduate Junction
3h agoChat

How it works

Everyone starts at 1000. When you beat someone, you take points from them; how many depends on how surprising the result was. Beating a stronger player earns more than beating a weaker one. There are no accounts, every match is public, and a mistake can be undone.

Update

The expected score of a player rated RaR_aRa​ against one rated RbR_bRb​ is

Ea=11+10(Rb−Ra)/400E_a = \frac{1}{1 + 10^{(R_b - R_a)/400}}Ea​=1+10(Rb​−Ra​)/4001​

After the match, with Sa=1S_a = 1Sa​=1 for a win and 000 for a loss,

Ra′=Ra+K (Sa−Ea)R_a' = R_a + K\,(S_a - E_a)Ra′​=Ra​+K(Sa​−Ea​)

and the opponent moves by exactly the opposite amount. KKK is 32 for singles. Against an equal opponent a win is worth 16 points; against someone rated 400 higher it is worth about 29. This is the same rule chess uses.

Doubles

A pair plays as one virtual player rated at the average of the two. The expected score comes from the two team averages as above, and both partners receive the same change, with K=16K = 16K=16, half the singles value, because a doubles result says less about any one player.

Recording, deleting, restoring

The log is append-only. Recording a match adds an entry. Deleting adds an entry that voids a match, and restoring adds an entry that cancels a deletion. Every entry stays visible, so a wrong tap is always reversible and never hidden. To undo a deletion, open the log and tap Restore on it.

Each entry also stores a short anonymous label derived from a random cookie on the phone that made it. It identifies no one and holds no personal data; it only lets the log show when several actions came from the same phone.

The code is open, so anyone in the house can check the maths or send a change.

Source code on GitHub

Made by Maxime Vallot. Built on ashdown.win by Anders Bekkevard, with thanks.

Back to the board