From 73235b3e443fce259571292c0979a26b500935be Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Sat, 11 Dec 2021 16:44:11 +0100 Subject: [PATCH] Clean --- 2021/build.gradle.kts | 17 +++--------- 2021/src/main/kotlin/Day11.kt | 8 +++--- 2021/src/test/kotlin/BaseDayTest.kt | 10 ++++--- 2021/src/test/kotlin/Day01Test.kt | 2 +- 2021/src/test/kotlin/Day02Test.kt | 2 +- 2021/src/test/kotlin/Day03Test.kt | 2 +- 2021/src/test/kotlin/Day04Test.kt | 2 +- 2021/src/test/kotlin/Day05Test.kt | 2 +- 2021/src/test/kotlin/Day06Test.kt | 2 +- 2021/src/test/kotlin/Day07Test.kt | 2 +- 2021/src/test/kotlin/Day08Test.kt | 2 +- 2021/src/test/kotlin/Day09Test.kt | 2 +- 2021/src/test/kotlin/Day10Test.kt | 2 +- 2021/src/test/kotlin/Day11Test.kt | 2 +- buildSrc/build.gradle.kts | 4 --- buildSrc/src/main/kotlin/aoc.gradle.kts | 21 +++++++++++++++ .../main/kotlin/java-convention.gradle.kts | 1 - .../be/vandewalleh/aoc/utils/DayRunner.kt | 26 ++++++++----------- .../aoc/utils/input/Annotations.kt | 2 -- 19 files changed, 57 insertions(+), 54 deletions(-) create mode 100644 buildSrc/src/main/kotlin/aoc.gradle.kts diff --git a/2021/build.gradle.kts b/2021/build.gradle.kts index efdff28..a7cf55f 100644 --- a/2021/build.gradle.kts +++ b/2021/build.gradle.kts @@ -1,18 +1,7 @@ plugins { - id("kotlin-convention") - kotlin("kapt") + id("aoc") } -dependencies { - implementation(project(":utils")) - - kapt(Libs.Micronaut.processor) - - implementation(Libs.Slf4J.api) - runtimeOnly(Libs.Slf4J.simple) - - implementation(Libs.eclipseCollections) - - testImplementation(Libs.Jmh.core) - kaptTest(Libs.Jmh.processor) +application { + mainClass.set("be.vandewalleh.aoc.days.MainKt") } diff --git a/2021/src/main/kotlin/Day11.kt b/2021/src/main/kotlin/Day11.kt index 71c6665..0a962b2 100644 --- a/2021/src/main/kotlin/Day11.kt +++ b/2021/src/main/kotlin/Day11.kt @@ -36,16 +36,16 @@ class Day11 : BaseDay() { map.keys.forEach { map[it] = map[it]!! + 1 } val flashed = hashSetOf() while (true) { - val new = map.entries.asSequence() + val count = map.entries.asSequence() .filter { it.value > 9 } .filter { it.key !in flashed } .onEach { flashed += it.key } .flatMap { it.key.adjacents() } .filter { it in map } - .toList() + .onEach { map[it] = map[it]!! + 1 } + .count() - if (new.isEmpty()) break - new.forEach { map[it] = map[it]!! + 1 } + if (count == 0) break } map.entries.filter { it.value > 9 } diff --git a/2021/src/test/kotlin/BaseDayTest.kt b/2021/src/test/kotlin/BaseDayTest.kt index 811510b..715dd4a 100644 --- a/2021/src/test/kotlin/BaseDayTest.kt +++ b/2021/src/test/kotlin/BaseDayTest.kt @@ -32,7 +32,7 @@ class Condition : ExecutionCondition { @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(Condition::class) -abstract class BaseDayTest(day: Int) { +abstract class BaseDayTest() { abstract val example: String @@ -46,7 +46,11 @@ abstract class BaseDayTest(day: Int) { BeanContext.run() } - val instance by lazy { ctx.value.getBean(ctx.value.findDayDefinition(day)) } + private val day by lazy(LazyThreadSafetyMode.NONE) { + this::class.java.simpleName.replace("Day", "").replace("Test", "").toInt() + } + + val instance by lazy { ctx.value.getBean(ctx.value.findDayDefinition(day)!!) } private val exampleCtx = lazy { BeanContext.build() @@ -54,7 +58,7 @@ abstract class BaseDayTest(day: Int) { .start() } - val exampleInstance by lazy { exampleCtx.value.getBean(exampleCtx.value.findDayDefinition(day)) } + val exampleInstance by lazy { exampleCtx.value.getBean(exampleCtx.value.findDayDefinition(day)!!) } @AfterAll fun `after all`() { diff --git a/2021/src/test/kotlin/Day01Test.kt b/2021/src/test/kotlin/Day01Test.kt index 9340260..1714642 100644 --- a/2021/src/test/kotlin/Day01Test.kt +++ b/2021/src/test/kotlin/Day01Test.kt @@ -1,6 +1,6 @@ package be.vandewalleh.aoc.days -class Day01Test : BaseDayTest(1) { +class Day01Test : BaseDayTest() { override val example = """ 199 200 diff --git a/2021/src/test/kotlin/Day02Test.kt b/2021/src/test/kotlin/Day02Test.kt index 9059440..61e792b 100644 --- a/2021/src/test/kotlin/Day02Test.kt +++ b/2021/src/test/kotlin/Day02Test.kt @@ -1,6 +1,6 @@ package be.vandewalleh.aoc.days -class Day02Test : BaseDayTest(2) { +class Day02Test : BaseDayTest() { override val example = """ forward 5 down 5 diff --git a/2021/src/test/kotlin/Day03Test.kt b/2021/src/test/kotlin/Day03Test.kt index efc1c33..ea96f19 100644 --- a/2021/src/test/kotlin/Day03Test.kt +++ b/2021/src/test/kotlin/Day03Test.kt @@ -1,6 +1,6 @@ package be.vandewalleh.aoc.days -class Day03Test : BaseDayTest(3) { +class Day03Test : BaseDayTest() { override val example = """ 00100 11110 diff --git a/2021/src/test/kotlin/Day04Test.kt b/2021/src/test/kotlin/Day04Test.kt index 2356327..90f1b6b 100644 --- a/2021/src/test/kotlin/Day04Test.kt +++ b/2021/src/test/kotlin/Day04Test.kt @@ -1,6 +1,6 @@ package be.vandewalleh.aoc.days -class Day04Test : BaseDayTest(4) { +class Day04Test : BaseDayTest() { override val example = """ 7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1 diff --git a/2021/src/test/kotlin/Day05Test.kt b/2021/src/test/kotlin/Day05Test.kt index ba309cf..c97db40 100644 --- a/2021/src/test/kotlin/Day05Test.kt +++ b/2021/src/test/kotlin/Day05Test.kt @@ -1,6 +1,6 @@ package be.vandewalleh.aoc.days -class Day05Test : BaseDayTest(5) { +class Day05Test : BaseDayTest() { override val example = """ 0,9 -> 5,9 8,0 -> 0,8 diff --git a/2021/src/test/kotlin/Day06Test.kt b/2021/src/test/kotlin/Day06Test.kt index d78ab69..8e7f32d 100644 --- a/2021/src/test/kotlin/Day06Test.kt +++ b/2021/src/test/kotlin/Day06Test.kt @@ -1,6 +1,6 @@ package be.vandewalleh.aoc.days -class Day06Test : BaseDayTest(6) { +class Day06Test : BaseDayTest() { override val example = """ 3,4,3,1,2 """.trimIndent() diff --git a/2021/src/test/kotlin/Day07Test.kt b/2021/src/test/kotlin/Day07Test.kt index 816135b..70efcd0 100644 --- a/2021/src/test/kotlin/Day07Test.kt +++ b/2021/src/test/kotlin/Day07Test.kt @@ -1,6 +1,6 @@ package be.vandewalleh.aoc.days -class Day07Test : BaseDayTest(7) { +class Day07Test : BaseDayTest() { override val example = """ 16,1,2,0,4,2,7,1,2,14 """.trimIndent() diff --git a/2021/src/test/kotlin/Day08Test.kt b/2021/src/test/kotlin/Day08Test.kt index f8ee863..db01c63 100644 --- a/2021/src/test/kotlin/Day08Test.kt +++ b/2021/src/test/kotlin/Day08Test.kt @@ -1,6 +1,6 @@ package be.vandewalleh.aoc.days -class Day08Test : BaseDayTest(8) { +class Day08Test : BaseDayTest() { override val example = """ be cfbegad cbdgef fgaecd cgeb fdcge agebfd fecdb fabcd edb | fdgacbe cefdb cefbgd gcbe edbfga begcd cbg gc gcadebf fbgde acbgfd abcde gfcbed gfec | fcgedb cgb dgebacf gc diff --git a/2021/src/test/kotlin/Day09Test.kt b/2021/src/test/kotlin/Day09Test.kt index f2b03ba..cdc66b1 100644 --- a/2021/src/test/kotlin/Day09Test.kt +++ b/2021/src/test/kotlin/Day09Test.kt @@ -1,6 +1,6 @@ package be.vandewalleh.aoc.days -class Day09Test : BaseDayTest(9) { +class Day09Test : BaseDayTest() { override val example = """ 2199943210 3987894921 diff --git a/2021/src/test/kotlin/Day10Test.kt b/2021/src/test/kotlin/Day10Test.kt index 7e9092b..87df63f 100644 --- a/2021/src/test/kotlin/Day10Test.kt +++ b/2021/src/test/kotlin/Day10Test.kt @@ -1,6 +1,6 @@ package be.vandewalleh.aoc.days -class Day10Test : BaseDayTest(10) { +class Day10Test : BaseDayTest() { override val example = """ [({(<(())[]>[[{[]{<()<>> [(()[<>])]({[<{<<[]>>( diff --git a/2021/src/test/kotlin/Day11Test.kt b/2021/src/test/kotlin/Day11Test.kt index 9a45214..6fc01c7 100644 --- a/2021/src/test/kotlin/Day11Test.kt +++ b/2021/src/test/kotlin/Day11Test.kt @@ -1,6 +1,6 @@ package be.vandewalleh.aoc.days -class Day11Test : BaseDayTest(11) { +class Day11Test : BaseDayTest() { override val example = """ 5483143223 2745854711 diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 3093307..3fe7ff4 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -2,10 +2,6 @@ plugins { `kotlin-dsl` } -kotlinDslPluginOptions { - experimentalWarning.set(false) -} - repositories { gradlePluginPortal() maven { setUrl("https://kotlin.bintray.com/kotlinx") } diff --git a/buildSrc/src/main/kotlin/aoc.gradle.kts b/buildSrc/src/main/kotlin/aoc.gradle.kts new file mode 100644 index 0000000..db6606a --- /dev/null +++ b/buildSrc/src/main/kotlin/aoc.gradle.kts @@ -0,0 +1,21 @@ +plugins { + id("kotlin-convention") + kotlin("kapt") + id("application") +} + +dependencies { + implementation(project(":utils")) + + kapt(Libs.Micronaut.processor) + + implementation(Libs.Slf4J.api) + runtimeOnly(Libs.Slf4J.simple) + + implementation(Libs.eclipseCollections) + + testImplementation(Libs.Jmh.core) + testImplementation(Libs.Slf4J.simple) + kaptTest(Libs.Jmh.processor) + kaptTest(Libs.Slf4J.simple) +} diff --git a/buildSrc/src/main/kotlin/java-convention.gradle.kts b/buildSrc/src/main/kotlin/java-convention.gradle.kts index eb68d79..e357265 100644 --- a/buildSrc/src/main/kotlin/java-convention.gradle.kts +++ b/buildSrc/src/main/kotlin/java-convention.gradle.kts @@ -5,7 +5,6 @@ plugins { repositories { mavenCentral() - jcenter() maven { url = uri("https://dl.bintray.com/arrow-kt/arrow-kt/") } maven { url = uri("https://kotlin.bintray.com/kotlinx") } } diff --git a/utils/src/main/kotlin/be/vandewalleh/aoc/utils/DayRunner.kt b/utils/src/main/kotlin/be/vandewalleh/aoc/utils/DayRunner.kt index 7724134..a8dbb8d 100644 --- a/utils/src/main/kotlin/be/vandewalleh/aoc/utils/DayRunner.kt +++ b/utils/src/main/kotlin/be/vandewalleh/aoc/utils/DayRunner.kt @@ -3,6 +3,7 @@ package be.vandewalleh.aoc.utils import be.vandewalleh.aoc.utils.factory.findDayDefinition import io.micronaut.context.BeanContext import java.time.LocalDate +import kotlin.system.measureTimeMillis fun runDay(day: Int = LocalDate.now().dayOfMonth) { val ctx = BeanContext.run() @@ -14,23 +15,18 @@ fun runDay(day: Int = LocalDate.now().dayOfMonth) { } val instance = ctx.getBean(definition) - val part1Handle = ctx.findExecutionHandle(instance, "part1") - if (part1Handle.isEmpty) { - println("part1() not found") - return - } println("*** Day $day ***") - println() - println("part 1:") - println(part1Handle.get().invoke()) - println() - val part2Handle = ctx.findExecutionHandle(instance, "part2") - if (part2Handle.isEmpty) { - println("part2() not found") - return + val p1: Any + val ms1 = measureTimeMillis { + p1 = instance.part1() } - println("part 2:") - println(part2Handle.get().invoke()) + println("part 1 ($ms1 ms): $p1") + + val p2: Any + val ms2 = measureTimeMillis { + p2 = instance.part2() + } + println("part 2 ($ms2 ms): $p2") } diff --git a/utils/src/main/kotlin/be/vandewalleh/aoc/utils/input/Annotations.kt b/utils/src/main/kotlin/be/vandewalleh/aoc/utils/input/Annotations.kt index d4c5c44..15d5694 100644 --- a/utils/src/main/kotlin/be/vandewalleh/aoc/utils/input/Annotations.kt +++ b/utils/src/main/kotlin/be/vandewalleh/aoc/utils/input/Annotations.kt @@ -2,7 +2,6 @@ package be.vandewalleh.aoc.utils.input -import io.micronaut.context.annotation.Executable import io.micronaut.context.annotation.Prototype import io.micronaut.core.annotation.Introspected import jakarta.inject.Qualifier @@ -12,5 +11,4 @@ import jakarta.inject.Qualifier @Introspected @Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.RUNTIME) -@Executable annotation class Day(val value: Int = -1)