Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.09 KB | None | 0 0
  1. from sys import stdin
  2. from collections import OrderedDict
  3.  
  4.  
  5. def linear(d):
  6.     if not d:
  7.         return d
  8.     if type(d[0]) is list:
  9.         return linear(d[0]) + linear(d[1:])
  10.     return d[:1] + linear(d[1:])
  11.  
  12.  
  13. def is_anagram(str1, str2):
  14.     str1_list = list(str1)
  15.     str1_list.sort()
  16.     str2_list = list(str2)
  17.     str2_list.sort()
  18.  
  19.     return str1_list == str2_list
  20.  
  21.  
  22. d = dict()
  23. input()
  24. used_values = set()
  25. # удалить дубликаты из списка введенных слов, которые сразу же переведены в lowercase
  26. inp = list(OrderedDict.fromkeys(map(str.lower, (map(str.strip, stdin.readlines())))))
  27. for key in inp:
  28.     words = []
  29.     d.setdefault(key, words)
  30.     for value in inp:
  31.         # проверка - является ли анаграммой и не было ли использовано ранее
  32.         if is_anagram(value, key) and key != value and key not in used_values:
  33.             words.append(value)
  34.             used_values.add(value)
  35.     if not words:
  36.         del d[key]
  37.  
  38. for key in d:
  39.     print(key, *d[key])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement