Iteration for Factorials

Nick Craig-Wood nick at craig-wood.com
Tue Oct 30 06:30:18 EDT 2007


Anurag <anuraguniyal at gmail.com> wrote:
>  What about this no map, reduce, mutiplication or even addition
>  Its truly interative and You will need to interate till infinity if
>  you want correct answer ;)
> 
>  def factorial(N):
>      """
>      Increase I ...and go on increasing...
>      """
>      import random
> 
>      myNumer = range(N)
>      count = 0
>      I = 10000 #10**(N+1)
>      for i in range(I):
>          bucket = range(N)
>          number = []
>          for i in range(N):
>              k = bucket[ random.randrange(0,len(bucket))]
>              bucket.remove(k)
>              number.append(k)
> 
>          if number == myNumer:
>              count+=1
> 
>      return int(I*1.0/count+.5)

;-)

Note you can write your middle loop as

    for i in range(I):
        number = myNumer[:]
        random.shuffle(number)
        if number == myNumer:
            count+=1


-- 
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick



More information about the Python-list mailing list