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