diff options
| author | 冯昶 <fengchang@novel-supertv.com> | 2022-10-24 17:44:04 +0800 |
|---|---|---|
| committer | 冯昶 <fengchang@novel-supertv.com> | 2022-10-24 17:44:04 +0800 |
| commit | 7783ecb7dad2ae5ea3d3022a13e3901c196c4154 (patch) | |
| tree | fa408d0b19c541602d81799c8a13eea61df2cb8f /challenge-187/mohammad-anwar/python/ch-1.py | |
| parent | a406c6935f88c7afa04a707a2611ebe4fe4eadae (diff) | |
| parent | bb06570f6b1634ca14bfd08927f3bfc6c052c494 (diff) | |
| download | perlweeklychallenge-club-7783ecb7dad2ae5ea3d3022a13e3901c196c4154.tar.gz perlweeklychallenge-club-7783ecb7dad2ae5ea3d3022a13e3901c196c4154.tar.bz2 perlweeklychallenge-club-7783ecb7dad2ae5ea3d3022a13e3901c196c4154.zip | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-187/mohammad-anwar/python/ch-1.py')
| -rw-r--r-- | challenge-187/mohammad-anwar/python/ch-1.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/challenge-187/mohammad-anwar/python/ch-1.py b/challenge-187/mohammad-anwar/python/ch-1.py new file mode 100644 index 0000000000..7af49bbaad --- /dev/null +++ b/challenge-187/mohammad-anwar/python/ch-1.py @@ -0,0 +1,65 @@ +#!/usr/bin/python3 + +''' + +Week 187: + + https://theweeklychallenge.org/blog/perl-weekly-challenge-187 + +Task #1: Days Together + + Two friends, Foo and Bar gone on holidays seperately to the same + city. You are given their schedule i.e. start date and end date. + + To keep the task simple, the date is in the form 'DD-MM' and all + dates belong to the same calendar year i.e. between '01-01' and + '31-12'. + + Also the year is non-leap year and both dates are inclusive. + +''' + +import unittest +from datetime import date, timedelta + +def _date(dateStr) -> date: + (day, month) = dateStr.split("-") + return date(2022, int(month), int(day)) + +def _days_together(fromDate, toDate, _toDate) -> int: + if toDate > _toDate: + toDate = _toDate + + delta = toDate - fromDate + return delta.days + 1 + +def daysTogether(sd1, ed1, sd2, ed2) -> int: + _sd1 = _date(sd1) + _ed1 = _date(ed1) + _sd2 = _date(sd2) + _ed2 = _date(ed2) + + days = 0 + + if _ed1 < _sd2: + return days + + if _sd2 <= _sd1: + days = _days_together(_sd1, _ed1, _ed2) + elif _sd2 <= _ed2: + days = _days_together(_sd2, _ed1, _ed2) + + return days + +# +# +# Unit test class + +class TestDaysTogether(unittest.TestCase): + def test_daysTogether(self): + self.assertEqual(daysTogether('12-01','20-01','15-01','18-01'), 4) + self.assertEqual(daysTogether('02-03','12-03','13-03','14-03'), 0) + self.assertEqual(daysTogether('02-03','12-03','11-03','15-03'), 2) + self.assertEqual(daysTogether('30-03','05-04','28-03','02-04'), 4) + +unittest.main() |
