Guest User

crossword_checker.py

a guest
May 30th, 2021
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.41 KB | None | 0 0
  1. from itertools import product
  2.  
  3.  
  4. words = sorted(['хуй', 'пизда', 'джигурда', 'агуша'])
  5.  
  6. intersections = {}
  7. for w1 in words:
  8.     intersections[w1] = {}
  9.     for w2 in words:
  10.         if (w1 == w2):
  11.             continue
  12.         intersections[w1].setdefault(w2, [])
  13.         for i1, c1 in enumerate(w1):
  14.             for i2, c2 in enumerate(w2):
  15.                 if c1 == c2:
  16.                     intersections[w1][w2].append((i1, i2))
  17. del c1, c2, i1, i2
  18.  
  19. #for w1 in intersections:
  20. #    for w2 in intersections[w1]:
  21. #        print(w1, '<->', w2)
  22. #        for i in intersections[w1][w2]:
  23. #            print(' ', *i)
  24. #del w1, w2, i
  25.  
  26. found = True
  27. for w1, w2 in product(words, repeat=2):
  28.     if not found:
  29.         break
  30.     if w1 == w2:
  31.         print(w1, w2)
  32.         continue
  33.     stack = [(w1, [k for k, v in intersections.get(w1).items() if v])]
  34.     while stack:
  35.         print(w1, w2, stack)
  36.         item, lst = stack.pop()
  37.         if w2 in lst:
  38.             break
  39.         if not lst:
  40.             continue
  41.         new_item, *lst = lst
  42.         stack.append((item, lst))
  43.         if new_item not in [i[0] for i in stack]:
  44.             stack.append(
  45.                 (
  46.                     new_item,
  47.                     [k for k, v in intersections.get(new_item).items() if v]
  48.                 )
  49.             )
  50.     else:
  51.         found = False
  52.  
  53. print(('говно', 'заебись')[found])
  54.  
Add Comment
Please, Sign In to add comment