Skip to content

pgebert/advent-of-code-kotlin-template

Repository files navigation

Current day Stars obtained Days completed

Daily Solution Index

Day Title Part 1 Part 2 Code
✔ 01 (not released) Code
⚪ 02 (not released) Code
⚪ 03 (not released) Code
⚪ 04 (not released) Code
⚪ 05 (not released) Code
⚪ 06 (not released) Code
⚪ 07 (not released) Code
⚪ 08 (not released) Code
⚪ 09 (not released) Code
⚪ 10 (not released) Code
⚪ 11 (not released) Code
⚪ 12 (not released) Code
⚪ 13 (not released) Code
⚪ 14 (not released) Code
⚪ 15 (not released) Code
⚪ 16 (not released) Code
⚪ 17 (not released) Code
⚪ 18 (not released) Code
⚪ 19 (not released) Code
⚪ 20 (not released) Code
⚪ 21 (not released) Code
⚪ 22 (not released) Code
⚪ 23 (not released) Code
⚪ 24 (not released) Code
⚪ 25 (not released) Code

How to use this template

Getting Started

1. Download daily input data

Copy your daily input data from the advent of code page to the corresponding *.txt file in src/main/resources.

2. Implement your solution

Use the prepared solution classes under src/main/kotlin/days and implement the method stubs for partOne and partTwo. Each day has two properties:

  • inputString: the input data as one string
  • inputList: the input data splitted into lines

So your solution can be implemented in the following way:

object Day01 : Day(1, "Day1") {

    override fun partOne() = inputString.doSomething()

    override fun partTwo() = inputList.map { it.doSomething() }
}

3. Update tests

This step is optional, but it's a nice way to proof that your solution is valid:

Extend the test factory in src/test/kotlin/de/pgebert/aoc/DaysTest.kt.

Additional notes

Testing with example data

By default, the input is read from the input file of the corresponding day, but for development it can be useful to test against the provided example input. This can be achieved very easily:

    @Test
fun `testing day 01 example`() {
    val example = """
            1abc2
            pqr3stu8vwx
            a1b2c3d4e5f
            treb7uchet
        """

    val day = Day01(input = example)

    day.partOne() shouldBe 142
}

Miscellaneous

🤝 Contributing

Contributions, issues and feature requests are welcome!

Show your support

Give a ⭐️ if this project helped you!