Complete solutions implementation of Advent of Code 2020 (AOC) coding problems.
The challenge lasted 25 days from 1st to 25th of December. Each day a new problem consisting of two parts was made available. Problems in this repository were solved daily during the advent period, then cleaned up slightly for publication.
I used the AOC challenge to consolidate my Python programming language skills, explore more advanced Python concepts and improve algorithmic thinking and implementation efficiency.
For some challenges I deemed it appropriate to give up on some efficiency for code readability and clarity. Nevertheless, asymptotic running time complexity has been one major concern throughout the challenge, allowing me to reach optimal running time solutions for most problems.
The solutions to the simplest problems present both parts in a single file. Whenever major reformatting was needed to adapt the solution to part 2, I coded it from scratch in a separate part2 file.
Each solution is given as a runnable python script featuring a main
. First step in each problem is ad hoc input parsing. Coherent functional blocks are then organized into functions as to render code reusable as well as more readable, structured and interpretable. Type hinting was used to explicit types and improve code quality. Finally, intermediate assertions, code testing and prints were removed ahead of publication.