aboutsummaryrefslogtreecommitdiff
path: root/challenge-254/steven-wilson/python/ch-02.py
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-254/steven-wilson/python/ch-02.py')
-rw-r--r--challenge-254/steven-wilson/python/ch-02.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/challenge-254/steven-wilson/python/ch-02.py b/challenge-254/steven-wilson/python/ch-02.py
new file mode 100644
index 0000000000..9a9fc09f62
--- /dev/null
+++ b/challenge-254/steven-wilson/python/ch-02.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python3
+
+
+VOWELS = set('aeiou')
+
+
+def reverse_vowels(string):
+ ''' Given a string reverse all the vowels (a, e, i, o, u) and return
+ resulting string.
+
+ >>> reverse_vowels('Raku')
+ 'Ruka'
+ >>> reverse_vowels('Perl')
+ 'Perl'
+ >>> reverse_vowels('Julia')
+ 'Jaliu'
+ >>> reverse_vowels('Uiua')
+ 'Auiu'
+ '''
+ string = string.lower()
+ indexes = []
+ cs = []
+ for index, c in enumerate(string):
+ if c in VOWELS:
+ indexes.append(index)
+ cs.append(c)
+
+ if len(indexes) < 2:
+ return string.title()
+ else:
+ characters = list(string)
+ for index in indexes:
+ characters[index] = cs.pop()
+ return ''.join(characters).title()
+
+
+if __name__ == "__main__":
+ import doctest
+
+ doctest.testmod()