Part 1 done

This commit is contained in:
pingu committed 2024-12-09 10:26:30 +01:00
1 parent 27e4f9102b
commit fb98633a56
3 files changed
+30 -6

No files matched your search

+28 -6
View File
@@ -2,14 +2,36 @@
module Main where
import Data.Functor
import Data.List
import Data.List.Extra
parse = undefined
data ℜ where
None :: ℜ
Num :: Int -> ℜ
deriving Eq
solve1 = undefined
instance Show ℜ where
show None = show '.'
show (Num n) = show n
solve2 = undefined
parse :: String -> [ℜ]
parse s = zip [0..] (trim s) >>= \(i,a) -> replicate (read [a]) (if even i then Num (i `div` 2) else None)
sort1 :: [ℜ] -> [ℜ]
sort1 s
| None `notElem` s = s
| otherwise = case last s of
None -> sort1 $ init s
n -> sort1 $ takeWhile (/= None) s ++ [n] ++ drop 1 (dropWhile (/= None) (init s))
sort2 :: [ℜ] -> [ℜ]
sort2 = undefined
solve :: ([ℜ] -> [ℜ]) -> [ℜ] -> Int
solve f s = let fixed = (\(Num n) -> n) <$> f s in
sum $ zipWith (*) fixed [0..]
main :: IO ()
main = readFile "inputs/9" <&> parse >>= \i ->
print (solve1 i) >>
print (solve2 i)
main = readFile "inputs/9.example" <&> parse >>= \i ->
print (solve sort1 i) >>
print (solve sort2 i)