about summary refs log tree commit diff
path: root/scratch/deepmind/part_two/reverse-words.py
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-02-18T14·29+0000
committerWilliam Carroll <wpcarro@gmail.com>2020-02-19T15·01+0000
commitca6bd29ed8eaca616a1bc8ffceb68f00544eab36 (patch)
treecbc43135449a03ee4339f5459649830023e38d82 /scratch/deepmind/part_two/reverse-words.py
parentacf1b8c4f046a36a387af1120f5d0744f95c4aa3 (diff)
Solve bonus part of reverse-words
InterviewCake asks "How would you handle punctuation?". Without precise specs
about what that entails, I'm supporting sentences ending with punctuation.
Diffstat (limited to 'scratch/deepmind/part_two/reverse-words.py')
-rw-r--r--scratch/deepmind/part_two/reverse-words.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/scratch/deepmind/part_two/reverse-words.py b/scratch/deepmind/part_two/reverse-words.py
index d433ac594bcc..033d11244ca7 100644
--- a/scratch/deepmind/part_two/reverse-words.py
+++ b/scratch/deepmind/part_two/reverse-words.py
@@ -10,6 +10,9 @@ def reverse(xs, i, j):
 
 
 def reverse_words(xs):
+    punctuation = None
+    if len(xs) > 0 and xs[-1] in ".?!":
+        punctuation = xs.pop()
     reverse(xs, 0, len(xs) - 1)
     i = 0
     j = i
@@ -19,6 +22,8 @@ def reverse_words(xs):
         reverse(xs, i, j - 1)
         j += 1
         i = j
+    if punctuation:
+        xs.append(punctuation)
 
 
 # Tests
@@ -59,5 +64,11 @@ class Test(unittest.TestCase):
         expected = list('')
         self.assertEqual(message, expected)
 
+    def test_bonus_support_punctuation(self):
+        message = list('yummy is cake bundt chocolate this!')
+        reverse_words(message)
+        expected = list('this chocolate bundt cake is yummy!')
+        self.assertEqual(message, expected)
+
 
 unittest.main(verbosity=2)