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