import utils from __builtins__ import * # Plants an object at a specified location and repositions back to the original # position while verifying the placement. # # Args: # width (int): The width of the object to be planted. # height (int): The height of the object to be planted. def plant_and_verify(width, height): x = get_pos_x() y = get_pos_y() place(width, height) utils.move_to(x, y) coords = verify(width, width) while len(coords) > 0: coords = verify_coordinates(coords) # Places pumpkins in a grid pattern. # This function uses the `utils.plant_grid` method to populate a grid of the specified # width and height with pumpkins. The grid is filled with pumpkins at a density of # 75%, and the function ensures that the grid is symmetric by planting pumpkins in # mirrored positions. # Parameters: # width (int): The number of columns in the grid. # height (int): The number of rows in the grid. def place(width, height): utils.plant_grid(width, height, [Entities.Pumpkin], 0.75, True) # Verifies and replants pumpkins within a specified area. # # This function iterates through a grid of the specified width and height, checking # for dead pumpkins, and attempting to replant them where necessary. The function # navigates the grid row by row, altering its direction after each row. The traversal # follows a serpentine pattern to ensure proper coverage. It returns a boolean value # indicating whether any pumpkins were replanted. # # Parameters: # width (int): The number of columns in the grid. # height (int): The number of rows in the grid. # # Returns: # list: a list of tuples of coordinates where pumpkins were replanted. def verify(width, height): result = [] others = {East: West, West: East} sideDir = East for row in range(height): for col in range(width): if get_entity_type() == Entities.Dead_Pumpkin: # ~20% of pumpkins die, we just replant plant(Entities.Pumpkin) result.append((get_pos_x(), get_pos_y())) # if it's not the last pass, then move if col < width - 1: move(sideDir) if row < height - 1: sideDir = others[sideDir] move(North) return result # Verifies that none of the provided coordinates are dead pumpkins. # # The function iterates through all coords and will check to see if any tiles are dead pumpkins, # if so it will replant the pumpkin and note this coordinate down. # # Parameters: # coords (list): A list of tuples of coordinates to check. # # Returns: # list: a list of tuples of coordinates where pumpkins were replanted. def verify_coordinates(coords): result = [] for coord in coords: utils.move_to(coord[0], coord[1]) if get_entity_type() == Entities.Dead_Pumpkin: plant(Entities.Pumpkin) result.append(coord) return result