Advertisement
Guest User

media-inversa-martxelo

a guest
Jun 28th, 2012
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.70 KB | None | 0 0
  1. ###################################################################
  2. import datetime
  3. import scipy as sp
  4.  
  5. #media inversa (kata)
  6. def media_inversa(num):
  7.  
  8.     #lista con los valores de 1 a 10
  9.     ls_1_10 = [1,2,3,4,5,6,7,8,9,10]
  10.  
  11.     #otra lista con el numero multiplicado por 1, por 2... hasta 10
  12.     #redondeando y divididiendo por la posicion
  13.     ls = []
  14.     for i in ls_1_10:
  15.         ls.append(round(i*num)/i)
  16.        
  17.     #lista que almacena las diferencias entre
  18.     #el valor de ls y num
  19.     ls_dif=[]
  20.     for i in ls:
  21.         ls_dif.append(round(abs(i-num),2))
  22.  
  23.     #calculo la posicion de la diferencia minima y el valor como el
  24.     #elemento de ls que esta en la posicion marcada por indice. En el
  25.     #documento N=round(4v).
  26.     indice = ls_dif.index(min(ls_dif))
  27.     N = round(ls[indice]*(indice+1))
  28.  
  29.     #llenamos el array resultado
  30.     resultado = [int(round(N/(indice+1)))]*(indice+1)
  31.     resto = int(N-sum(resultado))
  32.     resultado[indice] += resto
  33.  
  34.     #corregir el ultimo valor si se ha pasado de 10
  35.     if resultado[indice]>10:
  36.         resto = resultado[indice]-10
  37.         resultado[indice] = 10
  38.         resultado[indice-1] -= resto
  39.        
  40.     #corregir el ultimo valor si esta por debajo de 1
  41.     if resultado[indice]<1:
  42.         resto = resultado[indice] - 1
  43.         resultado[indice] = 1
  44.         resultado[indice-1] -= resto
  45.    
  46.     return resultado
  47.  
  48. #tiempo
  49. time = datetime.datetime.now()
  50.  
  51. f=open('media_inversa.txt','w')
  52.  
  53. for i in sp.arange(1,10.01,0.01):
  54.     resultado = media_inversa(i)
  55.     f.write(str(resultado) + '\n')
  56.  
  57. f.close()
  58.  
  59. print 'Tiempo = ', datetime.datetime.now() - time
  60. #######################################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement