Kotlin Multiplatform utility library for bringing solutions for Advent of Code and sharing them as an interactive solver.
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")
- AdventTest has easy assertions of solutions from AdventDay
implementation("in.procyk.adventofcode:solver:1.0.2")
- AdventSolver implements UI for providing solutions and log outputs for Advent of Code based on Compose Multiplatform
- adventWebSolver is a web entrypoint for UI
- adventJvmSolver is a desktop entrypoint for UI
- convention.publication.gradle.kts enables easy configuration of publication for each project where applied
- 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
: ausername
generated from Maven Central PanelOSSRH_PASSWORD
: apassword
generated from Maven Central PanelSIGNING_KEY_ID
: last 8 bytes of signing key ID that can be checked withgpg --list-secret-keys --keyid-format SHORT
SIGNING_PASSWORD
: password for signing keySIGNING_KEY
: signing key in a format extracted withgpg --armor --export-secret-key 'example@gmail.com' | grep -v '\-\-' | grep -v '=.' | tr -d '\n'
[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" }