22
day09.hs
Normal file
22
day09.hs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import Data.Either (rights)
|
||||||
|
import Data.Map qualified as M
|
||||||
|
import Data.Text qualified as T
|
||||||
|
import Data.Text.Read qualified as TR
|
||||||
|
import Lib (readFile', tRead)
|
||||||
|
import Text.Parsec
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = do
|
||||||
|
input <- map (map tRead . T.words) . T.lines <$> readFile' "day09.in"
|
||||||
|
|
||||||
|
putStr "Q1: "
|
||||||
|
print . sum $ map (sum . map last . extrap) input
|
||||||
|
|
||||||
|
putStr "Q2: "
|
||||||
|
print . sum $ map (sum . map last . extrap . reverse) input
|
||||||
|
|
||||||
|
extrap :: [Int] -> [[Int]]
|
||||||
|
extrap xs = take (length xs) $ iterate first' xs
|
||||||
|
where
|
||||||
|
first' :: [Int] -> [Int]
|
||||||
|
first' xs = zipWith (-) (tail xs) xs
|
Reference in New Issue
Block a user