Ejemplo n.º 1
0
def decide_direction_in_responsive_area(board, my_position, size, safe_directions, responsive_area, halite_thresholds):
    for halite_threshold in halite_thresholds:
        candidate_positions = [pos for pos in responsive_area if board.cells[pos].halite >= halite_threshold]
        if candidate_positions:
            destination = min(candidate_positions, key=lambda x: calculate_distance(x, my_position, size))
            return decide_direction(safe_directions, my_position, destination, size)
    return np.random.choice(safe_directions)
Ejemplo n.º 2
0
def decide_direction_for_rich_position(board, ship, size, safe_directions, percentile_threshold, search_width):
    threshold = np.percentile([cell.halite for cell in board.cells.values()], percentile_threshold)
    search_range = [((ship.position[0] + i) % size, (ship.position[0] + j) % size) for i in range(search_width) for j in range(search_width)]
    target_map = {pos: board.cells[pos].halite for pos in search_range if board.cells[pos].halite >= threshold}
    if target_map:
        destination = min(target_map.keys(), key=lambda x: calculate_distance(x, ship.position, size))
        return decide_direction(safe_directions, ship.position, destination, size)
    return np.random.choice(safe_directions)
Ejemplo n.º 3
0
def decide_direction_for_shipyard(ally_shipyard_ids, my_position, safe_directions, size):
    destination = min(ally_shipyard_ids.keys(), key=lambda x: calculate_distance(x, my_position, size))
    return decide_direction(safe_directions, my_position, destination, size)
Ejemplo n.º 4
0
def attack_nearest_shipyard(my_position, size, safe_directions, enemy_shipyard_positions):
    destination = min(enemy_shipyard_positions, key=lambda x: calculate_distance(x, my_position, size))
    return decide_direction(safe_directions, my_position, destination, size)
Ejemplo n.º 5
0
def attack_heaviest_ship(safe_directions, enemy_ship_positions, my_position, size):
    destination = max(enemy_ship_positions.items(), key=lambda x: x[1])[0]
    return decide_direction(safe_directions, my_position, destination, size)