6 stable releases
1.2.0 | Oct 21, 2023 |
---|---|
1.1.4 | Jan 21, 2021 |
1.0.0 | Jan 20, 2021 |
#239 in Embedded development
30 downloads per month
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
~35K SLoC