24 lines
589 B
Haskell
24 lines
589 B
Haskell
|
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
|