Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
with re.findall and generators solution in Speedy category for Moria Doors by Phil15
from re import findall
id_or_inv = lambda x: x if x<=1 else 1/x
look_letters = lambda s1, s2: len(s1 & s2) / len(s1 | s2)
# If you want rounded results, uncomment the next two lines.
#rounded = lambda f: lambda *args: round(f(*args), 3)
#@rounded
def likeness(word1, word2):
return (10 * sum(word1[i]==word2[i] for i in (0,-1))
+ 30 * id_or_inv(len(word2) / len(word1))
+ 50 * look_letters(set(word1), set(word2)))
def find_word(message):
words = findall(r'[a-z]+', message.lower())
sums = ((word1, sum(likeness(word1, word2)
for j, word2 in enumerate(reversed(words)) if j!=i))
for i, word1 in enumerate(reversed(words)))
return max(sums, key=lambda x: x[1])[0]
Sept. 8, 2018
Comments: