File tree 4 files changed +71
-4
lines changed
4 files changed +71
-4
lines changed Original file line number Diff line number Diff line change 23
23
- uses : actions/checkout@v4
24
24
- uses : actions/setup-java@v4
25
25
with :
26
- java-version : 11
26
+ java-version : 17
27
27
distribution : zulu
28
28
29
29
# Runs a single command using the runners shell
Original file line number Diff line number Diff line change
1
+ package y24
2
+
3
+ import common.puzzle.solvePuzzle
4
+ import common.puzzle.Input
5
+ import common.puzzle.Puzzle
6
+ import common.datastructures.*
7
+ import common.ext.*
8
+ import common.puzzle.splitToInts
9
+ import common.util.*
10
+ import java.util.*
11
+ import kotlin.math.*
12
+ import kotlin.system.exitProcess
13
+
14
+
15
+ fun main () = solvePuzzle(year = 2024 , day = 1 ) { Day1 (it) }
16
+
17
+ class Day1 (val input : Input ) : Puzzle {
18
+ val left = input.lines
19
+ .map { it.splitToInts(separator = " " ).first() }
20
+ .sorted()
21
+ val right = input.lines
22
+ .map { it.splitToInts(separator = " " ).last() }
23
+ .sorted()
24
+
25
+ override fun solveLevel1 (): Any {
26
+ return left.mapIndexed { index, l ->
27
+ val r = right[index]
28
+ abs(l - r)
29
+ }.sum()
30
+ }
31
+
32
+ override fun solveLevel2 (): Any {
33
+ val rightCounts = right.groupingBy { it }.eachCount()
34
+ return left.sumOf { l ->
35
+ val count = rightCounts[l] ? : 0
36
+ l.toLong() * count
37
+ }
38
+ }
39
+ }
Original file line number Diff line number Diff line change
1
+ package y24
2
+
3
+ import common.puzzle.Input
4
+ import org.junit.jupiter.api.Assertions.assertEquals
5
+ import org.junit.jupiter.api.Test
6
+
7
+ internal class Day1Test {
8
+ private val sample = Input ("""
9
+ 3 4
10
+ 4 3
11
+ 2 5
12
+ 1 3
13
+ 3 9
14
+ 3 3
15
+ """ .trimIndent())
16
+
17
+ private val day = Day1 (sample)
18
+
19
+ @Test
20
+ fun solveLevel1 () {
21
+ assertEquals(11 , day.solveLevel1())
22
+ }
23
+
24
+ @Test
25
+ fun solveLevel2 () {
26
+ assertEquals(31L , day.solveLevel2())
27
+ }
28
+ }
Original file line number Diff line number Diff line change 4
4
5
5
set -Eeuo pipefail
6
6
7
- CURRENT_YEAR=" 23 "
7
+ CURRENT_YEAR=" 24 "
8
8
9
9
export DAY=" ${1:? " Usage: ./new.sh <day> [<year>]" } "
10
10
export YEAR=" ${2:- " $CURRENT_YEAR " } "
@@ -45,5 +45,5 @@ envsubst < "$SRC_TEMPLATE" > "$SRC_FILE"
45
45
envsubst < " $TEST_TEMPLATE " > " $TEST_FILE "
46
46
47
47
echo " Opening files"
48
- gp open " $SRC_FILE "
49
- gp open " $TEST_FILE "
48
+ gp open " $SRC_FILE " || echo " Failed to open $SRC_FILE "
49
+ gp open " $TEST_FILE " || echo " Failed to open $TEST_FILE "
You can’t perform that action at this time.
0 commit comments