[pyar] Devolver 2 valores generados por función yield

Mati Barriento elmatibarriento en gmail.com
Mar Oct 7 00:51:24 ART 2014


>Pregunta al margen: de dónde salió el algoritmo?

Lo hice una mañ......nah, lo encontre en stackoverflow {0}
No lo entiendo y la verdad que no me puse a pensar pero me parecio mágico.

Solucion final:

    def make_pi():
        q, r, t, k, m, x = 1, 0, 1, 1, 3, 3
        while True:
            if 4 * q + r - t < m * t:
                yield m
                q, r, t, k, m, x = 10*q, 10*(r-m*t), t, k, (10*(3*q+r))//t -
10*m, x
            else:
                q, r, t, k, m, x = q*k, (2*q+r)*x, t*x, k+1,
(q*(7*k+2)+r*x)//(t*x), x+2

   digitsArray = []
   m = make_pi()
   next(m) #gasta el primer digito.
   for i in range(0,longer):
      x,y = [next(m),next(m)] #consume 2 veces el generador
      digitsArray.append(((x*10)+y))


{0} http://stackoverflow.com/questions/9004789/1000-digits-of-pi-in-python



More information about the pyar mailing list