Das StatistikKonfiguration-Modul enthalt Funktionen zur Konfiguratio des Statistik-Moduls:
- punktePro_Aufgabe:: Int
gibt den maximalen Wert einer Aufgabe an
- punktePro_Einsendung:: Int
gibt die maximalen Punkte für eine Einsendung an, d.h. alle Punktvergaben über dieser werden gekappt
- wert_Ungeloest:: Int
Wert einer bisher ungelösten Aufgabe (Vorschlag: 0 - kein Wert, weil Aufgaben lösbar bleiben sollen)
alle Werte werden in Prozent von 0 bis 100 angegeben ([0..100])
- wert_SteigerungProLoesung:: Int
mehr Lösungen bringen mehr Wert (Aufgaben sollen nicht unlösbar sein)
d.h. bei n korrekten Lösugen ergibt sich der ist der Aufgabenwert aus
n * wert_SteigerungProLoesung * punktePro_Aufgabe
- wert_einfache_Aufgabe:: Int
Wert einer sehr einfachen Aufgabe
d.h. Wert einer Aufgabe die weit unter der Zeit einer schweren Aufgabe gelöst wurde
- zeit_schwere_Aufgabe:: Int
durchschnittliche Lösungszeit für eine schwere Aufgabe
d.h. ab dieser Zeit wird eine Aufgabe als schwer gewertet und bekommt den vollen Wert: wert_schwere_Aufgabe
- wert_schwere_Aufgabe:: Int
Wert einer schweren Aufgabe, d.h. ab der zeit_schwere_Aufgabe gibt es diesen Prozentsatz von Aufgabenwert
- berechnePunktVerteilung:: [CalendarTime]-> [Int]
berechnet die Punktverteilung für Einsendung und [Lösungen] anhand der Zeiten der Einsendungen
in der übergebenen Liste entspricht das erste Feld dem Zeitpunkt der Aufgabenstellung, die folgenden Felder sind Lösungen
hier werden die Punkte indirekt proportional zu Platz und Zeit vergeben, der Aufgabensteller erhält 1/5 des Aufgabenwertes
(denkbar wäre sicherlich auch eine reine Platz- bzw. Zeitbasierte Funktion)
- berechneAufgabenWert:: [Int]-> Int
berechnet den Wert einer Aufgabe anhand der Zeitabstände zwischen den Einsendungen
übergeben werden die Lösungszeiten einer Aufgabe in Sekunden
der Wert steigt mit der Anzahl der Lösungen und einer hohen Lösungszeit, da diese auf anspruchsvolle Aufgaben hinweist
(denkbar wäre auch ein fester Aufgabenwert)
- berechneWichtung:: Int->Int->Int
berechnet einen gewichteten Wert anhand der Position in der Kette
diese Funktion wird verwendet, weil die einzelnen Beweise in den Berechnungen unterschiedlich stark gewichtet werden
d.h. der erste Beweis zählt am meisten, die folgenden gehen immer schwächer in die Bewertung ein
bisher wird indirekt proportional zum Platz gewichtet
- werte_Platz:: Int-> Int
Bewertung für den Platz der Lösung
anhand des Platzes wird hier eine relative Punktzahl für die Lösung berechnet
''relativ'' heisst, die Punktzahl wird noch entsprechend der insgesamt zu vergebenden Punkte skaliert
- werte_Zeit:: Int-> Int
Bewertung der Zeit der Lösung
anhand der Zeit wird eine relative Punktzahl für die Zeit der Lösung berechnet
''relativ'' heisst, die Punktzahl wird noch entsprechend der insgesamt zu vergebenden Punkte skaliert
- gewichteterDurchschnitt:: (Int->Int->Int)->[Int]-> Int
berechnet einen gewichteten Durchschnitt
d.h. es wird der Durchschnitt der Liste berechnet, nachdem auf jeden Punkt die Platz-Wichtungsfunktion angewendet wird
- summeMitWichtung:: (Int->Int->Int)->[Int]-> Int
berechnet eine gewichtete Summe (analog zu gewichteterDurchschnitt)
- berechneZeiten:: CalendarTime->[CalendarTime]->[Int]
berechnet die Zeit von Aufgabenstellung bis zu jeder Lösung in Sekunden
Johannes Waldmann
2009-11-17