Skip to content

kkdai/tm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TM: Turing Machine implement in Golang

GitHub license GoDoc Build Status

What is this Turing Machine

A Turing machine is an abstract "machine" that manipulates symbols on a strip of tape according to a table of rules; to be more exact, it is a mathematical model that defines such a device. Despite the model's simplicity, given any computer algorithm, a Turing machine can be constructed that is capable of simulating that algorithm's logic. (cited from wiki)

Installation and Usage

Install

go get github.com/kkdai/tm

Usage

Following is sample code to implement a TM to rewrite all tape 0 to 1 as follow:

package main

import (
    "fmt"
    . "github.com/kkdai/tm"
)

func main() {
	nTM := NewTM()
	
	//Input State and declare if it is final state
	nTM.InputState("0", false)
	nTM.InputState("1", true)

	//Input config
	// InputConfig parameter as follow:
	//	- SourceState, 
	// - Input
	// - Modified Value
	// - DestinationState 
	// - Tape Head Move Direction
	nTM.InputConfig("0", "1", "1", "1", MoveRight)
	nTM.InputConfig("0", "0", "1", "0", MoveLeft)
	nTM.InputConfig("1", "0", "1", "0", MoveLeft)
	nTM.InputConfig("1", "1", "1", "1", MoveRight)

	//Input tape data
	nTM.InputTape("0", "0", "1", "1", "0", "0", "0")

	//Run TM to the finish (if exist)
	nTM.Run()
	
	fmt.Println("New Tape:=", nTM.ExportTape())
	}

Inspired By

Project52

It is one of my project 52.

License

This package is licensed under MIT license. See LICENSE for details.

About

Simple Turing Machine implement in Golang

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages