Skip to content

Commit 9c60b54

Browse files
Result percentage changed to a fraction (#332)
* Result percentage changed to a fraction * Changed how max_score is calculated * Bump sioworkers version * Fix bug in calculating the percentage --------- Co-authored-by: Zonkil <[email protected]>
1 parent 1ff67fd commit 9c60b54

File tree

3 files changed

+10
-9
lines changed

3 files changed

+10
-9
lines changed

oioioi/programs/tests.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,19 +1013,19 @@ class TestScorers(TestCase):
10131013
t_results_ok_perc = (
10141014
(
10151015
{'exec_time_limit': 100, 'max_score': 100},
1016-
{'result_code': 'OK', 'time_used': 0, 'result_percentage': 99},
1016+
{'result_code': 'OK', 'time_used': 0, 'result_percentage': (99, 1)},
10171017
),
10181018
(
10191019
{'exec_time_limit': 100, 'max_score': 100},
1020-
{'result_code': 'OK', 'time_used': 75, 'result_percentage': 50},
1020+
{'result_code': 'OK', 'time_used': 75, 'result_percentage': (50, 1)},
10211021
),
10221022
(
10231023
{'exec_time_limit': 100, 'max_score': 100},
1024-
{'result_code': 'OK', 'time_used': 75, 'result_percentage': 0},
1024+
{'result_code': 'OK', 'time_used': 75, 'result_percentage': (0, 1)},
10251025
),
10261026
(
10271027
{'exec_time_limit': 100, 'max_score': 100},
1028-
{'result_code': 'OK', 'time_used': 99, 'result_percentage': 1},
1028+
{'result_code': 'OK', 'time_used': 99, 'result_percentage': (1, 1)},
10291029
),
10301030
)
10311031

oioioi/programs/utils.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os.path
2+
from fractions import Fraction
23
from math import ceil
34
from operator import itemgetter # pylint: disable=E0611
45

@@ -98,8 +99,8 @@ def min_group_scorer(test_results):
9899

99100
def discrete_test_scorer(test, result):
100101
status = result['result_code']
101-
percentage = result.get('result_percentage', 100)
102-
max_score = int(ceil(percentage * test['max_score'] / 100.))
102+
percentage = result.get('result_percentage', (100, 1))
103+
max_score = ceil(Fraction(*percentage) / 100. * test['max_score'])
103104
score = max_score if status == 'OK' else 0
104105
return IntegerScore(score), IntegerScore(test['max_score']), status
105106

@@ -109,8 +110,8 @@ def threshold_linear_test_scorer(test, result):
109110
limit = test.get('exec_time_limit', 0)
110111
used = result.get('time_used', 0)
111112
status = result['result_code']
112-
percentage = result.get('result_percentage', 100)
113-
max_score = int(ceil(percentage * test['max_score'] / 100.0))
113+
percentage = result.get('result_percentage', (100, 1))
114+
max_score = ceil(Fraction(*percentage) / 100. * test['max_score'])
114115
test_max_score = IntegerScore(test['max_score'])
115116

116117
if status != 'OK':

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# These dependencies need to be installed from external sources,
22
# therefore they must be listed here. Moreover, they cannot be listed in
33
# setup.py, as pip is not able to install them.
4-
http://github.com/sio2project/sioworkers/archive/refs/tags/v1.4.3.tar.gz
4+
http://github.com/sio2project/sioworkers/archive/refs/tags/v1.4.4.tar.gz
55

66
-e .

0 commit comments

Comments
 (0)