6 stable releases
1.2.0 | Oct 21, 2023 |
---|---|
1.1.4 | Jan 21, 2021 |
1.0.0 | Jan 20, 2021 |
#227 in Embedded development
41KB
705 lines
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
rule30
example minimised- fixed signature of
cs8_into_u8()
to be internally compatible - added
u8_into_cs8
utility 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
Dependencies
~0.7–1.6MB
~34K SLoC