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)])
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]
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)