diff options
| author | Pok <pok@goyangi> | 2025-11-10 15:30:57 +0700 |
|---|---|---|
| committer | Pok <pok@goyangi> | 2025-11-10 15:30:57 +0700 |
| commit | 9ecb596ea7fb6a88c78a1f336cb9ac174e3f6bdf (patch) | |
| tree | a80729fad1bd68ce0a49df67af02f75518d7aead | |
| parent | d945cc3d48b1284d49aba765341514707f7bee50 (diff) | |
| download | perlweeklychallenge-club-9ecb596ea7fb6a88c78a1f336cb9ac174e3f6bdf.tar.gz perlweeklychallenge-club-9ecb596ea7fb6a88c78a1f336cb9ac174e3f6bdf.tar.bz2 perlweeklychallenge-club-9ecb596ea7fb6a88c78a1f336cb9ac174e3f6bdf.zip | |
pwc347 solution in python
| -rw-r--r-- | challenge-347/pokgopun/python/ch-1.py | 66 | ||||
| -rw-r--r-- | challenge-347/pokgopun/python/ch-2.py | 81 |
2 files changed, 147 insertions, 0 deletions
diff --git a/challenge-347/pokgopun/python/ch-1.py b/challenge-347/pokgopun/python/ch-1.py new file mode 100644 index 0000000000..c115301366 --- /dev/null +++ b/challenge-347/pokgopun/python/ch-1.py @@ -0,0 +1,66 @@ +### https://theweeklychallenge.org/blog/perl-weekly-challenge-347/ +""" + +Task 1: Format Date + +Submitted by: [44]Mohammad Sajid Anwar + __________________________________________________________________ + + You are given a date in the form: 10th Nov 2025. + + Write a script to format the given date in the form: 2025-11-10 using + the set below. +@DAYS = ("1st", "2nd", "3rd", ....., "30th", "31st") +@MONTHS = ("Jan", "Feb", "Mar", ....., "Nov", "Dec") +@YEARS = (1900..2100) + +Example 1 + +Input: $str = "1st Jan 2025" +Output: "2025-01-01" + +Example 2 + +Input: $str = "22nd Feb 2025" +Output: "2025-02-22" + +Example 3 + +Input: $str = "15th Apr 2025" +Output: "2025-04-15" + +Example 4 + +Input: $str = "23rd Oct 2025" +Output: "2025-10-23" + +Example 5 + +Input: $str = "31st Dec 2025" +Output: "2025-12-31" + +Task 2: Format Phone Number +""" +### solution by pokgopun@gmail.com + + +MONTHS = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") + +def fd(string: str) -> str: + d = string.split(" ") + return "{}-{:02d}-{:02d}".format(d[2], MONTHS.index(d[1])+1, int(d[0][:-2])) + +import unittest + +class TestFd(unittest.TestCase): + def test(self): + for inpt, otpt in { + "1st Jan 2025": "2025-01-01", + "22nd Feb 2025": "2025-02-22", + "15th Apr 2025": "2025-04-15", + "23rd Oct 2025": "2025-10-23", + "31st Dec 2025": "2025-12-31", + }.items(): + self.assertEqual(fd(inpt), otpt) + +unittest.main() diff --git a/challenge-347/pokgopun/python/ch-2.py b/challenge-347/pokgopun/python/ch-2.py new file mode 100644 index 0000000000..4854f427e4 --- /dev/null +++ b/challenge-347/pokgopun/python/ch-2.py @@ -0,0 +1,81 @@ +### https://theweeklychallenge.org/blog/perl-weekly-challenge-347/ +""" + +Task 2: Format Phone Number + +Submitted by: [45]Mohammad Sajid Anwar + __________________________________________________________________ + + You are given a phone number as a string containing digits, space and + dash only. + + Write a script to format the given phone number using the below rules: +1. Removing all spaces and dashes +2. Grouping digits into blocks of length 3 from left to right +3. Handling the final digits (4 or fewer) specially: + - 2 digits: one block of length 2 + - 3 digits: one block of length 3 + - 4 digits: two blocks of length 2 +4. Joining all blocks with dashes + +Example 1 + +Input: $phone = "1-23-45-6" +Output: "123-456" + +Example 2 + +Input: $phone = "1234" +Output: "12-34" + +Example 3 + +Input: $phone = "12 345-6789" +Output: "123-456-789" + +Example 4 + +Input: $phone = "123 4567" +Output: "123-45-67" + +Example 5 + +Input: $phone = "123 456-78" +Output: "123-456-78" + __________________________________________________________________ + + Last date to submit the solution 23:59 (UK Time) Sunday 16th November + 2025. + __________________________________________________________________ + +SO WHAT DO YOU THINK ? +""" +### solution by pokgopun@gmail.com + +def fpn(string: str) -> str: + dgt = [e for e in string if e.isdigit()] + #print(dgt) + l = len(dgt) + i = 3 + while i < l: + if l-i == 1: + i -= 1 + dgt[i] = "-" + dgt[i] + i += 3 + #print(dgt) + return "".join(dgt) + +import unittest + +class TestFpn(unittest.TestCase): + def test(self): + for inpt, otpt in { + "1-23-45-6": "123-456", + "1234": "12-34", + "12 345-6789": "123-456-789", + "123 4567": "123-45-67", + "123 456-78": "123-456-78", + }.items(): + self.assertEqual(fpn(inpt),otpt) + +unittest.main() |
