Klarner-Rado sequence: Difference between revisions
Content added Content deleted
(→Ksh: add) |
(→fast unbounded generator: save some memory by letting tee() handle the queue) |
||
Line 948: | Line 948: | ||
===fast unbounded generator=== |
===fast unbounded generator=== |
||
<syntaxhighlight lang="python">from |
<syntaxhighlight lang="python">from itertools import islice, tee |
||
from itertools import islice |
|||
def klarner_rado(): |
def klarner_rado(): |
||
def gen(): |
|||
m2 = m3 = 1 |
|||
while True: |
while True: |
||
m = min(m2, m3) |
m = min(m2, m3) |
||
yield m |
yield m |
||
if m2 == m: m2 = next(g2) << 1 | 1 |
|||
if |
if m3 == m: m3 = next(g3) * 3 + 1 |
||
g, g2, g3 = tee(gen(), 3) |
|||
return g |
|||
if m3 == m: m3 = q3.popleft() * 3 + 1 |
|||
kr = klarner_rado() |
kr = klarner_rado() |