Establecemos un índice que mida el grado de desorden de la permutación
Estudiaremos tres índices:
def indice_alejamiento(li):
total = 0
for i, v in enumerate(li):
total += abs(v-i-1) # se resta 1 porque el índex de un array comienza en 0
return total
print(indice_alejamiento([6, 3, 5, 2, 4, 7, 1, 8, 9])) # debe dar 18
print(indice_alejamiento([1,2,3,4,5,6,7,8,9])) # debe dar 0
18 0
def distancia_contiguos(li):
total = 0
n = len(li)
#print(n)
for i in range(n):
if i==0: total += abs(li[i]-li[-1])+abs(li[i]-li[i+1])-n
elif i==n-1: total += abs(li[i]-li[i-1])+abs(li[i]-li[0])-n
else: total += abs(li[i]-li[i-1])+abs(li[i]-li[i+1])-2
return total
print(distancia_contiguos([6, 3, 5, 2, 4, 7, 1, 8, 9])) # debe dar 28
print(distancia_contiguos([1,2,3,4,5,6,7,8,9])) # debe dar 0
28 0
def desviaciones(li): # suma de las desviaciones estandar poblaciones entre un valor y su index+1
total = 0
for i, v in enumerate(li):
media = (v+i+1)/2
total += (((i+1-media)**2 + (v-media)**2)/2)**.5
return total
print(desviaciones([6, 3, 5, 2, 4, 7, 1, 8, 9])) # debe dar 9
print(desviaciones([1,2,3,4,5,6,7,8,9])) # debe dar 0
9.0 0.0