Prześlij pliki do 'B00'
This commit is contained in:
parent
5c79097202
commit
f92640b359
8
B00/description.txt
Normal file
8
B00/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
B00/fsa_description.arg
Normal file
16
B00/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
|
2
B00/read.txt
Normal file
2
B00/read.txt
Normal file
@ -0,0 +1,2 @@
|
||||
windows
|
||||
py .\run.py .\fsa_description.arg .\test1.in .\test1.out
|
90
B00/run.py
Normal file
90
B00/run.py
Normal file
@ -0,0 +1,90 @@
|
||||
import sys
|
||||
|
||||
# global fsa_description
|
||||
# global inputWords
|
||||
# global outputResult
|
||||
|
||||
fsa_description = sys.argv[1]
|
||||
inputWords = sys.argv[2]
|
||||
outputResult = sys.argv[3]
|
||||
|
||||
def readDescription(currentPos, charInput):
|
||||
with open(fsa_description, 'r', encoding="utf-8") as descript:
|
||||
for line in descript:
|
||||
if len(line.strip().split('\t')) == 1:
|
||||
return line[0], 0
|
||||
transition = line.strip().split('\t')
|
||||
if len(transition) == 3 and currentPos == transition[0] and charInput == transition[2]:
|
||||
return transition[1], 1
|
||||
return None, None
|
||||
|
||||
answersYN = ''
|
||||
with open(inputWords, 'r', encoding="utf-8") as inputString:
|
||||
for line in inputString:
|
||||
pos = '0'
|
||||
for char in line:
|
||||
if char == '\n':
|
||||
answersYN+=('1' if pos == '3' else '0')
|
||||
newPos, flag = readDescription(pos, char)
|
||||
if flag == 1:
|
||||
pos = newPos
|
||||
|
||||
with open(outputResult, 'w', encoding="utf-8") as output:
|
||||
for i in range(0, len(answersYN)):
|
||||
if answersYN[i] == '1':
|
||||
output.write("YES\n")
|
||||
elif answersYN[i] == '0':
|
||||
output.write("NO\n")
|
||||
|
||||
print(answersYN)
|
||||
|
||||
|
||||
|
||||
#
|
||||
# import sys
|
||||
#
|
||||
# acceptingPos = None
|
||||
# def readDescription(currentPos, charInput):
|
||||
# with open("fsa_description.arg", 'r', encoding="utf-8") as descript:
|
||||
# # global acceptingPos
|
||||
#
|
||||
# for line in descript:
|
||||
# if line.strip().split('\t')==1:
|
||||
# # acceptingPos = line[0]
|
||||
# return line[0], 0
|
||||
# transition = line.strip().split('\t')
|
||||
#
|
||||
# if currentPos == transition[0] and charInput == transition[2]:
|
||||
# return transition[1],1
|
||||
# return None, None
|
||||
#
|
||||
# # startPos, endPos, char =
|
||||
# # if currentPos==startPos and charInput==char:
|
||||
# # currentPos = endPos
|
||||
# # return currentPos, 1
|
||||
#
|
||||
# # return None, None
|
||||
#
|
||||
#
|
||||
#
|
||||
# answersYN=''
|
||||
# with open("test1.in", 'r', encoding="utf-8") as inputString:
|
||||
# currentPos=None
|
||||
# for line in inputString:
|
||||
# pos = '0'
|
||||
# for char in line:
|
||||
#
|
||||
# if char == '\n':
|
||||
# if pos == '3' :
|
||||
# answersYN +='1'
|
||||
#
|
||||
# else:
|
||||
# answersYN +='0'
|
||||
# newPos, flag = readDescription(pos, char)
|
||||
# if flag==1:
|
||||
# pos = newPos
|
||||
#
|
||||
#
|
||||
# print(answersYN)
|
||||
#
|
||||
|
9
B00/test1.exp
Normal file
9
B00/test1.exp
Normal file
@ -0,0 +1,9 @@
|
||||
NO
|
||||
YES
|
||||
NO
|
||||
NO
|
||||
NO
|
||||
NO
|
||||
NO
|
||||
NO
|
||||
NO
|
Loading…
Reference in New Issue
Block a user