This commit is contained in:
Kijowski Michał 2021-01-01 23:14:55 +01:00
parent f88f391fdc
commit 6ff1bc50b2
2 changed files with 52 additions and 0 deletions

0
TaskF04/Makefile Normal file
View File

52
TaskF04/run Executable file
View File

@ -0,0 +1,52 @@
#!/usr/bin/python3
import sys
import re
sciezki = {};
stanyakceptujace = [];
f = open(sys.argv[1], "r");
lines = f.readlines();
for line in lines:
answer = re.match('^([0-9]+) ([0-9]+) ([a-z]*|<eps>)$', line);
if answer:
try:
try:
sciezki[answer.group(1)][answer.group(3)].add(answer.group(2));
except KeyError:
sciezki[answer.group(1)][answer.group(3)] = {answer.group(2)};
except KeyError:
sciezki.update({answer.group(1):{}})
sciezki[answer.group(1)][answer.group(3)] = {answer.group(2)};
else:
stanyakceptujace.append(line[:-1]);
for input in sys.stdin.readlines():
act = {str(0)};
for char in input[:-1]:
tca = set();
for z in act:
try:
if sciezki[z].__contains__('<eps>'):
tca.update(sciezki[z]['<eps>']);
except KeyError:
pass;
act.update(tca);
tca = set();
for z in act:
try:
tca.update(sciezki[z][char]);
except KeyError:
pass;
act = tca;
tca = set();
for z in act:
try:
if sciezki[z].__contains__('<eps>'):
tca.update(sciezki[z]['<eps>']);
except KeyError:
pass;
act.update(tca);
if len(act.intersection(stanyakceptujace))>0:
print("TRUE "+input[:-1])
else:
print("FALSE "+input[:-1])