Solve "nearby words" function

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.
This commit is contained in:
William Carroll 2020-11-16 17:17:28 +00:00
parent 6989c3a91a
commit 572fb0fe5f

View file

@ -0,0 +1,33 @@
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'))