aboutsummaryrefslogtreecommitdiff
path: root/challenge-193/sgreen/python/ch-2.py
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-193/sgreen/python/ch-2.py')
-rwxr-xr-xchallenge-193/sgreen/python/ch-2.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/challenge-193/sgreen/python/ch-2.py b/challenge-193/sgreen/python/ch-2.py
new file mode 100755
index 0000000000..cdc2d772f6
--- /dev/null
+++ b/challenge-193/sgreen/python/ch-2.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python3
+
+import string
+import sys
+
+
+def main(s):
+ # Create letter to number mapping
+ letter_map = {}
+ for k, v in enumerate(string.ascii_lowercase):
+ letter_map[v] = k
+
+ occurrences = {}
+ for word in s:
+ # Calculate the differences between characters, and store this
+ # as a space separated string
+ diff = ' '.join([
+ str(letter_map[word[i]] - letter_map[word[i-1]])
+ for i in range(1, len(word))
+ ])
+
+ # Add the word to the occurrences dict
+ if diff not in occurrences:
+ occurrences[diff] = []
+ occurrences[diff].append(word)
+
+ # Find the unique words
+ unique_words = [v[0] for v in occurrences.values() if len(v) == 1]
+
+ if len(unique_words) > 1:
+ print('More than one unique string!')
+ elif len(unique_words) == 0:
+ print('No unique strings!')
+ else:
+ print(unique_words[0])
+
+
+if __name__ == '__main__':
+ main(sys.argv[1:])