aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven <steven1170@zoho.eu>2024-02-12 17:26:31 +0000
committerSteven <steven1170@zoho.eu>2024-02-12 17:26:31 +0000
commit2b637ebaee0ee2c82474f2364e5a4cfa0fb7d828 (patch)
treea12d4af83aa4aafb2ef22d31eb95b7ac9f3c6768
parent3f3e0798a68401ce1d67a5e1534f69de16856e82 (diff)
downloadperlweeklychallenge-club-2b637ebaee0ee2c82474f2364e5a4cfa0fb7d828.tar.gz
perlweeklychallenge-club-2b637ebaee0ee2c82474f2364e5a4cfa0fb7d828.tar.bz2
perlweeklychallenge-club-2b637ebaee0ee2c82474f2364e5a4cfa0fb7d828.zip
add solutions week 256 in python
-rw-r--r--challenge-256/steven-wilson/python/ch-1.py27
-rw-r--r--challenge-256/steven-wilson/python/ch-2.py25
2 files changed, 52 insertions, 0 deletions
diff --git a/challenge-256/steven-wilson/python/ch-1.py b/challenge-256/steven-wilson/python/ch-1.py
new file mode 100644
index 0000000000..c36d2c3f51
--- /dev/null
+++ b/challenge-256/steven-wilson/python/ch-1.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+
+
+def maximum_pairs(*words):
+ ''' Given an array of distinct words. 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.
+ >>> maximum_pairs("ab", "de", "ed", "bc")
+ 1
+ >>> maximum_pairs("aa", "ba", "cd", "ed")
+ 0
+ >>> maximum_pairs("uv", "qp", "st", "vu", "mn", "pq")
+ 2
+ '''
+
+ words_set = set(words)
+ if not len(words) == len(words_set):
+ raise AssertionError("Array of words were not distinct")
+
+ sum_pairs = sum(1 for word in words if word[::-1] in words_set)
+ return int(sum_pairs/2)
+
+
+if __name__ == "__main__":
+ import doctest
+
+ doctest.testmod()
diff --git a/challenge-256/steven-wilson/python/ch-2.py b/challenge-256/steven-wilson/python/ch-2.py
new file mode 100644
index 0000000000..dea6e0dc6d
--- /dev/null
+++ b/challenge-256/steven-wilson/python/ch-2.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env python3
+
+from itertools import chain
+
+
+def merge_strings(first, second):
+ ''' Given two strings, 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.
+ >>> merge_strings("abcd", "1234")
+ 'a1b2c3d4'
+ >>> merge_strings("abc", "12345")
+ 'a1b2c345'
+ >>> merge_strings("abcde", "123")
+ 'a1b2c3de'
+ '''
+ return ("".join(chain.from_iterable(zip(first, second))) +
+ first[len(second):] +
+ second[len(first):])
+
+
+if __name__ == "__main__":
+ import doctest
+
+ doctest.testmod()