[PyAR2] Programming Challenge II - One is the Magic Number

W W srilyk at gmail.com
Tue Oct 28 15:16:51 CET 2008


On Tue, Oct 28, 2008 at 8:34 AM, Coltrey Mather <pyar2 at cowsgomoo.org> wrote:

> def f(x):
>    '''Since I do x+1, you can enter 999999 and it'll be inclusive'''
>    return len([i
>                for i in
>                ''.join(map(str, range(x+1)))
>                if i is '1'])
>
> seems to be pretty fast (judged by profile.run()), since everything is
> in memory the slowest part is string conversion -- someone please tell
> me how to not need that.


I doubt there's a faster method than string conversion... although here's
another method that's a *lot* longer to work out:

for x in xrange(0, 1000000):
    if x/1000000 == 1:
        count += 1
        x%1000000
    else:
        x%1000000
...
    if x/10 == 1:
        count += 1
        x = x%10
    else:
        x = x%10
    if x/1 == 1:
        count += 1

that *should* give you the right result... but it sure is a pain, and i
doubt it would be any quicker than a string conversion, though it is pure
math.

-Wayne
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/mailman/private/pyar2/attachments/20081028/e321efaf/attachment-0001.htm>


More information about the PyAR2 mailing list