aboutsummaryrefslogtreecommitdiff
path: root/challenge-152/lubos-kolouch/java/ch-2.java
diff options
context:
space:
mode:
authorLubos Kolouch <lubos@kolouch.net>2022-02-18 08:36:27 +0100
committerLubos Kolouch <lubos@kolouch.net>2022-02-18 08:36:27 +0100
commitc4a63597ef2a392701b49be29f7615f0cad91cde (patch)
tree6d9983196474a993e9b49bca8549eeeed09d5b45 /challenge-152/lubos-kolouch/java/ch-2.java
parent6397d4bd302e33f07e9c632d9119780643cf8374 (diff)
downloadperlweeklychallenge-club-c4a63597ef2a392701b49be29f7615f0cad91cde.tar.gz
perlweeklychallenge-club-c4a63597ef2a392701b49be29f7615f0cad91cde.tar.bz2
perlweeklychallenge-club-c4a63597ef2a392701b49be29f7615f0cad91cde.zip
Challenge 152 LK Perl Python PHP Java
Diffstat (limited to 'challenge-152/lubos-kolouch/java/ch-2.java')
-rw-r--r--challenge-152/lubos-kolouch/java/ch-2.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/challenge-152/lubos-kolouch/java/ch-2.java b/challenge-152/lubos-kolouch/java/ch-2.java
new file mode 100644
index 0000000000..85e10266cb
--- /dev/null
+++ b/challenge-152/lubos-kolouch/java/ch-2.java
@@ -0,0 +1,58 @@
+class Point {
+ int x, y;
+
+ public Point(int x, int y) {
+ this.x = x;
+ this.y = y;
+ }
+};
+
+class Rectangle {
+ Point left, right;
+
+ public Rectangle(Point left, Point right) {
+ this.left = left;
+ this.right = right;
+ }
+
+ public int get_area() {
+ return Math.abs(this.left.x - this.right.x) *
+ Math.abs(this.left.y - this.right.y);
+ }
+};
+
+class OverlapArea {
+
+ static int get_total_area(Rectangle first, Rectangle second) {
+ int area1 = first.get_area();
+ int area2 = second.get_area();
+
+ // calculate the overlapping area
+ int x_dist = Math.min(first.right.x, second.right.x) -
+ Math.max(first.left.x, second.left.x);
+ int y_dist = Math.min(first.right.y, second.right.y) -
+ Math.max(first.left.y, second.left.y);
+ int areaI = 0;
+ if (x_dist > 0 && y_dist > 0) {
+ areaI = x_dist * y_dist;
+ }
+
+ return (area1 + area2 - areaI);
+ }
+
+ public static void main(String[] args) {
+ Rectangle first = new Rectangle(new Point(-1, 0), new Point(2, 2));
+ Rectangle second = new Rectangle(new Point(0, -1), new Point(4, 4));
+
+ if (get_total_area(first, second) != 22) {
+ System.out.println("Failed test 1");
+ }
+
+ first = new Rectangle(new Point(-3, -1), new Point(1, 3));
+ second = new Rectangle(new Point(-1, -3), new Point(2, 2));
+
+ if (get_total_area(first, second) != 25) {
+ System.out.println("Failed test 2");
+ }
+ }
+}