diff --git a/TaskC00/run.py b/TaskC00/run.py deleted file mode 100644 index d69b60b..0000000 --- a/TaskC00/run.py +++ /dev/null @@ -1,64 +0,0 @@ -import sys -import copy - -class FSA: - - def __init__(self): - self.initial_state = '0' - self.final_states = set() - - self.transitions = dict() - self.alphabet = set() - - def add_transition(self, state_from, state_to, symbol): - - if state_from in self.transitions.keys(): - if symbol not in self.transitions[state_from].keys(): - self.transitions[state_from][symbol] = {state_to} - else: - self.transitions[state_from][symbol] |= {state_to} - else: - self.transitions[state_from] = dict() - self.transitions[state_from][symbol] = {state_to} - - def add_final_state(self, state): - self.final_states.add(state) - def get_final_states(self, string): - current_states = {self.initial_state} - for symbol in string: - new_current_states = set() - for current_state in current_states: - try: - new_current_states |= self.transitions[current_state][symbol] - except: - pass - current_states = copy.deepcopy(new_current_states) - return current_states - - def accepts(self, string): - for final_state in self.get_final_states(string): - if final_state in self.final_states: - return True - return False - -fsa = FSA() - -table = open(sys.argv[1]) -for line in table: - line = line.rstrip() - - if len(line.split('\t')) == 3: - a, b, c = line.split('\t') - fsa.add_transition(a, b, c) - fsa.alphabet.add(c) - else: - fsa.add_final_state(line) - - -for line in sys.stdin: - line = line.rstrip() - - if fsa.accepts(line): - print('YES') - else: - print('NO') \ No newline at end of file