summaryrefslogtreecommitdiff
path: root/2017/13.hs
diff options
context:
space:
mode:
Diffstat (limited to '2017/13.hs')
-rw-r--r--2017/13.hs21
1 files changed, 21 insertions, 0 deletions
diff --git a/2017/13.hs b/2017/13.hs
new file mode 100644
index 0000000..77254ca
--- /dev/null
+++ b/2017/13.hs
@@ -0,0 +1,21 @@
+import Control.Monad
+import Data.Char
+import Data.List
+import Data.Maybe
+
+
+l2t :: [a] -> (a,a)
+l2t [a,b] = (a,b)
+
+check :: [(Int, Int)] -> Int -> Bool
+check inp off = all (\(d,r) -> if (d + off) `mod` (2 * (r - 1)) == 0 then False else True) inp
+
+cost :: [(Int, Int)] -> Int -> Int
+cost inp off = sum $ map (\(d,r) -> if (d + off) `mod` (2 * (r - 1)) == 0 then d * r else 0) inp
+
+main :: IO ()
+main = do
+ input <- liftM (map (l2t . map (read . takeWhile isDigit) . words) . lines) (readFile "13.in")
+
+ print $ cost input 0
+ print $ fromJust $ findIndex id $ map (check input) [0..]