Используйте входные данные в наборах и словарях (Python) - PullRequest
0 голосов
/ 18 ноября 2018
   class DFA:
current_state = None;
def __init__(self, states, alphabet, transition_function, start_state, accept_states):
    self.states = states;
    self.alphabet = alphabet;
    self.transition_function = transition_function;
    self.start_state = start_state;
    self.accept_states = accept_states;
    self.current_state = start_state;
    return;

def transition_to_state_with_input(self, input_value):
    if ((self.current_state, input_value) not in self.transition_function.keys()):
        self.current_state = None;
        return;
    self.current_state = self.transition_function[(self.current_state, input_value)];
    return;

def in_accept_state(self):
    return self.current_state in accept_states;

def go_to_initial_state(self):
    self.current_state = self.start_state;
    return;

def run_with_input_list(self, input_list):
    self.go_to_initial_state();
    for inp in input_list:
        self.transition_to_state_with_input(inp);
        continue;
    return self.in_accept_state();
pass;



  states = {0, 1, 2, 3};
  alphabet = {'a', 'b', 'c', 'd'};

 tf = dict();
          tf[(0, 'a')] = 1;
          tf[(0, 'b')] = 2;
          tf[(0, 'c')] = 3;
          tf[(0, 'd')] = 0;
          tf[(1, 'a')] = 1;
          tf[(1, 'b')] = 2;
         tf[(1, 'c')] = 3;
         tf[(1, 'd')] = 0;
          tf[(2, 'a')] = 1;
          tf[(2, 'b')] = 2;
         tf[(2, 'c')] = 3;
    tf[(2, 'd')] = 0;
    tf[(3, 'a')] = 1;
    tf[(3, 'b')] = 2;
    tf[(3, 'c')] = 3;
    tf[(3, 'd')] = 0;
    start_state = 0;
    accept_states = {2, 3};

    d = DFA(states, alphabet, tf, start_state, accept_states);

    inp_program = list('abcdabcdabcd');

    print (d.run_with_input_list(inp_program))

Это программа DFA (детерминированные автоматы), которая принимает состояния и алфавиты (как жестко закодированные значения), а затем добавляет их в словарь, и для каждого состояния и алфавита мы присваиваем определенное значение словарю

Iхотите, чтобы эта программа определялась пользователем как 1. Принимает ввод от пользователя и добавляет в набор с именем «Set» 2. Принимает ввод от пользователя и добавляет в набор с именем «алфавиты» 3 для каждой пары наборов, и алфавиты просят пользователя добавить значение

Может ли кто-нибудь мне помочь?

Спасибо

...