aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2020/five.nim27
-rw-r--r--2020/input/five.txt805
2 files changed, 832 insertions, 0 deletions
diff --git a/2020/five.nim b/2020/five.nim
new file mode 100644
index 0000000..ebad294
--- /dev/null
+++ b/2020/five.nim
@@ -0,0 +1,27 @@
+# Day Five: Binary Boarding
+import os, math, std/enumerate
+
+let input: string = paramStr(1)
+
+var
+ min: int = 2^8
+ max: int = 0
+ flight: seq[int]
+for seat in lines(input):
+ var row, column, id: int = 0
+ for i, char in enumerate(seat[0..^4]):
+ if char == 'B':
+ row += 2^(7-i) div 2
+ for i, char in enumerate(seat[7..^1]):
+ if char == 'R':
+ column += 2^(3-i) div 2
+ id = row * 8 + column
+ max = max(max, id)
+ min = min(min, id)
+ flight.add(id)
+
+echo max
+
+for id in min .. max:
+ if id notin flight:
+ echo id
diff --git a/2020/input/five.txt b/2020/input/five.txt
new file mode 100644
index 0000000..fb33193
--- /dev/null
+++ b/2020/input/five.txt
@@ -0,0 +1,805 @@
+FFBBFFFLLL
+BFBFBFBLLR
+BFFBBBBRRR
+FBFBFFFLLL
+FFFBFBBRRL
+FBBFFBBLLR
+FBBBFBFRRR
+FBFBBFFLLL
+FBFBFBFRRR
+FFBFFFFLRL
+FBFBFBBLRL
+FBFFFBBLLR
+FBBBBBFLLL
+BBFBFFFLLL
+FBBBBFBLRL
+FBBBBFBRRR
+FBFFBBBLLL
+FBFFFFFLLR
+BFBFFFFRRL
+BFFFBBBLRL
+FBBBBFBRLL
+BFBFBBBRLR
+BFBBFFFLRR
+BBFFFFBRRR
+FFBFBBFRRR
+FFBFBFBLRR
+BBFBBFBRRL
+BBFBFBFLRR
+FBBBBFFLRR
+BFBFBBBLRL
+BFBFFFFRLL
+BBFFFBFRLR
+BBFFFBBLRR
+FBFBBBFRRL
+BFBFBBFLRL
+BBFFBBBRLL
+BBFFBBBLRL
+FBFFFFFRLR
+FBFBFBFRRL
+FBBFBFBLLR
+BFBBFFBLLL
+BFFFFBFRLR
+FBBFFFFLRR
+FFFBBFBRRR
+FBFFBFFLRR
+FFBBFBBLLR
+FBFBBFBLLR
+BFFBBFBRLR
+FFBBBBBRRR
+FBFFBBFRLL
+BFFFBFFRLL
+BBFFBFBLRR
+BFFFBFBRLR
+BFFBBBFRLR
+BBFBFBFRLL
+BFFFBFFRLR
+FBFFFBFRLL
+BBFBFFBRLR
+BBFFBFBLRL
+FBBBBBFLLR
+FBBBFFBRLR
+FFFBBBFRRL
+BFBFBBBRRR
+BBFBFBBLRL
+FBFBBBFLRR
+FBFBBFBLLL
+FFBBFBFLLR
+BFBFBBFRLR
+FFBFBBBRRR
+FFBFBFFRRR
+BFBBFFFRRL
+BFFBBBBRLR
+BFFBFFFLRR
+FBBFBFBLLL
+FBFFBBBLRL
+BFBBBBBLRR
+BBFBFFFRRL
+BFBFFFFLRL
+BBFFBBFRLL
+FBFBFFBLRR
+BFBFBBFRLL
+BBFFFBFLLR
+BFBFBFFLRL
+BFBFBFBLRR
+BFFFFFFRRR
+FFFBFBFRLR
+BFFFFFBRLL
+BFFFBFFLRL
+BBFFBFFLRL
+FFBBBFFLLL
+FFFBFBBRLL
+FBFFBBFLRR
+BBFBFFFLRL
+BBFBFFBRRR
+FBFFFBFLRL
+FFBFFBBRLR
+FBBBFBBLRL
+BFFFBBFRLR
+BBFFBFBRLR
+BFFFFBFRRL
+FBFBBBBLLR
+BFFBBFFLRL
+FFBFFBFRLR
+FBBFFFFLLL
+FBFFBFFRLR
+BFFBFBFLLL
+BFFFBFFLLR
+BFFBBFBLLR
+FBBBBBBLRR
+BFFFFBFRLL
+BBFBBBFRLR
+FFBBFFFRRL
+FBBFFFBRRL
+FBBFFBBRLR
+BBFBFBBLLR
+BBFFFBFRRL
+BFFFBBFRRL
+FBFBBBFLLL
+BBFFFBFRRR
+FBFBBFFRLR
+BBFFFFFLRR
+FFBFFFBRRR
+BFBFBBFRRL
+FBBFFBBLLL
+FFFBBFBLRL
+FBBFBBFLRR
+FBBFBFBLRR
+FBFFFBBRRR
+BBFFBBFLRL
+FBBFFBFLRR
+BBFBBFFLRR
+BFFFFFFLRL
+FBFBFFFLLR
+FBBFFFFRRR
+BFBBFFBLRR
+FFBFFFFLLR
+FFBFBFFLRR
+BBFFFBFLRR
+FBBFBBBRLR
+FBBFBFBRRR
+FBFFBBFLLR
+FFFBBFBRLR
+BFFBBFFRRR
+BFBFFBBLLR
+BFFBBFFRLL
+FBBFBFBLRL
+BBFFBBFRLR
+BFFBFBBLLL
+FBBBBBBRRL
+BBFFBFFLLL
+FBFBFFFRRL
+FBBBBFBRLR
+FBBFFBBLRL
+FBBFFFBRLR
+FBFBFBFLRR
+BFFFBBBRRL
+FBFBBBFRLR
+BFFBBFFRRL
+FFFBFBBLRL
+FBBFBBFRRL
+FFBBBBFRRL
+FFBBBFBLLL
+FBFBBBFLRL
+FBBFFBFLLL
+FFBFFBFLLL
+BBFBBFFRLL
+FBBFBBBLRR
+BFBBBFFRRR
+BBFFBBFRRL
+BFFBFFFLLR
+BBFBBBBLRL
+FFBBFBBLRR
+BFFFFFFRLL
+FBBFBFFLRL
+BBFFFFBLRL
+BFBFFFBRLL
+FFBBBFBRRL
+BBFBFBBRLR
+FBBBFFBLRR
+BFBBBFFLLR
+BFBBBBFRLL
+BFBBBFFLRL
+FBFBFFBLLR
+FFBFBBBLLR
+BFBBFFFLLR
+FBFFBBFRLR
+FFBBFBFRRL
+BFFBFFFRRL
+BBFBFBBRRR
+BFFBFFFRLR
+BFFFBFFLLL
+FBBBFBFLRR
+FBFFFFFLLL
+FBBBFFFLRL
+BBFFBBBRLR
+BBFFBFFRRL
+FFBFFFBLLL
+FFBBFFBRLR
+FFBBBFFRRR
+BFBBFBBLRR
+BFBBBBFLLR
+BFFFBFBRLL
+FBBBBFFRRL
+BFFBBBFLRL
+BFFFFFFLLR
+FFBBBBFLRL
+BFBFBBBLLR
+BBFFFFFRLR
+FBBFBBFLLR
+FFBBBBFLRR
+BFFBFFBRRL
+BFFFBBFLRL
+FBBBFFFLRR
+FBBFFBBRLL
+FBFBFBBLRR
+FFBBFFBLLL
+FFBFBBFRRL
+BFBBFFBRRL
+BFBFFBBRRL
+FFFBBFFLLL
+FFFBFBBLRR
+BFBBFBFLLL
+BFFFBBBLRR
+FBFBFFFRLL
+FBBBFBFLRL
+BFBFBFBRRL
+FBFBBFFRLL
+FBBBFBBRLR
+FBFFBFBLLR
+FFBFBFFLLR
+BFFFBFBLLR
+FFFBBBFLRL
+BFFBFBFLRL
+BFFBFBBRRL
+FFBBBBBLRR
+FBBBFBFRLR
+BBFBBFFRLR
+BFBFBFBLLL
+BFBFFFBRRL
+FFBBBBBRRL
+BBFFFBBRLR
+FBBBBFFLLL
+FFBBFBFLRL
+BFBFFBFLRR
+BFBBBFBLRR
+BFBBBBFLRR
+FFFBFBBRRR
+BBFBBFBRRR
+FFFBBBFLRR
+FBBFFFBLLR
+BFFBFBBRRR
+FFFBBBBLLL
+FFFBBFBLLR
+BFBBBFFRLL
+FBBBFFFRRL
+FFBFFFFRRR
+BBFFFFBLLL
+FBFFFFFLRR
+BBFFBBFLRR
+FFFBBBFRRR
+BBFBBFBRLR
+FBBFFBFLLR
+FFBFBBFLLL
+FFBBBFFLRR
+FBBFFFBLRL
+BFFFBFBRRL
+FBBFFFFRRL
+FFFBFBBLLR
+FBBFFBFRLR
+BFFBBBFLRR
+FBFFBFFRRR
+BFBFFBFRRR
+BBFFBFFLLR
+FFBBFBFLLL
+BBFBBBFRRR
+FBBBBFFRLL
+BFBBBBFLRL
+BBFBFFBLLL
+FFBFBBFLLR
+BBFFFFBLLR
+BBFFFBBRRR
+BFFFBFFRRL
+FFBBFBBRLL
+FBBBFBFLLR
+BFBBFBFRRR
+BBFBFFFRLR
+FBFFFBBLRR
+BBFFFFFRRL
+FFBFFBBLLL
+BFFBBFFLLR
+FBFFFBFRLR
+FBFFFBBLRL
+BFBBBFBRLL
+BFBFBFFRLL
+BFBBFBFRLR
+FBBFBBFRLL
+FBBBBFBLRR
+FBBBFBFRLL
+BBFBFFFLLR
+FBBFBBBRRL
+FFBFBBFLRL
+BFBBBBFRRL
+BFFBBFFRLR
+BFBBBFBRRL
+FFBBFFBLRL
+FFBBBFBLRL
+FBBFBBBLLR
+FFBFFFBRLL
+BFFFFBBLRR
+BFBBBBBRRL
+BFFBBFBRRR
+BFFBBBFLLR
+BFBFBFFLLL
+FBBBBBBRRR
+BFBFBBFLLL
+BFBBBFFRRL
+BFBFBBFLLR
+FBFBBBBRLL
+FBFBFBBRLR
+BBFBBFFLLR
+BBFBBFBLRL
+BBFFBBFLLR
+BFBFFBBRLR
+FFBFFFBRLR
+FBBFBFFLLR
+FBFBFBFLLR
+FFBBBFBLLR
+FFBBBFBRLR
+BFFBFBFRLR
+BBFFFBFRLL
+FFFBFBBRLR
+FFBFFFFRLL
+BBFFFBBRRL
+FBFFFFBRRR
+BFBFBFFLRR
+FBBFBFFRLR
+BBFBBFBLLL
+FBFFBBBRRL
+FFBBBBBLLR
+BBFBBBFLLR
+FFBFBFFRRL
+FBFFFBBRLR
+FBFBBFBRLL
+BBFFFFFLLL
+FBBBBBFLRL
+BBFBBBFLRR
+FBBFBFFLLL
+FFBFFFBLLR
+BFFBBBFRRL
+FFFBBBBLRL
+FFBBFBFRLR
+FBFFFBFRRL
+FFBBFBBRLR
+FBBFBFBRLR
+FBBBFBBLRR
+FBFFFFBRLR
+BBFBBBFLLL
+FBFFFFBLLR
+FFFBBBFRLL
+FFFBBFFRLR
+BFBBBFBLLL
+BBFBBFFLRL
+BFBBFFBRLR
+FFBFBBBRLL
+BFFFFFFLLL
+BFBBBFFLRR
+BFBBFBFRRL
+BFFFFFFLRR
+BBFFBBFRRR
+FFBBFBBLLL
+BBFBBFBLRR
+FBBBBBFRRL
+FFFBBBBLLR
+FFFBBBBRLR
+BBFBFBBLLL
+BBFBFBBRLL
+FBFBBBFRLL
+BFBFBFBRLR
+BBFBFFFRRR
+FFBBBBFLLR
+BBFFBBBLRR
+FBBFFBBRRL
+FFFBBFFRLL
+FBFBBFFLRL
+BFFFFBBLLR
+BFFBFFBRRR
+BFBFFFBLLR
+FFBBFFBRRL
+FFFBBBFRLR
+BFFFFFBLRR
+BBFBBBFRRL
+BFBFFFBLRL
+FBBFBFBRLL
+BFFBBBFRRR
+FBBFFBBRRR
+FBFBFBBLLL
+FFBBBBFLLL
+FFBFFBFLLR
+BBFBBFFRRL
+BFFBBBBLRR
+FBFBFBFLRL
+FBBFFFFRLR
+BBFBFFBLRL
+FFFBBFBLLL
+FBBBFFFRLL
+FBBBFBBRLL
+FBBBFFBRRR
+FBBBFFBLLL
+BFBFFFFRRR
+BFBBBBBLRL
+FBFBBBBRLR
+FBFBFFFLRR
+BFBBBBBLLR
+FFBFBFBLLR
+BBFBBFFRRR
+FFBBBBBRLL
+BFFFFBBLRL
+FFBBBFBRRR
+FBFFFBFLLR
+BBFFBFBLLL
+FBBBBBBLLR
+BBFBFBBRRL
+BFFFFBFLLL
+BFBFFFBRLR
+FBBBBBFRLL
+BFFFFFBRRR
+BFBBFBFLRR
+FBFBBBBLRR
+FFBBFBFRLL
+FBBFBBBLRL
+BFBFBFFRLR
+FBFBFFBLLL
+BFBBFFFRLR
+FBFBFBBRRL
+FFBFFBFRRR
+BFFBFBBLLR
+BFBBFFBLRL
+FBBFFFFLLR
+BBFBFBFLRL
+BFBBFBBRRL
+BFBFBFFRRL
+FBFBBFBLRL
+BFBBFFBRLL
+FFBFFBFRLL
+FFBBFFFRLL
+BBFFBBBRRR
+FFBBBFFLLR
+BBFFBFBLLR
+FBFFBFFLLL
+FBBFFFFRLL
+BFBFFBFLLR
+BBFFBFBRRL
+BBFFFFBRRL
+FFBFBFBLRL
+FBFFFFBRRL
+BBFFFFFLRL
+BFFBFFBLLR
+FFBFFFBLRL
+BFBFBBFRRR
+FBBBFFBRRL
+FFBBFBBRRL
+BFFBFFFLRL
+BBFBFFFLRR
+FFFBBFFRRR
+BFFBFBFRRR
+FBFFFBFLLL
+FBFBBFFLRR
+BFBFBFBRLL
+FFBFFFFLRR
+BFFFFFBLLR
+FBFBBFFRRR
+BFBBBBBLLL
+FBFFFFBRLL
+BFBBBFFLLL
+FBBFFFBLRR
+FFBFFFFRRL
+BFFBBBBLLR
+FBFFBBFRRL
+FBBFBFBRRL
+FBFBFFFRLR
+BBFFFFFLLR
+BFBBFFFLRL
+FBBBFFBLLR
+BFBBBFBRLR
+FBBBBFBLLL
+FBBBFBBRRR
+BBFFBFFLRR
+BFFFBBBLLR
+FBBFFBFRLL
+BBFBFFBLLR
+BBFBFFFRLL
+FFFBBBFLLL
+FBFFFFBLLL
+FBFBBFBLRR
+FFBFBFBRRR
+FBFFBBBRLR
+BFFFFFBLRL
+BBFFBFBRRR
+BFFFFBFLRR
+FFBBBBFRLR
+FBFFBFBRRL
+FBFFFFFLRL
+FFBFFFBLRR
+BFFBBFBLLL
+FFBBFFBRRR
+FFBBFBFLRR
+BBFFBBFLLL
+FBBBBBBRLL
+FFBFFBFLRL
+BBFFBFFRLR
+BFFFBFBLRL
+BFBBBBBRLL
+BFBBFBFLLR
+BBFFFFBRLL
+FFFBBFFLLR
+BFFBBBBRLL
+FFBBFFFLLR
+BBFBFBBLRR
+FBFFFFFRLL
+BBFBBBFLRL
+BBFFBBBLLR
+BFFFBFBRRR
+FBFFFBBLLL
+FBFBFBBRLL
+FFBFBBFRLL
+BFBBBBBRLR
+BFBFFBBLRL
+FFBBFBBLRL
+BFBFFBFLRL
+FBBFBFFLRR
+BFBBFBFLRL
+FBBFBBFLLL
+FBFFFFBLRR
+FBFBBFFRRL
+FBFFBFFRLL
+BBFBBBBLLR
+BFBBFFBRRR
+BBFFFBBLLR
+FBFBFBBRRR
+FBBFBBFLRL
+BFFBBBBLRL
+FBFFBBBRLL
+FFBFFFFLLL
+BBFBFBFRRL
+BFBFBFBLRL
+BBFFFBFLLL
+FFFBBFFRRL
+FFBFFBBLLR
+BFBFFFFLRR
+FFBFBBFRLR
+FFBBFFBLLR
+BFBFBFBRRR
+FBBBFFFRLR
+FBFBFFFRRR
+FBFFBBBLRR
+FBFFFBBRRL
+BBFFFFFRRR
+FFBFBFFLLL
+FBBBBFFLRL
+FBFBBBBRRL
+FBFBBBBRRR
+BFBBFBBRLR
+FBFBFFBRLR
+FBFFFFFRRL
+FFBFBBBLLL
+FBFFBBBRRR
+FBBBFFBRLL
+BFFBFBFRRL
+FFFBBBFLLR
+FBFFBFBRLR
+FFBFBFBLLL
+FBBFBFFRRL
+FFBFFBBLRL
+BFFBFBBLRR
+BFFFFBFLLR
+FBFFBFBLRL
+BFBBFBBLLL
+FFBFBFBRLL
+BFFBBBFLLL
+FBBBBBBRLR
+FBBBBBBLLL
+FFBFBBBRLR
+BFFFBBFLRR
+BFBBBFBLLR
+FFFBFBFRRR
+BFFFBBBRRR
+FFBFFBBRLL
+BFFBFBFLRR
+FFBBBBFRLL
+BFBBFFFRRR
+FBBFBBFRRR
+BFFBBBBLLL
+FBFFBBFLRL
+BBFBFFBRLL
+BFFFBFFLRR
+BFBBBBFRLR
+BFFBFBFRLL
+BFBFFBBLRR
+BFFFBBBRLL
+FBFBBBFLLR
+BBFBFBFRLR
+FFFBBFBRRL
+BBFFBFFRRR
+BFBFFFFLLL
+FBBBFFFLLR
+FBFBBBBLLL
+BBFFFFFRLL
+FBFFBFFLLR
+BBFFBBBLLL
+FFBBFBBRRR
+BFBBBFBRRR
+BFBBBBFRRR
+FFFBFBBLLL
+FBBFFBFLRL
+BBFFBBBRRL
+FBFBBBFRRR
+BBFFFFBLRR
+BFBBFBBRRR
+BFFBFFBLRL
+BFFFFFFRRL
+BBFFFBBLLL
+FBFFBFFLRL
+FBFFFBFLRR
+FBFBFBFLLL
+BFFBBFBRRL
+FBBFFFBLLL
+BFBBBFBLRL
+FBFBBFBRLR
+FBBBFFFRRR
+FFBFFBBRRR
+FFBBFFBRLL
+FFBFBBFLRR
+BFFFBFBLLL
+BFFFFBBRLL
+FFBFBFFRLL
+BFFBFBFLLR
+FFBBBFFRRL
+BFFBFFFRLL
+BBFFBFBRLL
+FFBBFBFRRR
+BFBFBBFLRR
+FBFBFFBLRL
+FBBBBFBLLR
+FFFBBFFLRR
+FBFBFFBRRL
+BFFFFBBRRR
+FBBFBBFRLR
+BFFBBBFRLL
+BBFBBBBLLL
+FFBBFFFRLR
+BFBBBBBRRR
+FBFFBFBRRR
+FBFBBFBRRL
+FBFFFFFRRR
+BFFFFBFRRR
+BFFBBFBLRR
+FBBBFBFRRL
+BBFFFBBLRL
+BFBFFFBRRR
+FFBBFFFLRL
+FFBFBFBRLR
+BFBFBBBRLL
+FBBBFFBLRL
+BFBFFBBLLL
+FFBFFBFLRR
+FFFBFBFRRL
+FBBBBFFRRR
+BBFFFFBRLR
+FBFBFFBRLL
+BFBBFBFRLL
+BFFFFBBLLL
+FBFFBFBLRR
+BFFFFFFRLR
+FBFBFBBLLR
+FFBBBFFLRL
+FFBFBBBRRL
+FBBFBBBRLL
+BFFBFFFLLL
+FFBBFFBLRR
+FBBBFBBLLL
+FBBFBFFRLL
+FBFBBFBRRR
+BFFBBFBLRL
+BFBFBFFRRR
+FFBBBBBLLL
+FFBFBFFLRL
+FFBBBFBRLL
+FBBBFBFLLL
+FBBBBBFRRR
+BFBFFBBRLL
+FBBFFFBRLL
+FFBBBFFRLL
+FFBFFBBLRR
+FBFFBFBRLL
+BBFBFBFLLL
+BFFFBFBLRR
+FBBBBBFRLR
+FFBBBBFRRR
+BFFBFBBRLL
+FFFBBFFLRL
+BFBBFFBLLR
+BFFFFBBRRL
+FFBFFBBRRL
+FBFFBFFRRL
+FBBBBBBLRL
+BFFFBBBLLL
+BBFBFFBLRR
+FBBFFFFLRL
+FBBBBBFLRR
+BBFBBFBLLR
+BFFFFBFLRL
+FBBBFBBLLR
+BBFBFBFRRR
+FFBBFFFRRR
+BBFFFBFLRL
+BFBFFFBLLL
+FFBBBBBLRL
+BBFBFBFLLR
+BFBFBBBLRR
+BFBBFFFLLL
+BFFFFFBLLL
+FBFFBBBLLR
+BBFBBFFLLL
+BFBBFFFRLL
+BFBFFBFLLL
+BFFBBFFLRR
+FFBBBFFRLR
+BFFFBBFLLR
+BFFBFBBLRL
+FFFBBBBRRL
+BFFFBBFLLL
+FBFBBFFLLR
+FBFFBBFRRR
+FBFBFBFRLL
+BFBBFBBLRL
+FFBBBBBRLR
+FFBFBBBLRL
+FFBFBBBLRR
+BBFFBFFRLL
+BFFFFBBRLR
+FFBFFBFRRL
+FBFFFBFRRR
+FBBBBFBRRL
+FBFFBFBLLL
+BFBFFBFRRL
+FFBFFFFRLR
+BFBFBBBRRL
+FFBBBFBLRR
+BFFFFFBRLR
+BFFBBFBRLL
+BFFFBFFRRR
+FBFFBBFLLL
+BFFFBBBRLR
+FBFBFFBRRR
+FFFBBBBRLL
+FBFBFBFRLR
+BBFBBFBRLL
+FBBBFFFLLL
+BFFFFFBRRL
+FBBFFBFRRR
+FBFBBBBLRL
+BFBFFFFLLR
+BFFBFFBRLR
+FFBFBFBRRL
+BFBFBBBLLL
+BFFFBBFRLL
+BBFBFFBRRL
+BFBFBFFLLR
+FBFBFFFLRL
+BFBBBBFLLL
+FBBFFFBRRR
+FBBBBFFRLR
+BFFBFBBRLR
+FFBBFFFLRR
+FBBFBFFRRR
+FBFFFFBLRL
+FBBBFBBRRL
+FBBFFBFRRL
+FBBFFBBLRR
+FFFBBFBLRR
+FBFFFBBRLL
+BFBFFBFRLR
+FBBBBFFLLR
+BFBBFBBLLR
+FFBFFFBRRL
+BFBFFBBRRR
+BFBBBFFRLR
+FBBFBBBLLL
+BFFBFFBLRR
+FFFBBBBRRR
+FFFBBFBRLL
+BFFBFFBLLL
+BFFBFFBRLL
+BFFBBFFLLL
+FBBFBBBRRR
+BFFBFFFRRR
+BFFBBBBRRL
+BBFBBBFRLL
+BBFFFBBRLL
+BFFFBBFRRR
+FFBFBFFRLR
+BFBFFFFRLR
+BFBFFBFRLL
+BFBBFBBRLL
+FFFBBBBLRR