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

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 wouldbe perhaps cleaner to accept only list of intervals, but specifying rectanglesvia a list of pairs, with each pair defining an interval, makesfor a concise shorthand that will be useful in tests. Every rectangle

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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!