コード例 #1
0
def makeRandomMove(state, n, lastAction) : 
    spacePos = getSpacePosition(state)
    validActions = getValidActions(spacePos, n)
    action = random.choice(validActions)
    
    # Do not go to previous position just yet.
    while True:
        if lastAction == "up":
            if action == "down":
                validActions.remove(action)
                action = random.choice(validActions)
            else:
                break
        elif lastAction == "down":
            if action == "up":
                validActions.remove(action)
                action = random.choice(validActions)
            else:
                break
        elif lastAction == "left":
            if action == "right":
                validActions.remove(action)
                action = random.choice(validActions)
            else:
                break
        elif lastAction == "right":
            if action == "left":
                validActions.remove(action)
                action = random.choice(validActions)
            else:
                break
        else:
            break

    lastAction = action
    
    spacePosition = getSpacePosition(state)
                 
    if action == "up" :
        targetPosition = [spacePosition[0] - 1, spacePosition[1]]
    elif action == "down" :
        targetPosition = [spacePosition[0] + 1, spacePosition[1]]
    elif action == "left" :
        targetPosition = [spacePosition[0], spacePosition[1] - 1]
    elif action == "right" :
        targetPosition = [spacePosition[0], spacePosition[1] + 1]
    else :
        print "ERROR: invalid action"
 
 
    retState = swapValuesInPuzzle(spacePosition, targetPosition, state)	
    return (retState, lastAction)
コード例 #2
0
def makeRandomMove(state, n, lastAction):
    spacePos = getSpacePosition(state)
    validActions = getValidActions(spacePos, n)
    action = random.choice(validActions)

    # Do not go to previous position just yet.
    while True:
        if lastAction == "up":
            if action == "down":
                validActions.remove(action)
                action = random.choice(validActions)
            else:
                break
        elif lastAction == "down":
            if action == "up":
                validActions.remove(action)
                action = random.choice(validActions)
            else:
                break
        elif lastAction == "left":
            if action == "right":
                validActions.remove(action)
                action = random.choice(validActions)
            else:
                break
        elif lastAction == "right":
            if action == "left":
                validActions.remove(action)
                action = random.choice(validActions)
            else:
                break
        else:
            break

    lastAction = action

    spacePosition = getSpacePosition(state)

    if action == "up":
        targetPosition = [spacePosition[0] - 1, spacePosition[1]]
    elif action == "down":
        targetPosition = [spacePosition[0] + 1, spacePosition[1]]
    elif action == "left":
        targetPosition = [spacePosition[0], spacePosition[1] - 1]
    elif action == "right":
        targetPosition = [spacePosition[0], spacePosition[1] + 1]
    else:
        print "ERROR: invalid action"

    retState = swapValuesInPuzzle(spacePosition, targetPosition, state)
    return (retState, lastAction)
コード例 #3
0
ファイル: puzzle.py プロジェクト: jjloyola/ai-collection
    def actions(self, state):
        """Returns the actions that can be executed in the state"""

        return getValidActions(getSpacePosition(state), self.n)
コード例 #4
0
ファイル: puzzle.py プロジェクト: omelkonian/ai-collection
    def actions(self, state):
        """Returns the actions that can be executed in the state"""

        return getValidActions(getSpacePosition(state), self.n)