summaryrefslogtreecommitdiff
path: root/Homework/cs5000/hw02/hw02/Mod3DFA.py
blob: 93a7c5c1f1cbcae8bedfec96522a94cb9d7e726a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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)