aboutsummaryrefslogtreecommitdiff
path: root/challenge-187/sgreen/python/ch-1.py
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-187/sgreen/python/ch-1.py')
-rwxr-xr-xchallenge-187/sgreen/python/ch-1.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/challenge-187/sgreen/python/ch-1.py b/challenge-187/sgreen/python/ch-1.py
new file mode 100755
index 0000000000..5aa9ac45b7
--- /dev/null
+++ b/challenge-187/sgreen/python/ch-1.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python3
+
+import sys
+from datetime import date
+
+
+def get_dofy(dt):
+ '''Turn a date in DD-MM format into day of year'''
+ (day, month) = dt.split('-')
+ d = date(2022, int(month), int(day))
+ return int(d.strftime('%j'))
+
+
+def main(array):
+ '''Calculate the days that foo and bar spent together'''
+
+ # Convert the input into the day of year
+ foo_start = get_dofy(array[0])
+ foo_end = get_dofy(array[1])
+ bar_start = get_dofy(array[2])
+ bar_end = get_dofy(array[3])
+
+ # Make sure they arrive before they leave!
+ if foo_end < foo_start:
+ raise ValueError('foo left before they arrived!')
+ if bar_end < bar_start:
+ raise ValueError('bar left before they arrived!')
+
+ # The time they spent together is when the last person arrives and the first one leave.
+ both_start = max(foo_start, bar_start)
+ both_end = min(foo_end, bar_end)
+
+ # Display the days spent together
+ if both_end < both_start:
+ print('0 days')
+ elif both_start == both_end:
+ print('1 day')
+ else:
+ print(f'{both_end - both_start + 1} days')
+
+
+if __name__ == '__main__':
+ main(sys.argv[1:5])