X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=src%2Fadvent15%2Fadvent15.hs;fp=src%2Fadvent15%2Fadvent15.hs;h=5aba6d7aba8dd811cbf80ac5666958b52bb38d81;hb=a6809041da3a5cbfd7e55e41c61bcfaa5d3fb1dc;hp=84e2412f7d8cb78219606b03a04f58dd67e06765;hpb=aa14346c6a214a28e30dd8e32f090aedc1b00f9c;p=advent-of-code-17.git diff --git a/src/advent15/advent15.hs b/src/advent15/advent15.hs index 84e2412..5aba6d7 100644 --- a/src/advent15/advent15.hs +++ b/src/advent15/advent15.hs @@ -13,8 +13,8 @@ part1 = length $ filter (uncurry (==)) $ take 40000000 $ zip streamA streamB part2 = length $ filter (uncurry (==)) $ take 5000000 $ zip fsA fsB - where fsA = filteredStream 3 streamA - fsB = filteredStream 7 streamB + where fsA = stream' 4 generatorA generatorAStart -- filteredStream 3 streamA + fsB = stream' 8 generatorB generatorBStart -- filteredStream 7 streamB generatorA = generator 2147483647 16807 @@ -32,5 +32,10 @@ toWord16 = fromIntegral stream :: (Int -> Int) -> Int -> [Word16] stream gen n0 = map toWord16 $ drop 1 $ iterate gen n0 -filteredStream :: Word16 -> [Word16] -> [Word16] -filteredStream f = filter ((== 0) . ( .&. f)) +stream' :: Int -> (Int -> Int) -> Int -> [Word16] +stream' f gen n0 = map toWord16 $ drop 1 $ filter ((== 0) . (`mod` f)) $ iterate gen n0 + + +-- filteredStream :: Word16 -> [Word16] -> [Word16] +-- filteredStream f = filter ((== 0) . ( .&. f)) +