Done day 5
authorNeil Smith <neil.git@njae.me.uk>
Fri, 11 Dec 2020 09:45:15 +0000 (09:45 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Fri, 11 Dec 2020 09:45:15 +0000 (09:45 +0000)
advent05/package.yaml [new file with mode: 0644]
advent05/src/advent05.hs [new file with mode: 0644]
data/advent05.txt [new file with mode: 0644]

diff --git a/advent05/package.yaml b/advent05/package.yaml
new file mode 100644 (file)
index 0000000..c0b12aa
--- /dev/null
@@ -0,0 +1,61 @@
+# This YAML file describes your package. Stack will automatically generate a
+# Cabal file when you run `stack build`. See the hpack website for help with
+# this file: <https://github.com/sol/hpack>.
+
+name: advent05
+synopsis: Advent of Code
+version: '0.0.1'
+
+default-extensions:
+- AllowAmbiguousTypes
+- ApplicativeDo
+- BangPatterns
+- BlockArguments
+- DataKinds
+- DeriveFoldable
+- DeriveFunctor
+- DeriveGeneric
+- DeriveTraversable
+- EmptyCase
+- FlexibleContexts
+- FlexibleInstances
+- FunctionalDependencies
+- GADTs
+- GeneralizedNewtypeDeriving
+- ImplicitParams
+- KindSignatures
+- LambdaCase
+- MonadComprehensions
+- MonoLocalBinds
+- MultiParamTypeClasses
+- MultiWayIf
+- NamedFieldPuns
+- NegativeLiterals
+- NumDecimals
+# - OverloadedLists
+# - OverloadedStrings
+- PartialTypeSignatures
+- PatternGuards
+- PatternSynonyms
+- PolyKinds
+- RankNTypes
+- RecordWildCards
+- ScopedTypeVariables
+- TemplateHaskell
+- TransformListComp
+- TupleSections
+- TypeApplications
+- TypeFamilies
+- TypeInType
+- TypeOperators
+- ViewPatterns
+
+executables:
+  advent05:
+    main: advent05.hs
+    source-dirs: src
+    dependencies:
+    - base >= 2 && < 6
+    - text
+    - megaparsec
+    - containers
\ No newline at end of file
diff --git a/advent05/src/advent05.hs b/advent05/src/advent05.hs
new file mode 100644 (file)
index 0000000..06d0ecc
--- /dev/null
@@ -0,0 +1,26 @@
+-- import Debug.Trace
+
+import Numeric
+import qualified Data.Set as S
+
+main :: IO ()
+main = 
+  do  text <- readFile "data/advent05.txt"
+      let passes = lines text
+      print $ part1 passes
+      print $ part2 passes
+
+part1 = maximum . map convert
+
+part2 passes = S.elemAt 0 $ expecteds `S.difference` knowns
+  where ns = map convert passes
+        highest = maximum ns
+        lowest  = minimum ns
+        knowns = S.fromList ns
+        expecteds = S.fromList [lowest..highest]
+
+directionToInt :: Char -> Int
+directionToInt dir = if dir `elem` "BR" then 1 else 0
+
+convert :: String -> Int
+convert = fst . head . readInt 2 (`elem` "FBLR") directionToInt
diff --git a/data/advent05.txt b/data/advent05.txt
new file mode 100644 (file)
index 0000000..acff32c
--- /dev/null
@@ -0,0 +1,874 @@
+FBFBFFFLLL
+FFBBBBFLRR
+BFBFBBBLLL
+FFBBBBBLLL
+BFFBBBBRLL
+BBBFFBFRLL
+FFBBFFFRRR
+FFBFFBBLRL
+FBFFBFBRRR
+FBFFBFBRLL
+BFFBFFFRLR
+FFFBBFFRRR
+BFBFBBFLLL
+FBFBBFFRRL
+BFFBFBFLRL
+FBFFFBFRRL
+FBFBFFBRRR
+FBFBFFBRLL
+BFBFFFBLLL
+BFBFFBBLRL
+FBFFFFBRRL
+BFFFBFFRRL
+FBFBFFFRLR
+BFFFFBBLLR
+FFBFFFFRLR
+BBFBBFFLLL
+FFBFFBFRRR
+FBFBFBBRRR
+BBBFFFFLRR
+FFFBFFBRRR
+BFFBFBFLRR
+BFFFBBBRLL
+FFBFBBBRLR
+FBFFFFBLLR
+FBBFBFFLRL
+FBFFFFFRLL
+FBBBBFBRLL
+BFBBBBFLLL
+FBBBFBBRRR
+BFFFBFBLLL
+FBBBBBFLRL
+BFBBBFFLRR
+BFBBFBBLRR
+FFBBBFFLRR
+FFBBBBFRLR
+BFFFBFFLLR
+FBBFFFBRRL
+FBBBFBBLRR
+FFBBFBFRRL
+FFFBFBBLRR
+FBFBBBBRLR
+FBFFBFBLLL
+FBBFFFFRLL
+BBBFFFBLRL
+FBBFBBBLLL
+FFBBFBBLLR
+FBFFFBBRLR
+BBFBBFFRRL
+FFFBBFFRLL
+FBFFBBBLRL
+BFFBFFFLRL
+FFFFBBFRRR
+FBBFBBFLLR
+BFBFBFBRRL
+BBFBFBBRRR
+BBBFFFBLLL
+BFBFFBFRLL
+FFBBFFBRRR
+BFBBFFFRRL
+BFBBBFBRRL
+BFBBBBBRRR
+BBFBFBFRLL
+BBFFBFFLRL
+BFFBBFFLLL
+BFBFBFFLLL
+FBBBFFFRLR
+BFFFBBBLRL
+FBFBFFFLRR
+FBBBFBBLRL
+FFBBFBBRLR
+FBBFFFFLRL
+FFFBFBBLLL
+FBFBFFBRRL
+BBFFBBFRRR
+BFFFFBFRLR
+FBFBFFBLRL
+FFBFFBBLLL
+FBFBBFBRLR
+BFFBBFBRLR
+FFBFBFBLLL
+FFBBFFBRLR
+FBBBBBBLLL
+FFFBBBBRRL
+BFBBFBBRLL
+BBFFFBFLLR
+FFBBBBFRRR
+BFBFFFBRLL
+BFBFFBFLRR
+FFFFBBBLLR
+FBFFBBFRLL
+FFFFBBBRRL
+FFBFFBBLLR
+FBFFFBBLLL
+FFBBBBFRLL
+BBFFBFFLLL
+BFBBBBBRRL
+BFFBFBFLLL
+FFBFBBFLLR
+FFBFBBBLRL
+BFFBFFBLRL
+FBBBFFFRRR
+FBBFFBBRRL
+FBBFFBBLLR
+BBFBBBFLRR
+BBFFFBFRRL
+FBFBFBFRRL
+FFBFBBFRRR
+FBFFBBBLLR
+BBFBFFBRLL
+BFBBBFBLRL
+FFBBFFFLRR
+BFFFBFFLRL
+BFFBBBFLLL
+FBBFFFBLRL
+BBBFFBFLLL
+BFBBFBBRLR
+FBBBBBFRLL
+FBBBBFBLRR
+FFBFBBFRLR
+BBFFFFBLLL
+FBFBBBFRLR
+FBBFBBBLRL
+BBFFBBBRLL
+FFBFBFFLLR
+FFFBBFBRLL
+FFBBBFFRLL
+BFBBFFFLRR
+FBBBFBFRLL
+BBFBFBFLRR
+BFBBBFFRLL
+FFBFFFFRRR
+BFBBBBBLLR
+FBBBBBBRRR
+BBFBBFFLRR
+BFBFFBBLRR
+BFFBFBBLRR
+BFFBBFFRLR
+FBBBFFBRRR
+FFFFBBBRLR
+FBFFFFFLLL
+BBFFFBFLRR
+BFFFFBFLRL
+BFFBFFBLLL
+BFFBBFBRRL
+FFFBBFFLLR
+FBFFFFBLRL
+FBFFFBFLLR
+FFBBFBBRLL
+FFBFFBBRLR
+FFBFFFBRRL
+FFFBFBFLRR
+BBFFBFFRRR
+BBFFFFFLLL
+FBBFBFBRLR
+BBFBBFBLLR
+BBFBBBFRRL
+BFBFFBBLLR
+FBBFFFFLLR
+FFBFBFFRRL
+FFFBFFBRRL
+FBFBFFBRLR
+BFBBFBFRLL
+BBFBBBBLLR
+BFBBBFFLLL
+BBFBBBBRRL
+BFBFBFBRLR
+BFFFBFBRRL
+BFFBBBFRRL
+BFFFBFBRLL
+FBFBFBFLRR
+FFBFFBFLRR
+BBFBBBBRLL
+BFBBBFFLRL
+FBBBBFBLLL
+BBFBBBFLRL
+BFBBFBFLLL
+FBBBBBBLRL
+FFBFFFBLLL
+FFBBBBBRRL
+FBBFFFBLLL
+FBBBFFBLRR
+BBBFFBFLLR
+FFFFBBBLLL
+FBBBBBBRLR
+FFBFFBBRRR
+BFFFBFFRLL
+BBBFFFBRRR
+FBBFBFFLLL
+FBFBFBBRLR
+FBFFFFFLRL
+FFBBBBBRLR
+FBBBFFBRRL
+BFBBBBFRRL
+FBFBBFBLLR
+BBFFBBBLLL
+BBBFFBFRLR
+FFBBFFFLLL
+FFBFFBBRRL
+FBBBBFFLLL
+FBBBBBFRRR
+FBFFBBFLLR
+FFFBFFFLRL
+FFFBFBBRRL
+BFFFBFFLLL
+FBBBFBBLLL
+FFBFBBBLLL
+BFFFFFBLRL
+FBBBFBFLRR
+BBFFBBFLLR
+FBFFBBBRLR
+BFBFFFFLLR
+BFBBBFBLLL
+BBFBFBBRLR
+FFFBBFBLLR
+BFFBFBBRRL
+BBFFBBFLRR
+BFFBBBFLRR
+FBFBBBBRRL
+BFBFBFFRRL
+BBFBBFFRLR
+BBFBBBBRLR
+FFBBFFFLLR
+BBFBFBBLRR
+FBFBFBFLLL
+BFFFFBBRRR
+BFBBBBFRRR
+BFFFFFFLRL
+BBBFFBFLRR
+FFFBBBBRLR
+FBBFFFBRLL
+BBFFBBFLRL
+FFBBBBBRRR
+BBFFBFFRLL
+BFFFFFBRRR
+FBBFBFBRRR
+BFFFFBFRRR
+FBBFBBBRLL
+FFFBFBBRLR
+FBBBBFFRLR
+FBBFFFBLLR
+FFBBFFBLLR
+BFBFFFBLRR
+FFBFBBBRRR
+BFBFBFBLRR
+BFFBBFBLRR
+FBFFBFFRLL
+BFFBBBFRLR
+FBFFFBFRLR
+FFFBFBFRLL
+FBBFBBFLLL
+BFBBFFFLRL
+FBBFBFFLRR
+BBFFFBFRRR
+FBBFBFBLRL
+FBBBFBFLLR
+FBFBBBBLLR
+BBBFFFFLLR
+BFBBFBFRRR
+FFBFBFFRLR
+FFBBFBBLLL
+BFFFFFBLLR
+FBBBFBFLLL
+FBBFBBFRLR
+BBFFFFFRLL
+BFBFBFFLRR
+FBFBBFFLRR
+BBFBBFBRLR
+BFFFBBFRLR
+FBFFBBFRRR
+FBFFFBFLLL
+FBBFBBBRRR
+BBFFFBBLRL
+FFBFFBFLLR
+BBFFBFFLLR
+BBBFFBFRRL
+FBFBBFBRRR
+FBBBBBBRLL
+FBFFFBBLRR
+FFFBFFFLLL
+BBFBBFFRLL
+BBFFFBFRLL
+BBFFFBFLLL
+FFBBFBBRRL
+FFFFBBFLRL
+BFBBBBFLRL
+BBFBBFFLLR
+BBFFBFBRRR
+FBFBBFFRLL
+FBFBBFBLLL
+BFBBBFFRRR
+FFBBBFBRLL
+FFBFBBBRRL
+BFBBFBFRLR
+BBFBFBFRLR
+FBFBBBFLLR
+FBFBBBFLRL
+BBFFBBFRLR
+FFBBFFFLRL
+FFFFBBFLRR
+FFFBBFFLRL
+FFFBFBFRRR
+FBBFFBBLRR
+BBFBBFBLRR
+BFFBBBFLRL
+FBFFBFFRLR
+FBFFFBFRRR
+BFFBBFFRRL
+BFFFBBFRLL
+BFBFBBBLRR
+FFBFFFBLRL
+FBFBBFBRLL
+FBBBBFBLLR
+FFBFBFBLRL
+FBFBBBFLRR
+FFBBBBBLRR
+FFBFFFBLLR
+BBFFFBBRLL
+BBFFBBFLLL
+FFFBBFBLRL
+FBBBFBFRRR
+BBFBBBBRRR
+FBBBFFBLLR
+FBBBBFBLRL
+FBFBFFFRRL
+FBBFFFFLRR
+BFFFBFBLRL
+BFFBFFBRLL
+BFBFFFBLRL
+FBFBFBFRLL
+BBFBFBFLLL
+FBBBBBFRRL
+BFFBFFFRLL
+FBBBFBBRRL
+BFBBFFBRLR
+FFBFBFFLLL
+FFBBBBBLLR
+FFBFBFBRRL
+FFFBFFBLRL
+BBFFFBFLRL
+FBFBFBBRRL
+BFFBFFBRRL
+BBFBFBBLRL
+BBFBFBFRRR
+FBFFBBFRLR
+FBFBBFBLRR
+FBBFFFFLLL
+FFFBFFFLRR
+FFFBBBBRRR
+BBFFFBBRLR
+FFBFFFFRLL
+FBFFBFBRLR
+FBFBFBBRLL
+FBBBBFFLRR
+FBBFBFBRLL
+FBBBFBFLRL
+BBFBBBFLLR
+FFBFBBBLLR
+BFFBBBFRRR
+FFBBFBFLLL
+BFBBBFBRLR
+FFBFBBBRLL
+FFBFBFFLRR
+FBFBFBBLLL
+BFBBBBFLLR
+FFBBFBFRRR
+FBFBFBBLRR
+BFFFBFBLLR
+BFFBFBFRRL
+FFFBBBFRLR
+FFFBBFFRRL
+FFFBBBFLRL
+FFFFBBFLLL
+BBBFFFBLRR
+FBFFFFBRRR
+FFFFBBFRRL
+FBFBBFFRLR
+BFFBBBBLRL
+FBFFFFBLRR
+FFFBBFBLRR
+FFFFBBFRLL
+FFFBBFBRRR
+FBFFBBBRRL
+BBFFFFFLRL
+BBFFBBFRRL
+BFFFBBBLLL
+FBBBBBBLRR
+FBBBFFFRLL
+FBFFBFFLRR
+FFBFBBFLLL
+FFBBBFBRRR
+BFFFBFBRRR
+BBFFBFBRRL
+BFFFBBBRLR
+FBFFFBBRRR
+BBFBBFBRLL
+BBFFBBBRRR
+FBFFBFBLLR
+FFBFFBBLRR
+FBBFBBFLRL
+FFBFFBFLLL
+FFFBFFFRRL
+BBBFFFBRLL
+BFBFBBBRRL
+FFBFBFBLLR
+FFFBBBFRLL
+BFFFBBFRRR
+BFBBFFFRLR
+FBBFFBBRLL
+BFBBBBBLRL
+BBFBFBFLRL
+BFBBBFBLLR
+FBBFFBBRRR
+BFFFFBBLRR
+FBBFBBBLLR
+BFBFBFBRLL
+BFBFBFBRRR
+BFFFFBFRRL
+FBFBBFFLLR
+FBBFBBFRRL
+BBFBFBBLLL
+BFFBFFBRRR
+FBBFBFBLRR
+BFFBBFBLLR
+BFBFBBBRLL
+FBFFBBBLRR
+BBFFBFBLRR
+BBFFFFFRLR
+BBBFFBBLLR
+BBFBBFFRRR
+BBFFFBBLLR
+BFFBFFBRLR
+FBFFBFFLLL
+BFBBFFFRLL
+FFFBFBBRLL
+FBFBFBBLRL
+FFFBBBFRRL
+BFBFBBFRLR
+BBFFFFFRRL
+FBBFBFFLLR
+BFFFBBFLRR
+BBFBBFBRRR
+BBFFBBBLRR
+FBFBBFFRRR
+BFFFBFFRLR
+FFBBFBFLLR
+FBFBFFBLRR
+FBFFBFBLRL
+FFBFBFBRLR
+FBBFBBBRRL
+FFBBFFFRLR
+FFFBFBBRRR
+FBBFBFFRLL
+FFBFBFFRLL
+FFBFBBBLRR
+FFBBBFFLLR
+BFBFFFFLRR
+FFBBBFBLRL
+BBFFFBBRRL
+FFBFFBFRRL
+FFBBBFBRLR
+BFBFFBFLLL
+BBFBBBFRLR
+BFBFFBFRLR
+FFBBBBBLRL
+FFFBBFFLLL
+BBFFBFFRRL
+BFBBFBBLRL
+BFFBFFFLRR
+BBBFFFFLRL
+BFBFFBBRLL
+FBBBFFBLLL
+FBBFFBBLLL
+BBFFFFFLLR
+FFBBFFBLRR
+BFBBFBFLRR
+BBFFFFFLRR
+BFFBFBFLLR
+FBFBBBBLLL
+FBBBFFBRLR
+FBBBFBBLLR
+BFBFBBBLRL
+BFFFBFBRLR
+FBBFFBFRRR
+BFFFBBFLLL
+FFBFFFBRLR
+FFBFFFBRRR
+FFFBFFBRLR
+BBFBFFFRLL
+BFBFFBFRRL
+BFBFBBFRRL
+FBBBBBFLRR
+BFFBBBBLRR
+FFBFFBFLRL
+BFBFBBFLRL
+BFFFFFFLLR
+FBFFBBBRRR
+BFBFFBBRLR
+FBBFBFFRLR
+BFFBBBFLLR
+BFBFFFBLLR
+FFBFFFFRRL
+FFFBBBBLRR
+FFFBBFBLLL
+BFFBFBBLLR
+FBFFBFBLRR
+FFFBBBBRLL
+BBBFFFBRLR
+BFBBFFFLLL
+BFBBBFFLLR
+BFBFBFFRRR
+BFFFFBFLLR
+FBBBBFBRLR
+BFFBBBBRRL
+FBFBFBFRLR
+FFBFBBFRRL
+BFFFBBFLLR
+FFBBBFBLLL
+FFBFBBFLRR
+BFFFFBFLLL
+FBBBBBFRLR
+BBFBBBFLLL
+FBFBBFBRRL
+FFBBFBFRLL
+BFBFFFFRRR
+FBFFFFFRLR
+FFBBFFBLRL
+BBFBBBBLRL
+FBBFFBFLRL
+BFFFBFBLRR
+FBFFFBBRRL
+BBFBFFBRLR
+FFBBFBBLRL
+FBBBBFFLRL
+BFFFFBBRLR
+FBFFBBFLRR
+FFBFBFFRRR
+FFBBFBFLRR
+BFFBFFFRRL
+FBBFFBFRLR
+FBBFBFBLLR
+BFBFFBBRRL
+FBFFFBFLRR
+FBFBBFBLRL
+BFFFFBFRLL
+BFBFBBBRRR
+FFFBFFFLLR
+FBBBFFFLRR
+FFBFBBFLRL
+BFFFFBBLRL
+BBFFBFFLRR
+FBBFFFFRRR
+FFFBFBBLRL
+BFFFBFFLRR
+BFBBFBFLRL
+FBFFBFBRRL
+BFBFFFFLRL
+FBBFFFBRRR
+FFBBFFBRLL
+FFBFFBFRLL
+BBFBFBBLLR
+BFBFBFFLLR
+BFFFBBBRRL
+BBFBFFFLLR
+FBFBFFFLRL
+BFFBBFFRRR
+BFFBFBBRLR
+BBBFFBFLRL
+BBFBFFBLRR
+BBFBFFFLLL
+FFBBBBFLLL
+BFBBFBBRRR
+BBFFFFBRRL
+FFBFFBBRLL
+FBBFFFBLRR
+FFFFBBBLRL
+FFBFBFFLRL
+FBBBBFBRRR
+BFFBBFBRRR
+BFFFBBBLLR
+BFFBFBFRLR
+BFFBBBFRLL
+FFFFBBBLRR
+BFBFBBBRLR
+BFBFBFFRLL
+FFBBFFFRRL
+FBBFFBFRRL
+BBFFBBFRLL
+FBBFFBBRLR
+BFBBFFFRRR
+BFBBFFBRRL
+FBFFFBBRLL
+FBBBBBBRRL
+FBFFFFBRLR
+BFBBFFBLLR
+BBFBFFBRRL
+BFFBBFFLLR
+BFFFFBBRLL
+BBFFBFBLLL
+FBBFFFFRLR
+FBBFFBFLRR
+BFFBBFFRLL
+BFBBFBBLLL
+FBFBFBFLLR
+BFFFBBBLRR
+BFBFBFBLRL
+BBBFFFFRRR
+FFBFBFBRLL
+FBFFBFFRRR
+FFBFFFBRLL
+FBBFBBFRRR
+FFFBBBFRRR
+FBFFBFFRRL
+FFBBFFBRRL
+FBBBFFFLLR
+BBFBBFBRRL
+BBFBFFFRRL
+FFFBBBBLRL
+FBBBFFFRRL
+BFBBFFBLRL
+FBFFFFFLRR
+FBFFBBFLRL
+BBFFBBBRRL
+BBBFFBBLLL
+FBFFBBBRLL
+BBBFFFFRLL
+FFBBBFFRLR
+BBFFFFBRLL
+FBFFFBBLLR
+BFFBFBFRRR
+FBFFBBBLLL
+FBFBBBFRLL
+BFFFFFBLRR
+BFFBBFFLRL
+FFBBFBBRRR
+FBFFBFFLLR
+BFFBBBBLLR
+BFFFFFFRRR
+BBFBBBFRRR
+BBFFFFBLRR
+BFFBBFBLLL
+FFBBFFBLLL
+BBBFFFFRRL
+FBBFBBFLRR
+FBBFFFBRLR
+FBFBBFFLRL
+FBFBFFFRLL
+FBBFFBBLRL
+BFFBBBBRRR
+FFFFBBFLLR
+BBFFBBBRLR
+BFFFFFFRLL
+FBBBBBBLLR
+BBFFFBBLRR
+BFFFFFBLLL
+FBBBBFFLLR
+BBFBFFFRRR
+FBFBFFBLLL
+FBFFFFBLLL
+FFBFFBFRLR
+BFBFFBBLLL
+BFFBBFFLRR
+FBBBBBFLLL
+FFBBBFBLRR
+BFFFFFBRLR
+BBFBFBBRRL
+BBFFFFBRRR
+FFFBFBFLRL
+FBFBBBBLRR
+BFBFFBBRRR
+FFBFFFFLLL
+BFBFFBFLLR
+FBBFBBBRLR
+FFFBFFFRLL
+FFFBFBFRLR
+FFBBBFFLRL
+BFFBBBBRLR
+FBFFBBFLLL
+FFFBBFFLRR
+BBFBFBFLLR
+FFBBFBFLRL
+BBFFBBBLRL
+BBFFFFBLLR
+FFBFFFBLRR
+BFBBFBFLLR
+BFBBBBBLLL
+BBFBBFBLRL
+BBFBFFFRLR
+BFFBFFFLLL
+BBFBFFBRRR
+FBFBBBFRRR
+FBBBBFFRLL
+BFFBBFBLRL
+BBFBFFBLRL
+BFBBFFBRRR
+BBBFFFFLLL
+BFBFFFFRRL
+FBFFFFFRRR
+BFFFFBBLLL
+BFBBFFBRLL
+FFBBBBBRLL
+BFFBFBBRRR
+BFBBFFFLLR
+BFBBFBBLLR
+FBBBBFBRRL
+FBFBFBFLRL
+BFBBBBFRLL
+FFFBFFBLLL
+BFFBFFFLLR
+BFBBBFBRLL
+FFFBBFBRRL
+FFBFBFBRRR
+FFFBFBBLLR
+BFBBBFBRRR
+FBBFBBFRLL
+BFBBFBBRRL
+BFBBBBFRLR
+FFFBBBBLLL
+BBFFFBBLLL
+FFBBBBFLRL
+BFBBBBBRLL
+FBBFFBFRLL
+FBFFFBBLRL
+FBBFBFFRRR
+FFFBFBFLLR
+FFBBBFFRRL
+FBBBFBBRLR
+BBFBFFFLRR
+FBFBBFFLLL
+BBFFBFFRLR
+BBFBFFFLRL
+FBBBBFFRRR
+FFBBBFBLLR
+BBBFFFBRRL
+FBFBFFFLLR
+BBFBFFBLLL
+FFFBBFBRLR
+FBFFFBFLRL
+BFFBFBBLLL
+BBFBFBBRLL
+FBFFBBFRRL
+BFBFFFFRLL
+BBBFFBBLRL
+FFFBFFBLLR
+BFFBFBBRLL
+FFBFBFBLRR
+BBFBFBFRRL
+FBBBFBFRRL
+FFFBBBBLLR
+FBBBFBBRLL
+BFBFBBFLRR
+BFFFFFFLLL
+FFFBFFFRLR
+BFBBBFFRLR
+BFFFFFBRLL
+FBFFFFFLLR
+FBBBFFBRLL
+FBBFFBFLLR
+BFFBFFBLRR
+FBFBBBFLLL
+FBFFFFFRRL
+BBFFFFBLRL
+BFBFFFFRLR
+FBBFFFFRRL
+BFFBBBBLLL
+FFFFBBBRRR
+FFBBFBBLRR
+FBBFFBFLLL
+BFFFFBBRRL
+FFBBBBFRRL
+BFFFFBFLRR
+BFFFBBFRRL
+BFBBBFFRRL
+BFFFBFFRRR
+FBFBBBBRRR
+FBFFBFFLRL
+FBBBBBFLLR
+BFBFBBFLLR
+BBBFFBFRRR
+BFBBFFBLRR
+FBBFBFFRRL
+BBFBBFBLLL
+BFBBFFBLLL
+FFBBBFBRRL
+BFBFBFBLLL
+BFFBFBFRLL
+BBFFBBBLLR
+FFFBFBFLLL
+FFBBBBFLLR
+FFFBFBFRRL
+BFBFFFBRRR
+FFBFBBFRLL
+FFFBBBFLLR
+FBBFBFBLLL
+BBFFFFFRRR
+FFFBFFFRRR
+BFFFBBBRRR
+FFBFFFFLRL
+FFFBFFBLRR
+FFBBFBFRLR
+FBBFBBBLRR
+BFFBBFBRLL
+BBFFFBBRRR
+FFFFBBFRLR
+FBBFBFBRRL
+FBFBFFBLLR
+FBFBFBBLLR
+BFBFBBFRRR
+BBFFBFBLLR
+FFBBBFFLLL
+BBFFBFBRLL
+BFFFBBFLRL
+BFBFBFFRLR
+BFBFFFFLLL
+FFBBBFFRRR
+BBFBFFBLLR
+BFBBBBFLRR
+BFFBFBBLRL
+FFBBFFFRLL
+FFBFFFFLLR
+BFBFFFBRRL
+BFBFBFFLRL
+BFFFFFFLRR
+BBFBBFFLRL
+FBFFFFBRLL
+BBFFBFBRLR
+FBBBFFFLLL
+FFFBBBFLLL
+BFFBFFFRRR
+BBFBBBBLLL
+BBFFFBFRLR
+FBFBFFFRRR
+FFFBBFFRLR
+BFFBFFBLLR
+BBFFBFBLRL
+BFBFBFBLLR
+FBFFFBFRLL
+BBFBBBFRLL
+BFBBBBBRLR
+BFBFFFBRLR
+FFFBBBFLRR
+BFBFFBFLRL
+BBFBBBBLRR
+BFBFBBFRLL
+FFFFBBBRLL
+BFBBBBBLRR
+FBFBBBBRLL
+BFBBFBFRRL
+BBFFFFBRLR
+FBBBFBFRLR
+BFBFFBFRRR
+FBFBBBBLRL
+BFBFBBBLLR
+FFBFFFFLRR
+FBFBBBFRRL
+FBFBFBFRRR
+BFFFFFFRLR
+FBBBBFFRRL
+BFFFFFBRRL
+BBBFFFFRLR
+FBBBFFBLRL
+FBBBFFFLRL
+FFFBFFBRLL
+BFFFFFFRRL
+BBBFFFBLLR