littlefinger
BAN USERdef find_all_words(prefix, current_alphabet, more_alphabets):
next_alphabet = more_alphabets[0] if len(more_alphabets) >= 1 else []
words = set([prefix]) if not current_alphabet else set()
for letter in current_alphabet:
words |= find_all_words(prefix + letter, next_alphabet,
more_alphabets[1:])
return words
if __name__ == '__main__':
num_pad = {2: ['a', 'b', 'c'], 3: ['d', 'e', 'f'],
4: ['g', 'h', 'i'], 5: ['j', 'k', 'l'],
6: ['m', 'n', 'o'], 7: ['p', 'q', 'r', 's'],
8: ['t', 'u', 'v'], 9: ['w', 'y', 'z']}
phone_number = '7899533'
alphabets = [num_pad[int(num)] for num in phone_number]
# word list from github
real_words = set(open('words.txt', 'r').read().splitlines())
created_words = find_all_words('', alphabets[0], alphabets[1:])
print [word for word in created_words if word in real_words]
- littlefinger November 26, 2016