480
you are viewing a single comment's thread
view the rest of the comments
[-] Barley_Man@sopuli.xyz 24 points 1 week ago

oooooooooooooooooooooooooooooooo

00000000000000000000000000000000

88888888888888888888888888888888

oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

[-] cypherpunks@lemmy.ml 21 points 1 week ago* (last edited 6 days ago)

python -c 'import time as t; a="o"; all( (print(a), a:=a.replace(*["o","O","8","oo"][i%3:i%3+2]), t.sleep(max(.3,1-i/50))) for i in range(60))'

edited to make it stop after 1MB; notes here:

someone asked in a reply:

Does that loop infinitely

The first version I posted would loop infinitely... if you have infinite RAM, that is 🫠 (the length of the string will reach 1KB after 30 iterations, and 1MB after 60, 2MB after 63, and so on). Also, to keep the loop in a single line I had foolishly used a list comprehension which meant each previous iteration was also being retained.

Fortunately the rate of memory consumption is not too fast because python string replacement is very slow, but, thanks to your question making me think about it, to avoid eventually crashing someone's computer if they don't know to hit ctrl-c to kill it, i've now edited it so that it will stop after 60 iterations. I also made it use all() to consume a generator comprehension instead of a list comprehension, to avoid retaining the state of previous iterations.

here is my very inefficient list-comprehension-using original version which will run until it runs out of memory:

python -c 'import itertools as I,time as t;a="o";[(print(a),a:=a.replace(*["o","O","8","oo"][i%3:i%3+2]),t.sleep(max(.3,1-(i/50))))for i in I.count()]'

if you leave this version running long enough, you will be at the mercy of your operating system's out-of-memory-killer: if it decides to kill other things before it kills this python process you might have a bad time.

here is another version which will actually loop infinitely without consuming more RAM:

python -c 'import itertools as I,time as T; all((any(print(["o","O","8"][i%3],end="")for _ in range(2**(i//3))),print(),T.sleep(max(.3,1-i/50)))for i in I.count())'

this is technically not completely constant-space because i and 2**(i//3) are still growing... but it will run for a very very very long time before it needs to allocate a small amount more.

I'm leaving the space-inefficient now-not-infinite one at the top of this comment because using replace() is easier to read than this nested loop version.

[-] Etterra@discuss.online 3 points 6 days ago

Does that loop infinitely? Because if it does Reddit needs to know ALL about it.

[-] cypherpunks@lemmy.ml 2 points 6 days ago* (last edited 6 days ago)

Does that loop infinitely

yes and no; i've now edited the comment.

load more comments (1 replies)
load more comments (4 replies)
this post was submitted on 29 May 2026
480 points (98.0% liked)

Science Memes

20370 readers
4021 users here now

Welcome to c/science_memes @ Mander.xyz!

A place for majestic STEMLORD peacocking, as well as memes about the realities of working in a lab.



Rules

  1. Don't throw mud. Behave like an intellectual and remember the human.
  2. Keep it rooted (on topic).
  3. No spam.
  4. Infographics welcome, get schooled.

This is a science community. We use the Dawkins definition of meme.



Research Committee

Other Mander Communities

Science and Research

Biology and Life Sciences

Physical Sciences

Humanities and Social Sciences

Practical and Applied Sciences

Memes

Miscellaneous

founded 3 years ago
MODERATORS