about summary refs log tree commit diff
path: root/zanagrams/nearletters.py
diff options
context:
space:
mode:
authorZach DeCook <zach.decook@bettercarpeople.com>2026-08-17 08:25:23 -0400
committerZach DeCook <zach.decook@bettercarpeople.com>2026-08-17 08:25:23 -0400
commitc17744a5e900f5a2198d6a5a782c4dfd9c4ec98e (patch)
tree4dcbf70c23945152c554b11f24bbad4c88faaf07 /zanagrams/nearletters.py
parent958665b368ca1534ff9db0dcbf5c704a614ae23e (diff)
downloadgurglesolver-zanagrams.tar.gz
Add zanagrams solver zanagrams
Diffstat (limited to 'zanagrams/nearletters.py')
-rwxr-xr-xzanagrams/nearletters.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/zanagrams/nearletters.py b/zanagrams/nearletters.py
new file mode 100755
index 0000000..e592e18
--- /dev/null
+++ b/zanagrams/nearletters.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python3
+import sys
+
+def main(argv):
+    badpairs = set()
+    goodpairs = set()
+    letters = argv[1].strip()
+    #print(letters, file=sys.stderr)
+    #print(len(letters), file=sys.stderr)
+    if len(letters) == 16:
+        for x in range(0,16):    
+            l = letters[x]
+            for y in [[1,4,5], [1,3,4,5], [1,3,4,5], [3,4]][x%4]:
+                if x+y > 15:
+                    continue
+                l2 = letters[x+y]
+                goodpairs.add(l + l2)
+                goodpairs.add(l2 + l)
+
+        for x in range(0,16):
+            l = letters[x]
+            for x2 in range(x,16):
+                l2 = letters[x2]
+                if not (l + l2) in goodpairs:
+                    badpairs.add(l + l2)
+                if not (l2 + l) in goodpairs:
+                    badpairs.add(l2 + l)
+
+    print(goodpairs, file=sys.stderr)
+    print(badpairs, file=sys.stderr)
+    while 1:
+        line = sys.stdin.readline()
+        line = line.strip()
+        if not line:
+            break;
+        noprint = False
+        line2 = line.casefold()
+        for pair in badpairs:
+            if pair in line2:
+                noprint = True
+                break
+        if line and not noprint:
+            print(line, end='\n')
+
+if __name__ == '__main__':
+    main(sys.argv)