Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import copy
- from canibal_state_model import State
- class Transition(object):
- def __init__(self,initialState,misionarNumber,canibalNumber):
- self.initialState = None
- self.misionarNumber = misionarNumber
- self.canibalNumber = canibalNumber
- self.initialState = copy.copy(initialState)
- if self.initialState.boatPosition == 0:
- self.resultState = State(self.initialState.boatCapacity,1-self.initialState.boatPosition,
- self.initialState.misionarsLeft - misionarNumber, self.initialState.canibalsLeft - canibalNumber,
- self.initialState.misionarsRight + misionarNumber, self.initialState.canibalsRight + canibalNumber)
- else:
- self.resultState = State(self.initialState.boatCapacity,1-self.initialState.boatPosition,
- self.initialState.misionarsLeft + misionarNumber, self.initialState.canibalsLeft + canibalNumber,
- self.initialState.misionarsRight - misionarNumber, self.initialState.canibalsRight - canibalNumber)
- def isValidTransition(self):
- if self.misionarNumber + self.canibalNumber > self.resultState.boatCapacity:
- return False
- if self.resultState.misionarsLeft < 0 or self.resultState.misionarsRight < 0:
- return False
- if self.resultState.canibalsLeft < 0 or self.resultState.canibalsRight < 0:
- return False
- if self.resultState.misionarsLeft < self.resultState.canibalsLeft:
- return False
- if self.resultState.misionarsRight < self.resultState.canibalsRight:
- return False
- return True
- def getResultState(self):
- return self.resultState
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement