/wireworld

A rust implementation of the wireworld cellular automaton by Brian Silverman

Primary LanguageRustBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Wireworld

Intro

A implementation of the wireworld cellular automaton proposed by Brian Silverman in 1987. Written in Rust using SDL2 as the multimedia engine.

2 clock generators sending electrons into an XOR gate in wireworld

Deps

The only dependency is SDL2 for which you require it's libraries. In most Linux distributions you can install them with the SDL2-devel package or similar.

Running it

In order to run it you only need a working Rust environment:

cd wireworld
cargo run # Runs it using the development profile
# or
cargo run --release # Runs it using the release profile which applies some optimizations

After the window opens up, Left Clicking any cell will produce the following output:

  • If the cell is Empty (black), it will turn it into a Conductor (yellow).
  • If the cell is a Conductor (yellow), it will turn it into a Electron Head (blue).

In order to make a cell Empty (black) again, you can Right Click it.

For more info on how the automaton works, check the wikipedia page :)