i = "#1101_101#"
class turingAddition:
def __init__(self, input):
self.input = input
self.pos = 0
self.state = "q0"
self.direction = "R"
if self.input[self.pos] == "#":
self.pos += 1
self.q1(self.pos)
def q1(self, pos):
self.state = "q1"
while self.input[pos] != "#":
pos += 1
self.q2(self.pos)
def q2(self, pos):
self.state = "q2"
self.direction = "L"
pos -= 1
if self.input[pos] == "1":
self.input[pos] = "0"
return self.q4(self.pos)
if self.input[pos] == "0":
while self.input[pos] != "1" or self.input[pos] != "_":
pos -= 1
if self.input[pos] == "1":
return self.q3(self.pos)
elif self.input[pos] == "_":
print(self.state, self.input, self.direction)
def q3(self, pos):
self.state = "q3"
self.direction = "R"
while self.input[pos] != "#":
pos += 1
self.input[pos] = "1"
return self.q4(self.pos)
def q4(self, pos):
self.state = "q4"
self.direction = "L"
while self.input[pos] != "_":
pos += 1
return self.q5(self.pos)
def q5(self, pos):
while self.input[pos] == "1":
self.input[pos] = "0"
if self.input[pos] == "#":
self.input = self.input[0] + "1" + self.input[1:]
return self.q6()
pos -= 1
if self.input[pos] == "0":
self.input[pos] = "1"
return self.q6(self.pos)
def q6(self, pos):
while self.input[pos] != "#":
pos -= 1
return self.q1(self.pos)
turingAddition(i)
Hello, I have tried to recreate a turing machine that performs binary addition. However, it doesn't work and I don't know why. This is my first OOP project, don't judge