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