This commit is contained in:
Jonathan Chan 2017-12-10 22:43:13 -08:00
parent a44830ae8d
commit a5e12ca387
2 changed files with 28 additions and 0 deletions

27
11.hs Normal file
View File

@ -0,0 +1,27 @@
import Data.List.Split (splitOn)
import Data.Foldable (fold)
data Coordinates = Coordinates Int Int Int deriving Show
instance Monoid Coordinates where
mempty = Coordinates 0 0 0
Coordinates x y z `mappend` Coordinates x' y' z' = Coordinates (x + x') (y + y') (z + z')
getCoordinates :: String -> Coordinates
getCoordinates direction = case direction of
"n" -> Coordinates 1 0 0
"ne" -> Coordinates 0 1 0
"se" -> Coordinates 0 0 1
"s" -> Coordinates (-1) 0 0
"sw" -> Coordinates 0 (-1) 0
"nw" -> Coordinates 0 0 (-1)
getDistance :: Coordinates -> Int
getDistance (Coordinates x y z) =
let absList = map abs [x, y, z]
in sum absList - minimum absList
main :: IO ()
main = do
coordinates <- fmap (map getCoordinates . splitOn ",") $ readFile "11.txt"
print $ getDistance $ fold coordinates
print $ maximum . map getDistance $ scanl mappend mempty coordinates

1
11.txt Normal file

File diff suppressed because one or more lines are too long