diff --git a/2020/day03/day03.hs b/2020/day03/day03.hs new file mode 100644 index 0000000..38ba0f9 --- /dev/null +++ b/2020/day03/day03.hs @@ -0,0 +1,23 @@ +main :: IO () +main = do + input <- map (concat . repeat) . lines <$> readFile "input" + print $ day3 input ((3,1),0) + let slopes = [((1,1),0),((3,1),0),((5,1),0),((7,1),0),((1,2),0)] + print $ product $ map (day3 input) slopes + +type Slope = ((Int, Int), Int) + +day3 :: [String] -> Slope -> Int +day3 input slope = a + where + (_, a) = day3rec (input, 0) slope + +day3rec :: ([String], Int) -> Slope -> ([String], Int) +day3rec (t:ts, acc) ((x, y), l) = + day3rec + ( drop y (t : ts) + , if t !! (l * x) == '.' + then acc + else succ acc) + ((x, y), succ l) +day3rec x _ = x diff --git a/2020/day03/input b/2020/day03/input new file mode 100644 index 0000000..ffaf42b --- /dev/null +++ b/2020/day03/input @@ -0,0 +1,323 @@ +.#..#....##...#....#.....#.#... +........##....#..#..##....#.#.. +......##......##.........#....# +...#.....#....##.......#.#....# +.#.###.#.#..#.....##..#....#.#. +##.........##.....####......#.. +#...#..........#.##............ +####............#..........#.#. +......#......#....##...#..##... +#..#....#...#......#......####. +......#..........#.........#.#. +...##.......#..#.#..#..#....#.. +..####....#.#...............##. +...###........#.....#.......... +#..#.##...##.#..##...##...#.... +.###........#.##..#.#.....#.... +.#.......#..##.......#......#.. +.##...........#..............#. +...#..#.....#...........#...#.. +.....#..............#..#....... +.......#....#.....##........... +.#...#.............#.....##.... +....#.#....#...#...#..#..##.#.. +...#..##..##...#..##........#.# +.###..#...#.#.#.#..#...#....... +.....##.#.##.#.#.......#..#.... +.##.#...#.....#...#....#.....#. +.....#......###....###..##.#..# +.....#..##....#..#.#..#.#.#.... +#....#.....#.#.......#...#....# +...#........#............#..#.. +#.#...#...#..##.........#...##. +.#..#.#...........#....#...#... +##..#.#..........#.....###...#. +#..#........#.......#.#..#....# +..#...##....#..#....#....#..... +...#.....##....#...#..#....##.# +.....#......#...#.#.#.#.#...... +###.....#..#.#..........##.#... +...............#..#...#.#....#. +#.....#.....###....#..........# +........#...#.#.......#..#...#. +..#.##...#...#...#.........#... +#..........#..#.#...........##. +##.......#.#.#...#.....#....... +...#.#.#.....#......#....##..#. +##.#.....#....#...#.......#.... +.#......##..#.##.#....##..##.#. +..#..#......#....#...#..#.#.... +...#..###...#.......#..#....... +...#....#..#....#........##.... +#...#...#....#.#.........###.#. +.#.........##..##...#.......... +...##.....##.........#..#..#... +###....#......#.##..#...#...... +.###....#.#.......#..#....#...# +....####........##....#.#....## +..#.....#......##...#..#..#.... +...#....#...#......#.###.#.#.#. +......#.......#..#...#...#..... +.#...#...#..#.#..........#..... +........#..#.........#.#....##. +.#....#.......#........#.##.#.. +...#...#..#.....#......#...##.. +.#.................#........### +.......#.#..#.#...#............ +.#.......#..##...#.###....#.##. +#........#.###.#..#........##.. +..##.#....##......##........#.. +...............#............... +#.......#......##..#.#....#.#.# +..#.....#......#.#.#...#...##.. +..........#........#.....##...# +#..........#.#..#..##..#......# +.......#..###..##.#..##........ +#.#..##..###..#.###.....#.#..## +..#.#........#...###...##...... +.......##.....##...#.##........ +.#.#...###..#..#......##....##. +#...#.#.....##..#..#..#.#....#. +........#......#....#..#....... +...#.#.#.#........###....#...#. +.#......#...#.......#......#... +#...#.##.#..#.#..#.........#... +....#......##......#........#.# +..##.#.....#..#......#..#...... +#.##...##...#................#. +.....#..#....#....#####........ +....#..#..#.#...#.#............ +.........#.#....#..#....##...#. +#....#..........#......#......# +.......#..............#......#. +.#..#...#..#.#.....#.#.#.##.#.. +.##........#......#...#.##..... +...#.##..#........#...........# +..#...#..#........#.......#.#.. +#.....#..#.#..#..#...#...#..#.. +..................#.#.....#...# +........#...##.#..#.........#.. +.#...##.#...........##.##...#.. +#......#.........#...#...#...#. +..........#.............#...#.. +#............##.#..#...#.#...#. +..#.##...##....##.#...####...#. +#.##..#......#.......#.#...##.. +.....#...#..#......#####.##..#. +#...#.#.##..#..##.....#......#. +.#..#......#.#.#...#.#...##.#.. +.#.....#..##........#.....#...# +.................#..........#.. +##.#.#......#.####..#.....#.... +.#...##.####..#...#............ +..#...............###....#....# +#...#..###..#.#.##...........## +...................#..#.....#.. +...#.##.#...#.....#......#.##.. +#.#...#.........##.#........#.# +.##.......#..#..#.....##....#.. +......##.#.#..#...#.#..##.....# +..#..###...#...#......#.#...... +..##....#.#...#....#....#..#..# +#..##....#........#..##..#..#.# +.......#............#....##..#. +.#.#..#.........#.#.##......#.. +#.#....#..##..#..###.#.....##.. +.###.#......#.....#####...#.... +#...#.#...##......#...#.#...##. +#..#.........#..#............#. +...##......##.......##....##... +...#...##....###..###.#...#.... +#.#....#...#.#...##..#........# +.#..#..................#....#.. +#......#..#...##..##...#..##..# +...#..#.....#...#........#.#.#. +#...#..##....#.....#........#.. +.##..#....#.....#.#............ +##..##.#.#.##.#.#..#.#..#....#. +#.......#...............#.....# +..#.....#..##.....#...##.##.... +...#..#...#.#.#....#......#.... +###.#.......#....#....#.#...#.. +.....###..#...###.#.#..#....... +.....#.........##.#....#..##.#. +........#....#....#....#.#..##. +........###....#.#.........#.#. +.#..###..#........#.......##.#. +.#.#........................... +..#....##...#.#....#....#.#.... +.#...#...##.#........###....#.. +#.#....#...#.#.#...##......##.. +#......#....#...#..#....#...#.. +...#..##........#.#...##......# +....##...........##...#..#..#.. +......#..#........#..#....##.## +.###..#.#.........#.....#...... +.#..##............#......#..... +..##.#.#..#..#.###....#..#..#.. +....#.#..#.#..##...##.#.#.#.#.. +....#..#....#...............#.. +..#...#.##.....##....#..##..#.. +.......##.#....#.##....#....... +.#...#........#...#......#.###. +..#....##.......#....#.#...#.#. +.....#.....#...##..#....#.#..## +..##........##............##... +..........#...#.......#.......# +.#...............#...#.##...... +#.##......#....#.##.#..#..#...# +......###.........#...#..#....# +....#......#...#....#....#...#. +#...##...#....#......####....#. +.................#......#...... +..#..........##.......##..#.##. +.#.....#.......#...######..#..# +....##.#...#...#..........#.... +.....#.......#...#.#.......###. +#...#.###.....#...#.......#.... +.#.##.####....#.....#.#........ +.......#.....##............##.. +..#...#.#.##........#...##...#. +........#...####.##..#....#...# +#.......#...##.#......#..#...#. +......#.........#..###.#.#....# +#..##...#...#..#...#...#.....#. +.#...#...#.#.................## +#......#.....#..#.#..#......##. +.......#.##...#.......#.......# +.#.#..#..#......#....#.#...#.#. +..#...#.#..#......#...#.#.#.... +........#..............#..##... +.##..#..##.#....#.#..###..#..#. +..#....#......#...#.#.#....#... +...#..#..#....#..#.....##...... +.#......#...#........##........ +.#......#..#...##..#..#.#.#.... +.##......#.##.........#....#... +....#....##..#..###.#..#......# +....#....##..........#.#...#... +..##.#.............#..#.....#.. +..#.....#....#....#.......##... +.##.#....#....#...#....##.#.... +...#.#..#.###.#..#.#.......#.#. +.....##.....#.......#......#... +.#.....#..#.#.#..#........##... +##.....................#....... +..###............#........##..# +.#.##.....#..#..#..#.#.......#. +.##...................#..#..#.. +..#.#...#..........##..#..##... +#......#..#..#.#..#......#..#.# +.#...#....#.#.........#.....#.# +#..........#.#....#....#.#.#.#. +#.....#..........#..#....#..#.. +........#....#..##.#.#.......#. +.#.......##.......#..##...#.... +...#..##..#......##.#..#.#..#.. +.#..#.......#..##..#......#.... +###.#.........#......#.#....... +...#......#....#..##..#.#..#... +......#..#.....#.........#....# +....#..#..#..#.........##.#..#. +......#..#..#..#....#...#..##.# +......##.#..#..#.#.......#.#.## +..#.....#...#..#....#.......... +.##..##.....##.......#.##.#.... +...#..#.......#..#.......#..... +.........#....##..#.#....#.#... +.....#..#...#.........#....#..# +.........##.....#.#...#.###...# +.#......####..##...#..#........ +.#......##....#.....#.......... +##.......##.#.......#.......... +.#......#.#.#.#....#........#.. +......##..##...#...#........... +.#...#.#..#......#.#.#.#....#.# +...#.........#.....#...###..... +#.....##....#.##...#....#...... +.#..#...#..##.###.#.#.#...#.... +...#......#..#....#...#...#.... +.#..............#.....#........ +..##...#.....#..#.....#..#.#... +.##...#....#.##...#.........##. +..#......#...##..#.....#......# +#.#..............#...#...#..#.# +..#..#.#...........#...#.#.#... +#..........#...#..#..##..#....# +............#...#........###... +.........#.....#.....#..#...... +#...#.#..##......#.#####....... +...#........#..............#... +......###.#.#.....#..#....##.#. +.#.#.#..##....###.#..#....##... +.#....#.##............##.#..... +##...##.#......#.#.##.##...###. +.......#.#........#.....#...... +....#.....#......#...#.#..#.... +.#.........#....#...#...#...#.# +#.......#................#..#.. +.##...........#.##...##....#... +#...#.#...###.........#.......# +.#...#......................... +#.......#...#.....##.##...##... +.#.#....#.......#.#.##.#....#.. +#..#....#...#.#.##.#....#....#. +.##.....#.#..#...#..#.......... +.............#...#.#..#........ +....#........#..#......##...... +#.....#....#.....#.......#..... +........#.......##....#........ +.#.#..##....................... +##..#.....#........#.....#..... +.#......#.#...#.#..........#..# +.#..#.....#..#..........#.###.. +......#.#..#.#.......#.#.....#. +.#....#......#..##............. +#...##.........#.#.#...#.....#. +..#................#..#..###... +#.....#....##.#..##......#.#.#. +..#....#...#...#............... +#................#....#...#.#.. +................#...#.....#.##. +..#.#.#..#.##.......##.......## +...........#......##.......###. +...#.......##.........#.#.#.#.. +.#...#.#..#...#.#.....#........ +............#####......##...... +....###....#.##...#..#......... +..#.#...#.......#...#...#.###.. +..............##..#...#....#... +#.#..##...#....##.........#.... +..#...#.....#...........#...#.. +#.#..###..#.#..#........#..#.#. +...###...##...#...#.#.........# +..#........#.....#.#.#.......#. +...#..#..........#.....#...#... +....#..#.....#....##....#.##... +.....##..#...#.#..##...#...##.# +...........###...##....#....... +##..#.#..#..#...#....##..#..#.. +##...#.#......##.#..#...#....#. +.#.......#...........#...#..... +#...#....#.......#...#.##...... +.........#.......#...#.#...#... +.......##.#..................#. +........#..#.#......#.....#.... +.....#.#.#.#....##...#.###..... +#.#.........#..#.#.#.#.#....... +.............#....#.......###.. +.#.##....#....##.........####.. +...........###.#............... +#.........##.#.#..#.....##.###. +.#.#.....#.#...#.....##...#...# +#....#...#.........#.#.......#. +.....#.###..#....#...##..#...#. +#........#....#.#..#....#.#.... +#.#..##......#.........#.#..... +##..#.....#......###....#....#. +#.#.####..#.#.#......##...#..#. +....#.....#.#.#.#.....#........ +..##..........#......#.#.#..#.. +.#...##.##.........#.........## +..#.#.#..........#..#..#......# +###..###..#...#................ diff --git a/2020/day03/testinput b/2020/day03/testinput new file mode 100644 index 0000000..7e88cdc --- /dev/null +++ b/2020/day03/testinput @@ -0,0 +1,11 @@ +..##....... +#...#...#.. +.#....#..#. +..#.#...#.# +.#...##..#. +..#.##..... +.#.#.#....# +.#........# +#.##...#... +#...##....# +.#..#...#.#