aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler Wardhaugh <twardhaugh@cap-rx.com>2021-09-24 17:42:33 -0700
committerTyler Wardhaugh <twardhaugh@cap-rx.com>2021-09-24 17:42:33 -0700
commit1e9a0285a035c823552141c8e4cb22d9bd67946c (patch)
tree91290793c600bf39d026ffb84bf132a2574dc474
parentfe8bbd71a8a390ef6faf85ce691d1eea6266ea5b (diff)
downloadperlweeklychallenge-club-1e9a0285a035c823552141c8e4cb22d9bd67946c.tar.gz
perlweeklychallenge-club-1e9a0285a035c823552141c8e4cb22d9bd67946c.tar.bz2
perlweeklychallenge-club-1e9a0285a035c823552141c8e4cb22d9bd67946c.zip
Ch131 (Python): Task 2
-rwxr-xr-xchallenge-131/tyler-wardhaugh/python/ch-2.py42
l---------challenge-131/tyler-wardhaugh/python/ch2.py1
-rwxr-xr-xchallenge-131/tyler-wardhaugh/python/test_ch2.py20
3 files changed, 63 insertions, 0 deletions
diff --git a/challenge-131/tyler-wardhaugh/python/ch-2.py b/challenge-131/tyler-wardhaugh/python/ch-2.py
new file mode 100755
index 0000000000..345fcd3d41
--- /dev/null
+++ b/challenge-131/tyler-wardhaugh/python/ch-2.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+"""Challenge 131, Task 2"""
+
+import sys
+
+
+DEFAULT_INPUT = ['""[]()', '"I like (parens) and the Apple ][+" they said.']
+
+
+def find_pairs(delimiters: str, search_string: str) -> tuple[str, str]:
+ starters = {v for i, v in enumerate(delimiters) if i % 2 == 0}
+ closers = {v for i, v in enumerate(delimiters) if i % 2 == 1}
+
+ rstarters = []
+ rclosers = []
+ for v in search_string:
+ if v in starters:
+ rstarters.append(v)
+ if v in closers:
+ rclosers.append(v)
+
+ return ''.join(rstarters), ''.join(rclosers)
+
+
+
+def main(args: list[str] = None) -> None:
+ """Run the task"""
+ if args is None:
+ args = sys.argv[1:]
+
+ delimiters = None
+ search_string = None
+ if args:
+ delimiters, search_string = args
+ else:
+ delimiters, search_string = DEFAULT_INPUT
+
+ results = find_pairs(delimiters, search_string)
+ print(*results, sep="\n")
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/challenge-131/tyler-wardhaugh/python/ch2.py b/challenge-131/tyler-wardhaugh/python/ch2.py
new file mode 120000
index 0000000000..13a132b99f
--- /dev/null
+++ b/challenge-131/tyler-wardhaugh/python/ch2.py
@@ -0,0 +1 @@
+ch-2.py \ No newline at end of file
diff --git a/challenge-131/tyler-wardhaugh/python/test_ch2.py b/challenge-131/tyler-wardhaugh/python/test_ch2.py
new file mode 100755
index 0000000000..707951e3e4
--- /dev/null
+++ b/challenge-131/tyler-wardhaugh/python/test_ch2.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+"""Test Task 2"""
+
+import unittest
+from ch2 import find_pairs
+
+
+class TestTask2(unittest.TestCase):
+ """Test Task 2"""
+
+ def test_example_cases(self):
+ """Test Task 2"""
+ self.assertEqual(('"(["', '")]"'),
+ find_pairs('""[]()', '"I like (parens) and the Apple ][+" they said.'))
+ self.assertEqual(("/**/<", "/**/>"),
+ find_pairs("**//<>", "/* This is a comment (in some languages) */ <could be a tag>"))
+
+
+if __name__ == '__main__':
+ unittest.main()