Skip to content

avan1235/advent-of-code-kotlin

Repository files navigation

Platforms Platforms

License: MIT Maven Central Version

GitHub Repo stars Fork Advent of Code in Kotlin

🎄🎁🎅 Advent of Code in Kotlin 🎅🎁🎄

Kotlin Multiplatform utility library for bringing solutions for Advent of Code and sharing them as an interactive solver.

Project Contents

Kotlin Libraries

implementation("in.procyk.adventofcode:solutions:1.0.2")

  • AdventDay is a single day solution
  • Advent is a collection of solutions from a single year
  • utility functions and classes that are helpful so far in solving the tasks

implementation("in.procyk.adventofcode:runner:1.0.2")

  • FileAdventInputReader is an instance of AdventDay.InputReader that allows to read inputs from system file
  • Advent.solve is a utility function to solve single day from current year if executed during the Advent of Code time, while it runs all days on other days. It's intended to run current day when prototyping the solution for current day.

implementation("in.procyk.adventofcode:test-runner:1.0.2")

implementation("in.procyk.adventofcode:solver:1.0.2")

Publishing Utilities

  • release.yml implements a GitHub Action that publishes Kotlin Multiplatform libraries to Maven Central when git tag in format v*.*.* with a version matching version configured in build.gradle.kts is pushed. Requires following secrets to be configured:
    • OSSRH_USERNAME: a username generated from Maven Central Panel
    • OSSRH_PASSWORD: a password generated from Maven Central Panel
    • SIGNING_KEY_ID: last 8 bytes of signing key ID that can be checked with gpg --list-secret-keys --keyid-format SHORT
    • SIGNING_PASSWORD: password for signing key
    • SIGNING_KEY: signing key in a format extracted with gpg --armor --export-secret-key 'example@gmail.com' | grep -v '\-\-' | grep -v '=.' | tr -d '\n'

Version Catalog

[versions]
procyk-adventofcode = "1.0.2"

[libraries]
procyk-adventofcode-runner = { module = "in.procyk.adventofcode:runner", version.ref = "procyk-adventofcode" }
procyk-adventofcode-solutions = { module = "in.procyk.adventofcode:solutions", version.ref = "procyk-adventofcode" }
procyk-adventofcode-solver = { module = "in.procyk.adventofcode:solver", version.ref = "procyk-adventofcode" }
procyk-adventofcode-test-runner = { module = "in.procyk.adventofcode:test-runner", version.ref = "procyk-adventofcode" }