Skip to content

Instantly share code, notes, and snippets.

@BennettRand
Last active July 11, 2017 21:13
Show Gist options
  • Save BennettRand/ea3376a7b17a85ff763b0bcc0053b73b to your computer and use it in GitHub Desktop.
Save BennettRand/ea3376a7b17a85ff763b0bcc0053b73b to your computer and use it in GitHub Desktop.
The answer to my table of elements interview question.
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