diff --git a/Day7.hs b/Day7.hs new file mode 100644 index 0000000..ff0e6fb --- /dev/null +++ b/Day7.hs @@ -0,0 +1,21 @@ +module Day7 where +import System.IO (openFile, IOMode (ReadMode), hClose, hGetContents) +import Data.Text (splitOn, unpack, pack) +import Prelude hiding (splitAt) + +splitAt :: String -> String -> [String] +splitAt delimiter str = map unpack $ splitOn (pack delimiter) $ pack str + +fuel :: Int -> Int -> Int +fuel to from = abs $ from - to + +main :: IO () +main = do + input <- openFile "inputs/7.txt" ReadMode + contents <- hGetContents input + + let crabby = map read $ splitAt "," contents :: [Int] + + print $ minimum [ sum $ map (fuel i) crabby | i <- [minimum crabby .. maximum crabby] ] + + hClose input \ No newline at end of file diff --git a/Day7_1.hs b/Day7_1.hs new file mode 100644 index 0000000..6b3aafa --- /dev/null +++ b/Day7_1.hs @@ -0,0 +1,21 @@ +module Day7_1 where +import System.IO (openFile, IOMode (ReadMode), hClose, hGetContents) +import Data.Text (splitOn, unpack, pack) +import Prelude hiding (splitAt) + +splitAt :: String -> String -> [String] +splitAt delimiter str = map unpack $ splitOn (pack delimiter) $ pack str + +fuel :: Int -> Int -> Int +fuel to from = sum [0..abs $ from - to] + +main :: IO () +main = do + input <- openFile "inputs/7.txt" ReadMode + contents <- hGetContents input + + let crabby = map read $ splitAt "," contents :: [Int] + + print $ minimum [ sum $ map (fuel i) crabby | i <- [minimum crabby .. maximum crabby] ] + + hClose input \ No newline at end of file