CAViewer - A Cellular Automaton Simulator written in Java

For scripts to aid with computation or simulation in cellular automata.
User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by martin.novy » May 15th, 2020, 10:01 am

lemon41625 wrote:
May 15th, 2020, 7:21 am

I compile it by first "cd" into the CAComputeParse directory.
Then, I run python setup.py build_ext --inplace and leave it as it is.
BTW, what is your version of Cython ?
my is

Code: Select all

python3 -m cython --version
Cython version 0.26.1

lemon41625
Posts: 344
Joined: January 24th, 2020, 7:39 am
Location: 小红点 (if you know where that is)

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by lemon41625 » May 15th, 2020, 8:29 pm

martin.novy wrote:
May 15th, 2020, 10:01 am
lemon41625 wrote:
May 15th, 2020, 7:21 am

I compile it by first "cd" into the CAComputeParse directory.
Then, I run python setup.py build_ext --inplace and leave it as it is.
BTW, what is your version of Cython ?
my is

Code: Select all

python3 -m cython --version
Cython version 0.26.1
Version 0.29.13
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer

Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...

User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by martin.novy » May 17th, 2020, 5:37 am

lemon41625 wrote:
May 15th, 2020, 8:12 am
Well, that helps to narrow down the problem to the code inside CAComputeParse.pyx.

NVM, I know the problem YAY!
I am happy to hear that.

what was the problem?

lemon41625
Posts: 344
Joined: January 24th, 2020, 7:39 am
Location: 小红点 (if you know where that is)

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by lemon41625 » May 17th, 2020, 8:39 am

martin.novy wrote:
May 17th, 2020, 5:37 am
lemon41625 wrote:
May 15th, 2020, 8:12 am
Well, that helps to narrow down the problem to the code inside CAComputeParse.pyx.

NVM, I know the problem YAY!
I am happy to hear that.

what was the problem?
In the simulation code, I wrote in code that would cache the output of the transition function for computationally expensive transition functions such as double totalistic which has time complexity O(N^2). Normal transition functions usually have time complexity O(N) where N is num of neighbours.

I realised I was not clearing the cache when a new rule was loaded and hence, the simulation would show the same behaviour.
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer

Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...

lemon41625
Posts: 344
Joined: January 24th, 2020, 7:39 am
Location: 小红点 (if you know where that is)

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by lemon41625 » May 18th, 2020, 9:47 am

Update v1.16:

Fixed Param Map Bug (thanks to martin.novy's demo)
Added Native Support for Range 2 Cross INT, Range 2 Von Neumann INT, Range 1 Moore INT (can be used for Single State, BSFKL, Extended Generations and Regenerating Generations Rules)

Some of the INT notations clash with BSFKL and Extended Generations. You can use the "/" notation.
b1s2f3k4l5 -> 1/2/3/4/5
b2s4d1-1-1 -> 4/2/1-1-1

Added some samples rules to rules folder (I will make more in depth posts about them later).

Sorry the update took so long and does not include 3 state outer totalistic or more param map settings (the R2 Von Neumann INT parsing code took very long to debug).

Source Code + WinPython Installation: https://github.com/jedlimlx/Cellular-Automaton-Viewer
Source Code:
Attachments
CAViewer.zip
(4.1 MiB) Downloaded 155 times
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer

Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...

lemon41625
Posts: 344
Joined: January 24th, 2020, 7:39 am
Location: 小红点 (if you know where that is)

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by lemon41625 » May 19th, 2020, 3:01 am

@martin.novy
What is the algorithm used by scipy.ndimage.convolve?
Is the time complexity faster than O(X * Y * N) where X is the width of the grid, Y is the height of the grid and N is the number of neighbours?
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer

Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...

User avatar
calcyman
Moderator
Posts: 2932
Joined: June 1st, 2009, 4:32 pm

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by calcyman » May 19th, 2020, 6:09 am

lemon41625 wrote:
May 19th, 2020, 3:01 am
@martin.novy
What is the algorithm used by scipy.ndimage.convolve?
Is the time complexity faster than O(X * Y * N) where X is the width of the grid, Y is the height of the grid and N is the number of neighbours?
If N is large, then the Fast Fourier Transform will win with complexity O(X Y log(X Y)).

If N is small, then you can still do better than the naive method by using 'Winograd convolutions'. (They're used by fast implementations of convolutional neural networks.)
What do you do with ill crystallographers? Take them to the mono-clinic!

User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by martin.novy » May 19th, 2020, 12:07 pm

lemon41625 wrote:
May 19th, 2020, 3:01 am
@martin.novy
What is the algorithm used by scipy.ndimage.convolve?
Is the time complexity faster than O(X * Y * N) where X is the width of the grid, Y is the height of the grid and N is the number of neighbours?
time complexity of various implementations of convolution
----
1. do you plan to use sparse arrays? Or sparse arrays with dense blocks e.g. 16*16?
2. does your data structure allow efficient scanning by rows or by columns?
3. I guess uint8 is enough .

I will write more on Thursday, I hope

lemon41625
Posts: 344
Joined: January 24th, 2020, 7:39 am
Location: 小红点 (if you know where that is)

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by lemon41625 » May 20th, 2020, 3:36 am

martin.novy wrote:
May 19th, 2020, 12:07 pm
lemon41625 wrote:
May 19th, 2020, 3:01 am
@martin.novy
What is the algorithm used by scipy.ndimage.convolve?
Is the time complexity faster than O(X * Y * N) where X is the width of the grid, Y is the height of the grid and N is the number of neighbours?
time complexity of various implementations of convolution
----
1. do you plan to use sparse arrays? Or sparse arrays with dense blocks e.g. 16*16?
2. does your data structure allow efficient scanning by rows or by columns?
3. I guess uint8 is enough .

I will write more on Thursday, I hope
I am using a sparse array represented by a dictionary of coordinates. For example, {(0,1): 1, (2, 1): 2}
The current time complexity of running my simulation is O(N_cells_changed * N_neighbours * trans_func).
trans_func is the time complexity of the transFunc.

Gettings neighbours is O(N_neighbours) and updating cells is O(1).
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer

Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...

User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by martin.novy » May 21st, 2020, 5:39 am

lemon41625 wrote:
May 19th, 2020, 3:01 am
Is the time complexity faster than O(X * Y * N) where X is the width of the grid, Y is the height of the grid and N is the number of neighbours?
what if the model of computer has more than 1 cpu core?

SIMD instructions?

cache?
https://en.wikipedia.org/wiki/Cache-obl ... ache_model
----------------
and , by the way, a quote from
https://softwareengineering.stackexchan ... -algorithm
This also means that Big-O is not suitable for comparing real-world performance of algorithms with known workloads. Two algorithms might be in the same complexity class, but one may outperform the other by a consistent factor of 1000. Or one algorithm might have spectacular linear complexity, but requires so much pre-processing that even an exponential algorithm is faster in practice (real example: many regex engines).

User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by martin.novy » May 21st, 2020, 5:46 am

By the way, who here has a GPU?

as an example: I have an AMD GPU (AMD APU A8-6600K with Radeon HD 8570D)
I will have an Intel GPU (Intel Core i3-8100T ... Intel® UHD Graphics 630)

(more examples
https://www.conwaylife.com/wiki/User:Sa ... _Computers
)

-----------------
related discussions

https://www.reddit.com/r/Python/comment ... o/ccdbrqc/

https://groups.google.com/forum/#!topic ... 0SEV8u37QM
I found the Lenia code very interesting in the way it (and the 'cluda' thing that 'reikna', a lib that it imports, imports) uses a layer to somewhat abstract-away the Cuda/OpenCL distinction, and then it drives the whole GPU thing the same way on either platform, all from python!

lemon41625
Posts: 344
Joined: January 24th, 2020, 7:39 am
Location: 小红点 (if you know where that is)

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by lemon41625 » May 21st, 2020, 7:05 am

Update v1.17:

Fixed bug with .rle loading
Added some preliminary code for 3 state outer totalistic in transFunc.py. I will finish implementation next update.
Added Parameter Map Options
Added ability to use INT rules in parameter maps
For example, b2e3-"['a', 'c', 'e', 'h', 'i', 'j'][x]"4u8s2hj34-"['o', 'p', 'q', 'u', 'w', 't'][y]"5p6
Do note that you may use any valid python expression in the double quotes.
Added more rules to rules folder
martin.novy wrote:
May 21st, 2020, 5:46 am
By the way, who here has a GPU?
I have an Nvidia MX150.

Also I was just looking for an algorithm that can (listed in order of importance)
1. easily support CAViewer's transition functions
2. does not require complex data structure
3. does not massive reimplementation of the program in its current state

Source Code + WinPython Installation: https://github.com/jedlimlx/Cellular-Automaton-Viewer
Source Code:
Attachments
CAViewer.zip
(4.16 MiB) Downloaded 158 times
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer

Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...

User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by martin.novy » May 23rd, 2020, 7:06 am

lemon41625 wrote:
May 23rd, 2020, 2:50 am
... school starts in like a week so I am not that free.
(if you still have some time now ...)

I have done some speed tests
(I often have dense soups)
and there is one mystery

I guessed, Cython would be 3 or 10 times faster than Python,
but , as of CAViewer current version ,
Cython seems, very roughly, being of the same speed as Python

(Cython .... *.ca_rule
Python ... transFunc.py )

I hope I will try to research using Google and StackOverflow: slow cython

maybe it calls Python somewhere?

maybe it needs C++ data structures and not Python data structures???

maybe there are some compilation options??

EDIT: if anyone is interested, I can dig from my notes, what exactly I compared ...
one test was with https://github.com/martin12333/PyMartin ... v-rand.rle

lemon41625
Posts: 344
Joined: January 24th, 2020, 7:39 am
Location: 小红点 (if you know where that is)

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by lemon41625 » May 23rd, 2020, 7:25 am

martin.novy wrote:
May 23rd, 2020, 7:06 am
lemon41625 wrote:
May 23rd, 2020, 2:50 am
... school starts in like a week so I am not that free.
if you still have some time now ...

I have done some speed tests and there is one mystery

I guessed, Cython would be 3 or 10 times faster than Python,
but , as of CAViewer current version ,
Cython seems, very roughly, being of the same speed as Python

(Cython .... *.ca_rule
Python ... transFunc.py )

I hope I will try to research using Google and StackOverflow: slow cython

maybe it calls Python somewhere?

maybe it needs C++ data structures and not Python data structures???

maybe there are some compilation options??

EDIT: if anyone is interested, I can dig from my notes, what exactly I compared ...
one test was with https://github.com/martin12333/PyMartin ... v-rand.rle
It is roughly the speed because they run on very similar if not identical code.
When running transFunc.py, CACompute.CACompute.pyx is called (compute function).
When running a rule.ca_rule file, CAComputeParse.CACompute.pyx is called (compute function).

If you look at the code of the compue function, you will find that it is nearly identical.
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer

Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...

User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by martin.novy » May 24th, 2020, 12:12 pm

lemon41625 wrote:
May 21st, 2020, 7:05 am
Added Parameter Map Options
my first parameter map in CAViewer:

BTW, what is the max size of attachments at CL.com ... maybe I should have made a bit smaller gif ?
edit: I moved the 7 MiB pmap.gif to
https://photos.app.goo.gl/D9UXdraV8ZhNn1wR6

(my settings.json ... relevant are PMap fields)

Code: Select all

{
    "UseParse": false,
    "Isotropic": true,
    "Rule Space": "Regenerating Generations",
    "B/S Conditions": "Range 1 Moore Isotropic Non-Totalistic",
    "Rule String": "rg3l1b3-jknr4ity5ijk6i8s23-a4city6c7crb2n3rb23-q",
    "Rule Name": "RULE",
    "Random Bounds": {
        "Rulestring Upper Bound": "",
        "Rulestring Lower Bound": "",
        "State Weights Upper Bound": "",
        "State Weights Lower Bound": "",
        "Neighbourhood Weights Upper Bound": "",
        "Neighbourhood Weights Lower Bound": ""
    },
    "Neighbourhood Weights": [
        [
            "0",
            "0",
            "0",
            "0",
            "0"
        ],
        [
            "0",
            "1",
            "1",
            "1",
            "0"
        ],
        [
            "0",
            "1",
            "0",
            "1",
            "0"
        ],
        [
            "0",
            "1",
            "1",
            "1",
            "0"
        ],
        [
            "0",
            "0",
            "0",
            "0",
            "0"
        ]
    ],
    "Isotropic PMap": false,
    "Rule Space PMap": "Single State",
    "B/S Conditions PMap": "Outer Totalistic",
    "Rule String PMap": "b7-\"10+x\"s7-\"10+y\"",
    "Neighbourhood Weights PMap": [
        [
            "1",
            "1",
            "1",
            "1",
            "1"
        ],
        [
            "1",
            "1",
            "1",
            "1",
            "1"
        ],
        [
            "1",
            "1",
            "1",
            "1",
            "1"
        ],
        [
            "1",
            "1",
            "1",
            "1",
            "1"
        ],
        [
            "1",
            "1",
            "1",
            "1",
            "1"
        ]
    ],
    "State Weights PMap": [
        [
            "0",
            "1"
        ]
    ],
    "Rule Name PMap": "b7s7",
    "Random Bounds PMap": {
        "Rulestring Upper Bound": "",
        "Rulestring Lower Bound": "",
        "State Weights Upper Bound": "",
        "State Weights Lower Bound": "",
        "Neighbourhood Weights Upper Bound": "",
        "Neighbourhood Weights Lower Bound": ""
    },
    "PMap Settings": {
        "Soup Size": "80",
        "Generations": "200",
        "Number of Rules X": "2",
        "Number of Rules Y": "3"
    },
    "State Weights": [
        [
            "0",
            "1",
            "0"
        ]
    ]
}

lemon41625
Posts: 344
Joined: January 24th, 2020, 7:39 am
Location: 小红点 (if you know where that is)

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by lemon41625 » May 24th, 2020, 9:57 pm

Update v1.18

Added Select all cells, undo and reset to gen 0 as requested by Mally on discord (still a little buggy)
Complete B/M/S implementation in transFunc.py, will add native support next update
Added minor simulation speed ups
Added more rules to rules folder

Source Code + WinPython Installation: https://github.com/jedlimlx/Cellular-Automaton-Viewer
Source Code:
Attachments
CAViewer.zip
(4.17 MiB) Downloaded 149 times
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer

Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...

User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by martin.novy » May 25th, 2020, 8:18 am

lemon41625 wrote:
May 23rd, 2020, 7:25 am
... CACompute.pyx is called (compute function).
BTW, do you have a copy of any old version of CAViewer BEFORE Cython was used?

(I thought about some speed tests with PyPy )

lemon41625
Posts: 344
Joined: January 24th, 2020, 7:39 am
Location: 小红点 (if you know where that is)

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by lemon41625 » May 25th, 2020, 8:21 am

martin.novy wrote:
May 25th, 2020, 8:18 am
lemon41625 wrote:
May 23rd, 2020, 7:25 am
... CACompute.pyx is called (compute function).
BTW, do you have a copy of any old version of CAViewer BEFORE Cython was used?

(I thought about some speed tests with PyPy )
No, the first version of CAViewer also uses Cython. I could try translating the Cython code into Python code though.
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer

Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...

User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by martin.novy » May 25th, 2020, 9:25 am

lemon41625 wrote:
May 25th, 2020, 8:21 am
I could try translating the Cython code into Python code though.
sorry, nevermind, now I have just found out , that PyPy cannot run PyQt

User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by martin.novy » May 25th, 2020, 10:14 am

lemon41625 wrote:
May 23rd, 2020, 7:25 am

It is roughly the speed because they run on very similar if not identical code.
When running transFunc.py, CACompute.CACompute.pyx is called (compute function).
When running a rule.ca_rule file, CAComputeParse.CACompute.pyx is called (compute function).

If you look at the code of the compue function, you will find that it is nearly identical.
i am puzzled

i believed ,
transFunc.transition_func is interpreted by CPython,
but CAComputeParse.CACompute.transition_func is compiled to machine code

----
or maybe much time is spent rehashing
transition_func_cache

i will have to test CAViewer version just before transition_func_cache
before april 12

BTW, could transition_func_cache become gigabytes if range 2+ or num_states >>2 ?

lemon41625
Posts: 344
Joined: January 24th, 2020, 7:39 am
Location: 小红点 (if you know where that is)

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by lemon41625 » May 25th, 2020, 10:19 am

martin.novy wrote:
May 25th, 2020, 10:14 am
lemon41625 wrote:
May 23rd, 2020, 7:25 am

It is roughly the speed because they run on very similar if not identical code.
When running transFunc.py, CACompute.CACompute.pyx is called (compute function).
When running a rule.ca_rule file, CAComputeParse.CACompute.pyx is called (compute function).

If you look at the code of the compue function, you will find that it is nearly identical.
i am puzzled

i believed ,
transFunc.transition_func is interpreted by CPython,
but CAComputeParse.CACompute.transition_func is compiled to machine code

----
or maybe much time is spent rehashing
transition_func_cache

i will have to test CAViewer version just before transition_func_cache
before april 12

BTW, could transition_func_cache become gigabytes if range 2+ or num_states >>2 ?
transFunc.transition_func has to be interpreted by CPython since the rules changes if I change the code in transFunc.py without recompiling
could transition_func_cache become gigabytes if range 2+ or num_states >>2 ?
Perhaps, I haven't thought about it
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer

Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...

User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Numba

Post by martin.novy » May 25th, 2020, 10:27 am

lemon41625 wrote:
May 25th, 2020, 10:19 am
transFunc.transition_func has to be interpreted by CPython since the rules changes if I change the code in transFunc.py without recompiling
a new possibility for transFunc.transition_func could be Numba


https://en.wikipedia.org/wiki/Numba

https://pybenchmarks.org/u64q/numba.php

NUMBA/NumbaPro:

NUMBA : NumbaPro or recently Numba (NumbaPro has been deprecated, and its code generation features have been moved into open-source Numba.) is an Open Source NumPy-aware optimizing compiler for Python sponsored by Anaconda, Inc. It uses the remarkable LLVM compiler infrastructure to compile Python syntax to machine code. Numba supports compilation of Python to run on either CPU or GPU hardware and it's fundamentally written in Python. it's easy to install and implement.
https://stackoverflow.com/questions/451 ... uda-python

User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by martin.novy » May 26th, 2020, 6:03 am

lemon41625 wrote:
May 25th, 2020, 10:19 am
martin.novy wrote:
May 25th, 2020, 10:14 am
BTW, could transition_func_cache become gigabytes if range >= 2 or num_states >= 3 ?
Perhaps, I haven't thought about it
now i suspect cpu cache thrashing site:stackoverflow.com

lemon41625
Posts: 344
Joined: January 24th, 2020, 7:39 am
Location: 小红点 (if you know where that is)

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by lemon41625 » May 27th, 2020, 10:47 pm

Update v1.19:

Added Naive Rules and Proper Reading Orders
Added Far Corners INT since interesting outer totalistic Far Corners rules appear to be nonexistent
Fixed bug with undo and grid lines
I can't believe I still haven't done 3 state outer totalistic yet
Added more rules to rules folder.

Source Code + WinPython Installation: https://github.com/jedlimlx/Cellular-Automaton-Viewer
Source Code:
Attachments
CAViewer.zip
(4.25 MiB) Downloaded 114 times
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer

Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...

lemon41625
Posts: 344
Joined: January 24th, 2020, 7:39 am
Location: 小红点 (if you know where that is)

Re: CAViewer - A Cellular Automaton Simulator written in Python

Post by lemon41625 » June 2nd, 2020, 7:18 am

Update v1.20:

Fixed bugs with Extended Generations
Added D2_x symmetry
Added 3 state outer totalistic rules

Source Code + WinPython Installation: https://github.com/jedlimlx/Cellular-Automaton-Viewer
Source Code:
Attachments
CAViewer.zip
(4.3 MiB) Downloaded 113 times
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer

Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...

Post Reply