Let's see how well this interface design holds up as our processing becomes more complex. The following is the double-up on each loss strategy (also known as the Martingale betting system):
class BettingMartingale(BettingStrategy):
def __init__(self) -> None:
self._win = 0
self._loss = 0
self.stage = 1
@property
def win(self) -> int:
return self._win
@win.setter
def win(self, value: int) -> None:
self._win = value
self.stage = 1
@property
def loss(self) -> int:
return self._loss
@loss.setter
def loss(self, value: int) -> None:
self._loss = value
self.stage *= 2
def __call__(self) -> int:
return self.stage
Each loss doubles the betting by multiplying the stage by two. This goes on until we win and recoup our losses, reach...