https://github.com/daliacoss/eca
elementary cellular automata visualizer
https://github.com/daliacoss/eca
Last synced: 20 days ago
JSON representation
elementary cellular automata visualizer
- Host: GitHub
- URL: https://github.com/daliacoss/eca
- Owner: daliacoss
- Created: 2019-11-03T19:07:08.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2023-01-26T13:55:14.000Z (over 2 years ago)
- Last Synced: 2025-02-17T06:45:37.170Z (4 months ago)
- Language: Clojure
- Homepage: https://dalia.cc/eca
- Size: 58.6 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Elementary Cellular Automata (ECA) Visualizer
## What is this?
This is a toy web app for running and visualizing [elementary cellular automata](https://en.wikipedia.org/wiki/Elementary_cellular_automaton). It is built in Reagent, which is basically React for ClojureScript.
## What's an ECA?
A cellular automaton consists of a grid of cells, each of which is in one of at least two possible states, and a set of rules that, when applied to the grid, will yield a new grid with new cell states.
In an ECA, the grid is one-dimensional, and each cell is either on or off (1 or 0). The ruleset decides the new state of each cell by looking at its current state along with the states of its two neighbours. There are 8 possible permutations of cell triads (000, 001, 010...111), and an ECA ruleset will yield either 1 or 0 for each permutation. This works out to 256 (2^8) possible rulesets.
## Build
First, ensure that you have Node.js and Java SDK 8 installed.
Then, navigate to the repository root and run `yarn install` (if you have Yarn) or `npm install` to install dependencies.
Now you can build the application as a static site by running `shadow-cljs release app` or simply `yarn release`.
## Run
After installing dependencies, use `shadow-cljs watch app` or `yarn watch` to run the app in a development server.
## License
Copyright © 2019 Decky Coss
Distributed under the Eclipse Public License either version 2.0 or (at
your option) any later version.