import sys def write_answer(answer, output_file): with open(output_file, 'a', encoding='utf-8') as file: file.write(answer+'\n') def run_automaton(file_path, end_positions, output_file): transitions = {} with open(file_path, 'r', encoding='utf-8') as file: with open(output_file, 'w', encoding='utf-8') as file_writed: lines = file.readlines() for line in lines: if line.strip(): parts = line.split() state_from = int(parts[0]) if len(parts) > 1: state_to = int(parts[1]) if len(parts) == 3: symbol = parts[2] transitions.setdefault(state_from, []).append((symbol, state_to)) else: transitions[state_from] = [] def explore_paths(current_state, current_word): if current_state not in transitions: if str(current_state) in end_positions: write_answer(current_word, output_file) return possible_transitions = transitions[current_state] for transition_symbol, next_state in possible_transitions: explore_paths(next_state, current_word + transition_symbol) explore_paths(0, "") def what_is_the_ended_positions(file_path): array = [] with open(file_path, 'r', encoding='utf-8') as file: for row in file: line = row.strip().split('\t') if len(line) == 1: array += line return array input_file = sys.argv[1] output_file = sys.argv[2] # file_path = "small.in" # output_file = "small.out" end_positions = what_is_the_ended_positions(input_file) run_automaton(input_file, end_positions, output_file)