aboutsummaryrefslogtreecommitdiff
path: root/challenge-328/sgreen/python
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-328/sgreen/python')
-rwxr-xr-xchallenge-328/sgreen/python/ch-1.py37
-rwxr-xr-xchallenge-328/sgreen/python/ch-2.py29
-rwxr-xr-xchallenge-328/sgreen/python/test.py22
3 files changed, 88 insertions, 0 deletions
diff --git a/challenge-328/sgreen/python/ch-1.py b/challenge-328/sgreen/python/ch-1.py
new file mode 100755
index 0000000000..16e539b9b1
--- /dev/null
+++ b/challenge-328/sgreen/python/ch-1.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python3
+
+import sys
+
+
+def replace_all_questions(input_string: str) -> str:
+ solution = ''
+ for idx, char in enumerate(input_string):
+ if char != '?':
+ solution += char
+ continue
+
+ # Get the surrounding characters
+ letters = []
+ if idx > 0:
+ letters.append(input_string[idx - 1])
+ if idx < len(input_string) - 1:
+ letters.append(input_string[idx + 1])
+
+ # Replace '?' with 'a', 'b', or 'c' based on surrounding characters
+ if 'a' not in letters:
+ solution += 'a'
+ elif 'b' not in letters:
+ solution += 'b'
+ else:
+ solution += 'c'
+
+ return solution
+
+
+def main():
+ result = replace_all_questions(sys.argv[1])
+ print('"' + result + '"')
+
+
+if __name__ == '__main__':
+ main()
diff --git a/challenge-328/sgreen/python/ch-2.py b/challenge-328/sgreen/python/ch-2.py
new file mode 100755
index 0000000000..dff805c0b4
--- /dev/null
+++ b/challenge-328/sgreen/python/ch-2.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python3
+
+import sys
+
+
+def good_string(input_string: str) -> str:
+ solution = input_string
+ while True:
+ for idx in range(0, len(solution)-1):
+ char = solution[idx]
+ # If the next two letters are the same but different case, remove them
+ if ((char.isupper() and solution[idx + 1] == char.lower()) or
+ (char.islower() and solution[idx + 1] == char.upper())):
+ solution = solution[:idx] + solution[idx + 2:]
+ break
+ else:
+ # No pairs were removed
+ break
+
+ return solution
+
+
+def main():
+ result = good_string(sys.argv[1])
+ print('"' + result + '"')
+
+
+if __name__ == '__main__':
+ main()
diff --git a/challenge-328/sgreen/python/test.py b/challenge-328/sgreen/python/test.py
new file mode 100755
index 0000000000..3e9e91f5d9
--- /dev/null
+++ b/challenge-328/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.replace_all_questions('a?z'), 'abz')
+ self.assertEqual(ch_1.replace_all_questions('pe?k'), 'peak')
+ self.assertEqual(ch_1.replace_all_questions('gra?te'), 'grabte')
+ self.assertEqual(ch_1.replace_all_questions('gra?be'), 'gracbe')
+
+ def test_ch_2(self):
+ self.assertEqual(ch_2.good_string('WeEeekly'), 'Weekly')
+ self.assertEqual(ch_2.good_string('abBAdD'), '')
+ self.assertEqual(ch_2.good_string('abc'), 'abc')
+
+
+if __name__ == '__main__':
+ unittest.main()