From a7dbbf1044ad31aeb5219aa10f1b06e4703aa641 Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Tue, 26 Jul 2022 01:41:15 +0100 Subject: - Added Perl solution to the task "Last Sunday". --- challenge-175/mohammad-anwar/python/ch-1.py | 49 +++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 challenge-175/mohammad-anwar/python/ch-1.py (limited to 'challenge-175/mohammad-anwar/python') diff --git a/challenge-175/mohammad-anwar/python/ch-1.py b/challenge-175/mohammad-anwar/python/ch-1.py new file mode 100644 index 0000000000..9fee21d1c1 --- /dev/null +++ b/challenge-175/mohammad-anwar/python/ch-1.py @@ -0,0 +1,49 @@ +#!/usr/bin/python3 + +''' + +Week 175: + + https://theweeklychallenge.org/blog/perl-weekly-challenge-175 + +Task #1: Last Sunday + + Write a script to list Last Sunday of every month in the given year. + +''' + +import unittest +from datetime import date, timedelta +from dateutil.relativedelta import relativedelta + +def allLastSundayOf(year): + ls = [] + for month in range(1, 13): + ls.append(lastSundayOf(month, year)) + + return ls + +def lastSundayOf(month, year): + d = date(year, month, 1) + relativedelta(months = 1) - timedelta(days = 1) + dow = d.isoweekday() + + if dow != 7: + d = d - timedelta(days = dow) + + return d.isoformat() + +# +# +# Unit test class + +class TestLastSunday(unittest.TestCase): + def test_example(self): + exp = [ + "2022-01-30", "2022-02-27", "2022-03-27", "2022-04-24", + "2022-05-29", "2022-06-26", "2022-07-31", "2022-08-28", + "2022-09-25", "2022-10-30", "2022-11-27", "2022-12-25", + ] + got = allLastSundayOf(2022) + self.assertEqual(exp, got) + +unittest.main() -- cgit