
Добавил:
Silebox
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:лаб8 - конечный автомат / main
.pyfrom machine import Machine
class Main:
@staticmethod
def select():
while True:
choice = int(input("Введите номер задания(0 - выход): "))
match choice:
case 1: Main.first()
case 2: Main.second()
case 0: return
input("Введите Enter для продолжения...")
@staticmethod
def first():
states = ['q1','q2','q3','q4']
trans = {state:{} for state in states}
for state in states:
print(f"состояние: {state}")
for i in range(3):
trigger = 'x' + input("Введите номер триггера (x): ")
destination = 'q' + input("Введите номер следующего состояние (q): ")
output = 'y' + input("Введите номер выхода (y): ")
trans[state][trigger] = (destination, output)
print(trans)
mh = Machine(trans, 'q1')
input_sequence = []
for i in range(int(input("Введите количество букв в входном слове: "))):
input_sequence.append(input(f"Введите букву {i} входного слова: "))
output_sequence = [mh.find_out(x) for x in input_sequence]
print("Выходное слово: ", *output_sequence)
@staticmethod
def second():
states = ['q1','q2','q3','q4']
symbols = ['x1','x2','x3']
trans = {state:{} for state in states}
print("Ввод таблиц состояний и вывода...")
for state in states:
for symbol in symbols:
print(f"{state}:{symbol}")
destination = 'q' + input("Введите назначение (q): ")
out = input("Введите выход (буква): ")
trans[state][symbol] = (destination,out)
initial = input("Введите конечное состояние: ")
input_sequence = []
for i in range(int(input("Введите количество символов выходного слова: "))):
input_sequence.append(input(f"Введите букву {i} выходного слова: "))
mh = Machine(trans,'q1')
output_word = [mh.find_in(x) for x in input_sequence]
if mh.state == initial:
print("Входное слово: ", *output_word)
print("Начальное состояние: q1")
if __name__ in "__main__":
Main.select()
Соседние файлы в папке лаб8 - конечный автомат