diff --git a/2/navigator.hs b/2/navigator.hs index 05da590..5349949 100644 --- a/2/navigator.hs +++ b/2/navigator.hs @@ -1,11 +1,12 @@ +import Control.Exception (assert) + main :: IO () main = do instructions <- getContents - let - parsed = parseInstructions instructions - location = navigate parsed - solution1 = uncurry (*) location - print solution1 + putStrLn (solution1 instructions) + +solution1 :: String -> String +solution1 input = show (uncurry (*) (navigate (parseInstructions input))) parseInstructions :: String -> [(Int, Int)] parseInstructions instructions = @@ -23,3 +24,18 @@ navigate instructions = where sumTuples :: (Int, Int) -> (Int, Int) -> (Int, Int) sumTuples (a, b) (c, d) = (a + c, b + d) + +-- Tests + +testInput1 :: String +testInput1 = unlines [ + "forward 5", + "down 5", + "forward 8", + "up 3", + "down 8", + "forward 2" + ] + +test1 :: String +test1 = assert ((solution1 testInput1) == "150") "success"