36 lines
904 B
Python
36 lines
904 B
Python
|
|
||
|
def extract_letters(words:list[str])->set[str]:
|
||
|
""" Extracts unique letters from a list of words
|
||
|
|
||
|
:param words: list of leafs
|
||
|
:return: set of letters
|
||
|
|
||
|
:example:
|
||
|
>>> leafs = ["a", "a*k"]
|
||
|
>>> extract_letters(leafs) == {'a', 'k'}
|
||
|
True
|
||
|
"""
|
||
|
letters = set()
|
||
|
for word in words:
|
||
|
for c in word:
|
||
|
if c.isalpha():
|
||
|
letters.add(c)
|
||
|
return letters
|
||
|
|
||
|
|
||
|
def eval_words(words:list[str], values:dict[str,int]) -> dict[str, int]:
|
||
|
""" Evaluate words replacing letters with values
|
||
|
|
||
|
:param words: list of words
|
||
|
:param values: Dictionary of letters:value
|
||
|
:return: Dictionary of evaluated words from generated values
|
||
|
|
||
|
:example:
|
||
|
>>> leafs = ["a", "a*k"]
|
||
|
>>> generated_values = {"a":2, "k":3}
|
||
|
>>> eval_words(leafs, generated_values)
|
||
|
{'a': 2, 'a*k': 6}
|
||
|
"""
|
||
|
return {word: eval(word, values) for word in words}
|
||
|
|