-
Notifications
You must be signed in to change notification settings - Fork 0
/
checker.py
98 lines (73 loc) · 2.5 KB
/
checker.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import os
import time
from scheduler import scheduler_run
'''
Plik udostępniający interfejs do komunikacji
ze sprawdzarką w pythonie
'''
def compile_generator():
'''
Funkcja kompiluje kod generatora układów równań
'''
os.chdir('./sprawdzarka')
os.system(f'javac -cp . Generator.java')
os.chdir('..')
def generate(n):
'''
Generuje macierz nxn i wektor 1xn w pliku sprawdzarka/input/input.txt
oraz oczekiwany wynik po przeprowadzeniu eliminacji Gaussa w pliku sprawdzarka/output/output.txt
'''
os.chdir('./sprawdzarka')
os.system(f'java -cp . Generator {n} input/input.txt output/output.txt')
os.chdir('..')
def compile_checker():
'''
Funkcja kompiluje kod checkera
'''
os.chdir('./sprawdzarka')
os.system(f'javac -cp . Checker.java')
os.chdir('..')
def checker(input, output):
'''
Uruchamia sprawdzarkę, przyjmuje argumenty input i output, gdzie:
- input - lokalizacja wejścia do algorytmu eliminacji Gaussa
- output - lokalizacja wyjścia z algorytmu eliminacji Gaussa
'''
os.chdir('./sprawdzarka')
os.system(f'java -cp . Checker {input} {output}')
os.chdir('..')
def check(n):
'''
Funkcja generuje macierz o rozmiarze nxn i wektor 1xn korzystając z załączonego kodu sprawdzarki
a następnie sprawdza, czy implementacja algorytmu Gaussa zaproponowana przez Studenta jest poprawna
'''
print("Kompilowanie generatora...")
compile_generator()
print("Kompilowanie checkera...")
compile_checker()
print("Generowanie układu równań...")
generate(n)
input = 'input/input.txt'
output = 'output/user_output.txt'
print("Uruchomienie schedulera...")
scheduler_run('sprawdzarka/' + input, 'sprawdzarka/' + output)
print("Uruchomienie checkera...")
checker(input, output)
def time_check_n(n, filename = 'sprawdzarka/time_measurement/time.txt'):
'''
Funkcja przelicza czas wykonania algorytmu Gaussa dla macierzy o
rozmiarze 3..n
'''
input = 'input/input.txt'
output = 'output/user_output.txt'
compile_generator()
compile_checker()
for i in range(3, n + 1):
generate(i)
start_time = time.time()
scheduler_run('sprawdzarka/' + input, 'sprawdzarka/' + output)
end_time = time.time()
with open(filename, "a", encoding="utf-8") as file:
file.write(f"{i} {end_time - start_time}\n")
check(100)
#time_check_n(100)