Compare commits
2 Commits
0f38d2c2c2
...
26b4b6552e
Author | SHA1 | Date | |
---|---|---|---|
|
26b4b6552e | ||
|
e87d5b53bd |
8
description.txt
Normal file
8
description.txt
Normal file
@ -0,0 +1,8 @@
|
||||
Read a description of a deterministic finite-state automaton in the AT&T format
|
||||
(without weights) from the file in the first argument.
|
||||
|
||||
Read strings from the standard input.
|
||||
If a string is accepted by the
|
||||
automaton, write YES, otherwise- write NO.
|
||||
|
||||
The program is invoked like this: ./run.py fsa_description.arg < test1.in > test1.out
|
16
fsa_description.arg
Normal file
16
fsa_description.arg
Normal file
@ -0,0 +1,16 @@
|
||||
0 1 x
|
||||
1 2 y
|
||||
2 3 z
|
||||
0 4 y
|
||||
0 4 z
|
||||
1 4 x
|
||||
1 4 z
|
||||
2 4 x
|
||||
2 4 y
|
||||
3 4 x
|
||||
3 4 y
|
||||
3 4 z
|
||||
4 4 x
|
||||
4 4 y
|
||||
4 4 z
|
||||
3
|
29
run.py
Normal file
29
run.py
Normal file
@ -0,0 +1,29 @@
|
||||
import sys
|
||||
def write_answer(answer):
|
||||
with open('test1.out', 'a') as file:
|
||||
file.write(answer+'\n')
|
||||
def find_next_position(position, character):
|
||||
with open('fsa_description.arg', 'r') as readed_used_table:
|
||||
for row_used_table in readed_used_table:
|
||||
line = row_used_table.strip().split('\t')
|
||||
if position == line[0] and character == line[2]:
|
||||
return True,line[1]
|
||||
# used_table = sys.argv[1]
|
||||
# input_file = sys.argv[2]
|
||||
with open('test1.out', 'w') as readed_output_file:
|
||||
with open('test1.in', 'r') as readed_input_file:
|
||||
for row_input_file in readed_input_file:
|
||||
result = False
|
||||
next_position = None
|
||||
position = '0'
|
||||
for character in row_input_file:
|
||||
if character =='\n':
|
||||
if position=='3':
|
||||
write_answer('YES')
|
||||
break
|
||||
else:
|
||||
write_answer('NO')
|
||||
break
|
||||
result, next_position = find_next_position(position,character)
|
||||
if result == True:
|
||||
position = next_position
|
Loading…
Reference in New Issue
Block a user