Area of overlapping rectangles
Write a function that takes two rectangles and returns the area of the overlap. Sometimes the overlap is zero!
(overlap-area [{:top-left {:x 0 :y 0}
:bottom-right {:x 10 :y 10}}
{:top-left {:x 5 :y 5}
:bottom-right {:x 15 :y 15}}]) ;=> 25
;; 2 identical rectangles
(overlap-area [{:top-left {:x 0 :y 0}
:bottom-right {:x 1 :y 1}}
{:top-left {:x 0 :y 0}
:bottom-right {:x 1 :y 1}}]) ;=> 25
;; no overlap
(overlap-area [{:top-left {:x 0 :y 0}
:bottom-right {:x 1 :y 1}}
{:top-left {:x 6 :y 6}
:bottom-right {:x 8 :y 8}}]) ;=> 0
;; enclosing rectangles
(overlap-area [{:top-left {:x 0 :y 0}
:bottom-right {:x 1 :y 1}}
{:top-left {:x -1 :y -1}
:bottom-right {:x 2 :y 2}}]) ;=> 1
Thanks to this site for the challenge idea where it is considered Very Hard in JavaScript.
Please submit your solutions as comments on this gist.
Neat challenge...I had to do some serious editing to
In doing so, I realized that simply taking the smallest area wasn't working when dealing with many rectangles, as one has to keep track of the smallest rectangle instead - for lack of better insight: