task C00-D04 \ C05,C06
This commit is contained in:
parent
45dfcfe4fd
commit
3908ac94e6
7
TaskC00/long.out
Normal file
7
TaskC00/long.out
Normal file
@ -0,0 +1,7 @@
|
||||
NO
|
||||
NO
|
||||
YES
|
||||
YES
|
||||
NO
|
||||
NO
|
||||
NO
|
52
TaskC00/run.py
Normal file
52
TaskC00/run.py
Normal file
@ -0,0 +1,52 @@
|
||||
import sys
|
||||
|
||||
def read_aut_nfa(nfsa_path):
|
||||
with open(nfsa_path, "r", encoding="utf8") as file:
|
||||
transisions = {}
|
||||
accepting_states = set()
|
||||
for line in file:
|
||||
if line.startswith("#"):
|
||||
continue
|
||||
parts = line.strip().split()
|
||||
if len(parts) == 1:
|
||||
accepting_states.add(int(parts[0]))
|
||||
else:
|
||||
state_from = int(parts[0])
|
||||
state_to = int(parts[1])
|
||||
symbol = ' ' if len(parts) == 2 else parts[2]
|
||||
if(state_from, symbol) not in transisions:
|
||||
transisions[(state_from, symbol)] = []
|
||||
transisions[(state_from, symbol)].append(state_to)
|
||||
#print(transisions)
|
||||
return transisions, accepting_states
|
||||
|
||||
|
||||
def is_accepted_byNFA(transisions, accepting_states, line):
|
||||
current_states = set([0])
|
||||
for symbol in line.strip():
|
||||
next_states = set()
|
||||
for state in current_states:
|
||||
if (state, symbol) in transisions:
|
||||
next_states.update(transisions[(state,symbol)])
|
||||
current_states = next_states
|
||||
if len(current_states) == 0:
|
||||
return "NO"
|
||||
if any(state in accepting_states for state in current_states):
|
||||
return "YES"
|
||||
else:
|
||||
return "NO"
|
||||
|
||||
def process_input(transisions, accepting_states, input_file, output_file):
|
||||
with open(input_file, "r") as input, open(output_file, "w") as output:
|
||||
for line in input:
|
||||
result = is_accepted_byNFA(transisions, accepting_states, line)
|
||||
output.write(result + '\n')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
nfa_file, input_file, output_file = sys.argv[1], sys.argv[2], sys.argv[3]
|
||||
transisions, accepting_states = read_aut_nfa(nfa_file)
|
||||
|
||||
process_input(transisions, accepting_states, input_file, output_file)
|
9
TaskC00/test1.out
Normal file
9
TaskC00/test1.out
Normal file
@ -0,0 +1,9 @@
|
||||
NO
|
||||
YES
|
||||
NO
|
||||
NO
|
||||
NO
|
||||
NO
|
||||
NO
|
||||
NO
|
||||
NO
|
8
TaskC00/testnfa.out
Normal file
8
TaskC00/testnfa.out
Normal file
@ -0,0 +1,8 @@
|
||||
YES
|
||||
YES
|
||||
NO
|
||||
NO
|
||||
NO
|
||||
YES
|
||||
NO
|
||||
YES
|
50
TaskC01/run.py
Normal file
50
TaskC01/run.py
Normal file
@ -0,0 +1,50 @@
|
||||
import sys
|
||||
|
||||
def read_aut_nfa(nfsa_path):
|
||||
with open(nfsa_path, "r", encoding="utf8") as file:
|
||||
transisions = {}
|
||||
accepting_states = set()
|
||||
for line in file:
|
||||
parts = line.strip().split()
|
||||
if len(parts) == 1:
|
||||
accepting_states.add(int(parts[0]))
|
||||
else:
|
||||
state_from = int(parts[0])
|
||||
state_to = int(parts[1])
|
||||
symbol = ' ' if len(parts) == 2 else parts[2]
|
||||
if(state_from, symbol) not in transisions:
|
||||
transisions[(state_from, symbol)] = []
|
||||
transisions[(state_from, symbol)].append(state_to)
|
||||
#print(transisions)
|
||||
return transisions, accepting_states
|
||||
|
||||
|
||||
def is_accepted_byNFA(transisions, accepting_states, line):
|
||||
current_states = set([0])
|
||||
for symbol in line.strip():
|
||||
next_states = set()
|
||||
for state in current_states:
|
||||
if (state, symbol) in transisions:
|
||||
next_states.update(transisions[(state,symbol)])
|
||||
current_states = next_states
|
||||
if len(current_states) == 0:
|
||||
return "NO"
|
||||
if any(state in accepting_states for state in current_states):
|
||||
return "YES"
|
||||
else:
|
||||
return "NO"
|
||||
|
||||
def process_input(transisions, accepting_states, input_file, output_file):
|
||||
with open(input_file, "r") as input, open(output_file, "w") as output:
|
||||
for line in input:
|
||||
result = is_accepted_byNFA(transisions, accepting_states, line)
|
||||
output.write(result + '\n')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
nfa_file, input_file, output_file = sys.argv[1], sys.argv[2], sys.argv[3]
|
||||
transisions, accepting_states = read_aut_nfa(nfa_file)
|
||||
|
||||
process_input(transisions, accepting_states, input_file, output_file)
|
8
TaskC01/test.arg
Normal file
8
TaskC01/test.arg
Normal file
@ -0,0 +1,8 @@
|
||||
0 0 a
|
||||
0 0 b
|
||||
0 0 c
|
||||
0 1 b
|
||||
1 2 a
|
||||
1 2 b
|
||||
1 2 c
|
||||
2
|
6
TaskC01/test.out
Normal file
6
TaskC01/test.out
Normal file
@ -0,0 +1,6 @@
|
||||
YES
|
||||
YES
|
||||
NO
|
||||
NO
|
||||
NO
|
||||
YES
|
50
TaskC02/run.py
Normal file
50
TaskC02/run.py
Normal file
@ -0,0 +1,50 @@
|
||||
import sys
|
||||
|
||||
def read_aut_nfa(nfsa_path):
|
||||
with open(nfsa_path, "r", encoding="utf8") as file:
|
||||
transisions = {}
|
||||
accepting_states = set()
|
||||
for line in file:
|
||||
parts = line.strip().split()
|
||||
if len(parts) == 1:
|
||||
accepting_states.add(int(parts[0]))
|
||||
else:
|
||||
state_from = int(parts[0])
|
||||
state_to = int(parts[1])
|
||||
symbol = ' ' if len(parts) == 2 else parts[2]
|
||||
if(state_from, symbol) not in transisions:
|
||||
transisions[(state_from, symbol)] = []
|
||||
transisions[(state_from, symbol)].append(state_to)
|
||||
#print(transisions)
|
||||
return transisions, accepting_states
|
||||
|
||||
|
||||
def is_accepted_byNFA(transisions, accepting_states, line):
|
||||
current_states = set([0])
|
||||
for symbol in line.strip():
|
||||
next_states = set()
|
||||
for state in current_states:
|
||||
if (state, symbol) in transisions:
|
||||
next_states.update(transisions[(state,symbol)])
|
||||
current_states = next_states
|
||||
if len(current_states) == 0:
|
||||
return "NO"
|
||||
if any(state in accepting_states for state in current_states):
|
||||
return "YES"
|
||||
else:
|
||||
return "NO"
|
||||
|
||||
def process_input(transisions, accepting_states, input_file, output_file):
|
||||
with open(input_file, "r") as input, open(output_file, "w") as output:
|
||||
for line in input:
|
||||
result = is_accepted_byNFA(transisions, accepting_states, line)
|
||||
output.write(result + '\n')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
nfa_file, input_file, output_file = sys.argv[1], sys.argv[2], sys.argv[3]
|
||||
transisions, accepting_states = read_aut_nfa(nfa_file)
|
||||
|
||||
process_input(transisions, accepting_states, input_file, output_file)
|
6
TaskC02/test.arg
Normal file
6
TaskC02/test.arg
Normal file
@ -0,0 +1,6 @@
|
||||
0 0 a
|
||||
0 0 b
|
||||
0 0 c
|
||||
0 1 a
|
||||
1 2 b
|
||||
2
|
6
TaskC02/test.out
Normal file
6
TaskC02/test.out
Normal file
@ -0,0 +1,6 @@
|
||||
YES
|
||||
NO
|
||||
YES
|
||||
NO
|
||||
YES
|
||||
NO
|
50
TaskC03/run.py
Normal file
50
TaskC03/run.py
Normal file
@ -0,0 +1,50 @@
|
||||
import sys
|
||||
|
||||
def read_aut_nfa(nfsa_path):
|
||||
with open(nfsa_path, "r", encoding="utf8") as file:
|
||||
transisions = {}
|
||||
accepting_states = set()
|
||||
for line in file:
|
||||
parts = line.strip().split()
|
||||
if len(parts) == 1:
|
||||
accepting_states.add(int(parts[0]))
|
||||
else:
|
||||
state_from = int(parts[0])
|
||||
state_to = int(parts[1])
|
||||
symbol = ' ' if len(parts) == 2 else parts[2]
|
||||
if(state_from, symbol) not in transisions:
|
||||
transisions[(state_from, symbol)] = []
|
||||
transisions[(state_from, symbol)].append(state_to)
|
||||
#print(transisions)
|
||||
return transisions, accepting_states
|
||||
|
||||
|
||||
def is_accepted_byNFA(transisions, accepting_states, line):
|
||||
current_states = set([0])
|
||||
for symbol in line.strip():
|
||||
next_states = set()
|
||||
for state in current_states:
|
||||
if (state, symbol) in transisions:
|
||||
next_states.update(transisions[(state,symbol)])
|
||||
current_states = next_states
|
||||
if len(current_states) == 0:
|
||||
return "NO"
|
||||
if any(state in accepting_states for state in current_states):
|
||||
return "YES"
|
||||
else:
|
||||
return "NO"
|
||||
|
||||
def process_input(transisions, accepting_states, input_file, output_file):
|
||||
with open(input_file, "r") as input, open(output_file, "w") as output:
|
||||
for line in input:
|
||||
result = is_accepted_byNFA(transisions, accepting_states, line)
|
||||
output.write(result + '\n')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
nfa_file, input_file, output_file = sys.argv[1], sys.argv[2], sys.argv[3]
|
||||
transisions, accepting_states = read_aut_nfa(nfa_file)
|
||||
|
||||
process_input(transisions, accepting_states, input_file, output_file)
|
10
TaskC03/test.arg
Normal file
10
TaskC03/test.arg
Normal file
@ -0,0 +1,10 @@
|
||||
0 0 a
|
||||
0 0 b
|
||||
0 0 c
|
||||
0 1 a
|
||||
1 2 b
|
||||
2 3 c
|
||||
3 3 a
|
||||
3 3 b
|
||||
3 3 c
|
||||
3
|
7
TaskC03/test.out
Normal file
7
TaskC03/test.out
Normal file
@ -0,0 +1,7 @@
|
||||
YES
|
||||
YES
|
||||
YES
|
||||
NO
|
||||
NO
|
||||
NO
|
||||
NO
|
10
TaskC04/eps.out
Normal file
10
TaskC04/eps.out
Normal file
@ -0,0 +1,10 @@
|
||||
TRUE a
|
||||
FALSE aa
|
||||
TRUE aaa
|
||||
TRUE abc
|
||||
TRUE aaabc
|
||||
FALSE aaabcd
|
||||
FALSE aabc
|
||||
FALSE abd
|
||||
TRUE ad
|
||||
FALSE aad
|
7
TaskC04/long.out
Normal file
7
TaskC04/long.out
Normal file
@ -0,0 +1,7 @@
|
||||
FALSE aaa
|
||||
FALSE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
TRUE aaaa
|
||||
TRUE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
FALSE xyz
|
||||
FALSE aba
|
||||
FALSE a
|
78
TaskC04/run.py
Normal file
78
TaskC04/run.py
Normal file
@ -0,0 +1,78 @@
|
||||
import sys
|
||||
|
||||
def read_aut_nfa(nfsa_path):
|
||||
with open(nfsa_path, "r", encoding="utf8") as file:
|
||||
transisions = {}
|
||||
accepting_states = set()
|
||||
for line in file:
|
||||
if line.startswith("#"):
|
||||
continue
|
||||
parts = line.strip().split()
|
||||
if len(parts) == 1:
|
||||
accepting_states.add(int(parts[0]))
|
||||
else:
|
||||
state_from = int(parts[0])
|
||||
state_to = int(parts[1])
|
||||
#symbol = ' ' if len(parts) == 2 else parts[2]
|
||||
symbol = parts[2] if len(parts) == 3 else "<eps>"
|
||||
if(state_from, symbol) not in transisions:
|
||||
transisions[(state_from, symbol)] = []
|
||||
transisions[(state_from, symbol)].append(state_to)
|
||||
#print(transisions)
|
||||
return transisions, accepting_states
|
||||
|
||||
|
||||
def is_accepted_byNFA(transisions, accepting_states, line):
|
||||
current_states = set([0])
|
||||
for symbol in line.strip():
|
||||
#print(f"Obecny symbol: {symbol}")
|
||||
next_states = set()
|
||||
for state in current_states:
|
||||
if (state, symbol) in transisions:
|
||||
next_states.update(transisions[(state,symbol)])
|
||||
#print(next_states)
|
||||
#print(f"Przejście przez '{symbol}' ze stanu {state}: {transisions[(state, symbol)]}")
|
||||
if len(next_states) == 0:
|
||||
for state in current_states:
|
||||
if (state, "<eps>") in transisions:
|
||||
next_states.update(transisions[(state, "<eps>")])
|
||||
#print(next_states)
|
||||
#print(f"Epsilonowe przejście ze stanu {state}: {transisions[(state, '<eps>')]}")
|
||||
|
||||
if len(next_states) == 0:
|
||||
#print("Brak dostępnych przejść")
|
||||
return "FALSE"
|
||||
current_states = next_states
|
||||
#print(f"Obecny stan po przejsciu petli ------------------------------------------------ '{symbol}': {current_states}")
|
||||
|
||||
#print(current_states)
|
||||
#kod powyżej nie uwzględni epsilonowych przejść na końcu słowa. Tutaj to uwzględniam
|
||||
flaga = True
|
||||
while flaga:
|
||||
flaga = False
|
||||
next_states = set()
|
||||
for state in current_states:
|
||||
if(state, "<eps>") in transisions:
|
||||
next_states.update(transisions[(state, "<eps>")])
|
||||
flaga = True
|
||||
current_states = next_states
|
||||
|
||||
if any(state in accepting_states for state in current_states):
|
||||
return "TRUE"
|
||||
else:
|
||||
return "FALSE"
|
||||
|
||||
def process_input(transisions, accepting_states, input_file, output_file):
|
||||
with open(input_file, "r") as input, open(output_file, "w") as output:
|
||||
for line in input:
|
||||
result = is_accepted_byNFA(transisions, accepting_states, line)
|
||||
output.write(result + ' ' + line)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
nfa_file, input_file, output_file = sys.argv[1], sys.argv[2], sys.argv[3]
|
||||
transisions, accepting_states = read_aut_nfa(nfa_file)
|
||||
|
||||
process_input(transisions, accepting_states, input_file, output_file)
|
8
TaskC04/simple1.out
Normal file
8
TaskC04/simple1.out
Normal file
@ -0,0 +1,8 @@
|
||||
FALSE a
|
||||
FALSE ab
|
||||
TRUE abc
|
||||
FALSE abcd
|
||||
FALSE aaaaab
|
||||
TRUE abc
|
||||
FALSE xyz
|
||||
FALSE 0
|
9
TaskC04/simple2.out
Normal file
9
TaskC04/simple2.out
Normal file
@ -0,0 +1,9 @@
|
||||
TRUE kot
|
||||
TRUE ac
|
||||
TRUE abc
|
||||
TRUE abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbc
|
||||
FALSE abcd
|
||||
FALSE abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccc
|
||||
FALSE kotek
|
||||
FALSE kotabc
|
||||
TRUE kot
|
12
TaskD01/run.py
Normal file
12
TaskD01/run.py
Normal file
@ -0,0 +1,12 @@
|
||||
import re
|
||||
|
||||
def hamlet_reg(file_path):
|
||||
licznik = 0
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
for line in file:
|
||||
licznik += 1
|
||||
if (re.search("'.*Hamlet.*", line)):
|
||||
print(f"{licznik}: {line.strip()}")
|
||||
|
||||
file_path = 'TaskD01\simple.in'
|
||||
hamlet_reg(file_path)
|
13
TaskD02/run.py
Normal file
13
TaskD02/run.py
Normal file
@ -0,0 +1,13 @@
|
||||
import re
|
||||
|
||||
def pies_reg(file_path):
|
||||
licznik = 0
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
for line in file:
|
||||
licznik += 1
|
||||
if (re.search("(^|\s)pies($|\s)", line, re.IGNORECASE)):
|
||||
print(f"{licznik}: {line.strip()}")
|
||||
|
||||
|
||||
file_path = 'TaskD02\simple.in'
|
||||
pies_reg(file_path)
|
18
TaskD03/run.py
Normal file
18
TaskD03/run.py
Normal file
@ -0,0 +1,18 @@
|
||||
import re
|
||||
|
||||
#Write a program to find lines containing date from 1900 to 1999 in format '19XX r.' no matter what on the left or right of the expression.
|
||||
#Note that part ' r.' is obligatory.
|
||||
#Do use regular expressions.
|
||||
|
||||
|
||||
def data_reg(file_path):
|
||||
licznik = 0
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
for line in file:
|
||||
licznik += 1
|
||||
if (re.search(".*19\d{2} r\..*", line)):
|
||||
print(f"{licznik}: {line.strip()}")
|
||||
|
||||
|
||||
file_path = 'TaskD03\simple.in'
|
||||
data_reg(file_path)
|
19
TaskD04/run.py
Normal file
19
TaskD04/run.py
Normal file
@ -0,0 +1,19 @@
|
||||
import re
|
||||
|
||||
#Write a program to find all maximum substrings of digits.
|
||||
#Return only these substrings separated by spaces in their order.
|
||||
#Do use regular expressions.
|
||||
|
||||
|
||||
def liczby_reg(file_path):
|
||||
licznik = 0
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
for line in file:
|
||||
licznik += 1
|
||||
number = (re.findall(r'\d+', line))
|
||||
if number:
|
||||
print(f"{licznik}: {' '.join(number)}")
|
||||
|
||||
|
||||
file_path = 'TaskD04\simple.in'
|
||||
liczby_reg(file_path)
|
Loading…
Reference in New Issue
Block a user