X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=src%2Fadvent15%2Fadvent15.hs;h=4b16e08254898e636cc7b8befd6da560c4f56189;hb=7bd53fa28f55dc6264d383deb23090799d21dd0c;hp=84e2412f7d8cb78219606b03a04f58dd67e06765;hpb=aa14346c6a214a28e30dd8e32f090aedc1b00f9c;p=advent-of-code-17.git diff --git a/src/advent15/advent15.hs b/src/advent15/advent15.hs index 84e2412..4b16e08 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 $ filter ((== 0) . (`mod` f)) $ drop 1 $ iterate gen n0 + + +-- filteredStream :: Word16 -> [Word16] -> [Word16] +-- filteredStream f = filter ((== 0) . ( .&. f)) +