diff --git a/.aocbench.yaml b/.aocbench.yaml new file mode 100644 index 0000000..5893384 --- /dev/null +++ b/.aocbench.yaml @@ -0,0 +1,13 @@ +version: 1 +author: "ctsk" +language: "scala" +dockerfile: "Dockerfile" +code: "/code" +workdir: "/code" +runonce: "./mill aoc.assembly" +cmd: "java -jar ./out/aoc/assembly.dest/out.jar %day% %input%" +environment: + - AOC_BENCH=1 +daypath: "aoc/dev/ctsk/aoc/Day%dayzero%.scala" +inputfile: "data/%dayzero%.in" +answerfile: "data/%dayzero%.out" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9ab3173 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM eclipse-temurin:23-jdk-alpine + +RUN apk add curl + +COPY . /build + +WORKDIR /build + +RUN ./mill aoc.assembly \ No newline at end of file diff --git a/aoc/src/dev/ctsk/aoc/Main.scala b/aoc/src/dev/ctsk/aoc/Main.scala new file mode 100644 index 0000000..4509a20 --- /dev/null +++ b/aoc/src/dev/ctsk/aoc/Main.scala @@ -0,0 +1,26 @@ +package dev.ctsk.aoc + +import dev.ctsk.aoc.days._ + +val solvers = Map[Int, Solver]( + 1 -> Day01, + 2 -> Day02, + 3 -> Day03 +) + + +@main def main(day: String, input: String): Unit = + solvers.get(day.toInt) match + case Some(solver) => + val (timings, solution) = solver.run(input) + sys.env.get("AOC_BENCH") match + case Some(_) => + println(solution.p1) + println(solution.p2) + case None => + println(f"Preprocessing: ${timings.prep}%24s μs") + println(f"Part 1: ${solution.p1}%15s ${timings.p1}%15s μs") + println(f"Part 2: ${solution.p2}%15s ${timings.p2}%15s μs") + + case None => + println(s"Day $day not solved") diff --git a/aoc/src/main/scala/dev/ctsk/aoc/Solution.scala b/aoc/src/dev/ctsk/aoc/Solution.scala similarity index 100% rename from aoc/src/main/scala/dev/ctsk/aoc/Solution.scala rename to aoc/src/dev/ctsk/aoc/Solution.scala diff --git a/aoc/src/main/scala/dev/ctsk/aoc/days/Day01.scala b/aoc/src/dev/ctsk/aoc/days/Day01.scala similarity index 100% rename from aoc/src/main/scala/dev/ctsk/aoc/days/Day01.scala rename to aoc/src/dev/ctsk/aoc/days/Day01.scala diff --git a/aoc/src/main/scala/dev/ctsk/aoc/days/Day02.scala b/aoc/src/dev/ctsk/aoc/days/Day02.scala similarity index 100% rename from aoc/src/main/scala/dev/ctsk/aoc/days/Day02.scala rename to aoc/src/dev/ctsk/aoc/days/Day02.scala diff --git a/aoc/src/main/scala/dev/ctsk/aoc/days/Day03.scala b/aoc/src/dev/ctsk/aoc/days/Day03.scala similarity index 100% rename from aoc/src/main/scala/dev/ctsk/aoc/days/Day03.scala rename to aoc/src/dev/ctsk/aoc/days/Day03.scala diff --git a/aoc/src/main/scala/dev/ctsk/aoc/Main.scala b/aoc/src/main/scala/dev/ctsk/aoc/Main.scala deleted file mode 100644 index 0eb2593..0000000 --- a/aoc/src/main/scala/dev/ctsk/aoc/Main.scala +++ /dev/null @@ -1,20 +0,0 @@ -package dev.ctsk.aoc - -import dev.ctsk.aoc.days._ - -val solvers = Map[Int, Solver]( - 1 -> Day01, - 2 -> Day02, - 3 -> Day03 -) - -@main def main(day: String, input: String): Unit = - solvers.get(day.toInt) match - case Some(solver) => - val (timings, solution) = solver.run(input) - println(f"Preprocessing: ${timings.prep}%24s μs") - println(f"Part 1: ${solution.p1}%15s ${timings.p1}%15s μs") - println(f"Part 2: ${solution.p2}%15s ${timings.p2}%15s μs") - - case None => - println(s"Day $day not solved") diff --git a/data/01.ans b/data/01.ans new file mode 100644 index 0000000..6a71a29 --- /dev/null +++ b/data/01.ans @@ -0,0 +1,2 @@ +1223326 +21070419 diff --git a/data/02.ans b/data/02.ans new file mode 100644 index 0000000..06f0106 --- /dev/null +++ b/data/02.ans @@ -0,0 +1,2 @@ +559 +601 diff --git a/data/03.ans b/data/03.ans new file mode 100644 index 0000000..f5fdb05 --- /dev/null +++ b/data/03.ans @@ -0,0 +1,2 @@ +187833789 +94455185