-
Notifications
You must be signed in to change notification settings - Fork 0
/
INT3_5_main.py
187 lines (149 loc) · 8.66 KB
/
INT3_5_main.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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
from INT3_5_standard import *
from INT3_5_deterministic import *
from INT3_5_table_display import *
from INT3_5_word_recognition import *
from INT3_5_minimization import minimization
from INT3_5_complementary import *
from INT3_5_supp_main import *
if __name__ == '__main__':
print("\n\n\n ________ ________ ___ __ ____________ __ ______ __________ _ __")
print(" /_ __/ / / / ____/ / | / / / /_ __/ __ \ / |/ / |/_ __/ __ \/ | / /")
print(" / / / /_/ / __/ / /| |/ / / / / / / / / / ______ / /|_/ / /| | / / / / / / |/ / ")
print(" / / / __ / /___ / ___ / /_/ / / / / /_/ / /_____/ / / / / ___ |/ / / /_/ / /| / ")
print("/_/ /_/ /_/_____/ /_/ |_\____/ /_/ \____/ /_/ /_/_/ |_/_/ \____/_/ |_/ \n")
print("By Cyril Nakha, Ali Nahas , Nathan Krief , Paul Hu\n\n\n\n")
# WE FIRST CHOSE THE AUTOMATON AND THEN TAKE EVERYTHING
file = choose_file()
alphabet, states, initial, final, list_transitions = ouverture(file)
choice = 0
choice_list = ["1", "2", "3", "4", "5", "6"]
while choice != '6':
afficher_menu()
choice = input("\nYour choice : \n -> ")
while choice not in choice_list:
choice = input("\nPlease redo: \n -> ")
if choice == "1":
print("\n\n\n\n==================== DISPLAY AUTOMATON ====================\n")
print_matrix(alphabet, states, initial, final, list_transitions)
input("\nClick on anything to return to the menu\n")
elif choice == "2":
print("\n\n\n\n==================== DETERMINISTIC ====================\n")
print(" - There is your default automaton : \n\n")
print_matrix(alphabet, states, initial, final, list_transitions)
# input("\nClick on anything to continue\n")
print("\nIs your automaton determinized ? \n -> ", end="")
# IF THE AUTOMATON IS DETERMINIZED
if is_deterministic(alphabet, states, initial, list_transitions):
print_progressively("yes !")
input("\nNext step : Completion !\nClick on anything to continue\n")
# await_time()
print(
"\n==================== COMPLETION PART ====================")
print("\nIs your automaton complete ? \n -> ", end="")
# IF IT'S COMPLETE
if is_complete(alphabet, states, list_transitions):
print_progressively("yes !")
input(
"\nNext step : Complementary. \nClick on anything to continue …\n")
print(
"\n==================== COMPLEMENT PART ====================\n")
complement(alphabet, states, initial,
final, list_transitions, 0)
input(
"\nReturn to the MAIN MENU. \nClick on anything to continue …\n")
# IF IT'S NOT COMPLETE
else:
print(
"\n==================== COMPLETION PART ====================\n")
local_transitions, local_states = completion(
alphabet, states, list_transitions)
print("There is your complete deterministic automaton : \n")
print_matrix(alphabet, states, initial,
final, list_transitions)
input(
"\nNext step : Complementary. \nClick on anything to continue …\n")
print(
"\n==================== COMPLEMENT PART ====================\n")
print("There is the complement automaton : \n")
complement(alphabet, local_states, initial,
final, local_transitions, 0)
input(
"\nReturn to the MAIN MENU. \nClick on anything to continue …\n")
# IF THE AUTOMATON IS NOT DETERMINIZED
else:
print_progressively("NO !")
print("\n======== DETERMINIZATION")
local_alphabet, local_transition, local_states, local_initial, local_final = determinisation(alphabet, states, initial,
final, list_transitions)
print("There is the deterministic automaton : \n")
print_matrix(local_alphabet, local_states, local_initial,
local_final, local_transition)
input("\nNext step : Completion !\nClick on anything to continue\n")
print(
"\n==================== COMPLETION PART ====================")
print("\nIs your automaton complete ? \n -> ", end="")
# COMPLETION
if is_complete(local_alphabet, local_states, local_transition):
print_progressively("yes !")
input(
"\nNext step : Complementary. \nClick on anything to continue …\n")
print(
"\n==================== COMPLEMENT PART ====================\n")
complement(local_alphabet, local_states, local_initial,
local_final, local_transition, 0)
input(
"\nReturn to the MAIN MENU. \nClick on anything to continue …\n")
# IF IT'S NOT COMPLETE
else:
print(
"\n==================== COMPLETION PART ====================\n")
local_transition, local_states = completion(
local_alphabet, local_states, local_transition)
print("There is your complete deterministic automaton : \n")
print_matrix(local_alphabet, local_states,
local_initial, local_final, local_transition)
input(
"\nNext step : Complementary. \nClick on anything to continue …\n")
print(
"\n==================== COMPLEMENT PART ====================\n")
print("There is the complement automaton : \n")
complement(local_alphabet, local_states, local_initial,
local_final, local_transition, 0)
input(
"\nReturn to the MAIN MENU. \nClick on anything to continue …\n")
# IS STANDARD ?
elif choice == "3":
print("\n\n\n\n==================== STANDARDIZATION ====================\n")
print("\nIs your automaton standardize ? \n -> ", end="")
# IF IT IS STANDARD
if is_standard(initial, list_transitions):
print_progressively("yes !")
input("\nReturn to the MAIN MENU. \nClick on anything to continue …\n")
# IF IT IS NOT STANDARD
else:
input("\nNext step : Standardization !\nClick on anything to continue\n")
print("\nThere is the standardize automaton\n")
standardize(alphabet, states, initial, final, list_transitions)
input("\nReturn to the MAIN MENU. \nClick on anything to continue …\n")
elif choice == "4":
print("\n\n\n\n==================== Word Recognation ====================\n")
choice = '3'
print("Do you want to recognize a word on the automate or its complementary ?\n 1. This automate\n 2. The complementary")
while choice <'1' or choice>'2' :
choice = input("\n -> ")
word = "psp"
while word != "end":
print("\nEnter \"end\" to stop the loop.\nEnter the word to recognize :\n -> ", end="")
word = input()
word_recognition(alphabet, states, initial, final, list_transitions, word, choice)
input("\nReturn to the MAIN MENU. \nClick on anything to continue …\n")
elif choice == "5":
print("\n\n")
print("==================== CHANGE AUTOMATON ====================\n")
file = choose_file()
alphabet, states, initial, final, list_transitions = ouverture(
file)
# TO LEAVE
elif choice == "6":
break
print("\n\nI finished my work for today ! Bye !")