diff options
Diffstat (limited to 'Homework/cs5000/hw02/hw02/Mod3DFA.py')
| -rw-r--r-- | Homework/cs5000/hw02/hw02/Mod3DFA.py | 50 |
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)
|
