Skip to content

Commit 0126f8b

Browse files
committed
A more functional approach
Use runningFold() and find() instead of tracking a frequency variable.
1 parent 907b066 commit 0126f8b

File tree

1 file changed

+4
-8
lines changed

1 file changed

+4
-8
lines changed

src/main/kotlin/de/ronny_h/aoc/year2018/day01/ChronalCalibration.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,10 @@ class ChronalCalibration : AdventOfCode<Int>(2018, 1) {
1212
}
1313

1414
override fun part2(input: List<String>): Int {
15-
var frequency = 0
16-
val seenFrequencies = mutableSetOf(frequency)
17-
generateSequence { input.toListOfInt() }
15+
val seenFrequencies = mutableSetOf<Int>()
16+
return generateSequence { input.toListOfInt() }
1817
.flatten()
19-
.takeWhile {
20-
frequency += it
21-
seenFrequencies.add(frequency)
22-
}.last()
23-
return frequency
18+
.runningFold(0) { frequency, change -> frequency + change }
19+
.find { !seenFrequencies.add(it) }!!
2420
}
2521
}

0 commit comments

Comments
 (0)