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:
parent
6989c3a91a
commit
572fb0fe5f
1 changed files with 33 additions and 0 deletions
33
scratch/facebook/nearby-words.py
Normal file
33
scratch/facebook/nearby-words.py
Normal 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'))
|
Loading…
Reference in a new issue