[SOLVED] Request Assistance with Reindeer Tender


#1

I’ve run out of ideas to try to fix this. When code is run, the three reindeer go to the first three pens, regardless of whether or not one is already occupied.

# This is the array of pen positions
penPositions = [ {"x":20,"y":24}, {"x":28,"y":24}, {"x":36,"y":24}, {"x":44,"y":24}, {"x":52,"y":24} ]

# Use this array to keep track of each pen's reindeer.
penOccupants = [ None, None, None, None, None, ]

# And this array contains our reindeer.
friends = hero.findFriends()

# Figure out which reindeer are already in their pens.
for deerIndex in range(len(friends)):
    reindeer = friends[deerIndex]
    
    # For each position check if it matches a reindeer.
    for penIndex in range(len(penPositions)):
        penPos = penPositions[penIndex]
        
        if penPos.x == reindeer.pos.x and penPos.y == reindeer.pos.y:
            # Put the reindeer in occupants at penIndex
            reindeer = penOccupants[penIndex]
            # Remove the reindeer from the friends array.
            friends[deerIndex] = None
            # break out of the inner loop here:
            break
            pass

# Assign the remaining reindeer to new positions.
for deerIndex in range(len(friends)):
    # If the reindeer is null, use continue:
    if not friends[deerIndex]:
        continue
    # Look for the first pen with nothing.
    for occIndex in range(len(penOccupants)):
        # If there is nothing, the pen is open:
        if not penOccupants[occIndex]:
            # Put the reindeer in the occupants array.
            penOccupants[occIndex] = friends[deerIndex]
            # Command the reindeer to move to the pen.
            hero.command(penOccupants[occIndex], "move", penPositions[occIndex])
            # break out early so we don't reassign:
            break
            pass

#2

Nevermind. I used hero.say to figure it out. Code wasn’t iterating through the current occupants of the pens.