diff options
Diffstat (limited to 'challenge-255/steven-wilson/python/ch-1.py')
| -rw-r--r-- | challenge-255/steven-wilson/python/ch-1.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/challenge-255/steven-wilson/python/ch-1.py b/challenge-255/steven-wilson/python/ch-1.py new file mode 100644 index 0000000000..14ffcced45 --- /dev/null +++ b/challenge-255/steven-wilson/python/ch-1.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 + +from collections import Counter + + +def odd_character(original, shuffled): + ''' Given two strings, the second string generated using the shuffled + characters of the first string with an additional character. Function + returns the additional character. + >>> odd_character("Perl", "Preel") + 'e' + >>> odd_character("Weekly", "Weeakly") + 'a' + >>> odd_character("Box", "Boxy") + 'y' + ''' + if not original or not shuffled: + raise ValueError("Both strings must be non-empty.") + + original_counter = Counter(original.casefold()) + shuffled_counter = Counter(shuffled.casefold()) + + difference_counter = shuffled_counter - original_counter + + if not difference_counter or sum(difference_counter.values()) > 1: + raise ValueError("No unique additional character found.") + + return next(difference_counter.elements()) + + +if __name__ == "__main__": + import doctest + + doctest.testmod() |
