about summary refs log tree commit diff
path: root/scratch
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-11-16T17·17+0000
committerWilliam Carroll <wpcarro@gmail.com>2020-11-16T17·17+0000
commit572fb0fe5f8201376740c84a316407b75e96b1c9 (patch)
tree900ea53f4eca7674b2a705b1acfc752df1f89ff0 /scratch
parent6989c3a91a99d18fbe527fd453e2f1f9a5a1c1af (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.py33
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'))