Question: need def rectangle_contains(self, p): and def region_contains(self, p): import string class Rectangle(object): def init _(self, *intervals, name=None): A rectangle is initialized with a list, whose
need def rectangle_contains(self, p): and def region_contains(self, p):






import string class Rectangle(object): def init _(self, *intervals, name=None): ""A rectangle is initialized with a list, whose elements are either Interval, or a pair of numbers. It would be perhaps cleaner to accept only list of intervals, but specifying rectangles via a list of pairs, with each pair defining an interval, makes for a concise shorthand that will be useful in tests. Every rectangle has a name, used to depict it. If no name is provided, we invent a random one. self.intervals = for i in intervals: self.intervals.append(i if type(i) == Interval else Interval(*i)) # I want each rectangle to have a name. if name is None: self.name = ''.join( random.choices (string.ascii_letters + string.digits, k=8)) else: self.name name def repr _(self): """Function used to print a rectangle. s = "Rectangle + self.name + ": s += repr([(i.x0, i.xl) for i in self.intervals]) return S def clone (self, name=None): "Returns a clone of itself, with a given name. = name or self.name + return Rectangle(*self.intervals, name=name) name def len_(self): """Returns the number of dimensions of the rectangle (not the length of the edges). This is used with _getitem__ below, to get the interval along a dimension.""" return len(self.intervals) def getitem__(self, n): """Returns the interval along the n-th dimension""" return self.intervals[n] def setitem (self, n, i): """Sets the interval along the n-th dimension to be i""" self.intervals[n] i @property def ndims (self): "Returns the number of dimensions of the interval. return len(self.intervals) II II 11 @property def volume (self): return np.prod([i.length for i in self.intervals]) [] ### Membership of a point in a rectangle. def rectangle_contains (self, p): # The point is a tuple with one element per dimension of the rectangle. if len(p) != self.ndims : raise TypeError() ### YOUR CODE HERE Rectangle. contains rectangle_contains [ ] # 5 points: tests for membership. assert (2, 3) in Rectangle( (0, 4), (1, 5)) assert (0, 4) in Rectangle((0, 4), (4, 5)) assert (4, 5) in Rectangle( (0, 4), (4, 5)) assert (0, 0, 0 not in Rectangle((3, 4), (0, 3), (0, 8)) class Region (object): def init (self, *rectangles, name=None): """A region is initialized via a set of rectangles. self.rectangles list(rectangles) if name is None: self.name = '.join( random.choices(string.ascii_letters + string.digits, k=8)) else: self.name = name def draw(self): draw_rectangles (*self.rectangles, prefix=self.name + ":") def or (self, other): " "Union of regions. return Region (* (self.rectangles + other.rectangles), name=self.name + _union_" + other.name) # Let us try. Rectangle((0., 4.), (0., 4.), name="R") t = Rectangle((1.5, 3.5), (1., 5.), name="T") r = regl = Region(r, name="Regl") reg2 = Region(t, name="Reg2") (regi | reg2).draw() ### Membership of a point in a region def region_contains (self, p): ### YOUR CODE HERE Region. __contains = region_contains assert (2, 1) in Region (Rectangle( (0, 2), (0, 3)), Rectangle((4, 6), (5, 8))) assert (2, 1) not in Region (Rectangle((0, 1), (0, 3)), Rectangle((4, 6), (5, 8))) import string class Rectangle(object): def init _(self, *intervals, name=None): ""A rectangle is initialized with a list, whose elements are either Interval, or a pair of numbers. It would be perhaps cleaner to accept only list of intervals, but specifying rectangles via a list of pairs, with each pair defining an interval, makes for a concise shorthand that will be useful in tests. Every rectangle has a name, used to depict it. If no name is provided, we invent a random one. self.intervals = for i in intervals: self.intervals.append(i if type(i) == Interval else Interval(*i)) # I want each rectangle to have a name. if name is None: self.name = ''.join( random.choices (string.ascii_letters + string.digits, k=8)) else: self.name name def repr _(self): """Function used to print a rectangle. s = "Rectangle + self.name + ": s += repr([(i.x0, i.xl) for i in self.intervals]) return S def clone (self, name=None): "Returns a clone of itself, with a given name. = name or self.name + return Rectangle(*self.intervals, name=name) name def len_(self): """Returns the number of dimensions of the rectangle (not the length of the edges). This is used with _getitem__ below, to get the interval along a dimension.""" return len(self.intervals) def getitem__(self, n): """Returns the interval along the n-th dimension""" return self.intervals[n] def setitem (self, n, i): """Sets the interval along the n-th dimension to be i""" self.intervals[n] i @property def ndims (self): "Returns the number of dimensions of the interval. return len(self.intervals) II II 11 @property def volume (self): return np.prod([i.length for i in self.intervals]) [] ### Membership of a point in a rectangle. def rectangle_contains (self, p): # The point is a tuple with one element per dimension of the rectangle. if len(p) != self.ndims : raise TypeError() ### YOUR CODE HERE Rectangle. contains rectangle_contains [ ] # 5 points: tests for membership. assert (2, 3) in Rectangle( (0, 4), (1, 5)) assert (0, 4) in Rectangle((0, 4), (4, 5)) assert (4, 5) in Rectangle( (0, 4), (4, 5)) assert (0, 0, 0 not in Rectangle((3, 4), (0, 3), (0, 8)) class Region (object): def init (self, *rectangles, name=None): """A region is initialized via a set of rectangles. self.rectangles list(rectangles) if name is None: self.name = '.join( random.choices(string.ascii_letters + string.digits, k=8)) else: self.name = name def draw(self): draw_rectangles (*self.rectangles, prefix=self.name + ":") def or (self, other): " "Union of regions. return Region (* (self.rectangles + other.rectangles), name=self.name + _union_" + other.name) # Let us try. Rectangle((0., 4.), (0., 4.), name="R") t = Rectangle((1.5, 3.5), (1., 5.), name="T") r = regl = Region(r, name="Regl") reg2 = Region(t, name="Reg2") (regi | reg2).draw() ### Membership of a point in a region def region_contains (self, p): ### YOUR CODE HERE Region. __contains = region_contains assert (2, 1) in Region (Rectangle( (0, 2), (0, 3)), Rectangle((4, 6), (5, 8))) assert (2, 1) not in Region (Rectangle((0, 1), (0, 3)), Rectangle((4, 6), (5, 8)))
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
