Day10
This commit is contained in:
parent
67c9cf0391
commit
34259208d5
50
days/src/main/kotlin/Day10.kt
Normal file
50
days/src/main/kotlin/Day10.kt
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
|
import org.eclipse.collections.api.list.primitive.MutableIntList
|
||||||
|
import org.eclipse.collections.impl.factory.primitive.IntLists
|
||||||
|
import org.eclipse.collections.impl.factory.primitive.IntLongMaps
|
||||||
|
|
||||||
|
@Day(10)
|
||||||
|
class Day10(@Lines val input: Input<IntArray>) {
|
||||||
|
|
||||||
|
fun part1(): Int {
|
||||||
|
val sorted = IntLists.mutable.of(0, *input.value).apply {
|
||||||
|
sortThis()
|
||||||
|
add(last + 3)
|
||||||
|
}.toArray().toList()
|
||||||
|
|
||||||
|
var ones = 0
|
||||||
|
var threes = 0
|
||||||
|
|
||||||
|
sorted.zipWithNext().forEach { (a, b) ->
|
||||||
|
if (a + 1 == b) ones++
|
||||||
|
else if (a + 3 == b) threes++
|
||||||
|
}
|
||||||
|
|
||||||
|
return ones * threes
|
||||||
|
}
|
||||||
|
|
||||||
|
fun part2(): Long {
|
||||||
|
val sorted: MutableIntList = IntLists.mutable.of(*input.value).apply { sortThis() }
|
||||||
|
|
||||||
|
val map = IntLongMaps.mutable.empty().apply {
|
||||||
|
put(0, 1L)
|
||||||
|
}
|
||||||
|
|
||||||
|
sorted.forEach { i ->
|
||||||
|
map.put(i, map.get(i - 1) + map.get(i - 2) + map.get(i - 3))
|
||||||
|
}
|
||||||
|
|
||||||
|
return map.get(sorted.last)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day10>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
93
days/src/main/resources/day10.txt
Normal file
93
days/src/main/resources/day10.txt
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
47
|
||||||
|
99
|
||||||
|
115
|
||||||
|
65
|
||||||
|
10
|
||||||
|
55
|
||||||
|
19
|
||||||
|
73
|
||||||
|
80
|
||||||
|
100
|
||||||
|
71
|
||||||
|
110
|
||||||
|
64
|
||||||
|
135
|
||||||
|
49
|
||||||
|
3
|
||||||
|
1
|
||||||
|
98
|
||||||
|
132
|
||||||
|
2
|
||||||
|
38
|
||||||
|
118
|
||||||
|
66
|
||||||
|
116
|
||||||
|
104
|
||||||
|
87
|
||||||
|
79
|
||||||
|
114
|
||||||
|
40
|
||||||
|
37
|
||||||
|
44
|
||||||
|
97
|
||||||
|
4
|
||||||
|
140
|
||||||
|
60
|
||||||
|
86
|
||||||
|
56
|
||||||
|
133
|
||||||
|
7
|
||||||
|
146
|
||||||
|
85
|
||||||
|
111
|
||||||
|
134
|
||||||
|
53
|
||||||
|
121
|
||||||
|
77
|
||||||
|
117
|
||||||
|
21
|
||||||
|
12
|
||||||
|
81
|
||||||
|
145
|
||||||
|
129
|
||||||
|
107
|
||||||
|
93
|
||||||
|
22
|
||||||
|
48
|
||||||
|
11
|
||||||
|
54
|
||||||
|
92
|
||||||
|
78
|
||||||
|
67
|
||||||
|
20
|
||||||
|
138
|
||||||
|
125
|
||||||
|
57
|
||||||
|
96
|
||||||
|
26
|
||||||
|
147
|
||||||
|
124
|
||||||
|
34
|
||||||
|
74
|
||||||
|
143
|
||||||
|
13
|
||||||
|
28
|
||||||
|
126
|
||||||
|
50
|
||||||
|
29
|
||||||
|
70
|
||||||
|
39
|
||||||
|
63
|
||||||
|
41
|
||||||
|
91
|
||||||
|
32
|
||||||
|
84
|
||||||
|
144
|
||||||
|
27
|
||||||
|
139
|
||||||
|
33
|
||||||
|
88
|
||||||
|
72
|
||||||
|
23
|
||||||
|
103
|
||||||
|
16
|
||||||
Loading…
x
Reference in New Issue
Block a user