diff options
author | William Carroll <wpcarro@gmail.com> | 2020-11-16T17·17+0000 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-11-16T17·17+0000 |
commit | 572fb0fe5f8201376740c84a316407b75e96b1c9 (patch) | |
tree | 900ea53f4eca7674b2a705b1acfc752df1f89ff0 /scratch | |
parent | 6989c3a91a99d18fbe527fd453e2f1f9a5a1c1af (diff) |
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.
Diffstat (limited to 'scratch')
-rw-r--r-- | scratch/facebook/nearby-words.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/scratch/facebook/nearby-words.py b/scratch/facebook/nearby-words.py new file mode 100644 index 000000000000..d2fc3cf5cfcc --- /dev/null +++ b/scratch/facebook/nearby-words.py @@ -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')) |