Clean
This commit is contained in:
parent
118b56e5f3
commit
73235b3e44
@ -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")
|
||||
}
|
||||
|
||||
@ -36,16 +36,16 @@ class Day11 : BaseDay() {
|
||||
map.keys.forEach { map[it] = map[it]!! + 1 }
|
||||
val flashed = hashSetOf<Point>()
|
||||
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 }
|
||||
|
||||
@ -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`() {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package be.vandewalleh.aoc.days
|
||||
|
||||
class Day01Test : BaseDayTest(1) {
|
||||
class Day01Test : BaseDayTest() {
|
||||
override val example = """
|
||||
199
|
||||
200
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package be.vandewalleh.aoc.days
|
||||
|
||||
class Day02Test : BaseDayTest(2) {
|
||||
class Day02Test : BaseDayTest() {
|
||||
override val example = """
|
||||
forward 5
|
||||
down 5
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package be.vandewalleh.aoc.days
|
||||
|
||||
class Day03Test : BaseDayTest(3) {
|
||||
class Day03Test : BaseDayTest() {
|
||||
override val example = """
|
||||
00100
|
||||
11110
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package be.vandewalleh.aoc.days
|
||||
|
||||
class Day09Test : BaseDayTest(9) {
|
||||
class Day09Test : BaseDayTest() {
|
||||
override val example = """
|
||||
2199943210
|
||||
3987894921
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package be.vandewalleh.aoc.days
|
||||
|
||||
class Day10Test : BaseDayTest(10) {
|
||||
class Day10Test : BaseDayTest() {
|
||||
override val example = """
|
||||
[({(<(())[]>[[{[]{<()<>>
|
||||
[(()[<>])]({[<{<<[]>>(
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package be.vandewalleh.aoc.days
|
||||
|
||||
class Day11Test : BaseDayTest(11) {
|
||||
class Day11Test : BaseDayTest() {
|
||||
override val example = """
|
||||
5483143223
|
||||
2745854711
|
||||
|
||||
@ -2,10 +2,6 @@ plugins {
|
||||
`kotlin-dsl`
|
||||
}
|
||||
|
||||
kotlinDslPluginOptions {
|
||||
experimentalWarning.set(false)
|
||||
}
|
||||
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
maven { setUrl("https://kotlin.bintray.com/kotlinx") }
|
||||
|
||||
21
buildSrc/src/main/kotlin/aoc.gradle.kts
Normal file
21
buildSrc/src/main/kotlin/aoc.gradle.kts
Normal file
@ -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)
|
||||
}
|
||||
@ -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") }
|
||||
}
|
||||
|
||||
@ -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<Any, Any>(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<Any, Any>(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")
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user