Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. from collections import defaultdict as di
  2. from re import sub as r
  3.  
  4. def all_palindromes(s):
  5. d1 = di(set)
  6. d2 = di(set)
  7. li = []
  8. with open(s) as f:
  9. for i in f:
  10. word = r("[ '\n]", '', i)
  11. word = word.lower()
  12. i = r("[\n]", '', i)
  13. if word in d2.keys():
  14. d2[i].add(i)
  15. continue
  16. d2[word].add(i)
  17. counter = 0
  18. while counter < len(word):
  19. w1 = word[counter:len(word)]
  20. counter +=1
  21. d1[w1].add(word)
  22. for i in d2.keys():
  23. '''if i[::-1] in d1.keys():
  24. for j in d1.get(i[::-1]):
  25. if str(i + j) == str(i + j)[::-1]:
  26. first, second = str(d2.get(i))[2:-2], str(d2.get(j))[2:-2]
  27. if first + ' ' + second not in li:
  28. li.append(first + ' ' + second)'''
  29. counter = len(i)
  30. reverse = 0
  31. while counter > 0:
  32. if i[reverse:len(i)] == i[reverse:len(i)][::-1] and i[0:counter][::-1] in d1.keys():
  33. for j in d1.get(i[0:counter][::-1]):
  34. if str(i + j) == str(i + j)[::-1]:
  35. first, second = str(d2.get(i))[2:-2], str(d2.get(j))[2:-2]
  36. if first + ' ' + second not in li:
  37. li.append(first + ' ' + second)
  38. counter -= 1
  39. reverse -= 1
  40.  
  41. return li
  42. #print(all_palindromes('two words.txt'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement