diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-02-19 11:17:33 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-19 11:17:33 +0000 |
| commit | e6c263efac18c6d3e88b2ec3139e6d53c327466e (patch) | |
| tree | 5eb39549795784bc9f37c1ffaabb856e91ba705a /challenge-152/sgreen/python/ch-2.py | |
| parent | cf38ab6faa9befb1deb2d07f9fd2c473152f8ed3 (diff) | |
| parent | b6862b3f5784018439b080ec6c5faf5ef7642dd9 (diff) | |
| download | perlweeklychallenge-club-e6c263efac18c6d3e88b2ec3139e6d53c327466e.tar.gz perlweeklychallenge-club-e6c263efac18c6d3e88b2ec3139e6d53c327466e.tar.bz2 perlweeklychallenge-club-e6c263efac18c6d3e88b2ec3139e6d53c327466e.zip | |
Merge pull request #5676 from simongreen-net/master
sgreen solutions to challenge 152
Diffstat (limited to 'challenge-152/sgreen/python/ch-2.py')
| -rwxr-xr-x | challenge-152/sgreen/python/ch-2.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/challenge-152/sgreen/python/ch-2.py b/challenge-152/sgreen/python/ch-2.py new file mode 100755 index 0000000000..668bc38018 --- /dev/null +++ b/challenge-152/sgreen/python/ch-2.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 + +import re +import sys + + +class Rectangle: + def __init__(self, x1, y1, x2, y2): + # Ensure x1 is the left side + if (x1 > x2): + (x1, x2) = (x2, x1) + # Ensure y1 is the bottom side + if (y1 > y2): + (y1, y2) = (y2, y1) + + self.x1 = x1 + self.x2 = x2 + self.y1 = y1 + self.y2 = y2 + + def area(self): + # Return the area of the rectangle + return (self.x2-self.x1) * (self.y2 - self.y1) + + +def main(s): + numbers = list(map(int, re.findall(r'-?\d+', s))) + + # Find out the combined area of the two rectangles + rect1 = Rectangle(*numbers[0:4]) + rect2 = Rectangle(*numbers[4:8]) + area = rect1.area() + rect2.area() + + # Calculate any overlap + dx1 = max(rect1.x1, rect2.x1) + dy1 = max(rect1.y1, rect2.y1) + dx2 = min(rect1.x2, rect2.x2) + dy2 = min(rect1.y2, rect2.y2) + + # If there is, remove that from the calculations + if dx1 < dx2 and dy1 < dy2: + d = Rectangle(dx1, dy1, dx2, dy2) + area -= d.area() + + print(area) + + +if __name__ == '__main__': + main(sys.argv[1]) |
