diff options
| author | Tyler Wardhaugh <twardhaugh@cap-rx.com> | 2021-09-24 17:42:33 -0700 |
|---|---|---|
| committer | Tyler Wardhaugh <twardhaugh@cap-rx.com> | 2021-09-24 17:42:33 -0700 |
| commit | 1e9a0285a035c823552141c8e4cb22d9bd67946c (patch) | |
| tree | 91290793c600bf39d026ffb84bf132a2574dc474 | |
| parent | fe8bbd71a8a390ef6faf85ce691d1eea6266ea5b (diff) | |
| download | perlweeklychallenge-club-1e9a0285a035c823552141c8e4cb22d9bd67946c.tar.gz perlweeklychallenge-club-1e9a0285a035c823552141c8e4cb22d9bd67946c.tar.bz2 perlweeklychallenge-club-1e9a0285a035c823552141c8e4cb22d9bd67946c.zip | |
Ch131 (Python): Task 2
| -rwxr-xr-x | challenge-131/tyler-wardhaugh/python/ch-2.py | 42 | ||||
| l--------- | challenge-131/tyler-wardhaugh/python/ch2.py | 1 | ||||
| -rwxr-xr-x | challenge-131/tyler-wardhaugh/python/test_ch2.py | 20 |
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() |
