A template repository providing a simple framework for Advent of Code puzzles.
After you create a new project based on the current template repository using the **Use this template ** button, a bare minimal scaffold will appear in your GitHub account with the following structure:
. ├── README.md README file ├── build.gradle.kts Gradle configuration created with Kotlin DSL ├── gradle │ └── wrapper Gradle Wrapper ├── gradle.properties Gradle configuration properties ├── gradlew *nix Gradle Wrapper script ├── gradlew.bat Windows Gradle Wrapper script ├── src Generic framework utilities └── calendar Your very own sandbox to solve the puzzles └── dayX Each day has a dedicated package for it ├── DayX.kt An empty implementation class for the AoC day X [1-25] ├── part1.txt AoC day X [1-25] input data for part 1 └── part2.txt AoC day X [1-25] input data for part 2 Note: All task input files are empty in the repository – we should not post them publicly, as Eric Wastl asks for: Tweet.
To help with that, the template contains a git hook that prevents committing anything if input files are not empty. There's also
./gradlew cleanInputstask for easy cleanup.Please make sure not to commit input data once after you fill those files in.
Here's the overview of your daily routine while solving AoC puzzles:
- Open
./calendar/dayXdirectory for the day you're solving. - Paste your input for part1 into
part1.txt. - Open
DayX.ktfile and implement your solution inpart1method and return your answer. - Check your solution for part1 by running
./gradlew test --tests='dayX.DayX.part1' - Paste your input for part2 into
part2.txt(only if it's different frmpart1, otherwisepart1.txtwill be used. - Open
DayX.ktfile and implement your solution inpart2method and return your answer. - Check your solution for part2 by running
./gradlew test --tests='dayX.DayX.part2' - Check both your solutions by running
./gradlew test --tests='dayX.DayX' - Submit your answers to AoC
- Clean up inputs by running
./gradlew cleanInputs - Commit your code by running
git commit -a -m "AoC DayX" - Push the changes by running
git push - Profit??
Often inputs for
part1andpart2are the same. The framework handles that by falling back topart1input file ifpart2input is left empty.