aboutsummaryrefslogtreecommitdiff
path: root/challenge-319/sgreen/python
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-319/sgreen/python')
-rwxr-xr-xchallenge-319/sgreen/python/ch-1.py17
-rwxr-xr-xchallenge-319/sgreen/python/ch-2.py21
-rwxr-xr-xchallenge-319/sgreen/python/test.py22
3 files changed, 60 insertions, 0 deletions
diff --git a/challenge-319/sgreen/python/ch-1.py b/challenge-319/sgreen/python/ch-1.py
new file mode 100755
index 0000000000..f76b60e6e5
--- /dev/null
+++ b/challenge-319/sgreen/python/ch-1.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python3
+
+import re
+import sys
+
+
+def word_count(words: list[str]) -> int:
+ return sum(1 for word in words if re.search('^[aeiou]', word) or re.search('[aeiou]$', word))
+
+
+def main():
+ result = word_count(sys.argv[1:])
+ print(result)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/challenge-319/sgreen/python/ch-2.py b/challenge-319/sgreen/python/ch-2.py
new file mode 100755
index 0000000000..8c0127500c
--- /dev/null
+++ b/challenge-319/sgreen/python/ch-2.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python3
+
+import re
+import sys
+
+
+def minimum_common(list1: list[int], list2: list[int]) -> int:
+ intersection = set(list1) & set(list2)
+ return min(intersection) if intersection else -1
+
+
+def main():
+ # Convert input into integers
+ list1 = map(int, re.split(r'\D+', sys.argv[1]))
+ list2 = map(int, re.split(r'\D+', sys.argv[2]))
+ result = minimum_common(list1, list2)
+ print(result)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/challenge-319/sgreen/python/test.py b/challenge-319/sgreen/python/test.py
new file mode 100755
index 0000000000..7a15abb379
--- /dev/null
+++ b/challenge-319/sgreen/python/test.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+
+import unittest
+ch_1 = __import__('ch-1')
+ch_2 = __import__('ch-2')
+
+
+class TestClass(unittest.TestCase):
+ def test_ch_1(self):
+ self.assertEqual(ch_1.word_count(
+ ["unicode", "xml", "raku", "perl"]), 2)
+ self.assertEqual(ch_1.word_count(["the", "weekly", "challenge"]), 2)
+ self.assertEqual(ch_1.word_count(["perl", "python", "postgres"]), 0)
+
+ def test_ch_2(self):
+ self.assertEqual(ch_2.minimum_common([1, 2, 3, 4], [3, 4, 5, 6]), 3)
+ self.assertEqual(ch_2.minimum_common([1, 2, 3], [2, 4]), 2)
+ self.assertEqual(ch_2.minimum_common([1, 2, 3, 4], [5, 6, 7, 8]), -1)
+
+
+if __name__ == '__main__':
+ unittest.main()