AoC/2019/day2/day2.hs
2019-12-02 09:23:25 +01:00

28 lines
848 B
Haskell

import Data.List.Split
import Data.Sequence as S
import Data.Foldable
main = do
content <- readFile "input"
let input = concatMap (map read . splitOn ",") (lines content)
let input2 = in_replace input 12 2
print (day2a input2 (fromList input2) 0)
print (day2b input)
in_replace input a b = (head input):a:b:(Prelude.drop 3 input)
day2a :: [Int] -> Seq Int -> Int -> Int
day2a (op:a:b:out:xs) acc n
| op==99=index acc 0
| otherwise=let newacc = update out ((index acc a)+*(index acc b)) acc in
day2a (toList $ S.drop m newacc) newacc (m)
where (+*) = if op==1 then (+) else (*)
m = n+4
day2a xs acc n = index acc 0
day2b :: [Int] -> Int
day2b input = sum [ let repl = in_replace input x y in
if day2a repl (fromList repl) 0 == 19690720 then 100*x+y
else 0 | x<-[0..99], y<-[0..99]]