Wir werden die Punktewertung auf Basis der Top-Punkte des A/D kombinieren.
Zwischen den verschiedenen Kategorien (A/D, LiveCTF, Siemens) ist die Punkteverteilung wie folgt:
- 70% A/D
- 15% Siemens
- 15% LiveCTF
Der folgende Pseudo-Code zeigt, wie das gehandhabt wird:
teams = {
"Team 1": {"ad_points": 123, "siemens_points": 50, "livectf_places": [1, 2, 3]},
"Team 2": {"ad_points": 104, "siemens_points": 250, "livectf_places": [2, 1, 2]},
"Team 3": {"ad_points": 93, "siemens_points": 100, "livectf_places": [3, 3, 1]},
"Team 4": {"ad_points": 55, "siemens_points": 100, "livectf_places": [4, 4, 4]},
# ...
}
live_ctf_score = {1: 10, 2: 9, 3: 8, 4: 7, 5: 6, 6: 5, 7: 4, 8: 3, 9: 2, 10: 1}
for team in teams.values():
team["livectf_points"] = sum(live_ctf_score[place] for place in team["livectf_places"])
max_ad = max(team["ad_points"] for team in teams.values())
max_siemens = 50 + 100 + 150
max_livectf = max(team["livectf_points"] for team in teams.values())
for team in teams.values():
ad_points = team["ad_points"]
siemens_points = team["siemens_points"]
livectf_points = team["livectf_points"]
team["total_score"] = 0.70 * ad_points \
+ 0.15 * siemens_points/max_siemens * max_ad \
+ 0.15 * livectf_points/max_livectf * max_ad
import json
print("max_ad", max_ad)
print("max_siemens", max_siemens)
print("max_livectf", max_livectf)
print()
print(json.dumps(teams, indent=4))Der gesamte Punktestand wird nicht in dem A/D-Scoreboard angezeigt und wird von uns berechnet, sobald der Wettbewerb abgeschlossen ist.
