diff --git a/src/main/kotlin/no/rodland/advent/SpacePos.kt b/src/main/kotlin/no/rodland/advent/SpacePos.kt index d63b941e..e562966e 100644 --- a/src/main/kotlin/no/rodland/advent/SpacePos.kt +++ b/src/main/kotlin/no/rodland/advent/SpacePos.kt @@ -16,6 +16,7 @@ sealed class SpacePos { data class Pos3D(val x: Int, val y: Int, val z: Int) : SpacePos() { constructor(triple: Triple) : this(triple.first, triple.second, triple.third) + constructor(str:String, separator:Char=',') : this(str.split(separator).map { it.trim().toInt() }.let { Triple(it[0], it[1], it[2]) }) override fun neighbours(): List { return listOf(0, 1, -1) diff --git a/src/main/kotlin/no/rodland/advent_2023/Day22.kt b/src/main/kotlin/no/rodland/advent_2023/Day22.kt index 1b870b43..e9b603bb 100644 --- a/src/main/kotlin/no/rodland/advent_2023/Day22.kt +++ b/src/main/kotlin/no/rodland/advent_2023/Day22.kt @@ -1,11 +1,12 @@ package no.rodland.advent_2023 import no.rodland.advent.Day +import no.rodland.advent.Pos3D // template generated: 22/12/2023 // Fredrik Rødland 2023 -class Day22(val input: List) : Day> { +class Day22(val input: List) : Day> { private val parsed = input.parse() @@ -17,9 +18,12 @@ class Day22(val input: List) : Day> { return 2 } - override fun List.parse(): List { + data class Brick(val from: Pos3D, val to: Pos3D) + + override fun List.parse(): List { return map { line -> - line + val (from, to) = line.split('~') + Brick(Pos3D(from), Pos3D(to)) } } diff --git a/src/main/script/download_aoc_input.sh b/src/main/script/download_aoc_input.sh index 6d466a70..8d129601 100755 --- a/src/main/script/download_aoc_input.sh +++ b/src/main/script/download_aoc_input.sh @@ -1,14 +1,22 @@ #!/bin/bash YEAR=$(date '+%Y') DAY=$(date '+%d') -DAY_NO_ZEROS="${DAY//0/}" +# shellcheck disable=SC2001 +DAY_NO_ZEROS="$(echo "$DAY" | sed 's/^0*//')" AOC_SESSION_COOKIE="FIND_IN_BROWSER" - +AOC_DIR="/Users/fmr/projects/advent" PUZZLE_URL="https://adventofcode.com/${YEAR}/day/${DAY_NO_ZEROS}/input" -PUZZLE_FILE="/Users/fmr/projects/advent/src/test/resources/${YEAR}/input_${DAY}.txt" -PUZZLE_FILE_TEST="/Users/fmr/projects/advent/src/test/resources/${YEAR}/input_${DAY}_test.txt" +PUZZLE_FILE="${AOC_DIR}/src/test/resources/${YEAR}/input_${DAY}.txt" +PUZZLE_FILE_TEST="${AOC_DIR}/src/test/resources/${YEAR}/input_${DAY}_test.txt" curl -q -s "${PUZZLE_URL}" -H "cookie: session=${AOC_SESSION_COOKIE}" -o "${PUZZLE_FILE}" 2>/dev/null -touch "${PUZZLE_FILE_TEST}" \ No newline at end of file +touch "${PUZZLE_FILE_TEST}" + +cd "${AOC_DIR}" || exit +git add "src/test/resources/${YEAR}/input_${DAY}_test.txt" +git commit -a -m "${YEAR} - Day ${DAY} - input/init" +cd - || exit + +tail -10 "$PUZZLE_FILE" \ No newline at end of file diff --git a/src/test/resources/2023/input_22_test.txt b/src/test/resources/2023/input_22_test.txt index e69de29b..158a4071 100644 --- a/src/test/resources/2023/input_22_test.txt +++ b/src/test/resources/2023/input_22_test.txt @@ -0,0 +1,7 @@ +1,0,1~1,2,1 +0,0,2~2,0,2 +0,2,3~2,2,3 +0,0,4~0,2,4 +2,0,5~2,2,5 +0,1,6~2,1,6 +1,1,8~1,1,9 \ No newline at end of file