Ask HN: What's the best implementation of Conway's Game of Life?
Anyone else, like me, at one point try to implement Conway's Game of Life? If you have, what is the best implementation you've found?
Mine has to be this continuous version that makes pretty crazy looking creatures: https://chakazul.github.io/Lenia/JavaScript/Lenia.html.
98 comments
[ 3.0 ms ] story [ 158 ms ] threadhttps://golly.sourceforge.io/
https://en.wikipedia.org/wiki/Hashlife
My personal favorite has to be the one I made in x86 assembly ~30 years ago. I didn't know about hash life at the time, but still, it ran pretty fast. I seem to remember I used page flipping and moved the start of video memory each iteration. Or something like that.
https://golly.sourceforge.io/
https://colab.research.google.com/github/norvig/pytudes/blob...
[0] https://aplwiki.com/wiki/Conway%27s_Game_of_Life
Conway's Game Of Life in APL (2009) [video] - https://news.ycombinator.com/item?id=22845249 - April 2020 (13 comments)
Conway's Game of Life in One Line of APL (2007) - https://news.ycombinator.com/item?id=10366441 - Oct 2015 (12 comments)
Conway's Game Of Life in APL - https://news.ycombinator.com/item?id=7492585 - March 2014 (2 comments)
Conway's Game Of Life written in one line of APL - https://news.ycombinator.com/item?id=4642628 - Oct 2012 (2 comments)
Conway's Game of Life in APL - https://news.ycombinator.com/item?id=4611015 - Oct 2012 (1 comment)
Conway's Game Of Life in one line of APL - https://news.ycombinator.com/item?id=3840273 - April 2012 (2 comments)
Conway's Game of Life in one line of APL - https://news.ycombinator.com/item?id=2547655 - May 2011 (22 comments)
Conway's Game of Life in one line of APL - https://news.ycombinator.com/item?id=1499630 - July 2010 (1 comment)
Conway's Game Of Life in one line of APL - https://news.ycombinator.com/item?id=1041500 - Jan 2010 (31 comments)
Game of Life implemented in 5 minutes using APL (amazing video) - https://news.ycombinator.com/item?id=451951 - Jan 2009 (1 comment)
Conway's Game of Life in one line of APL - https://news.ycombinator.com/item?id=451923 - Jan 2009 (1 comment)
Conway's Game of Life in one line of APL - https://news.ycombinator.com/item?id=204042 - May 2008 (4 comments)
---
Honorable mention:
Conway's Game of Life in APL in Forth - https://news.ycombinator.com/item?id=31537648 - May 2022 (25 comments)
Best looking? Lowest resource utilization? Smallest code size? Fastest? Largest playing field? etc.
https://oimo.io/works/life/
It was also featured on HN:
https://news.ycombinator.com/item?id=39799755
And it occurs to me, a blank sheet of paper qualifies as the Game Of Life simulating the Game Of Life.
https://adventofcode.com/2024/day/21
It really makes you think about this; interaction between levels in a simulation.
What are other Great Wonders of software?
- cryptography in general
- data compression
- a lot of DSP stuff is pretty magical in it's various applications - digital filtering, modulation/demodulation, recovery of weak signals in noisy environments, beam-forming etc
There's a lot of really amazing, largely mathematical, foundation work that we now tend to take for granted and without which we'd be back in the relative dark ages.
Within 30 seconds, it crashed my 2016 MacBook Pro (maybe overloaded the CPU + the failing battery? It's a feeble machine).
After the Mac's version of the BSD, Mac helpfully restored all of my windows (I have that setting turned off), and there it was again, happily Game Of Lifing in the background. Shut it down just as the fans were spinning up again.
https://qntm.org/responsibilit
Btw, can the game of life (at least in theory) simulate chaotic systems like a double pendulum?
https://en.wikipedia.org/wiki/Rule_30
Correct me if I am wrong.
Previously: https://news.ycombinator.com/item?id=39799755
(Ope, ninja'd)
(defn neighbors [[x y]] #{[(dec x) (dec y)] [(dec x) y] [(dec x) (inc y)] [ x (dec y)] [ x (inc y)] [(inc x) (dec y)] [(inc x) y] [(inc x) (inc y)]})
(defn count-neighbors [world cell] (count (set/intersection (neighbors cell) world)))
(def rules #{[true 2] [true 3] [false 3]})
(defn live [world cell] (contains? rules [(contains? world cell) (count-neighbors world cell)]))
(defn evolve [world] (into #{} (filter #(live world %) (reduce set/union (map neighbors world)))))
Full source: https://github.com/twpayne/life/blob/master/clojure/src/life...
The most mind blowing algorithm has to be hashlife though. Well worth studying for those aha moments.
https://news.ycombinator.com/item?id=42806736
DonHopkins 20 days ago | parent | context | favorite | on: Psychedelic Graphics 0: Introduction
Here's a classic video by Rudy Rucker demonstrating his CALab product that he made with John Walker at Autodesk:
https://www.youtube.com/watch?v=lyZUzakG3bE
At 24:28 he shows a running Belousov–Zhabotinsky reaction mapped onto a 3d model's texture:
https://youtu.be/lyZUzakG3bE?t=1468
I wrote about it in the discussion of John Walker passing away, and Josh Gordon, who worked on Chaos at Autodesk, joined the discussion:
https://news.ycombinator.com/item?id=39300605
>DonHopkins 11 months ago | parent | context | favorite | on: John Walker, founder of Autodesk, has died
>I really love and was deeply inspired by the great work that John Walker did with Rudy Rucker on cellular automata, starting with Autodesk's product CelLab, then James Gleick's CHAOS -- The Software, Rudy's Artificial Life Lab, John's Home Planet, then later the JavaScript version WebCA, and lots of extensive documentation and historical information on his web page. CelLab:
https://www.fourmilab.ch/cellab/
https://www.fourmilab.ch/cellab/classic/
https://www.fourmilab.ch/homeplanet/
https://www.rudyrucker.com/oldhomepage/cellab.htm
[...]
>josh_gordon 11 months ago | prev [–]
>I'm amazed that my beloved CHAOS still runs beautifully on emulators like DOSbox. It was the last programming project where I could completely roll my own interface - and maybe my last really fun one.
Here's some stuff I did that was inspired by Rudy Rucker and John Walker's work, as well as Tommaso Toffoli and Norm Margolus's wonderful book, "Cellular Automata Machines: A New Environment for Modeling":
https://news.ycombinator.com/item?id=37035627
by DonHopkins on Aug 7, 2023 | parent | context | favorite | on: My history with Forth and stack machines (2010)
>"Cellular Automata Machines: A New Environment for Modeling" is one of my favorite books of all time! It shows lots of peculiarly indented Forth code.
https://donhopkins.com/home/cam-book.pdf
>CAM6 Simulator Demo:
https://www.youtube.com/watch?v=LyLMHxRNuck
>Forth source code for CAM-6 hardware:
https://donhopkins.com/home/code/tomt-cam-forth-scr.txt
https://donhopkins.com/home/code/tomt-users-forth-scr.txt
And a couple more recent videos to music using the SimCity/Micropolis tile set and WebGL tile engine to display cells:
SimCity Tile Sets S...
https://x.com/deadfoxygrandpa/status/1819204922271060440
screenshot of it here: https://i.imgur.com/Iq9XXi4.jpeg
Description: https://www.phatcode.net/res/224/files/html/ch18/18-01.html
Code: https://www.phatcode.net/res/224/files/html/ch18/18-03.html
Hashlife is far superior so while Qlife was interesting it wasn't the best implementation.
https://latedev.wordpress.com/2011/06/25/a-poker-chip-comput...
https://guinn8.ca/conway.html
I like control-shift-r to refresh the page.
https://digitalhorology.etsy.com/listing/1644589175
I believe it implements Bill Gosper's hashlife quadtree algorithm (already mentioned elsewhere in the comments here).
Xlife is unbelievably fast.