Complexities and the callable API
Let's see how well this API 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 ):
self._win= 0
self._loss= 0
self.stage= 1
@property
def win(self): return self._win
@win.setter
def win(self, value):
self._win = value
self.stage= 1
@property
def loss(self): return self._loss
@loss.setter
def loss(self, value):
self._loss = value
self.stage *= 2
def __call__( self ):
return self.stageEach loss doubles the betting by multiplying the stage by two. This goes on until we win and recoup our losses, reach the table limit, or go broke and can no longer place any bets. Casinos prevent this by imposing table limits.
Whenever we win, the betting is reset to the base bet. The stage is reset to have a value of...