summaryrefslogtreecommitdiff
path: root/Homework/cs5000/hw02/hw02/Mod3DFA.py
diff options
context:
space:
mode:
Diffstat (limited to 'Homework/cs5000/hw02/hw02/Mod3DFA.py')
-rw-r--r--Homework/cs5000/hw02/hw02/Mod3DFA.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/Homework/cs5000/hw02/hw02/Mod3DFA.py b/Homework/cs5000/hw02/hw02/Mod3DFA.py
new file mode 100644
index 0000000..93a7c5c
--- /dev/null
+++ b/Homework/cs5000/hw02/hw02/Mod3DFA.py
@@ -0,0 +1,50 @@
+#########################################
+## Mod3DFA.py
+## bugs to vladimir kulyukin in canvas
+#########################################
+
+class Mod3DFA:
+
+ def __q0(self, s, pos):
+ if len(s) == pos:
+ return True
+ elif s[pos] == '0':
+ return self.__q0(s, pos+1)
+ elif s[pos] == '1':
+ return self.__q1(s, pos+1)
+ else:
+ return self.__q3(s, pos+1)
+
+ def __q1(self, s, pos):
+ if len(s) == pos:
+ return False
+ elif s[pos] == '0':
+ return self.__q2(s, pos+1)
+ elif s[pos] == '1':
+ return self.__q0(s, pos+1)
+ else:
+ return self.__q3(s, pos+1)
+
+ def __q2(self, s, pos):
+ if len(s) == pos:
+ return False
+ elif s[pos] == '0':
+ return self.__q1(s, pos+1)
+ elif s[pos] == '1':
+ return self.__q2(s, pos+1)
+ else:
+ return self.__q3(s, pos+1)
+
+ def __q3(self, s, pos):
+ if (len(s) == pos):
+ return False
+ else:
+ return self.__q3(s, pos+1)
+
+ def processString(self, s):
+ if s[0] == '0':
+ return self.__q0(s, 1)
+ elif s[0] == '1':
+ return self.__q1(s, 1)
+ else:
+ return self.__q3(s, pos+1)