/ 2024 / 22 / p1.hs
p1.hs
 1  import Control.Arrow
 2  import Data.Bits
 3  
 4  prng :: Int -> Int
 5  prng =
 6    id &&& (* 64)
 7      >>> uncurry xor
 8      >>> (`mod` 16777216)
 9      >>> (id &&& (`div` 32))
10      >>> uncurry xor
11      >>> (`mod` 16777216)
12      >>> (id &&& (* 2048))
13      >>> uncurry xor
14      >>> (`mod` 16777216)
15  
16  answer = sum . fmap ((!! 2000) . iterate prng . read) . lines
17  
18  main = getContents >>= print . answer