def generate_successors(self, current_node): successors = [] for m_index in range(0, 3): for c_index in range(0, 3): # check if boat can fit the pair if 0 < m_index + c_index <= 2: # boat on left side if not current_node.get_boat_state(): state = State(current_node.get_m_number_left() - m_index , current_node.get_c_number_left() - c_index , current_node.get_m_number_right() + m_index , current_node.get_c_number_right() + c_index , not current_node.get_boat_state() , current_node , current_node.get_state_depth() + 1) else: state = State(current_node.get_m_number_left() + m_index , current_node.get_c_number_left() + c_index , current_node.get_m_number_right() - m_index , current_node.get_c_number_right() - c_index , not current_node.get_boat_state() , current_node , current_node.get_state_depth() + 1) if state.is_valid() and not self.check_visited(state) and not self.check_scheduled(state): successors.append(state) return successors
def generate_successors(self, current_node): successors = [] # generates only boat size pairs of persons for m_index in range(0, 3): for c_index in range(0, 3): # check if boat can fit the pair if 0 < m_index + c_index <= 2: # boat on left side if not current_node.get_boat_state(): state = State(current_node.get_m_number_left() - m_index , current_node.get_c_number_left() - c_index , current_node.get_m_number_right() + m_index , current_node.get_c_number_right() + c_index , not current_node.get_boat_state() , current_node , current_node.get_state_depth() + 1) # boat on right side else: state = State(current_node.get_m_number_left() + m_index , current_node.get_c_number_left() + c_index , current_node.get_m_number_right() - m_index , current_node.get_c_number_right() - c_index , not current_node.get_boat_state() , current_node , current_node.get_state_depth() + 1) if state.is_valid() and state not in self.__visited: successors.append(state) return successors