automata

automata.byji.co

May 11, 2012

The Gem

As a final project for my Theory of Computation class, I worked with Lukas Sabota in writing this fine Gem for creating a number of types of automata, including:

  • Deterministic Finite Automata (DFA)
  • Nondeterministic Finite Automata (NFA)
  • Push-down Automata (PDA)
  • Turing Machines

These automata are formally defined by n-tuples, and as such we can build them by defining their corresponding instance fields in one of two ways: individually through setter methods, or through a structured YAML file. Once we’ve built our automaton, we’re then able to feed it input and evaluate the output.

There’s a ton of documentation available at the following:

But wait! There’s more!

To make our Gem and its features more accessible to non-Rubyists, non-programmers, and other students, I spun up a little web interface for it at automata.byji.co. You’re able to build an automaton by defining its features via YAML structure. Once you’ve built your machine, you can then feed it input and evaluate its output.