From 8c52521f2bbf425e03d402fdceeb7d2350444740 Mon Sep 17 00:00:00 2001 From: IgnBys Date: Sun, 19 Nov 2023 19:01:41 +0100 Subject: [PATCH] TaskC04 --- TaskC04/eps.out | 20 ++++++++++---------- TaskC04/run.py | 44 ++++++++++++++++++++++++-------------------- TaskC04/simple1.out | 8 ++++++++ TaskC04/simple2.out | 9 +++++++++ 4 files changed, 51 insertions(+), 30 deletions(-) create mode 100644 TaskC04/simple1.out create mode 100644 TaskC04/simple2.out diff --git a/TaskC04/eps.out b/TaskC04/eps.out index 857902e..77e460b 100644 --- a/TaskC04/eps.out +++ b/TaskC04/eps.out @@ -1,10 +1,10 @@ -NO -NO -NO -NO -NO -NO -NO -NO -NO -NO +TRUE a +FALSE aa +TRUE aaa +TRUE abc +TRUE aaabc +FALSE aaabcd +FALSE aabc +FALSE abd +TRUE ad +FALSE aad diff --git a/TaskC04/run.py b/TaskC04/run.py index dd8f0a1..3da6bb7 100644 --- a/TaskC04/run.py +++ b/TaskC04/run.py @@ -1,38 +1,42 @@ import sys -sys.setrecursionlimit(5000) - -def write_answer(answer): +def write_answer(answer, row): with open(output_file, 'a') as file: - file.write(answer+'\n') + file.write(answer+' '+row) def line_checking(row, position): stack = [(row, position)] - + help_row, help_position=row,position while stack: help_row, help_position = stack.pop() - if help_row == '\n': - if help_position in what_is_the_ended_positions(): - return True - else: - return False + if help_row == '': + help_row = '\n' next_character_array = find_next_position(help_position, help_row[0]) if next_character_array: for element_in_next_position_array in next_character_array: - stack.append((help_row[1:], element_in_next_position_array)) - return False + # if help_row == '\n': + # if help_position in what_is_the_ended_positions(): + # return True + # else: + # return False + if help_row == '\n': + if help_position in what_is_the_ended_positions(): + return True + else: + return False + # return False def find_next_position(position, character): with open(used_table, 'r') as readed_used_table: take_all_possible_positions = [] for row_used_table in readed_used_table: - line = row_used_table.strip().split(' ') + line = row_used_table.strip().split('\t') if len(line) != 1: - if position == line[0] and character == line[2]: - take_all_possible_positions.append(line[1]) + if position == line[0] and character == line[2] or position == line[0] and line[2] == '': + take_all_possible_positions.append(line[1]) return take_all_possible_positions def what_is_the_ended_positions(): @@ -44,14 +48,14 @@ def what_is_the_ended_positions(): array += line return array -used_table = 'test.arg' -input_file = 'test.in' -output_file = 'test.out' +used_table = 'simple1.arg' +input_file = 'simple1.in' +output_file = 'simple1.out' with open(output_file, 'w') as readed_output_file: with open(input_file, 'r') as readed_input_file: for row_input_file in readed_input_file: if line_checking(row_input_file, '0'): - write_answer('YES') + write_answer('TRUE', row_input_file) else: - write_answer('NO') + write_answer('FALSE', row_input_file) diff --git a/TaskC04/simple1.out b/TaskC04/simple1.out new file mode 100644 index 0000000..f44ec1c --- /dev/null +++ b/TaskC04/simple1.out @@ -0,0 +1,8 @@ +FALSE a +FALSE ab +TRUE abc +FALSE abcd +FALSE aaaaab +TRUE abc +FALSE xyz +FALSE 0 diff --git a/TaskC04/simple2.out b/TaskC04/simple2.out new file mode 100644 index 0000000..0b6f0da --- /dev/null +++ b/TaskC04/simple2.out @@ -0,0 +1,9 @@ +TRUE kot +TRUE ac +TRUE abc +TRUE abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbc +FALSE abcd +FALSE abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccc +FALSE kotek +FALSE kotabc +TRUE kot