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