Nit-Picking Magistrate

    olivaw

    2.0.3 • Public • Published

    Olivaw

    A one-dimensional, binary cellular automata library built in ✨ javascript ✨ .

    Olivaw allows you to work with any of Wolfram's elementary automata by providing one of the 256 rules.

    The concept of one dimensional cellular automata is fascinating and sometimes might seem quite complex, I've put together an illustrated guide to help you understand it better.

    You can also find a working example over at /cellular-automata

    Usage

    var olivaw = require('olivaw')
     
    var automaton = olivaw({
      rule: 110,
      population: 101,
      life: 500
    })
     
    // run the automata
    var automata = automaton.set()

    The output you get is an ndarray (or a nested, multidimensional array) of automata, where each array is a year in the generation of an automata. It's best to set the generation to run for over 100 years for more interesting results ✨.

    automaton = olivaw(opts)

    Create a new instance of olivaw by providing a set of options. These three options are required:

    • opts.rule: one of 256 rules for the automata to follow
    • opts.population: the population size, or the number of cells you want to work with
    • opts.life: life span of an automata instance, or the number of years it will run for

    olivaw.set()

    Sets up and runs your automata through it's life span. Will use the opts of rule, population, and life that you've provided when you set up olivaw.

    Given you have this set up:

    var olivaw = require('olivaw')
     
    // set up this instance of olivaw 
    var automaton = olivaw({
      rule: 110,
      population: 2,
      life: 3 
    })
    // run through a generation
    var automata = olivaw.set()

    olivaw.set will return the following output that you could then work with to display or manipulate the data:

    // automata generation
    [ 
      // year in a generation
      [     
        //individual cell
        { state: 1, right: 0, left: 1  },
        { state: 0, right: 1, left: 1  },
      ],
      [ 
        { state: '1', right: '1', left: '1'  },
        { state: '1', right: '1', left: '1'  },
      ],
      [ 
        { state: '0', right: '0', left: '0'  },
        { state: '0', right: '0', left: '0'  },
      ]
    ]
     

    Install

    npm install --save olivaw

    Install

    npm i olivaw

    DownloadsWeekly Downloads

    12

    Version

    2.0.3

    License

    MIT

    Last publish

    Collaborators

    • lrlna