예제 #1
0
def groups_around(pos, radius, occupied_positions):
    rad = range(-radius, radius + 1)
    positions = itertools.product(rad, rad)
    return len([p for p in positions if Utils.add_list(pos, p) in occupied_positions and not p == (0, 0)])
예제 #2
0
def groups_around_info(pos, radius, groups):
    rad = range(-radius, radius + 1)
    positions = itertools.product(rad, rad)
    occupied = [g.position for g in groups]
    g_positions = [Utils.add_list(pos, p) for p in positions if Utils.add_list(pos, p) in occupied and not p == (0, 0)]
    return [g for g in groups if g.position in g_positions]
예제 #3
0
def land_cells_around(world, pos, radius, occupied_positions):
    rad = range(-radius, radius + 1)
    positions = itertools.product(rad, rad)
    filtered = (Utils.add_list(pos, p) for p in positions if inside_world(world, Utils.add_list(pos, p)))
    land = (p for p in filtered if is_land(world, p))
    return (p for p in land if p not in occupied_positions)