-
Notifications
You must be signed in to change notification settings - Fork 0
/
questao3.py
58 lines (56 loc) · 2.06 KB
/
questao3.py
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
51
52
53
54
55
56
57
58
def remover_none_em_lista(lista):
lista = list(filter(lambda x: x != None, lista))
return lista
def maquina_questao_3(fita, estado_atual='q0', i=0):
if estado_atual == 'q0':
if fita[i] == 0:
return maquina_questao_3(fita, 'q1', i + 1)
if fita[i] == 1:
return maquina_questao_3(fita, 'q0', i + 1)
if estado_atual == 'q1':
if len(fita) == i:
return maquina_questao_3(fita, 'q2', i - 1)
if fita[i] == "X":
return maquina_questao_3(fita, 'q1', i + 1)
if fita[i] == 1:
fita[i] = "X"
return maquina_questao_3(fita, 'q6', i + 1)
if estado_atual == 'q2':
if fita[i] == "X":
fita.pop(i)
return maquina_questao_3(fita, 'q2', i - 1)
if fita[i] == 0:
fita.pop(i)
return maquina_questao_3(fita, 'q3', i - 1)
if estado_atual == 'q3':
fita = remover_none_em_lista(fita)
return fita
if estado_atual == 'q4':
if fita[i] == None:
return maquina_questao_3(fita, 'q4', i + 1)
if fita[i] == 1:
return maquina_questao_3(fita, 'q4', i + 1)
if fita[i] == 0:
return maquina_questao_3(fita, 'q1', i + 1)
if estado_atual == 'q5':
if i < 0:
return maquina_questao_3(fita, 'q7', i + 1)
if fita[i] == None:
return maquina_questao_3(fita, 'q7', i + 1)
if fita[i] == 1:
return maquina_questao_3(fita, 'q5', i - 1)
if estado_atual == 'q6':
if len(fita) == i:
return maquina_questao_3(fita, 'q6', i - 1)
if fita[i] == 1:
return maquina_questao_3(fita, 'q6', i - 1)
if fita[i] == "X":
return maquina_questao_3(fita, 'q6', i - 1)
if fita[i] == 0:
return maquina_questao_3(fita, 'q5', i - 1)
if estado_atual == 'q7':
if fita[i] == 1:
fita[i] = None
return maquina_questao_3(fita, 'q4', i + 1)
if fita[i] == 0:
return maquina_questao_3(fita, "q1", i + 1)