From ca9b64a8e608093acdd1d8e321c6bde3c26ba9b3 Mon Sep 17 00:00:00 2001 From: Daniele Fucini Date: Sun, 22 Dec 2024 09:52:47 +0100 Subject: [PATCH] Day 22, Part 1 --- adventofcode2024.cabal | 1 + src/Day22.hs | 17 +++++++++++++++++ src/Main.hs | 6 ++++-- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 src/Day22.hs diff --git a/adventofcode2024.cabal b/adventofcode2024.cabal index 2a5684d..0ae47bb 100644 --- a/adventofcode2024.cabal +++ b/adventofcode2024.cabal @@ -56,4 +56,5 @@ executable adventofcode2024 Day17 Day18 Day19 + Day22 Graph diff --git a/src/Day22.hs b/src/Day22.hs new file mode 100644 index 0000000..8c44a9c --- /dev/null +++ b/src/Day22.hs @@ -0,0 +1,17 @@ +module Day22 (day22_1) where + +import Data.Bits + +getSecretNumber :: Integer -> Int -> Integer +getSecretNumber x 0 = x +getSecretNumber x n = + let x' = ((x `shiftL` 6) `xor` x) `mod` 16777216 + x'' = ((x' `shiftR` 5) `xor` x') `mod` 16777216 + in getSecretNumber (((x'' `shiftL` 11) `xor` x'') `mod` 16777216) (n - 1) + +day22_1 :: IO () +day22_1 = do + contents <- map read . lines <$> readFile "input/day22.txt" + putStrLn $ + "Day 22, Puzzle 1 solution: " + ++ show (sum $ map (`getSecretNumber` 2000) contents) diff --git a/src/Main.hs b/src/Main.hs index 6047577..b314b39 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -18,6 +18,7 @@ import Day15 (day15_1) import Day17 (day17_1, day17_2) import Day18 (day18_1, day18_2) import Day19 (day19_1) +import Day22 (day22_1) import System.Environment (getArgs) main :: IO () @@ -94,12 +95,13 @@ main = do "17" : "1" : _ -> day17_1 "17" : "2" : _ -> day17_2 "17" : _ -> do - day17_1 - day17_2 + day17_1 + day17_2 "18" : "1" : _ -> day18_1 "18" : "2" : _ -> day18_2 "18" : _ -> do day18_1 day18_2 "19" : "1" : _ -> day19_1 + "22" : "1" : _ -> day22_1 _ -> error "Not implemented"