{-# LANGUAGE QuasiQuotes #-}
import Advent.OCR
import Criterion.Main
import Data.Set (Set)
import Text.Heredoc
import qualified Data.Set as S
main :: IO ()
main = defaultMainWith defaultConfig [
bench "small font" $ nf parseLetters smallFont
, bench "large font" $ nf parseLetters bigFont
]
smallFont :: Set (Int, Int)
smallFont = parseAsciiMap (S.singleton '#') $ drop 1 [here|
####...##.#..#.###..#..#..##..###..#...
...#....#.#..#.#..#.#.#..#..#.#..#.#...
..#.....#.####.#..#.##...#....#..#.#...
.#......#.#..#.###..#.#..#....###..#...
#....#..#.#..#.#.#..#.#..#..#.#....#...
####..##..#..#.#..#.#..#..##..#....####
|]
bigFont :: Set (Int, Int)
bigFont = parseAsciiMap (S.singleton '#') $ drop 1 [here|
..##....#....#..######..#.......#........####.....##....#.....
.#..#...#....#.......#..#.......#.......#....#...#..#...#.....
#....#..#....#.......#..#.......#.......#.......#....#..#.....
#....#..#....#......#...#.......#.......#.......#....#..#.....
#....#..######.....#....#.......#.......#.......#....#..#.....
######..#....#....#.....#.......#.......#.......######..#.....
#....#..#....#...#......#.......#.......#.......#....#..#.....
#....#..#....#..#.......#.......#.......#.......#....#..#.....
#....#..#....#..#.......#.......#.......#....#..#....#..#.....
#....#..#....#..######..######..######...####...#....#..######
|]