aboutsummaryrefslogtreecommitdiff
path: root/challenge-256
diff options
context:
space:
mode:
authorMichael Manring <michael@manring>2024-02-12 21:56:06 +1100
committerMichael Manring <michael@manring>2024-02-13 00:44:04 +1100
commitcec1c29e0cfc6891cd75225c7b45e375d51076b7 (patch)
tree93e88f23cb3b61aeadf3002f029f974c86f4c802 /challenge-256
parent3f3e0798a68401ce1d67a5e1534f69de16856e82 (diff)
downloadperlweeklychallenge-club-cec1c29e0cfc6891cd75225c7b45e375d51076b7.tar.gz
perlweeklychallenge-club-cec1c29e0cfc6891cd75225c7b45e375d51076b7.tar.bz2
perlweeklychallenge-club-cec1c29e0cfc6891cd75225c7b45e375d51076b7.zip
pwc256 solution in python
Diffstat (limited to 'challenge-256')
-rw-r--r--challenge-256/pokgopun/python/ch-1.py54
-rw-r--r--challenge-256/pokgopun/python/ch-2.py59
2 files changed, 113 insertions, 0 deletions
diff --git a/challenge-256/pokgopun/python/ch-1.py b/challenge-256/pokgopun/python/ch-1.py
new file mode 100644
index 0000000000..09587e16af
--- /dev/null
+++ b/challenge-256/pokgopun/python/ch-1.py
@@ -0,0 +1,54 @@
+### https://theweeklychallenge.org/blog/perl-weekly-challenge-256/
+"""
+
+Task 1: Maximum Pairs
+
+Submitted by: [41]Mohammad Sajid Anwar
+ __________________________________________________________________
+
+ You are given an array of distinct words, @words.
+
+ Write a script to find the maximum pairs in the given array. The words
+ $words[i] and $words[j] can be a pair one is reverse of the other.
+
+Example 1
+
+Input: @words = ("ab", "de", "ed", "bc")
+Output: 1
+
+There is one pair in the given array: "de" and "ed"
+
+Example 2
+
+Input: @words = ("aa", "ba", "cd", "ed")
+Output: 0
+
+Example 3
+
+Input: @words = ("uv", "qp", "st", "vu", "mn", "pq"))
+Output: 2
+
+Task 2: Merge Strings
+"""
+### solution by pokgopun@gmail.com
+
+def maxPair(words: tuple):
+ c = 0
+ for i in range(len(words)-1):
+ for e in words[i+1:]:
+ if tuple(words[i])==tuple(reversed(e)):
+ c += 1
+ return c
+
+import unittest
+
+class TestMaxPair(unittest.TestCase):
+ def test(self):
+ for inpt,otpt in {
+ ("ab", "de", "ed", "bc"): 1,
+ ("aa", "ba", "cd", "ed"): 0,
+ ("uv", "qp", "st", "vu", "mn", "pq"): 2,
+ }.items():
+ self.assertEqual(maxPair(inpt),otpt)
+
+unittest.main()
diff --git a/challenge-256/pokgopun/python/ch-2.py b/challenge-256/pokgopun/python/ch-2.py
new file mode 100644
index 0000000000..e32ae2557a
--- /dev/null
+++ b/challenge-256/pokgopun/python/ch-2.py
@@ -0,0 +1,59 @@
+### https://theweeklychallenge.org/blog/perl-weekly-challenge-256/
+"""
+
+Task 2: Merge Strings
+
+Submitted by: [42]Mohammad Sajid Anwar
+ __________________________________________________________________
+
+ You are given two strings, $str1 and $str2.
+
+ Write a script to merge the given strings by adding in alternative
+ order starting with the first string. If a string is longer than the
+ other then append the remaining at the end.
+
+Example 1
+
+Input: $str1 = "abcd", $str2 = "1234"
+Output: "a1b2c3d4"
+
+Example 2
+
+Input: $str1 = "abc", $str2 = "12345"
+Output: "a1b2c345"
+
+Example 3
+
+Input: $str1 = "abcde", $str2 = "123"
+Output: "a1b2c3de"
+ __________________________________________________________________
+
+ Last date to submit the solution 23:59 (UK Time) Sunday 18th February
+ 2024.
+ __________________________________________________________________
+
+SO WHAT DO YOU THINK ?
+"""
+### solution by pokgopun@gmail.com
+
+from itertools import zip_longest,chain
+
+def mergeStrings(str1, str2):
+ return "".join(
+ chain.from_iterable(
+ zip_longest(str1,str2,fillvalue="")
+ )
+ )
+
+import unittest
+
+class TestMergeStrings(unittest.TestCase):
+ def test(self):
+ for (str1,str2), otpt in {
+ ("abcd","1234"): "a1b2c3d4",
+ ("abc", "12345"): "a1b2c345",
+ ("abcde", "123"): "a1b2c3de",
+ }.items():
+ self.assertEqual(mergeStrings(str1,str2),otpt)
+
+unittest.main()