Substrate for cellular automata in Rust. Named after the LB medium used in mircobiology. Also look into Angelina Fanny Hesse ;) The underlying grid is of toroidal shape, i.e. the coordinate values/neighbours wrap around. This code is dual-licensed under the MIT/Apache 2.0 licenses.
examples
- retrieve value as grid:
cargo run --example retrieval - implementation of rule 30:
cargo run --example rule30 - save grid states as JSON:
cargo run --example json
features
dead-alive-only
Enable utility functions for binary (only) cell state.
dead-alive-into-bool
Allow dead/alive cell to be converted into boolean values.
dead-alive-u8-utils
Group 8 binary cell states into an octet for nicer processing and i/o.
versions / changes
upcoming
1.2
- documentation extended
- minor code cleaning
rule30example minimised- fixed signature of
cs8_into_u8()to be internally compatible - added
u8_into_cs8utility function - grouped CellState / u8 conversions under feature "dead-alive-u8-utils"
- dropped feature "dead-alive-into-group-u8"
- added JSON example
- implemented
next()as iterator - implemented
next_byte()for easier byte conversion
1.1
- binary cell states are explicit feature now: "dead-alive-only"
- optional conversion of binary cell states into boolean value as feature: "dead-alive-into-bool"
- convert eight cellstates into an u8 (octet) via feature: "dead-alive-into-group-u8"
1.0
- grid works (setting & retrieving cell states)
- universe implemented (rules via function pointer)
- tests
- examples
- documentation
links
- crate documentation
- wikipedia: cellular automaton
- Wolfram Atlas - various types of one-dimensional cellular automata
- MathWorld: Rule 30
- ca-rules ... a possible compagnion crate
- JSON