#!/usr/bin/python3
# coding: utf-8
class Elems():
def __init__(self, index):
self.elems = []
self.index = index
def __len__(self):
return len(self.elems)
def __iter__(self):
return iter(self.elems)
def append(self, el):
self.elems.append(el)
def many(li):
di = {}
for i, el in enumerate(li):
if el not in di.keys():
di[el] = Elems(i)
di[el].append(el)
li = list(di.values())
k = 0
while True:
fin = True
for i in range(0, len(li)-1-k):
if len(li[i]) < len(li[i+1]):
li[i], li[i+1] = li[i+1], li[i]
fin = False
elif len(li[i]) == len(li[i+1]):
if li[i].index > li[i+1].index:
li[i], li[i+1] = li[i+1], li[i]
fin = False
k += 1
if fin:
break
ret = []
for el in li:
ret.extend(el)
return ret
print(many([3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4,6]))
print(many("Hello world"))
IyEvdXNyL2Jpbi9weXRob24zCiMgY29kaW5nOiB1dGYtOAoKY2xhc3MgRWxlbXMoKToKCWRlZiBfX2luaXRfXyhzZWxmLCBpbmRleCk6CgkJc2VsZi5lbGVtcyA9IFtdCgkJc2VsZi5pbmRleCA9IGluZGV4CgoJZGVmIF9fbGVuX18oc2VsZik6CgkJcmV0dXJuIGxlbihzZWxmLmVsZW1zKQoKCWRlZiBfX2l0ZXJfXyhzZWxmKToKCQlyZXR1cm4gaXRlcihzZWxmLmVsZW1zKQoKCWRlZiBhcHBlbmQoc2VsZiwgZWwpOgoJCXNlbGYuZWxlbXMuYXBwZW5kKGVsKQoKZGVmIG1hbnkobGkpOgoJZGkgPSB7fQoKCWZvciBpLCBlbCBpbiBlbnVtZXJhdGUobGkpOgoJCWlmIGVsIG5vdCBpbiBkaS5rZXlzKCk6CgkJCWRpW2VsXSA9IEVsZW1zKGkpCgkJZGlbZWxdLmFwcGVuZChlbCkKCglsaSA9IGxpc3QoZGkudmFsdWVzKCkpCglrID0gMAoJd2hpbGUgVHJ1ZToKCQlmaW4gPSBUcnVlCgkJZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGxpKS0xLWspOgoJCQlpZiBsZW4obGlbaV0pIDwgbGVuKGxpW2krMV0pOgoJCQkJbGlbaV0sIGxpW2krMV0gPSBsaVtpKzFdLCBsaVtpXQoJCQkJZmluID0gRmFsc2UKCQkJZWxpZiBsZW4obGlbaV0pID09IGxlbihsaVtpKzFdKToKCQkJCWlmIGxpW2ldLmluZGV4ID4gbGlbaSsxXS5pbmRleDoKCQkJCQlsaVtpXSwgbGlbaSsxXSA9IGxpW2krMV0sIGxpW2ldCgkJCQkJZmluID0gRmFsc2UKCQlrICs9IDEKCgkJaWYgZmluOgoJCQlicmVhawoKCXJldCA9IFtdCglmb3IgZWwgaW4gbGk6CgkJcmV0LmV4dGVuZChlbCkKCglyZXR1cm4gcmV0CgpwcmludChtYW55KFszLDEsNCwxLDUsOSwyLDYsNSwzLDUsOCw5LDcsOSwzLDIsMyw4LDQsNl0pKQpwcmludChtYW55KCJIZWxsbyB3b3JsZCIpKQo=
[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']