Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from itertools import product
- words = sorted(['хуй', 'пизда', 'джигурда', 'агуша'])
- intersections = {}
- for w1 in words:
- intersections[w1] = {}
- for w2 in words:
- if (w1 == w2):
- continue
- intersections[w1].setdefault(w2, [])
- for i1, c1 in enumerate(w1):
- for i2, c2 in enumerate(w2):
- if c1 == c2:
- intersections[w1][w2].append((i1, i2))
- del c1, c2, i1, i2
- #for w1 in intersections:
- # for w2 in intersections[w1]:
- # print(w1, '<->', w2)
- # for i in intersections[w1][w2]:
- # print(' ', *i)
- #del w1, w2, i
- found = True
- for w1, w2 in product(words, repeat=2):
- if not found:
- break
- if w1 == w2:
- print(w1, w2)
- continue
- stack = [(w1, [k for k, v in intersections.get(w1).items() if v])]
- while stack:
- print(w1, w2, stack)
- item, lst = stack.pop()
- if w2 in lst:
- break
- if not lst:
- continue
- new_item, *lst = lst
- stack.append((item, lst))
- if new_item not in [i[0] for i in stack]:
- stack.append(
- (
- new_item,
- [k for k, v in intersections.get(new_item).items() if v]
- )
- )
- else:
- found = False
- print(('говно', 'заебись')[found])
Add Comment
Please, Sign In to add comment