aboutsummaryrefslogtreecommitdiff
path: root/challenge-152/abigail/bash/ch-2.sh
blob: cdbc6b2d22653311c5685d654ad0d3c76117b558 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/sh

#
# See https://theweeklychallenge.org/blog/perl-weekly-challenge-152
#

#
# Run as: bash ch-2.sh < input-file
#

set -f

while read a_x1 a_y1 a_x2 a_y2 b_x1 b_y1 b_x2 b_y2
do 
      ((a_x_min   =  a_x1 < a_x2 ? a_x1 : a_x2))
      ((a_x_max   =  a_x1 < a_x2 ? a_x2 : a_x1))
      ((a_y_min   =  a_y1 < a_y2 ? a_y1 : a_y2))
      ((a_y_max   =  a_y1 < a_y2 ? a_y2 : a_y1))
      ((b_x_min   =  b_x1 < b_x2 ? b_x1 : b_x2))
      ((b_x_max   =  b_x1 < b_x2 ? b_x2 : b_x1))
      ((b_y_min   =  b_y1 < b_y2 ? b_y1 : b_y2))
      ((b_y_max   =  b_y1 < b_y2 ? b_y2 : b_y1))

      ((a_area    = (a_x_max - a_x_min) * (a_y_max - a_y_min)))
      ((b_area    = (b_x_max - b_x_min) * (b_y_max - b_y_min)))

      ((x_overlap = (a_x_max < b_x_max ? a_x_max : b_x_max) -
                    (a_x_min < b_x_min ? b_x_min : a_x_min)))
      ((y_overlap = (a_y_max < b_y_max ? a_y_max : b_y_max) -
                    (a_y_min < b_y_min ? b_y_min : a_y_min)))

      ((overlap   = (x_overlap < 0 ? 0 : x_overlap) *
                    (y_overlap < 0 ? 0 : y_overlap)))

      echo $((a_area + b_area - overlap))
done