Hi HN, when learning Golang (and topology), I ported a simple GOL in C (<a href="https://github.com/Jeadie/GoL" rel="nofollow">https://github.com/Jeadie/GoL</a>) into Go. I then added a bunch of features
- Playing on other fundamental polygons (<a href="https://en.wikipedia.org/wiki/Fundamental_polygon#Examples_of_Fundamental_Polygons_Generated_by_Parallelograms" rel="nofollow">https://en.wikipedia.org/wiki/Fundamental_polygon#Examples_o...</a>)
- Considering all possible update rules (of which, there are many).<p>Looking to get back to this project soon. Would love some feedback + ideas.
I don't understand the update rules as described in the readme.<p>In an 3x3 neighborhood there are 2^9, not 2^5 states. So we should get 2^512 possible update rules, not 2^32.<p>I think something similar is described in <a href="https://conwaylife.com/wiki/Rule_integer" rel="nofollow">https://conwaylife.com/wiki/Rule_integer</a>.<p>I'm not sure that all of those rules are valid. We must have translational invariance. One way to do that is to only update the state of the central cell in each considered neighborhood. In that case 2^9 rules are enough. Are there other ways to define consistent rules for a CA?
I may be misreading it, but doesn't the GoL as commonly understood also depend on diagonal neighbors (i.e. 8 direct neighbors)? In that case the rule space would explode beyond the 32 bit integer one. (to a 256 bit one)
Shameless (related) plug: Check out broader cellular-automata sim with custom update rules you can define in json (and run the game on the page itself).<p><a href="https://aperocky.com/cellular-automata/" rel="nofollow">https://aperocky.com/cellular-automata/</a><p>This allows for more "block state" too in addition to just the black and white for GOL. Also allows some time based rules (i.e. change based off block age that it stayed unchanged).<p>I've gravitated to essentially a file description (and the corresponding parser) to set up the rules - this makes making and adding rules easier.
Look up the b/s format for specifying rules. It is a lot more flexible.<p>Here's my version : <a href="https://github.com/chewxy/ll/blob/main/main.go#L176" rel="nofollow">https://github.com/chewxy/ll/blob/main/main.go#L176</a><p>I also live coded this in a series of 3 videos:<p>1. <a href="https://youtu.be/5JArQO8YeRo" rel="nofollow">https://youtu.be/5JArQO8YeRo</a>
2. <a href="https://youtu.be/ZLUVAWb_31M" rel="nofollow">https://youtu.be/ZLUVAWb_31M</a>
3. <a href="https://youtu.be/BIypQF7M9c8" rel="nofollow">https://youtu.be/BIypQF7M9c8</a><p>My approach differs from yours in that mine is entirely matrix driven.
I don't understand how the border topologies change the game of life compared to when it's set on a regular plane<p>You say it can be played on a variety of manifolds, but if the topology of a manifold "locally resembles Euclidean space near each point", considering that the game of life rules are always super local, then how does that change anything compared to a plane
See also SmoothLife, an amazing continuous version of Game of life. Integers are replaced by floats providing the same patterns with circular shapes.
Here: <a href="https://conwaylife.com/wiki/OCA:SmoothLife" rel="nofollow">https://conwaylife.com/wiki/OCA:SmoothLife</a>
During a recent programming adventure, I discovered that finite elementary cellular automata with periodic boundary conditions can be simulated using matrix-vector multiplication with a circulant matrix and a strange kind of algebra, which I call a kernel algebra. [1] I wonder if this same idea could be generalized to higher dimensional automata on other topological surfaces.<p>[1]: <a href="https://github.com/breandan/galoisenne/blob/8f0f1e9e4e02062ce271f84afb1f8f2865cf1ff2/src/commonMain/kotlin/ai/hypergraph/kaliningraph/automata/ECA.kt#L63" rel="nofollow">https://github.com/breandan/galoisenne/blob/8f0f1e9e4e02062c...</a>
Playing on Klein bottles? That sounds like The Flower Game? <a href="https://www.destinypedia.com/Flower_game" rel="nofollow">https://www.destinypedia.com/Flower_game</a><p>(from <a href="https://www.destinypedia.com/Garden" rel="nofollow">https://www.destinypedia.com/Garden</a>)
You might also be interested in <a href="https://github.com/bignimbus/game-of-life-n" rel="nofollow">https://github.com/bignimbus/game-of-life-n</a>