diff options
Diffstat (limited to 'challenge-187/sgreen/python/ch-1.py')
| -rwxr-xr-x | challenge-187/sgreen/python/ch-1.py | 43 |
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]) |
