27 lines
671 B
Python
27 lines
671 B
Python
import sys
|
|
|
|
def is_accepted(fsa, input_string):
|
|
current_state = 0
|
|
for symbol in input_string:
|
|
if (current_state, symbol) in fsa:
|
|
current_state = fsa[(current_state, symbol)]
|
|
else:
|
|
return False
|
|
return current_state == 4
|
|
|
|
fsa_file = sys.argv[1]
|
|
fsa = {}
|
|
with open(fsa_file, 'r') as f:
|
|
for line in f:
|
|
parts = line.strip().split('\t')
|
|
if len(parts) == 3:
|
|
state, next_state, symbol = parts
|
|
fsa[(int(state), symbol)] = int(next_state)
|
|
|
|
for line in sys.stdin:
|
|
input_string = line.strip()
|
|
if is_accepted(fsa, input_string):
|
|
print("YES")
|
|
else:
|
|
print("NO")
|