aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPok <pok@goyangi>2025-11-10 15:30:57 +0700
committerPok <pok@goyangi>2025-11-10 15:30:57 +0700
commit9ecb596ea7fb6a88c78a1f336cb9ac174e3f6bdf (patch)
treea80729fad1bd68ce0a49df67af02f75518d7aead
parentd945cc3d48b1284d49aba765341514707f7bee50 (diff)
downloadperlweeklychallenge-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.py66
-rw-r--r--challenge-347/pokgopun/python/ch-2.py81
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()