This project contains my solutions for the Advent of Code 2015 in Kotlin. Advent of Code is an Advent calendar of small programming puzzles by Eric Wastl.
- Day 1: Not Quite Lisp
- Day 2: I Was Told There Would Be No Math
- Day 3: Perfectly Spherical Houses in a Vacuum
- Day 4: The Ideal Stocking Stuffer
- Day 5: Doesn't He Have Intern-Elves For This?
- Day 6: Probably a Fire Hazard
- Day 7: Some Assembly Required
- Day 8: Matchsticks
- Day 9: All in a Single Night
- Day 10: Elves Look, Elves Say
- Day 11: Corporate Policy
- Day 12: JSAbacusFramework.io
- Day 13: Knights of the Dinner Table
- Day 14: Reindeer Olympics
- Day 15: Science for Hungry People
- Day 16: Aunt Sue
- Day 17: No Such Thing as Too Much
- Day 18: Like a GIF For Your Yard
- Day 19: Medicine for Rudolph
- Day 20: Infinite Elves and Infinite Houses
- Day 21: RPG Simulator 20XX
- Day 22: Wizard Simulator 20XX
- Day 23: Opening the Turing Lock
- Day 24: It Hangs in the Balance
- Day 25: Let It Snow
- Gradle setup so you can run a specific day or all days on the command line (see Running)
- Timings for each part of each day
- Input for each day automatically exposed in String and List form
- Junit 5 and AssertJ test libraries included (see ** Testing**)
- Starter .gitignore
Project is already setup with gradle. To run the app:
- Navigate to top-level directory on the command line
- Run
./gradlew run
to run all days - Run
./gradlew run --args $DAY
where$DAY
is an integer to run a specific day - Run
./gradlew run --args "$DAY1 $DAY2 $ANOTHERDAY"
to run a subset of days
Project includes JUnit and AssertJ and a stub unit test to get you going. To run all tests:
- Navigate to top-level directory on the command line
- Run
./gradlew test
- Add
--info
,--debug
or--stacktrace
flags for more output
By default, instantiations of Day
classes in tests will use the input files in src/test/resources
, not those
in src/main/resources
. This hopefully gives you flexibility - you could either just copy the real input
into src/test/resources
if you want to test the actual answers, or you could add a file of test data based on the
examples given on the Advent of Code description for the day. The stub Day1Test
class shows a test of the
functionality of Day1
where the test input differs from the actual input.
- Inputs go into
src/main/resources
and follow the naming conventioninput_day_X.txt
- Solutions go into
src/main/kotlin/days
and implement thePuzzle
interface - Solutions follow the naming convention
DayX
- It is assumed all solutions will have two parts
- It is assumed that the puzzle input is provided through the primary constructor
- You can use the
InputReader
methods for reading input - To get started simply replace
src/main/resources/input_day_1.txt
with the real input and the solutions inDay1
with your own