Tobias Pankrath:

Does this spawn linear many generators?

I have written this little test code, Python2.6+:


count = 0

def A006068():
    global count
    count += 1
    yield 0
    for x in A006068():
        if x & 1:
            yield 2 * x + 1
            yield 2 * x
        else:
            if x:
                yield 2 * x
            yield 2 * x + 1

from itertools import islice

def main():
    global count
    for p in xrange(15):
        n = 2 ** p
        count = 0
        print sum(1 for _ in islice(A006068(), 0, n)), count

main()

The output seems to show that it spawns only logarithmically:


1 1
2 2
4 3
8 4
16 5
32 6
64 7
128 8
256 9
512 10
1024 11
2048 12
4096 13
8192 14
16384 15

Bye,
bearophile

Reply via email to