-
Notifications
You must be signed in to change notification settings - Fork 0
/
output_reorderer2.py
62 lines (54 loc) · 2.36 KB
/
output_reorderer2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import subprocess, shlex, re
curly_brack=r'\{(.*?)\}'
command= 'java -jar sparc.jar restaurant_basic_test.sparc'
#command= 'java -jar sparc.jar another_test.sparc'
#command= 'java -jar sparc.jar only_goto2.sparc'
#command='java -jar sparc.jar ProgramASP.sparc'
n=int(input('How many answer sets?\n'))
command+=' -A -n ' + str(n)
## Running the command line ##
args=shlex.split(command)
## Retrieving the output ##
output=subprocess.check_output(args)
output=str(output)
## Splitting the output according to the different answer sets ##
## Each sub-list corresponds to one answer set ##
output_list=re.findall(curly_brack,output)
output_list2=[0]*n
output_list3=[[]]*n
exceptional_values=[[]]*n
normal_values=[[]]*n
for i in range(len(output_list)):
output_list2[i]=output_list[i].split(' ')
try:
for i in range(len(output_list2)):
for j in output_list2[i]:
if j[-1]==',' : j=j[:-1]
output_list3[i].append(j)
## Sorting chronologically ##
for i in range(n):
for j in range(len(output_list3[i])):
if ("occurs" in output_list3[i][j] or "holds" in output_list3[i][j] or "observed" in output_list3[i][j]): normal_values[i].append(output_list3[i][j])
else: exceptional_values[i].append(output_list3[i][j])
for i in range(n):
for j in range(len(normal_values[i])):
normal_values[i].sort(key = lambda x:int(x.split(',')[-1].split(')')[0]))
## Printing by keywords ##
keywords=input('Keywords, separated by a comma:\n')
keywords=keywords.split(',')
print("#############################")
for i in range(n):
ind=i+1
print("Answer set number %d" % ind + ":")
print("#############################\n")
for k in keywords:
if k!='':
print("Keyword " + k +":")
else: print("No keyword given.")
for j in range(len(normal_values[i])):
if k in normal_values[i][j]: print(normal_values[i][j])
for j in range(len(exceptional_values[i])):
if k in exceptional_values[i][j]: print(exceptional_values[i][j])
print('\n')
print("#############################")
except: print("The program is inconsistent.")