#cellular-automata #no-std

no-std lysogeny-broth

Substrate for cellular automata in Rust

6 stable releases

1.2.0 Oct 21, 2023
1.1.4 Jan 21, 2021
1.0.0 Jan 20, 2021

#134 in Embedded development

MIT AND Apache-2.0

41KB
705 lines

dependency status

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

Dependencies

~0.7–1.4MB
~32K SLoC