fork download
  1. #!/usr/bin/python3
  2. # coding: utf-8
  3.  
  4. class Elems():
  5. def __init__(self, index):
  6. self.elems = []
  7. self.index = index
  8.  
  9. def __len__(self):
  10. return len(self.elems)
  11.  
  12. def __iter__(self):
  13. return iter(self.elems)
  14.  
  15. def append(self, el):
  16. self.elems.append(el)
  17.  
  18. def many(li):
  19. di = {}
  20.  
  21. for i, el in enumerate(li):
  22. if el not in di.keys():
  23. di[el] = Elems(i)
  24. di[el].append(el)
  25.  
  26. li = list(di.values())
  27. k = 0
  28. while True:
  29. fin = True
  30. for i in range(0, len(li)-1-k):
  31. if len(li[i]) < len(li[i+1]):
  32. li[i], li[i+1] = li[i+1], li[i]
  33. fin = False
  34. elif len(li[i]) == len(li[i+1]):
  35. if li[i].index > li[i+1].index:
  36. li[i], li[i+1] = li[i+1], li[i]
  37. fin = False
  38. k += 1
  39.  
  40. if fin:
  41. break
  42.  
  43. ret = []
  44. for el in li:
  45. ret.extend(el)
  46.  
  47. return ret
  48.  
  49. print(many([3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4,6]))
  50. print(many("Hello world"))
  51.  
Success #stdin #stdout 0.02s 9984KB
stdin
Standard input is empty
stdout
[3, 3, 3, 3, 5, 5, 5, 9, 9, 9, 1, 1, 4, 4, 2, 2, 6, 6, 8, 8, 7]
['l', 'l', 'l', 'o', 'o', 'H', 'e', ' ', 'w', 'r', 'd']