The game of tennis has a rather unusual scoring system. It can be simplified to the following rule: "If a player has at least four points, and is at least two points ahead of his opponent, that player wins the game." For example, 4-1 and 6-4 are winning scores, whereas 3-0 and 5-4 are not.
We can generalize this class of point systems by introducing two variables, **pointsToWin** and **pointsToWinBy**. The new rule is "If a player has at least **pointsToWin** points, and is at least **pointsToWinBy** points ahead of his opponent, that player wins the game." For example, the common practice of taking "best two out of three" falls into this class, where **pointsToWin** = 2 and **pointsToWinBy** = 1.
You would like to know, given a particular point system and the skills of two players, the probability of an upset. An "upset" is defined as a game where a player of lesser skill beats a player of greater skill. Given an int **skill**, representing the percent likelihood that the worse player beats the better player on any particular turn, along with **pointsToWin** and **pointsToWinBy**, you should return a double between 0 and 1 indicating the odds of an upset. |