Meine Lösungen für Advent of Code 2025
Advent of Code ist ein jährlicher Adventskalender mit Programmier-Rätseln von Eric Wastl. Vom 1. bis 25. Dezember wird täglich ein neues Puzzle veröffentlicht, das mit beliebigen Programmiersprachen gelöst werden kann.
🔗 Website: adventofcode.com
- Python 3.9+
- pip
# Virtual Environment erstellen
python -m venv .venv
# Virtual Environment aktivieren
# Linux/macOS:
source .venv/bin/activate
# Windows:
.venv\Scripts\activate
# Dependencies installieren
pip install -r requirements.txt- shapely (ab 2.0.0): Geometrie-Bibliothek für Tag 9
- numpy: Matrix-Operationen für Tag 10
- scipy: MILP-Solver für Tag 10
AoC/
├── main.py # Hauptmenü zum Verwalten und Ausführen der Lösungen
├── _template.py # Template für neue Tage
├── requirements.txt # Python-Abhängigkeiten
├── Code/
│ ├── loader.py # Hilfsklasse zum Laden der Puzzle-Daten
│ ├── 2025_01.py # Lösung für Tag 1
│ ├── 2025_02.py # Lösung für Tag 2
│ ├── ...
│ ├── 2025_09.py # Lösung für Tag 9
│ └── 2025_10.py # Lösung für Tag 10
├── data/
│ ├── AoC_2025.01 # Puzzle-Daten für Tag 1
│ ├── AoC_2025.02 # Puzzle-Daten für Tag 2
│ ├── ...
│ ├── AoC_2025.09 # Puzzle-Daten für Tag 9
│ └── AoC_2025.10 # Puzzle-Daten für Tag 10
└── docs/
├── 2025_01.md # Dokumentation Tag 1
├── 2025_02.md # Dokumentation Tag 2
├── ...
├── 2025_09.md # Dokumentation Tag 9
└── 2025_10.md # Dokumentation Tag 10
python main.pyDas Hauptmenü bietet folgende Optionen:
- Tag ausführen: Gib eine Tag-Nummer (01-12) ein, um die Lösung auszuführen
- ALLE: Führt alle vorhandenen Lösungen nacheinander aus
- ANLEGEN: Erstellt einen neuen Tag (kopiert Template + lädt Puzzle-Daten)
- EXIT: Beendet das Programm
Beim Start oder über die Menüoption "ANLEGEN" wird:
- Das Template nach
Code/2025_XX.pykopiert - Versucht, die Puzzle-Daten automatisch zu laden
- Bei Fehler eine Datei mit Hinweis erstellt
cd Code
python 2025_01.py- Sprache: Python 3
- Konvention: Alle Code-Elemente (Variablen, Funktionen, Kommentare) auf Deutsch
- GetData-Klasse: Zentrale Hilfsklasse in
loader.pyzum Laden und Verarbeiten der Puzzle-Daten
Jeder Tag hat eine detaillierte Dokumentation im docs/ Ordner, die Algorithmen, Datenstrukturen und Design-Entscheidungen erklärt:
- Tag 01 - Rundlauf-Simulation - Modulo-Arithmetik für zyklische Bewegungen
- Tag 02 - String-Muster-Analyse - Palindrom-Hälften und wiederholende Muster
- Tag 03 - Greedy-Auswahl - Greedy-Algorithmus für größte Ziffern-Auswahl
- Tag 04 - Zellenautomaten - Simulation mit Nachbarschafts-Regeln
- Tag 05 - Intervall-Merge - Bereichs-Zusammenführung und Prüfung
- Tag 06 - Spaltenweise Arithmetik - Matrix-Transposition und Operatoren
- Tag 07 - Pfad-Verzweigungen - Dynamic Programming für Pfad-Zählung
- Tag 08 - Minimum Spanning Tree - Union-Find mit Kruskal's Algorithmus
- Tag 09 - Computational Geometry - Polygon- und Rechteck-Operationen mit Shapely
- Tag 10 - Lineare Gleichungssysteme - GF(2) Brute-Force und MILP
Dieses Projekt enthält Lösungen für maximal 12 Tage im Jahr 2025.
⭐ Viel Spaß beim Rätseln! ⭐