Скачиваний:
3
Добавлен:
24.05.2024
Размер:
2.62 Кб
Скачать
from 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 - конечный автомат