From ef0c56b784fae7ab3596a1e7a3493d829fdec294 Mon Sep 17 00:00:00 2001 From: Gattix Date: Sun, 5 Dec 2021 21:00:32 +0100 Subject: [PATCH] day2 --- 2021/day02/day02.hs | 13 + 2021/day02/input | 1000 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1013 insertions(+) create mode 100644 2021/day02/day02.hs create mode 100644 2021/day02/input diff --git a/2021/day02/day02.hs b/2021/day02/day02.hs new file mode 100644 index 0000000..748bf0e --- /dev/null +++ b/2021/day02/day02.hs @@ -0,0 +1,13 @@ +import Control.Arrow + +main :: IO () +main = do + input <- map (head . words &&& read . flip (:) [] . last) <$> lines <$> readFile "input" + print $ (\(x,y,z,d2) -> (x*y,x*d2)) $ day2 input (0,0,0,0) + +day2 :: [(String,Int)] -> (Int,Int,Int,Int) -> (Int,Int,Int,Int) +day2 ((d,l):xs) (x,y,z,d2) + | d=="forward" = day2 xs (x+l,y,z,d2+l*z) + | d=="up" = day2 xs (x,y-l,z-l,d2) + | d=="down" = day2 xs (x,y+l,z+l,d2) +day2 [] x = x diff --git a/2021/day02/input b/2021/day02/input new file mode 100644 index 0000000..f9ca46c --- /dev/null +++ b/2021/day02/input @@ -0,0 +1,1000 @@ +forward 3 +down 9 +forward 5 +up 1 +forward 2 +down 1 +down 7 +down 5 +up 6 +forward 3 +down 6 +forward 9 +down 6 +forward 2 +down 4 +forward 4 +down 9 +down 7 +down 2 +down 4 +forward 3 +forward 6 +down 3 +up 1 +down 5 +down 8 +down 1 +forward 9 +forward 4 +forward 3 +down 3 +down 6 +down 3 +up 2 +down 3 +down 9 +down 1 +down 9 +up 8 +down 1 +down 9 +forward 9 +forward 2 +down 1 +forward 2 +down 9 +forward 9 +up 7 +forward 1 +up 8 +forward 7 +forward 6 +forward 2 +down 8 +forward 7 +down 3 +down 2 +down 1 +forward 2 +down 6 +forward 8 +down 7 +forward 9 +down 7 +down 9 +forward 2 +forward 2 +up 3 +down 4 +down 8 +forward 5 +down 4 +down 8 +down 2 +up 7 +down 7 +up 9 +up 9 +up 1 +forward 2 +up 4 +forward 5 +forward 9 +forward 9 +forward 3 +down 6 +up 3 +down 1 +forward 8 +forward 2 +down 7 +forward 9 +forward 1 +forward 8 +forward 8 +down 2 +down 6 +forward 8 +forward 8 +forward 3 +forward 4 +down 3 +up 3 +forward 1 +forward 4 +down 1 +down 4 +down 2 +down 3 +forward 5 +down 3 +up 5 +forward 9 +down 8 +up 6 +down 6 +up 7 +up 7 +forward 1 +forward 7 +down 1 +up 3 +down 1 +forward 7 +forward 1 +forward 9 +down 2 +forward 9 +down 3 +down 5 +forward 2 +up 3 +forward 5 +forward 5 +down 8 +down 7 +forward 6 +down 2 +down 5 +up 4 +up 5 +down 6 +forward 5 +down 3 +down 8 +forward 7 +down 5 +down 5 +down 9 +down 9 +down 2 +down 7 +up 4 +forward 8 +up 6 +down 5 +forward 1 +up 2 +down 6 +up 8 +up 7 +down 6 +forward 4 +down 6 +up 6 +up 4 +forward 5 +forward 4 +forward 6 +down 3 +down 7 +down 9 +forward 2 +forward 6 +down 3 +forward 1 +forward 2 +forward 9 +up 5 +down 7 +down 6 +forward 2 +forward 1 +up 3 +down 8 +forward 9 +down 7 +forward 7 +up 2 +up 8 +up 8 +forward 7 +forward 5 +forward 9 +down 7 +down 7 +forward 5 +forward 4 +forward 2 +forward 8 +up 3 +up 7 +forward 8 +forward 6 +forward 2 +forward 6 +up 3 +up 1 +forward 6 +forward 9 +down 1 +forward 6 +forward 4 +up 6 +forward 1 +down 7 +forward 7 +up 5 +down 5 +down 3 +forward 4 +forward 6 +up 6 +forward 9 +forward 2 +down 7 +forward 9 +down 9 +forward 2 +up 1 +down 4 +forward 6 +forward 4 +down 6 +forward 1 +up 3 +up 5 +down 8 +forward 2 +up 7 +down 5 +down 2 +down 6 +forward 7 +down 8 +up 8 +down 7 +down 9 +down 7 +down 8 +down 4 +up 3 +up 9 +down 4 +forward 7 +down 5 +up 8 +down 3 +forward 8 +down 3 +down 4 +down 1 +forward 5 +down 4 +down 8 +up 7 +forward 2 +forward 8 +down 1 +down 3 +forward 4 +forward 5 +forward 8 +forward 1 +down 1 +down 9 +up 8 +forward 6 +down 8 +down 2 +forward 9 +down 5 +down 8 +up 8 +up 5 +forward 9 +up 6 +down 9 +up 1 +down 2 +down 4 +forward 9 +forward 1 +up 2 +down 7 +forward 9 +down 9 +down 6 +down 9 +down 8 +forward 7 +forward 6 +forward 9 +forward 9 +forward 8 +forward 5 +up 2 +forward 9 +forward 2 +down 1 +down 1 +down 5 +down 1 +down 7 +up 2 +up 7 +forward 7 +forward 8 +down 2 +down 2 +down 3 +up 8 +up 8 +up 3 +forward 3 +down 7 +up 4 +up 8 +down 5 +forward 4 +forward 7 +down 9 +up 7 +forward 8 +forward 5 +forward 8 +forward 8 +forward 6 +forward 5 +forward 2 +down 3 +up 2 +forward 6 +forward 5 +down 9 +down 2 +down 7 +down 2 +forward 2 +forward 6 +forward 8 +down 7 +forward 4 +down 3 +down 5 +forward 1 +down 9 +forward 5 +down 4 +forward 9 +down 5 +down 4 +down 4 +down 7 +forward 9 +down 3 +down 5 +down 6 +down 4 +forward 4 +down 4 +up 1 +down 4 +up 7 +forward 4 +forward 5 +up 9 +down 4 +up 9 +forward 9 +down 8 +down 1 +up 7 +down 4 +up 4 +forward 9 +down 9 +down 4 +up 4 +down 5 +forward 2 +up 4 +down 3 +forward 9 +forward 8 +down 2 +forward 5 +up 5 +down 9 +down 7 +down 5 +down 9 +down 1 +down 7 +down 2 +forward 4 +up 7 +forward 7 +down 8 +down 2 +down 8 +up 6 +down 7 +down 7 +forward 3 +up 3 +forward 6 +down 8 +down 3 +up 2 +down 9 +forward 3 +down 9 +down 6 +up 8 +forward 5 +down 9 +up 2 +up 8 +down 8 +up 1 +up 2 +forward 5 +up 3 +down 7 +forward 4 +forward 2 +up 1 +forward 2 +up 1 +down 1 +down 5 +forward 6 +up 2 +down 7 +down 8 +down 9 +up 9 +down 2 +up 2 +forward 9 +forward 6 +forward 5 +down 6 +up 6 +forward 6 +forward 3 +down 3 +forward 2 +forward 4 +forward 1 +down 9 +forward 3 +forward 2 +down 5 +up 2 +forward 7 +down 4 +forward 5 +down 4 +forward 2 +down 4 +up 3 +forward 6 +forward 9 +down 1 +forward 2 +up 8 +forward 4 +up 9 +up 4 +up 3 +forward 5 +down 7 +forward 2 +up 4 +forward 7 +down 8 +forward 6 +forward 4 +up 5 +down 4 +down 6 +down 3 +forward 6 +down 9 +up 6 +forward 3 +down 4 +forward 8 +forward 1 +down 3 +down 4 +up 4 +forward 1 +up 5 +up 9 +forward 4 +up 9 +forward 2 +up 5 +up 5 +up 7 +up 4 +down 3 +forward 8 +forward 1 +up 1 +down 8 +up 3 +up 4 +up 2 +up 8 +up 7 +down 8 +up 8 +forward 9 +down 8 +up 5 +forward 6 +forward 4 +down 8 +down 9 +down 4 +down 6 +forward 4 +up 6 +up 1 +forward 7 +up 4 +down 6 +up 3 +down 4 +forward 8 +forward 4 +up 2 +down 3 +up 3 +up 9 +down 4 +forward 4 +forward 5 +forward 2 +down 1 +down 6 +down 1 +forward 6 +down 2 +forward 1 +down 2 +down 4 +forward 1 +down 8 +up 2 +down 5 +forward 9 +forward 4 +down 9 +forward 8 +forward 2 +forward 7 +forward 1 +forward 1 +down 8 +forward 2 +forward 8 +forward 7 +forward 9 +down 4 +down 2 +forward 1 +forward 2 +down 1 +forward 1 +forward 5 +down 1 +down 5 +down 1 +forward 2 +up 9 +forward 2 +forward 4 +down 9 +up 7 +down 1 +up 4 +forward 9 +up 6 +up 8 +down 3 +forward 9 +up 6 +down 1 +forward 9 +forward 3 +up 5 +forward 9 +down 1 +forward 5 +up 5 +down 1 +up 4 +forward 3 +forward 1 +up 4 +forward 3 +forward 9 +down 2 +forward 5 +forward 4 +forward 9 +down 5 +forward 8 +forward 1 +down 3 +down 2 +down 3 +up 8 +forward 3 +forward 6 +up 8 +down 6 +forward 8 +forward 1 +down 8 +down 7 +forward 8 +down 2 +forward 8 +down 4 +forward 1 +down 1 +up 6 +forward 1 +up 7 +down 2 +forward 5 +up 9 +down 5 +forward 4 +down 6 +down 9 +forward 8 +up 2 +up 7 +forward 2 +forward 5 +up 9 +down 4 +forward 9 +down 4 +down 3 +down 6 +down 9 +down 9 +down 1 +down 1 +down 7 +down 4 +down 7 +up 5 +forward 6 +down 9 +forward 7 +down 5 +down 4 +down 2 +down 4 +down 9 +forward 1 +down 9 +down 8 +forward 2 +up 7 +up 3 +forward 9 +forward 4 +down 8 +down 4 +forward 2 +down 8 +up 3 +forward 6 +forward 4 +down 2 +up 9 +down 5 +up 8 +up 6 +up 3 +down 2 +forward 6 +forward 4 +forward 7 +forward 2 +down 5 +down 2 +forward 2 +forward 6 +down 5 +down 4 +forward 8 +up 3 +forward 7 +down 1 +forward 5 +down 8 +down 9 +forward 5 +down 7 +forward 7 +up 6 +down 3 +forward 1 +down 2 +down 9 +down 2 +down 1 +forward 4 +up 5 +up 9 +forward 1 +down 5 +forward 4 +up 3 +up 5 +forward 7 +forward 5 +down 2 +down 8 +forward 5 +down 7 +up 8 +down 5 +down 6 +forward 8 +forward 9 +down 8 +up 3 +down 8 +down 2 +forward 8 +forward 8 +forward 4 +forward 9 +up 7 +up 1 +down 5 +down 8 +down 5 +forward 3 +forward 2 +down 8 +down 3 +down 2 +down 5 +forward 8 +up 3 +down 9 +up 4 +up 1 +up 8 +down 8 +forward 5 +down 2 +forward 4 +forward 1 +down 7 +forward 4 +forward 5 +up 2 +down 6 +up 9 +forward 1 +down 9 +forward 4 +down 7 +down 9 +up 9 +forward 2 +forward 7 +down 7 +forward 9 +forward 1 +forward 1 +down 7 +up 6 +up 3 +forward 2 +forward 6 +forward 9 +forward 3 +forward 4 +forward 9 +forward 9 +forward 9 +down 8 +up 2 +forward 7 +down 8 +down 3 +up 8 +down 8 +forward 1 +forward 9 +forward 2 +forward 3 +down 8 +forward 1 +forward 4 +down 9 +down 4 +up 7 +forward 5 +down 4 +forward 5 +down 2 +forward 6 +down 1 +up 9 +down 5 +up 5 +down 2 +up 1 +up 8 +down 3 +up 3 +down 8 +forward 4 +forward 1 +up 5 +forward 1 +down 5 +up 5 +forward 8 +down 1 +up 4 +forward 9 +forward 7 +up 1 +up 9 +forward 7 +forward 1 +up 5 +forward 6 +down 2 +up 5 +down 4 +down 6 +down 3 +forward 8 +down 7 +down 5 +down 7 +forward 1 +down 7 +up 5 +down 4 +down 4 +down 4 +forward 3 +forward 4 +up 6 +forward 8 +forward 2 +up 1 +forward 5 +forward 6 +forward 6 +up 2 +down 3 +forward 3 +up 8 +forward 6 +forward 5 +up 2 +up 5 +down 6 +down 8 +down 1 +forward 6 +down 3 +down 2 +forward 4 +down 4 +down 7 +forward 9 +forward 4 +forward 5 +down 8 +down 9 +up 4 +up 4 +down 5 +up 1 +up 6 +down 9 +forward 9 +forward 4 +forward 9 +forward 9 +down 5 +down 1 +up 9 +down 3 +up 5 +down 7 +forward 6 +forward 2 +down 5 +down 6 +forward 7 +forward 2 +up 9 +forward 6 +down 7 +up 4 +forward 1 +down 5 +forward 2 +forward 1 +down 6 +down 1 +down 4 +forward 8 +forward 1 +down 5 +down 8 +down 3 +forward 4 +down 2 +forward 9 +up 1 +forward 8 +down 4 +down 3 +down 1 +forward 5 +forward 9 +down 3 +forward 6 +up 6 +up 9 +forward 8 +forward 2 +down 9 +forward 3 +down 4 +down 5 +down 4 +forward 2 +forward 6 +down 9 +down 5 +forward 6 +forward 3 +forward 5 +forward 6 +forward 5 +forward 1 +up 4 +up 1 +down 2 +up 6 +down 5 +down 1 +forward 9 +down 1 +down 2 +forward 6 +up 2 +down 4 +up 3 +forward 8 +down 4 +down 4 +down 6 +up 1 +down 7 +up 4 +down 6 +up 7 +up 6 +down 5 +forward 3 +forward 4 +up 5 +down 2 +down 9 +forward 9