# Day 05 ```elixir Mix.install([:kino_aoc]) ``` ## Section ```elixir {:ok, puzzle_input} = KinoAOC.download_puzzle("2020", "5", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION")) ``` ``` {:ok, "FFBBFFFLRL\nFFBBFBBRRL\nFBBBFFBLRL\nBBFBFFBLRR\nBFBBBFFLLL\nBFBBBBBLLR\nFBFBFBFLLR\nBFBFBBFLLR\nFBBFBFBLLL\nBBBFBFBRLL\nBFBBBFBLRL\nFBBFFFBLLR\nBFFBFBFLRL\nFBBBBFBRLR\nFFBBBBBRRL\nFBBFBFFLRL\nFBBBBBBLLR\nFBBFBBBRRL\nFBBFFBFRLL\nFBFBBBBRRR\nBFFBFBFRRL\nBFBFBBBLLR\nFFFFBFBLRL\nFBFFBFFLRL\nFFBFBBBRRR\nFFBFFFFLRR\nFBBBFFFLLR\nFFFFFBFLLL\nBFFFFFFLRL\nFBBBBBFRLR\nBBBFFBBRRR\nFFFFBBBRLL\nFBFFBBBRLR\nBFBBBFFRRL\nBBFBBFBLRL\nBFBFBFFRRR\nBBFBFFFLLL\nFBFBFBFRRR\nBFBFBFFRRL\nBBFBBFBRRL\nFFBBFBFLRL\nFBFFFFFRLR\nFBBFFFBLLL\nFBBBBFFRLL\nFFBBBBBLLL\nBFFBBFFRLR\nFFFBBFBRRR\nFBBBFFFRLL\nFFFBFBFLRL\nBFFBBFFLRL\nBFBBBBBLRL\nBFFFFFBRRR\nFFFBBFBLRL\nFBBBFBFRLL\nFBBFBFBLRR\nBBFBBFFLRR\nFBFFBBFLLL\nFFFFFBBRLL\nFFBBFFBRLR\nBBFFFFFLLL\nBFFFFBFLRR\nFBFBBFFRRL\nBFBFFBBLLR\nFBBBFBBRLR\nBBBFBFFRLL\nBBFFBBFRLR\nFFBFFBBRLR\nFFBBBFBRLR\nBBBFFFBLRR\nBBFBFBFLRR\nBFBBBBBRLR\nBFFFFFBLLR\nFBFFBFFRLL\nBBBFFBBRLR\nFFBBBFBRRR\nBFBBBFBRLR\nFBFFFBBLRL\nFFFBFFFRLL\nBBFFBFFLLL\nBFFBBFFRRR\nFFBFBFBRRL\nFFBBBFBRRL\nFBBFFBBRLR\nFBFFBBFRLR\nBFBFFBBRRR\nBBFBFBBRLR\nFFBFFFFRRL\nBBFFBFFLLR\nFBBFBFBRRR\nBFBFBBBRRL\nFBFBFFBRRL\nFFFBBFFRLL\nBFBFFFFRRR\nFBBFFBFLLR\nFFBFBFFRLL\nFBFFBFBLLL\nFBFBFFFLRL\nBBFFFFFRRR\nFBFFBBFLRR\nFBFFFBFLRL\nFBBBFBBRRL\nBFFBFFFRLR\nFFBBBBFLLR\nBFFFFBFLRL\nBFFBFFBRRR\nFFBFBFBLRL\nBBFFFBBRLL\nFFBFBBFRRR\nFFFBFBFRRL\nFBFFBFBRRR\nFBBBBFBRRL\nFBFFFFFLLR\nFFBFFFFLLR\nFBBBBFFRLR\nBBBFFBBLRR\nBBBFFBFLRR\nFBBFBBBLRR\nFBBFBBFRRL\nFFFBFFBLLL\nFBFFFFBLLL\nBBFFFFBLLL\nFBFFFBFLRR\nFFBFBFFLRR\nBBFBFFFRLL\nFFFBBBFRLR\nFFBFFBBRLL\nBBBFBFFRRL\nBFFBBBBLRR\nBFFFFFFLLL\nBBBFFFBLLL\nFBBBBBFRLL\nFBBFBBBLLR\nBBFBFFFRRR\nBBFFFBBLLL\nFBBFFBFLRL\nBBFBFFFLRR\nBFBFFBFRLL\nBFFFBFBLLR\nBBBFBFBLLL\nBBBFFBFRLR\nFBFFBFBRLR\nBFBBFFFLLL\nBBFFFFBLRR\nBBFFFBBRRL\nBBBFBFFLLL\nBFBFFBFLLL\nFBBBBFFLLR\nFFBFFFFRLR\nFFBBBFBRLL\nBFFFFFFRRL\nBFBFFBBLRL\nBBFBBBFRLL\nBFFFBFFLLR\nBBFBFFBRLL\nBFBBFFFRLL\nBBFBBFBRLR\nFFFBBFBRLR\nBFFFBBFLRL\nFFBFFBFRLL\nFFFBFFBLRL\nBFBBBFFRLR\nBBBFFBBLRL\nBFFBBBBRRL\nFFBBFFFRLL\nBFBFFBFLRL\nBFFBBBBRRR\nBBFBFBFRRL\nBBBFFBFRRL\nBFFFBFBLRL\nFFFBFBFRLR\nFBFFBBBLRR\nFFFFBBBLLL\nBBBFBBFLLR\nBFFBFBFRRR\nBFBFFFBRRR\nBBFBBBBLLR\nFFBBBBBLRL\nFFBFFBFLRR\nFFBBBFBLRR\nBBFBBFBRRR\nFFFFFFBRRR\nBFBFBFBRRL\nBBFFBBBLRR\nBBFBFFFRLR\nFBBFBFBLLR\nBFBBFFBRLL\nFFFFBFBLLR\nBFBFFBBRLR\nFBFFFBFRRR\nBFFBFFFRLL\nFBBBFFFRRR\nFFFBBBFLLL\nFBBBBBBRRL\nFBBFFBBLLR\nBBBFBFFLRR\nBFBBFBFLRR\nFFFBBBBRRR\nBFFFBBFRLR\nFBFFBBFLLR\nFBFFFFFRRL\nBBBFBBFLLL\nBBBFFFFRLR\nFFFFBBBRRR\nFBBBFBBLLL\nBFFBFFBLLL\nFBFBBFBRLR\nFFBFFBBLLR\nFFFFBFFLRR\nFBBFFBFLLL\nFBFBBFBRRR\nBBBFBFBLLR\nBBFFBFBLLL\nFFBFFBFRLR\nFBBBFBBLRR\nBBFBBFBLLL\nFFBFFBFRRR\nFBBBBFFLRL\nBFBBFBFLLR\nFBFBBBFRLR\nBFBBFFBLLR\nFFFBBBFLLR\nFFFBBBFRRL\nBFFFBFBRLR\nBBBFBBFLRR\nBBFBBFFLLR\nBBFBBBBRLR\nFBBFFFFLRR\nFBFBBFFRLL\nFFBFFFFRRR\nFFFBBFFRRL\nFFFBBFBRRL\nFFFBFBFLLR\nFFBBBBFRRR\nBFFFFBBRRL\nBFFFFBFRRR\nBFBBBFBLRR\nFFBBFFFRRL\nFBBBBBBRRR\nBBFBFFBLLR\nFBFFFFBRLL\nBFBBFBFLLL\nFBFFFBBRLL\nFBBBFFBLLR\nBBFBBBFRLR\nFBFBBFBLRR\nFFFFFBFLLR\nFBFBBBFLRL\nFFBFFFBRRR\nFFFBBFFLRL\nBBBFFFFLLR\nBFBFFFFRRL\nFBFBFBBLLR\nFBBBFBFRRL\nBBFBBBBRRL\nBFBBFBFLRL\nBFFBBFFLLR\nBFBFFBBRLL\nFBFFBFFRLR\nFBFBFBFLRR\nBFBFBBFRRR\nFBBBBFBLRL\nFFBBBFFRRR\nFFBBFFBRLL\nFFBBBBBRLL\nFBFFFBFRRL\nFFFBBBFLRL\nBBBFBFFRRR\nFFFBFFFRRR\nFBFFBFFLLL\nFFBBFFBRRL\nBFFBFFBRRL\nFFBBBFFRLR\nBBBFFFFRRR\nBBFBFBBRRR\nFBFBBBBLRR\nBFBFBFBLLL\nFFBBFFBLLR\nBFFFBBBRLR\nBFBBFBBRLR\nBFFFFBBLLR\nFBFBFBBRLR\nBFFBBBFLLR\nFBFFBFBLRL\nBFBFBBBRLL\nBFBBBFFLRL\nFFFBFFFLRR\nBFFBBFBRLL\nFFBBBBFRLL\nBBFFFBBLLR\nFBFBFBFRLR\nBBBFFFBRLR\nBFFFFFBRLR\nBBBFFFFLLL\nFFFBBFBRLL\nBFFFFFBRRL\nFBFFBBBRRL\nFBFBFBBLLL\nFBFBBFBRRL\nFBBFBBBRRR\nBFBFFBBRRL\nFBBBBFBLLL\nFBBBBBBRLR\nBBFFFBFRRL\nFFFFBFBLLL\nFFFFBBFLRR\nFFFFBFFLRL\nBFFFBBFRLL\nBBFFFFBRRR\nBFBFFFFRLL\nBFFFFBFLLR\nBBBFFBBRRL\nBBFBBFBLLR\nBFFFFBFRLR\nFBBBFBFLLR\nFFFFFBBLRR\nBFBFFFFLRR\nFBFBBFFLRL\nFBFFFBBRRR\nBBFBBBFLRL\nBFBBBFFLLR\nBFBFBBFRRL\nFBFFFFBLRL\nFBBFBFFRLR\nBFBFBBBLRR\nBFBFBBFLRL\nBBFFBFFRLL\nFBFFBBBLRL\nBFBFBFFLLR\nFFFBFFBLLR\nFFFBFBBRRR\nBBFBFFFLLR\nFBBBFBFRLR\nFBFFBBBLLL\nFFBFBBFLRR\nFBFBFFFLLL\nBBFFFFFLRL\nFBFBBFBLRL\nBBFFFBFLLR\nBBFBBBBRRR\nBFBBBFFRRR\nFFFBFFBRLL\nFBBBFFFRLR\nBBBFBFBLRL\nFBFFFFBRLR\nBFFFFFBLLL\nFBFFFFBLLR\nBFBBFFBLRR\nBFBFBBBRRR\nBBBFBFBRRR\nFFFBBFFRRR\nFBBBFFFLRR\nBBFBFFFRRL\nBFBFBBFRLR\nBFFFBFBRLL\nFBFFFFFLLL\nFFFBBBBLRL\nFFFBBFFLLL\nFBFFFFBRRR\nFFBFBFBRLR\nBFBFFFBLRR\nBFFFBFBLLL\nFBBFBFFRLL\nFBFBFFFRLL\nFBBBFFBRRR\nFBBBFFBRLL\nFFBBFBBLLL\nFBBBBFBRRR\nBFBBBFBLLR\nFBBBBBFLLR\nFFBBFBFLRR\nBFFBBFBLLR\nFBFFFFBLRR\nBFFB" <> ...} ``` ```elixir seats = puzzle_input |> String.split("\n", trim: true) ``` ``` ["FFBBFFFLRL", "FFBBFBBRRL", "FBBBFFBLRL", "BBFBFFBLRR", "BFBBBFFLLL", "BFBBBBBLLR", "FBFBFBFLLR", "BFBFBBFLLR", "FBBFBFBLLL", "BBBFBFBRLL", "BFBBBFBLRL", "FBBFFFBLLR", "BFFBFBFLRL", "FBBBBFBRLR", "FFBBBBBRRL", "FBBFBFFLRL", "FBBBBBBLLR", "FBBFBBBRRL", "FBBFFBFRLL", "FBFBBBBRRR", "BFFBFBFRRL", "BFBFBBBLLR", "FFFFBFBLRL", "FBFFBFFLRL", "FFBFBBBRRR", "FFBFFFFLRR", "FBBBFFFLLR", "FFFFFBFLLL", "BFFFFFFLRL", "FBBBBBFRLR", "BBBFFBBRRR", "FFFFBBBRLL", "FBFFBBBRLR", "BFBBBFFRRL", "BBFBBFBLRL", "BFBFBFFRRR", "BBFBFFFLLL", "FBFBFBFRRR", "BFBFBFFRRL", "BBFBBFBRRL", "FFBBFBFLRL", "FBFFFFFRLR", "FBBFFFBLLL", "FBBBBFFRLL", "FFBBBBBLLL", "BFFBBFFRLR", "FFFBBFBRRR", "FBBBFFFRLL", "FFFBFBFLRL", "BFFBBFFLRL", ...] ``` ```elixir defmodule Plane do def lookup(<<>>, _directions, pos, 1), do: pos def lookup(<> <> rest, d, first, dist) do dist = div(dist, 2) {nf, nl} = if curr == d do {first, dist} else {first + dist, dist} end lookup(rest, d, nf, nl) end def seat_no(id) do {row, col} = String.split_at(id, 7) lookup(row, ?F, 0, 128) * 8 + lookup(col, ?L, 0, 8) end end ``` ``` {:module, Plane, <<70, 79, 82, 49, 0, 0, 9, ...>>, {:seat_no, 1}} ``` ## Part 1 ```elixir seats |> Enum.map(&Plane.seat_no/1) |> Enum.max() ``` ``` 947 ``` ## Part 2 ```elixir seats |> Enum.sort() |> Enum.map(&Plane.seat_no/1) |> Enum.chunk_every(2, 1) |> Enum.find_value(fn [a, b] -> if b == a + 2, do: a + 1 end) ``` ``` 636 ```