My solutions to the 2023 edition of Advent of Code.
In order to make the challenge more interesting, I set myself the following rules:
- Pure: no usage of
var
or mutable datastructures - Self-contained: no third-party libraries, one file per day (*)
- Efficient: optimal asymptotic complexity, as far as reasonable
- Concise: readability is key
Note that these rules do not necessarily apply while solving a problem, but rather when committing the code to this repository.
(*): this rule could be subject to modification, for instance if the puzzles implicitly require it (Intcode in 2019).
This project runs on Scala 3.3.1
and sbt 1.9.7
.
Use the following template to write a solution for a given day:
package adventofcode.solutions
import adventofcode.Definitions.*
@main def Day01 = Day(1) { (input, part) =>
part(1) = ???
part(2) = ???
}
(change 1
to the current day number and fill in the ???
)
Paste your input as a file named 01.txt
in input/
.
To run the code, enter sbt run Day01
.
The output(s) will be printed to the console and stored in output/
as 01-1.txt
and 01-2.txt
.
Additionally, the command sbt test
will run all the implemented solutions and compare their result against the currently stored output, to detect any potential regression.
MIT