summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaura Orvokki Kursula <lav@vampires.gay>2024-12-22 11:46:21 +0100
committerLaura Orvokki Kursula <lav@vampires.gay>2024-12-22 11:46:21 +0100
commiteac86ee90ce6ab97a2d136be5339ac7c011836ac (patch)
tree491b4b498f17b2bbe5a0f03637d0f7bd713d8b4f
parent391f083fc61d3d173a3723ce238739efa3b759c3 (diff)
downloadaoc2024-eac86ee90ce6ab97a2d136be5339ac7c011836ac.tar.gz
aoc2024-eac86ee90ce6ab97a2d136be5339ac7c011836ac.zip
22-1
-rw-r--r--22-1.hs18
1 files changed, 18 insertions, 0 deletions
diff --git a/22-1.hs b/22-1.hs
new file mode 100644
index 0000000..f8d7117
--- /dev/null
+++ b/22-1.hs
@@ -0,0 +1,18 @@
+import Data.Bits (xor)
+import Data.Function ((&))
+
+mix :: Int -> Int -> Int
+mix = xor
+
+prune :: Int -> Int
+prune = (`mod` 16777216)
+
+mp :: Int -> Int -> Int
+mp cur = prune . mix cur
+
+update :: Int -> Int
+update x = mp x (x * 64) & \ y -> mp y (y `div` 32) & \ z -> mp z (z * 2048)
+
+main :: IO ()
+main = getContents
+ >>= print . sum . map ((!! 2000) . iterate update . read) . lines