Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ###################################################################
- import datetime
- import scipy as sp
- #media inversa (kata)
- def media_inversa(num):
- #lista con los valores de 1 a 10
- ls_1_10 = [1,2,3,4,5,6,7,8,9,10]
- #otra lista con el numero multiplicado por 1, por 2... hasta 10
- #redondeando y divididiendo por la posicion
- ls = []
- for i in ls_1_10:
- ls.append(round(i*num)/i)
- #lista que almacena las diferencias entre
- #el valor de ls y num
- ls_dif=[]
- for i in ls:
- ls_dif.append(round(abs(i-num),2))
- #calculo la posicion de la diferencia minima y el valor como el
- #elemento de ls que esta en la posicion marcada por indice. En el
- #documento N=round(4v).
- indice = ls_dif.index(min(ls_dif))
- N = round(ls[indice]*(indice+1))
- #llenamos el array resultado
- resultado = [int(round(N/(indice+1)))]*(indice+1)
- resto = int(N-sum(resultado))
- resultado[indice] += resto
- #corregir el ultimo valor si se ha pasado de 10
- if resultado[indice]>10:
- resto = resultado[indice]-10
- resultado[indice] = 10
- resultado[indice-1] -= resto
- #corregir el ultimo valor si esta por debajo de 1
- if resultado[indice]<1:
- resto = resultado[indice] - 1
- resultado[indice] = 1
- resultado[indice-1] -= resto
- return resultado
- #tiempo
- time = datetime.datetime.now()
- f=open('media_inversa.txt','w')
- for i in sp.arange(1,10.01,0.01):
- resultado = media_inversa(i)
- f.write(str(resultado) + '\n')
- f.close()
- print 'Tiempo = ', datetime.datetime.now() - time
- #######################################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement