Skip to content

Commit b861e1c

Browse files
3 changes by Nuxt Studio
1 parent 5c3cf31 commit b861e1c

File tree

3 files changed

+41
-20
lines changed

3 files changed

+41
-20
lines changed

content/blog/cs24-stunden.md

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,15 @@ title: unlisted
66

77
Hellu, die ominöse Zahl von 70% Anwesenheit lässt sich ja bekanntlich nie wirklich ordentlich graspen, deswegen hab ich fix den Stundenplan runtergeladen (6s load time für 150kb danke für nichts CampusKaputt) um auszurechnen, wie viele Stunden wir eigentlich fehlen dürfen.
88

9-
```py [main.py]
9+
Wenn dich der code nicht interessiert zwing ich dich nicht dazu den durchzulesen, du kannst auch gleich zu den [Ergebnissen](/blog/cs24-stunden#ergebnisse) springen.
10+
11+
Als erstes habe ich eine Klasse für die Stunden entries angelegt weill OOP oder so:
12+
13+
::code-with-copy-button
14+
```py
1015
import json, math
1116
from dataclasses import dataclass
1217

13-
1418
@dataclass
1519
class Stunde:
1620
allDay: bool
@@ -26,26 +30,15 @@ class Stunde:
2630
sroom: str
2731
start: int
2832
title: str
33+
```
34+
::
2935

30-
@classmethod
31-
def from_json(cls, obj: dict) -> "Stunde":
32-
return cls(
33-
allDay=bool(obj.get("allDay", False)),
34-
color=obj.get("color", ""),
35-
font_color=obj.get("font_color", obj.get("fontColor", "")),
36-
description=obj.get("description", ""),
37-
editable=bool(obj.get("editable", False)),
38-
end=int(obj.get("end", 0)) if obj.get("end") is not None else 0,
39-
instructor=obj.get("instructor", ""),
40-
remarks=obj.get("remarks", ""),
41-
room=obj.get("room", ""),
42-
sinstructor=obj.get("sinstructor", ""),
43-
sroom=obj.get("sroom", ""),
44-
start=int(obj.get("start", 0)) if obj.get("start") is not None else 0,
45-
title=obj.get("title", ""),
46-
)
36+
Als nächstes können wir den Stundenplan laden, die Dictionaries in unsere Klasse von gerade eben umwandeln, und im Anschluss die tatsächlichen Stunden rausfiltern.
4737

38+
Dabei müssen wir nicht nur Prüfungen rausfiltern (weil die auch im Stundenplan stehen), sondern auch mit einem Zeitstempel nur nach den Vorlesungen im 3. Semester filtern (weil CampusKaputt sei dank sind natürlich alle Stunden bis zur aller ersten "Einführung in den Studiengang - Oktober 2024" dabei omfg).
4839

40+
::code-with-copy-button
41+
```py [main.py]
4942
with open("./stundenplan.json", encoding="utf-8") as file:
5043
data = json.load(file)
5144
stundenplan: list[Stunde] = [Stunde.from_json(entry) for entry in data]
@@ -62,8 +55,15 @@ with open("./stundenplan.json", encoding="utf-8") as file:
6255
module_set: set[str] = set()
6356
for stunde in semester_3_stunden:
6457
module_set.add(stunde.title)
58+
```
59+
::
60+
61+
Und jetzt können wir eine Map anlegen, durch die Stunden iterieren und einfach zählen wieviele Stunden pro Modul im Plan stehen.
6562

66-
stunden_map: dict[str, int] = {key: 0 for key in module_set}
63+
Wenn wir von diesen Zahlen den floor (immer Abrunden, weil man ja MINDESTENS 70% braucht) von der Zahl \* 0.3:
64+
65+
```js
66+
stunden_map: dict[str, int] = {key: 0 for key in module_set}
6767

6868
for stunde in semester_3_stunden:
6969
stunden_map[stunde.title] += 1
@@ -76,3 +76,23 @@ with open("./stundenplan.json", encoding="utf-8") as file:
7676

7777
print(schwänzbar_map)
7878
```
79+
80+
## Ergebnisse
81+
82+
**Stunden je Modul im dritten Semester INSGESAMT:**
83+
84+
- 5CS-ENG2F-10: 31
85+
- 5CS-MA3ST-10: 29
86+
- 5CS-TI2AD-10: 30
87+
- 5CS-UIDB-10: 44
88+
- 5CS-OPSY-10: 36
89+
90+
**Stunden je Modul im dritten Semester die man theoretisch schwänzen darf (alle Angaben ohne Gewähr lol):**
91+
92+
- 5CS-ENG2F-10: 9
93+
- 5CS-MA3ST-10: 8
94+
- 5CS-TI2AD-10: 9
95+
- 5CS-UIDB-10: 13
96+
- 5CS-OPSY-10: 10
97+
98+
![aufmerksamkeit.webp](/images/blog-images/cs24-stunden/aufmerksamkeit.webp)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# This is a placeholder file to keep this folder in your repository.
30.4 KB
Loading

0 commit comments

Comments
 (0)