Removed needless directory
[advent-of-code-16.git] / app / advent03.hs
diff --git a/app/advent03.hs b/app/advent03.hs
new file mode 100644 (file)
index 0000000..ef40bcc
--- /dev/null
@@ -0,0 +1,33 @@
+module Main(main) where
+
+import Data.List (transpose, sort)
+import Data.List.Split (splitOn, chunksOf)
+
+type Triple = [Integer]
+
+main :: IO ()
+main = do 
+        instrText <- readFile "data/advent03.txt" 
+        let triangles = map (parseLine) $ lines instrText
+        part1 triangles
+        part2 triangles
+
+
+part1 :: [Triple] -> IO ()
+part1 triangles = do 
+    print $ length $ filter (validTriangle) triangles 
+
+part2 :: [Triple] -> IO ()
+part2 triangles = do 
+    print $ length $ filter (validTriangle) $ byColumns triangles 
+
+
+parseLine :: String -> Triple
+parseLine = map (read) . filter (not . null) . splitOn " "
+
+validTriangle :: Triple -> Bool
+validTriangle triple = sortedTriple!!0 + sortedTriple!!1 > sortedTriple!!2
+    where sortedTriple = sort triple
+
+byColumns :: [[Integer]] -> [Triple]
+byColumns = chunksOf 3 . concat . transpose