572fb0fe5f
Given an input like "gello" suggest an correction like "hello". This is a proof-of-concept problem for writing a simplistic auto-correction algorithm for a mobile device.
33 lines
763 B
Python
33 lines
763 B
Python
def nearby_chars(c):
|
|
keyboard = [
|
|
"qwertyuiop",
|
|
"asdfghjkl",
|
|
"zxcvbnm",
|
|
]
|
|
|
|
for row in keyboard:
|
|
for i in range(len(row)):
|
|
if row[i] == c:
|
|
result = set()
|
|
if i + 1 < len(row):
|
|
result.add(row[i + 1])
|
|
if i - 1 >= 0:
|
|
result.add(row[i - 1])
|
|
return result
|
|
|
|
def is_word(word):
|
|
words = {
|
|
"hello",
|
|
}
|
|
return word in words
|
|
|
|
def nearby_words(x):
|
|
result = set()
|
|
for i in range(len(x)):
|
|
for c in nearby_chars(x[i]):
|
|
candidate = x[0:i] + c + x[i+1:]
|
|
if is_word(candidate):
|
|
result.add(candidate)
|
|
return result
|
|
|
|
print(nearby_words('gello'))
|