https://robertmaple.co.uk/coding-as-a-game-of-probabilities/