X-Git-Url: https://git.njae.me.uk/?p=advent-of-code-19.git;a=blobdiff_plain;f=advent21%2Fsrc%2Fadvent21.hs;fp=advent21%2Fsrc%2Fadvent21.hs;h=3829a68a601b192d17d3112813ad0cde0afea130;hp=0000000000000000000000000000000000000000;hb=16aa247d28894336b6ba6001fce4829b92280f48;hpb=8e595f23837d5efb625ba2c0dacf470bdd5ccb06 diff --git a/advent21/src/advent21.hs b/advent21/src/advent21.hs new file mode 100644 index 0000000..3829a68 --- /dev/null +++ b/advent21/src/advent21.hs @@ -0,0 +1,53 @@ +import Debug.Trace + +import Intcode + +import qualified Data.Text.IO as TIO + +import Data.List +import Data.Char + + +main :: IO () +main = do + text <- TIO.readFile "data/advent21.txt" + let mem = parseMachineMemory text + let machine = makeMachine mem + putStrLn $ part1 machine + putStrLn $ part2 machine + +part1Code :: [Integer] +part1Code = map (fromIntegral . ord) $ concatMap (++ "\n") + [ "OR A T" + , "AND B T" + , "AND C T" + , "NOT T J" + , "AND D J" + , "WALK" + ] + +part2Code :: [Integer] +part2Code = map (fromIntegral . ord) $ concatMap (++ "\n") + [ "OR A T" + , "AND B T" + , "AND C T" + , "NOT T J" + -- e OR H -> T + , "OR E T" + , "OR H T" + , "AND T J" + , "AND D J" + , "RUN" + ] + + +part1 machine = drawOutput output + where (_, _, output) = runMachine part1Code machine + +part2 machine = drawOutput output + where (_, _, output) = runMachine part2Code machine + +drawOutput cs = t ++ n + where t = map (chr . fromIntegral) $ filter (<= 128) cs + n = show (filter ( > 128) cs) +