1
0
This commit is contained in:
Hubert Van De Walle 2020-12-05 07:10:12 +01:00
parent 4008858df8
commit e65fbe9f63
3 changed files with 878 additions and 0 deletions

View 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 kotlin.math.abs
@Day(5)
class Day05(@Lines val input: Input<List<String>>) {
private fun row(line: String) = line.take(7)
.replace("F", "0")
.replace("B", "1")
.let { Integer.parseInt(it, 2) }
private fun col(line: String) = line.takeLast(3)
.replace("L", "0")
.replace("R", "1")
.let { Integer.parseInt(it, 2) }
private fun id(seat: Pair<Int, Int>) = seat.first.times(8) + seat.second
fun part1() = input.value
.map { row(it) to col(it) }
.map { id(it) }
.maxOrNull()!!
fun part2(): Int {
val seats = input.value.map { row(it) to col(it) }
val front = seats.minByOrNull { it.first }!!.first
val back = seats.maxByOrNull { it.first }!!.first
return seats
.asSequence()
.filterNot { it.first == front }
.filterNot { it.first == back }
.map { id(it) }
.sorted()
.windowed(size = 2, step = 1)
.find { (a, b) -> abs(a - b) > 1 }!!
.first() + 1
}
}
fun main() = with(createDay<Day05>()) {
println(part1())
println(part2())
}

View File

@ -0,0 +1,807 @@
FBFFFFFLLL
FFBFFFFRRR
FFFBBBBLRL
FBFFBBFLLL
FFFBFBBLLL
FBFFFFBRLR
BFFBBFBLLL
FBFBFFBLLL
BFFFBBBRLL
FBFBBFBRLR
BFBFFFBRLR
FFFBBFFRLR
FFFFFBFRRR
FBFBBBFRRL
FBFBBFBRRR
FBFBBBFLRR
BBFFFBBRLL
FBBBBBFRLL
FBFFFFBLLR
FBFFFFFLRR
FBFBFFBLRR
FBFBFBBRRL
FFFFBFFRRL
FFFFBBFLRR
BFFBBFBRLR
BBFFFFFRLR
FFBFBBBRLL
FFBFBBBLRL
FBFFFBBLLL
FFFFBBFRLR
FBFBBFFLLR
FBBFFBFRLL
BFFFBFBLLR
FBFFBBBLLL
FFFFBBBLRR
FFBFFBFLLL
BFBFBFBRRL
BFBFFFBRRL
FBFBFBFLLL
FBBBBFFRRR
FBFFBFBRRR
BBFFFFFRRL
BFFFFFFLRL
FFFFFBBLLR
FBBFBFBRRL
BFBFFBFLLL
FFFFBBBRLL
BFFFBFBRLL
FFFBBFFLLL
BFFFFFBRLR
FBFBBFFRLR
BFFBBBFRLR
BBFFBFFRRR
BFFBFFFRLL
FFFBBBFLLR
FBFBFFFRRL
FBBFFFBLLR
BFBFFBFLRR
BFFBBFBRRR
FFFBBBBRLR
BBFFBFFRLR
FBBBBBFRRR
FBFBBBFRLR
FBFFFBBLRL
FFBFBFFLRR
BFFFBFFRLL
FBFFBFBLRL
BFBBFBFLLR
BFFFBBFRLL
BFBFBFBLRR
BFFFFBBRLR
BFBBFFBRRL
BFFBFFBRRR
FBFFFBFRLL
FFFFBFFLLR
FBFFFBFLLR
FBFFFFFRRL
FBBBFBBLLR
BFBFFFBLLR
BFFBFFBLLR
FFFBBBFRLL
FBBBBFFRRL
FBBFBBFRRR
BFBFBFFLLR
BFFFBBBRRL
FBBFBBBRRL
FFBFBBFRLL
FBBFBFFLLL
FBBBBBFRLR
BFBFBFFRRL
BFFBBFFRRR
BFBFBFBRLL
BFFBFFBRLR
BBFFBFBLRL
FFBFBFBLLL
FFBBBFBRRR
BBFFFFBLRR
BFBBBBBRLR
BFFFFFBLLR
FBFBBBBRRR
FBBBFBFLRR
FBBFBBFLLL
BBFFFFBLRL
FFBBFBFLLL
FBBBBFBLLR
FFFBBBBRRL
FFBFFBFRLL
BFFBBBFLLR
FFFBFBBLRR
FFBBFFBLLR
FFBFFBFLRR
FBBBBFBLRL
FBBBFBFRLL
FBFBFFFRLL
FBBFBBFRLR
BFFFFBBLLL
FBFBFBFLRL
FBBBFFBRRR
FFFFBFFLLL
BFBBBFFRLL
FBBBFBFLLR
FBBFBBFLRR
FBFFBBBLRL
FBFFBBFLRR
FBBBFFBRRL
FBFBBFBRRL
FBFBBFBLRL
BFBFFBBLLL
FBFFFBFLRR
FBFFBBFRLL
FFBBFFFRLR
FBFBBBBRLL
FBBBBFFRLR
BFBFBFBRLR
BFFBFBFRLR
FFFBFFBLLL
FFFFBBFLLR
FFBFBBFRRL
FBBFBFBRLR
FBFBBFBLRR
BFBBBBFLRL
BFFFFBBRRR
FBBFBFBLLL
BFFFFBFLLR
FFFFFBBLRR
FFFBFBBRRL
BFBFFFFRRR
FBFBBFFLRL
FBFFBBBRLL
FFBBBBFLLR
FFFBFFBLLR
FBFFFFFRLL
BFBFFFBLLL
FBBBBFBRLL
FFFFFFBRRL
FFBFBFBLLR
FBFBFBFRLR
FBBBBBBLLL
BFFBFFBLRL
FFBBBFBLRL
FBBFFFFRLL
BBFFBFBLRR
BFBFFBFLLR
FFBBFBBRLR
FBBFFFFRRL
FBFFBFBRLR
BFBFBFFLLL
FFFBFFFLLL
BFBFBFFLRL
BFBFBBFLLL
FFFBBBBLRR
BFFBFBFLLL
BFBBFBFRRR
BFBBFFFLLL
BFFFBBBLRL
FFBBFBFLRL
FFFFBFBLLR
FBFBFFFLLL
BFBFFFBLRR
FFBBFBBLLR
FFFFBBFLRL
BFBBFBBLLR
BFFBBFBLLR
BFFBFFBRLL
BFFFBBFLLR
FFBBFBFLLR
FBBBFFBRLR
FFBFBFFLLR
FBFFFBBRLR
FBBFFFBRLL
FBBFFBBLRL
BBFFFFBRRL
FFBFFFBRLL
BFFFBFFLRL
FFFFFBBRRR
FBFFBBFRRL
FBFBFBFLRR
FBBFFBFLRR
BFBBFBBLLL
FFFBFBFLRL
BBFFFFBLLR
BBFFBFBLLL
BFBBFBFRRL
FBBFFFBRRL
BFFBBBFLRR
FFBBBBFRRL
FBBBBBBRLR
FFFBFFBRRL
FFFBBFBLRL
FBBBBBBRRL
FFFFBFFRRR
FFFBBBBRLL
FFBBFFBLLL
BFBFBBFRLR
FFBFFBBRLL
BFBBBBFLRR
FBFFBFFLLR
FBBBFFBLLR
BFFBBBBRRR
FFBFFFFLRL
BFFBBFBRLL
FFBFBBBRRL
FFBBBFFRLL
FBBFFBFLLR
FBFFBFFLRR
BBFFFFFLRL
FFBBBBFRLR
BBFFFBBLRR
FFFFFFBRRR
FBBBFBBLRL
BFFBBFBRRL
BFBFBBFRRL
BFBBFBBRLL
BFBFFFBRLL
BFFBFFFLRL
BFFBBBBRLL
FFBBBBBRRL
FBBFFBFRRR
BFBBBBBLRL
BFFFFFBLRL
BBFFFFBRLR
FFBBBBBLRL
BFFBFBFLRL
BFBBFFFLRR
BFFBBBFLRL
BFFBFFFLRR
BFBBFBFLRR
BBFFFFFLLR
FFBFFBBLRL
BFFBBBBLLR
FBFFBBBRLR
BFFFFBBLRR
BFFFBFFRRR
FBBFFBBRLL
FBFBFBFRRL
FFFFBFBRRR
FFBBBFBRLL
FBFFBFBRRL
FFBFBFBLRR
BFFFFFFRLL
BFFBFFBRRL
FBFBFFFLLR
BFBFFBBRLL
FFBFFBBLLR
FBFBBFBLLL
FFBBFBFLRR
FFFBBFBRLL
FBBFFBFLRL
FFBFBFFRRR
FBBBFBBRLL
FBFFFFBLRL
FFFFFFBLRR
BFFBFFFRRL
BFFBFBBLRR
FBBFFFBLRL
FBFFBBFRRR
BBFFFBFLRL
BBFFBFFLRL
FFBBFFFLRR
BFBBBFBLLR
FBFBFBFRLL
BFBFBBFRLL
FFBBFBBRLL
BFBBBFBRRL
BFFFBBFLRR
FFFBFFFRLL
BBFFBFFLRR
BBFFBFFLLR
FFFBFFBLRR
BFFBFFFRRR
FBFBFFFRLR
FBFBFFBLLR
FBBFBFBLRR
FBFBBBBLRL
FBFBBFFRRR
BFFFFBFLRR
FBBFBBBRLL
FFBFFBBLRR
FFBFBFFRLR
FBBBBBBLLR
BFBFFFFLRR
BFFFBBFRRR
FFBFBFFLLL
FFBFBBFRRR
BFFBBBFRLL
BFBBFBFRLL
BFBBBFFRRR
BFFFBBBLRR
FFFBBFBRLR
BBFFFBBLLR
BFFFBBBLLL
FFFBFFBRRR
BFBFBBBLRR
BFBFBFFLRR
FBFBFBBLLL
FBBBFBBLRR
FBFFBBBRRR
FFBFFBBRLR
FFFBBFFRRL
FBBFFBBRLR
BFFBFBBRRL
FBBBFFFLRL
FBBFFFFLLR
FFBBFFBRRR
FFFFFBFLRL
BBFFFFFRLL
BFBBBFFLLL
FBFBBFBRLL
FBFBBBFRLL
FBBBFFFLLR
BFBBFBBLRL
FFFFBBFLLL
BFBBBBBRRR
FFFBFBFRLR
FBFFBFBLLL
BFBBBBBLLR
FFBBFFFRLL
FFFBFFFLRL
FFBBBFFRRL
FFBFFFFRLR
BFFFBBBLLR
BFBFFFFLRL
FBBFFBFRLR
FBFFFFFRLR
BBFFFBBRRL
BBFFFBBLRL
FBFFFBFLRL
FBBFFFFLRR
FBFFFFBLRR
FBFFBFFLRL
BFBFFBFRLL
BFBFBBFRRR
FBBBFBFLLL
BBFFFFFLLL
FFFFBFFLRL
FBBFBBFLRL
FBBFBBBRLR
FFBFFFFLLR
FFBFBFBRRR
FBBBFBBLLL
FBFBBBBLLR
BFFFFBBLRL
BFFBFBFLLR
BFFBBBFRRR
BBFFFBFLRR
FBFFFFFLRL
BFFFFFFRRL
BFFBFFBLLL
BFFFFFFLLL
FFFBFFBLRL
BFFFFBFRRL
FBBBFFFRLR
BFBFBBBLRL
BBFFFBFRRR
BFFFFBBLLR
BFBFBBBRRR
FBFFFBFLLL
FBBBFBFRLR
FFFFFFBLRL
FBFBBFFRRL
BFBBFBFLLL
FFBFFBBRRL
BFBFFFFLLL
FBBFFBFLLL
FBFFFBFRRR
BFBBBBFRRL
BBFFFBFRLL
FBBFBFBLRL
FFBBFFFLRL
FBBFBBFRRL
FBBFBBFLLR
BFBFBFBLLR
FBBFFFFRRR
FBBFFBFRRL
BFFFFFFRRR
BFBBFBBRLR
FFFBFBFRLL
FBFFBBBLLR
BFBBBBBRLL
BFFBFFFRLR
BFBBBFFLRL
BFBBBFFRRL
FFBBFBFRRR
FFBFBBFRLR
FFBFBFFLRL
FBFBFFBLRL
FBBBFFBLRR
BFBBBFFRLR
BBFFBFFRRL
FBBBBBFRRL
FBFBBFFLLL
BFBBFBFRLR
FFBFBFFRRL
BBFFFFFLRR
FBBBFBFRRL
BFBFBBBRLR
FFBFFBFRLR
FFBBFBFRLR
FBFFBFFLLL
BFBFBBBLLL
BFFFFFBRLL
FFBFBBFLRR
BFBBFFFLRL
BFFFFBFLRL
FFBBFBFRRL
FFFFBBFRRR
FBFBFFBRLL
FBBBBFBLRR
BFBBFBBRRL
FFFBFBFRRL
FBFFBFBLLR
FFBFBBBLRR
BBFFFBFLLL
BFBBBBFRLR
FFFFFBFRLL
BBFFFBBRRR
BFFBBFFRLR
FBFBBBFLRL
BFBBFFBLRL
BFBBBFFLRR
FBBBFFFRRR
FFFFBFBLRL
BFFBBBFLLL
FBBBBFBRRL
BFFBFBBRRR
FBBBBBFLLR
BFBFBBBRLL
FFFFFBFLRR
BFFFBBFRRL
FFFBBBFLRL
FBBBBFBLLL
FBBFBBBLLR
FBFBBFBLLR
FBFBFFFLRR
BFFFFBFRLR
FFFBBBBLLL
BFBFFFFRRL
FBFBBBBLRR
FBBBBFFLRL
BFBBBFBLLL
FBBFFFBRRR
FFFBBFFLRL
FBBFFFFLLL
BFFFFBBRLL
FBBBBFBRLR
FFBBBFBLLL
BFFFBFFLLL
BFBBBBBLRR
FFBFFFFLRR
FBBFBFFRLL
BFFBBBFRRL
FFFBFBFLLR
BFFFBFFRRL
FBFBFBBLLR
FBFBBBFRRR
FBBFBFBRLL
BBFFFBBLLL
FBFFBFBRLL
BFBFFBBLLR
FFFBBFFLRR
FBBFBBBLRL
FFFFBFFRLL
FFBBFFFLLL
BFFBBBBLRL
BFBBBFFLLR
FFBBFBFRLL
BFBBBFBLRL
BFBBBFBRLR
BFFBBFFLRL
FFBBBBBRLL
FBBFBFFLRR
FFFBBFBLRR
FBBFFBBRRL
FFFBBFBLLR
FFFBBFBLLL
FBFBFFFRRR
FFFFFFFRRR
BFFFBFFLLR
FFBFFBFLRL
FFFBFFFLRR
FBBFBFFRLR
FBFBFBFLLR
FBFFFBBRRL
FBFFFBBRLL
FFBBFFBLRL
FFFFBFBRRL
FFFFFBFRRL
BFBBFFBLLR
FBFFFBBLRR
FFFFBFFRLR
BFFBBFFLRR
FBBBBBFLLL
BBFFBFFRLL
BFFFFFBRRL
FFFBBBFLLL
FFBBBBBRLR
FFBBBBBLRR
BFFFFFFLRR
FFFBBBFRRR
FFBBBFBRRL
BFBBBFBLRR
FBBFFBBLLR
FFFBFBBRRR
FBFBFBBRRR
FBBFFFBLRR
FFBFFFBLRR
FFBFBBBRLR
FFFBFBFRRR
BFFBFBFRLL
FFFFFBBLRL
FFBBFFFRRL
FFBFBBBRRR
FFBFFBBRRR
FFFFFBBRLL
FFFFBBBLLL
FBFBFFBRRL
FFFBFBFLRR
BFBBFBBRRR
BFFBFBBLLR
BFBFBBBLLR
FBBBBBBRLL
BFFBFBBRLL
FBFFBFFRRR
BFFFBFBRLR
FFBBFBBLRL
BFFFBBFLRL
FFFBBFFRRR
BFFBFFBLRR
FFFFFFBLLR
BFFBFBBRLR
FBFBBBBRRL
BFBBFFFRLL
FBFBBFFLRR
FBBFBBFRLL
FFBBFBBLRR
BFBBFFBRRR
FBBBFBFRRR
FFFFBFBRLR
FFFFFBFRLR
FBBBFFFRRL
FBBFFFFRLR
FFFFBBFRLL
FBBBFBFLRL
BBFFFBFRLR
BFBBFFFLLR
BFFBFBFRRL
FBBBFBBRLR
FBBFBFBRRR
FBFFBBFRLR
FFBBFBBRRL
FBFFFFBLLL
FBFFBBFLLR
BBFFBFBRLR
FBFBBBFLLR
FFFFFFFRRL
FFBFBBBLLL
FFFFBFBLRR
BFFFBFFLRR
FFFFBBBLLR
FFBFBFBRLR
BFFBBFFLLL
BFBBBFBRLL
BBFFFBFLLR
FFFBFBFLLL
FFFFBFFLRR
FFBBBBBLLL
FFFFFBFLLL
FBFBFBBLRR
BFFFFFBLLL
BFBBFFBRLL
FBFBFBBRLR
FBFBFBBLRL
FBBBBBBLRR
FFBFFFBRRL
FBBFBFFLLR
FBBFFBBRRR
BFBBBBFLLR
BFFBBBBRRL
FFFBFFFRRR
BFBFBBFLLR
FFBBFFBLRR
BFFBFFFLLL
FBBFBFBLLR
FFBFFFBLLL
FFFBFFFRRL
FFBFFFFRRL
FFFBBBFRLR
FBFFBBBLRR
FFBBFFBRLR
FFFBBFBRRL
BFFFFFBLRR
BFBFBFFRLR
FFBBFBBLLL
FFFFFBBLLL
FFFFBBBRRL
BFFBFBFLRR
FFBBFFBRLL
FFBFBFBRRL
BFBFFFFLLR
BFFBBBBLRR
FFFBBBBRRR
FFBFBFBLRL
FBFFFBBRRR
FFBFFFFLLL
FFBBBFFRLR
FBFBBBBRLR
FBBBBFFLLR
BFFFBFBRRR
FBBFBBBRRR
FFBFFBFLLR
FFBBBFBLRR
BFBFFFFRLL
BFBBBBBLLL
BFBFFBFRRR
BFFFBFBRRL
FBFBBBFLLL
FFBBBBFLLL
BFFBBFFLLR
BFBFFBFRLR
FBBBBFBRRR
FBFFFBFRRL
FFBBBFBLLR
FBFFBBFLRL
BFFBFBBLLL
FFFFFFBRLR
FBBFBBBLLL
FFFBFFBRLR
BFBBBFBRRR
BFFFFFFRLR
BFFFBBFRLR
FFBBBBFRRR
FFFFFBBRLR
BFBFFBBRRR
FBBFBFFRRR
FFBBBBFLRL
FBBBFBBRRL
FBBBBBBLRL
FBBBBBFLRR
BFBFFBFRRL
FFFFBFBRLL
FBBBBFFRLL
FBBFFFBLLL
BBFFFBFRRL
FFBFFFBLRL
FFFBFFFLLR
FFBFFFBLLR
BFFFBFBLLL
BFBBBBFRRR
BFBBFBBLRR
BFBBFFBLLL
FBFFBFFRRL
FBBFBFFRRL
FFFBBBBLLR
FFBBBFFLLL
BFFBBFBLRR
FBFBFFBRLR
FFBFFFBRRR
FFFFBBBRRR
BFBFFFFRLR
FFBBBFFLLR
FBBBFFFRLL
FBBFFBBLRR
FFBBBFFLRR
FFBFBFBRLL
BFBFBBFLRL
BFBFFBFLRL
FBBBFFFLLL
FFBBBFFLRL
FBFBBBBLLL
FFBBBBFRLL
FBBBFFFLRR
FBFBBFFRLL
BFBFFBBLRL
FBBBFFBLLL
BBFFBFBLLR
FBBBFBBRRR
BBFFFFBRLL
FFFBFBBLLR
BFBFBBBRRL
BBFFFFFRRR
BFFFFFFLLR
FFBFFFFRLL
FBBFFFFLRL
FFFBBBFLRR
FFBFBBFLLR
BFBBFBFLRL
FFBFBBBLLR
BFFFFFBRRR
BFBBBBBRRL
BFFBFFFLLR
BFBBFFFRRL
FFFBFBBLRL
FBBBBBBRRR
FFFFBFBLLL
FFBBBFFRRR
BFFFFBFRRR
FFFFFFBRLL
FFFFFBFLLR
FFBFBBFLRL
BFFFFBBRRL
BFBFBBFLRR
FBFBFBFRRR
FBFFBFFRLL
FFFFBBBRLR
BFBBFFBRLR
BFBFBFFRRR
FFBFFFBRLR
FBBFBBBLRR
FBFFFBBLLR
FFFBBFFLLR
FBBFBFFLRL
BFFFFBFRLL
BFFFBBBRRR
FBFFFFFLLR
FFBBBBBLLR
FBFFFFFRRR
FBFBFBBRLL
BBFFFFBRRR
BFFFBFBLRR
BFFFBFBLRL
BFFFBFFRLR
FFFBFBBRLL
BFBFFFBRRR
FFBFFBFRRR
BFBFBFFRLL
BFBBBBFLLL
FBBFFFBRLR
BBFFBFBRLL
FFBFFBFRRL
BFFBBBBLLL
BFBFFFBLRL
BFBBFFFRLR
FBBBBBFLRL
FFFFBBBLRL
FFFBBFBRRR
BFFBFBFRRR
FBFFFFBRLL
FBFFBBBRRL
FFBFBBFLLL
FFFFBBFRRL
FBFFBFFRLR
BFBFFBBRRL
FFFFFFBLLL
BFBFFBBRLR
FBBBFFBLRL
BFFBBBBRLR
BBFFFFBLLL
FBFFFBFRLR
FBBBBFFLLL
BBFFFBBRLR
FFFBBBFRRL
BFBFBFBLRL
FFFFFBBRRL
BFBFBFBLLL
FFFBFBBRLR
FBBFFBBLLL
FFBBBBBRRR
BFFFBBFLLL
BFBFBFBRRR
BFFBFBBLRL
FFBBFFFLLR
BFFBBFFRRL
BFFBBFBLRL
FBFFFFBRRR
FBBBFFBRLL
FFFBFFFRLR
BFBFFBBLRR
FFBBFBBRRR
FFBBBFBRLR
FFBBFFBRRL
BFBBFFBLRR
FBFBFFBRRR
BFBBFFFRRR
FBBBBFFLRR
BFFFFBFLLL
FBFFFFBRRL
FFFBFFBRLL
BFFFBBBRLR
FBFBFFFLRL
FFBFBFFRLL
FFBBFFFRRR
BFBBBBFRLL
BBFFBFFLLL
FFBBBBFLRR
FFBFFBBLLL
FBFFBFBLRR
FFFBBFFRLL

View File

@ -0,0 +1,21 @@
package be.vandewalleh.aoc.days
import be.vandewalleh.aoc.utils.input.createDay
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
class Day05Test {
private val day05 = createDay<Day05>()
@Test
fun part1() {
assertThat(day05.part1()).isEqualTo(813)
}
@Test
fun part2() {
assertThat(day05.part2()).isEqualTo(612)
}
}