From c17744a5e900f5a2198d6a5a782c4dfd9c4ec98e Mon Sep 17 00:00:00 2001 From: Zach DeCook Date: Mon, 17 Aug 2026 08:25:23 -0400 Subject: Add zanagrams solver --- zanagrams/nearletters.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 zanagrams/nearletters.py (limited to 'zanagrams/nearletters.py') 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) -- cgit 1.4.1