{-# LANGUAGE QuasiQuotes #-} import Advent.OCR import Test.Hspec import Text.Heredoc import qualified Data.Set as S main :: IO () main = hspec $ do describe "2016 Day 8" $ do it "should parse a sample result correctly" $ do asciiMapToLetters (S.singleton '#') y2016d08 `shouldBe` Just "ZJHRKCPLYJ" describe "2018 Day 10" $ do it "should parse a sample result correctly" $ do asciiMapToLetters (S.singleton '#') y2018d10 `shouldBe` Just "AHZLLCAL" describe "2019 Day 8" $ do it "should parse a sample result correctly" $ do asciiMapToLetters (S.singleton '#') y2019d08 `shouldBe` Just "UBUFP" describe "2019 Day 11" $ do it "should parse a sample result correctly, even mirrored" $ do asciiMapToLetters (S.singleton '#') y2019d11 `shouldBe` Just "JKZLZJBH" y2016d08 :: String y2016d08 = drop 1 [here| ####...##.#..#.###..#..#..##..###..#....#...#..## ...#....#.#..#.#..#.#.#..#..#.#..#.#....#...#...# ..#.....#.####.#..#.##...#....#..#.#.....#.#....# .#......#.#..#.###..#.#..#....###..#......#.....# #....#..#.#..#.#.#..#.#..#..#.#....#......#..#..# ####..##..#..#.#..#.#..#..##..#....####...#...##. |] y2018d10 :: String y2018d10 = drop 1 [here| ..##....#....#..######..#.......#........####.....##....#..... .#..#...#....#.......#..#.......#.......#....#...#..#...#..... #....#..#....#.......#..#.......#.......#.......#....#..#..... #....#..#....#......#...#.......#.......#.......#....#..#..... #....#..######.....#....#.......#.......#.......#....#..#..... ######..#....#....#.....#.......#.......#.......######..#..... #....#..#....#...#......#.......#.......#.......#....#..#..... #....#..#....#..#.......#.......#.......#.......#....#..#..... #....#..#....#..#.......#.......#.......#....#..#....#..#..... #....#..#....#..######..######..######...####...#....#..###### |] y2019d08 :: String y2019d08 = drop 1 [here| #..#.###..#..#.####.###. #..#.#..#.#..#.#....#..# #..#.###..#..#.###..#..# #..#.#..#.#..#.#....###. #..#.#..#.#..#.#....#... .##..###...##..#....#... |] y2019d11 :: String y2019d11 = drop 1 [here| .##..#..#.####.####.####..##..###..#..# #..#.#.#..#....#....#....#..#.#..#.#..# ...#.#.#...#...#.....#......#.#..#.#..# ...#.##.....#..#......#.....#.###..#### ...#.#.#.....#.#.......#....#.#..#.#..# ..##.#..#.####.#....####...##.###..#..# |]