2023-12-17 05:00:28 +00:00
|
|
|
import java.awt.Desktop
|
|
|
|
import java.net.URI
|
|
|
|
|
2023-12-01 15:39:27 +00:00
|
|
|
plugins {
|
2023-12-04 05:44:11 +00:00
|
|
|
kotlin("jvm") version "1.9.21"
|
2023-12-01 15:39:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sourceSets {
|
|
|
|
main {
|
|
|
|
kotlin.srcDir("src")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
tasks {
|
|
|
|
wrapper {
|
|
|
|
gradleVersion = "8.5"
|
|
|
|
}
|
2023-12-03 06:45:35 +00:00
|
|
|
|
|
|
|
// Adapted from https://github.com/kotlin-hands-on/advent-of-code-kotlin-template/pull/17
|
|
|
|
task("generateNextDay") {
|
|
|
|
doLast {
|
|
|
|
val prevDayNum = fileTree("$projectDir/src").matching {
|
|
|
|
include("Day*.kt")
|
|
|
|
}.maxOf {
|
|
|
|
val (prevDayNum) = Regex("Day(\\d\\d)").find(it.name)!!.destructured
|
|
|
|
prevDayNum.toInt()
|
|
|
|
}
|
2023-12-17 05:00:28 +00:00
|
|
|
val newDayNum = (prevDayNum + 1).toString()
|
|
|
|
File("$projectDir/src", "Day${newDayNum.padStart(2, '0')}.kt").writeText(
|
2023-12-03 06:45:35 +00:00
|
|
|
"""fun main() {
|
|
|
|
fun part1(input: List<String>): Int {
|
|
|
|
return input.size
|
|
|
|
}
|
|
|
|
|
|
|
|
fun part2(input: List<String>): Int {
|
|
|
|
return input.size
|
|
|
|
}
|
|
|
|
|
|
|
|
// test if implementation meets criteria from the description, like:
|
2023-12-17 05:00:28 +00:00
|
|
|
val testInput = readInput("Day${newDayNum.padStart(2, '0')}_test")
|
2023-12-03 06:45:35 +00:00
|
|
|
check(part1(testInput) == 0)
|
|
|
|
|
2023-12-17 05:00:28 +00:00
|
|
|
val input = readInput("Day${newDayNum.padStart(2, '0')}")
|
2023-12-03 06:45:35 +00:00
|
|
|
part1(input).println()
|
2023-12-17 05:00:28 +00:00
|
|
|
check(part2(testInput) == 0)
|
2023-12-03 06:45:35 +00:00
|
|
|
part2(input).println()
|
|
|
|
}
|
|
|
|
"""
|
|
|
|
)
|
2023-12-17 05:00:28 +00:00
|
|
|
val challengeUrl = "https://adventofcode.com/2023/day/$newDayNum"
|
|
|
|
Desktop.getDesktop().browse(URI.create(challengeUrl))
|
2023-12-03 06:45:35 +00:00
|
|
|
File("$projectDir/src", "Day$newDayNum.txt").createNewFile()
|
|
|
|
File("$projectDir/src", "Day${newDayNum}_test.txt").createNewFile()
|
|
|
|
}
|
|
|
|
}
|
2023-12-01 15:39:27 +00:00
|
|
|
}
|