-
Notifications
You must be signed in to change notification settings - Fork 0
/
calcutils.py
38 lines (27 loc) · 1.06 KB
/
calcutils.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
import crf
def get_average_of(times_: list[crf.Result], length) -> int:
# if times_.__len__() < length:
# return -1
# elif times_.__len__() < 3:
# raise NotImplementedError(f"Tried to calculate average of {times_.__len__()} which is impossible")
if times_.__len__() < length:
return -1
elif times_.__len__() < 3:
return -1
print("_:", times_)
times = times_[:]
times = times[-length:]
print("times", times)
dnf_count = 0
for time in times:
if time.penalty == "DNF":
dnf_count += 1
if dnf_count >= 2:
return -2
if dnf_count == 1: # always True but if something happens that makes possible smh
times = [time for time in times if time.penalty != "DNF"]
else:
times.remove(max(times, key=lambda result: result.get_time_including_penalty()))
times.remove(min(times, key=lambda result: result.get_time_including_penalty()))
total_sum = sum(result.get_time_including_penalty() for result in times)
return round(total_sum / times.__len__())