def separar(r): aux='' lista=[] print r while (len(r)>4): for i in range (len(r)-1,len(r)-5,-1): z=r.pop(i) aux=aux+z print aux lista.append(aux) aux='' aux=r[0] lista.append(aux) return lista def convert_binario(n): r = [] aux='' while n: r.append(str(n & 1)) n >>= 1 return r def folding(ok): aux=ok[0] aux=int(aux) for count in range(1, len(ok)-1): aux=aux^int(ok[count]) print aux r=convert_binario(5000) ok=separar(r) folding(ok)