Question: need the code for: def rectangle_eq(self, other): and def rectangle_and(self, other): import string class Rectangle(object): def init _(self, *intervals, name=None): A rectangle is initialized with
need the code for: def rectangle_eq(self, other): and def rectangle_and(self, other):





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) @property def volume (self): return np.prod([i.length for i in self.intervals]) Question 5: Rectangle Equality [] def rectangle_eq(self, other): ### YOUR CODE HERE Rectangle. eq = rectangle_eq # 5 points: tests for rectangle equality. == assert Rectangle((2, 3), (4, 5)) Rectangle( (2, 3), (4, 5)) assert Rectangle((2, 3), (4, 5)) != Rectangle((4, 5), (2, 3)) assert Rectangle((2, 3), (4, 5)) != Rectangle((2, 3), (4, 5), (6, 7)) ### Rectangle intersection def rectangle_and (self, other): if self.ndims != other.ndims : raise TypeError("The rectangles have different dimensions: {} and {}".format( self.ndims, other.ndims ) ) # Challenge: can you write this as a one-liner shorter than this comment is? # There are no bonus points, note. Just for the fun. ### YOUR CODE HERE Rectangle. and = rectangle_and # Let's see how your rectangle intersection works. rl = Rectangle((2, 3), (0, 4)) r2 = Rectangle((0, 4), (1, 3)) draw_rectangles (ri, r2) draw_rectangles (rl & r2) # 10 points: tests for rectangle intersection. rl = Rectangle( (2, 3), (0, 4)) r2 Rectangle((0, 4), (1, 3)) assert rl & r2 Rectangle((2, 3), (1, 3)) == = r1 Rectangle( (2, 3), (0, 4)) r2 = Rectangle((0, 4), (1, 5)) assert ri & r2 Rectangle((2, 3), (1, 4)) == r1 Rectangle((-1, 5), (0, 6)) r2 = Rectangle((0, 4), (-1, 3)) assert ri & r2 == Rectangle((0, 4), (0, 3)) rl = Rectangle((2, 6), (0, 4)) r2 Rectangle((0, 6), (0, 3)) assert rl & r2 Rectangle( (2, 6), (0, 3)) = == 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) @property def volume (self): return np.prod([i.length for i in self.intervals]) Question 5: Rectangle Equality [] def rectangle_eq(self, other): ### YOUR CODE HERE Rectangle. eq = rectangle_eq # 5 points: tests for rectangle equality. == assert Rectangle((2, 3), (4, 5)) Rectangle( (2, 3), (4, 5)) assert Rectangle((2, 3), (4, 5)) != Rectangle((4, 5), (2, 3)) assert Rectangle((2, 3), (4, 5)) != Rectangle((2, 3), (4, 5), (6, 7)) ### Rectangle intersection def rectangle_and (self, other): if self.ndims != other.ndims : raise TypeError("The rectangles have different dimensions: {} and {}".format( self.ndims, other.ndims ) ) # Challenge: can you write this as a one-liner shorter than this comment is? # There are no bonus points, note. Just for the fun. ### YOUR CODE HERE Rectangle. and = rectangle_and # Let's see how your rectangle intersection works. rl = Rectangle((2, 3), (0, 4)) r2 = Rectangle((0, 4), (1, 3)) draw_rectangles (ri, r2) draw_rectangles (rl & r2) # 10 points: tests for rectangle intersection. rl = Rectangle( (2, 3), (0, 4)) r2 Rectangle((0, 4), (1, 3)) assert rl & r2 Rectangle((2, 3), (1, 3)) == = r1 Rectangle( (2, 3), (0, 4)) r2 = Rectangle((0, 4), (1, 5)) assert ri & r2 Rectangle((2, 3), (1, 4)) == r1 Rectangle((-1, 5), (0, 6)) r2 = Rectangle((0, 4), (-1, 3)) assert ri & r2 == Rectangle((0, 4), (0, 3)) rl = Rectangle((2, 6), (0, 4)) r2 Rectangle((0, 6), (0, 3)) assert rl & r2 Rectangle( (2, 6), (0, 3)) = ==
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
