summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-11-17 12:36:53 -0700
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-11-17 12:36:53 -0700
commit6e644327a786e6274e62eb48a732265e45ffd54e (patch)
tree9b7311c8de636695c8b3fe8e8a0a1f5a8843e6bf
parenteaca9073ebf8a438ec8474f15171a62082fa141b (diff)
downloadsimponic.xyz-6e644327a786e6274e62eb48a732265e45ffd54e.tar.gz
simponic.xyz-6e644327a786e6274e62eb48a732265e45ffd54e.zip
remove turing machine
-rw-r--r--godel/js/turing_machine.js72
1 files changed, 0 insertions, 72 deletions
diff --git a/godel/js/turing_machine.js b/godel/js/turing_machine.js
deleted file mode 100644
index a61b43a..0000000
--- a/godel/js/turing_machine.js
+++ /dev/null
@@ -1,72 +0,0 @@
-class TuringMachine {
- constructor(tape = [], rules = [], initialState = "q0", acceptState = "f") {
- this.tape = tape;
- this.rules = this.parseRules(rules);
- this.state = initialState;
- this.head = 0;
- this.acceptState = acceptState;
-
- this.iteration = 0;
- }
-
- getStateStatus() {
- return `State: ${this.state}, Step: ${this.iteration}`;
- }
-
- getHead() {
- return this.head;
- }
-
- getState() {
- return this.state;
- }
-
- getTapeAtCell(idx) {
- return this.tape[idx];
- }
-
- setTapeAtCell(idx, val) {
- this.tape[idx] = val;
- }
-
- isAccepting() {
- return this.state == this.acceptState;
- }
-
- parseRules(rules) {
- const parsedRules = {};
- for (const [currentState, readSymbol, action, newState] of rules) {
- const key = `${currentState},${readSymbol}`;
- const value = `${newState},${action}`;
- parsedRules[key] = value;
- }
- return parsedRules;
- }
-
- step() {
- const currentSymbol = this.tape[this.head];
- const key = `${this.state},${currentSymbol}`;
- if (!(key in this.rules)) {
- return false;
- }
- const rule = this.rules[key];
- const [newState, action] = rule.split(",");
-
- this.state = newState;
- this.iteration++;
-
- if (action === "R") {
- this.head += 1;
- } else if (action === "L") {
- this.head -= 1;
- } else {
- this.tape[this.head] = action;
- }
-
- if (this.isAccepting()) {
- return false;
- }
-
- return this.head >= 0 && this.head < this.tape.length;
- }
-}