Skip to content

Commit 0cd591c

Browse files
committed
Solved day 18 part 2
1 parent 9add73b commit 0cd591c

File tree

4 files changed

+23
-6
lines changed

4 files changed

+23
-6
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44

55
// project meta data
66
group 'de.havox_design.aoc2015'
7-
version '0.17.3'
7+
version '0.17.4'
88

99
// Switch to gradle "all" distribution.
1010
wrapper {

day18/src/main/kotlin/de/havox_design/aoc2015/day18/GIFMatrix.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ class GIFMatrix(private var filename: String) {
99
.lights()
1010

1111
fun processPart2(steps: Int=100): Int =
12-
0
12+
(1..steps)
13+
.fold(data) { current, _ -> current.turnCornersOn().next().turnCornersOn() }
14+
.lights()
1315

1416
private fun readData(): BooleanGrid =
1517
BooleanGrid.from(getResourceAsText(filename))

day18/src/test/kotlin/de/havox_design/aoc2015/day18/Day18Test.kt

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,29 @@ class Day18Test {
1717
fun testProcessPart1(filename: String, expectedResult: Int, steps: Int) =
1818
GIFMatrix(filename).processPart1(steps).shouldBe(expectedResult)
1919

20+
@ParameterizedTest
21+
@MethodSource("getDataForTestProcessPart2")
22+
fun testProcessPart2(filename: String, expectedResult: Int, steps: Int) =
23+
GIFMatrix(filename).processPart2(steps).shouldBe(expectedResult)
24+
2025
companion object {
2126
@JvmStatic
2227
private fun getDataForTestProcessPart1(): Stream<Arguments> =
2328
Stream.of(
24-
Arguments.of("part1sample.txt", 11, 1),
25-
Arguments.of("part1sample.txt", 8, 2),
26-
Arguments.of("part1sample.txt", 4, 3),
27-
Arguments.of("part1sample.txt", 4, 4)
29+
Arguments.of("sample.txt", 11, 1),
30+
Arguments.of("sample.txt", 8, 2),
31+
Arguments.of("sample.txt", 4, 3),
32+
Arguments.of("sample.txt", 4, 4)
33+
)
34+
35+
@JvmStatic
36+
private fun getDataForTestProcessPart2(): Stream<Arguments> =
37+
Stream.of(
38+
Arguments.of("sample.txt", 18, 1),
39+
Arguments.of("sample.txt", 18, 2),
40+
Arguments.of("sample.txt", 18, 3),
41+
Arguments.of("sample.txt", 14, 4),
42+
Arguments.of("sample.txt", 17, 5)
2843
)
2944
}
3045
}

0 commit comments

Comments
 (0)