Last active
July 11, 2017 21:13
-
-
Save BennettRand/ea3376a7b17a85ff763b0bcc0053b73b to your computer and use it in GitHub Desktop.
The answer to my table of elements interview question.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class TableOfElements(object): | |
@staticmethod | |
def symbols(word): | |
symbols = set() | |
for i, l in enumerate(word): | |
for l2 in word[i + 1:]: | |
sym = l.upper() + l2.lower() | |
if sym not in symbols: | |
symbols.add(sym) | |
yield sym | |
def __init__(self): | |
self.element_symbols = {} | |
self.reverse_symbols = {} | |
return | |
def add(self, element): | |
if element in self.element_symbols: | |
return False | |
for sym in self.symbols(element): | |
if sym not in self.reverse_symbols: | |
self.element_symbols[element] = sym | |
self.reverse_symbols[sym] = element | |
return True | |
return False | |
def symbol_table(self): | |
return self.element_symbols | |
elements = ['Foo', 'Bar', 'Baz', 'Lorem', 'Ipsum', 'Earth', 'Wind', 'Fire'] | |
toe = TableOfElements() | |
for e in elements: | |
toe.add(e) | |
print toe.element_symbols |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment