[Tutor] Is there a better way to do this?

Vijay Kumar Bagavath Singh vijaykumar at linuxmail.org
Thu Jul 22 20:10:51 CEST 2004


jb wrote: 
> > 
> > c = 1
> > for p0 in range(0, 7):
> >   for p1 in range(1, 12):
> >     for p2 in range(2, 12):
> >       for p3 in range(3, 12):
> >         for p4 in range(4, 12):
> >           for p5 in range(5, 12):
> >             if p0 < p1 < p2 < p3 < p4 < p5:
> >               print repr(c).rjust(3), "\t",
> >               print "%X %X %X %X %X %X" % (p0, p1, p2, p3, p4, p5)
> >               c += 1
> > print "...Done"
> > 
> > This works, except that it's very slow.  I need to get it up to 
> > nine-digit numbers, in which case it's significantly slower.  I was 
> > wondering if there is a more efficient way to do this.
> >
> 
> this version is a bit quicker:
> 
> c = 1
> for p0 in range(0, 7):
>   for p1 in range(p0+1, 12):
>     for p2 in range(p1+1, 12):
>       for p3 in range(p2+1, 12):
>         for p4 in range(p3+1, 12):
>           for p5 in range(p4+1, 12):
>             print repr(c).rjust(3), "\t",
>             print "%X %X %X %X %X %X" % (p0, p1, p2, p3, p4, p5)
>             c += 1
> print "...Done"
>  

That was a really great improvement. The following code acheives a little more improvement.

c = 1
r = tuple([tuple(range(i, 12)) for i in range(0, 13)])
for p0 in range(0, 7):
    for p1 in r[p0+1]:
        for p2 in r[p1+1]:
            for p3 in r[p2+1]:
                for p4 in r[p3+1]:
                    for p5 in r[p4+1]:
                        if p0 < p1 < p2 < p3 < p4 < p5:
                            print repr(c).rjust(3), "\t",
                            print "%X %X %X %X %X %X" % (p0, p1, p2, p3, p4, p5)
                            c += 1
print "...Done"

Vijay
-- 
______________________________________________
Check out the latest SMS services @ http://www.linuxmail.org 
This allows you to send and receive SMS through your mailbox.


Powered by Outblaze


More information about the Tutor mailing list