module Day1B where import Day1A (read') import qualified Data.Set as S handle :: Integer -> (S.Set Integer) -> [Integer] -> Integer handle freq history (nextDelta:xs) | S.member freq history = freq -- When the frequency is in the history set, return it | otherwise = handle (freq + nextDelta) (S.insert freq history) xs -- Recurse otherwise handle _ _ _ = error "xs should not be empty :(" main :: IO () main = interact $ show . handle 0 S.empty . deltaFreqs where deltaFreqs = cycle . map read' . lines -- Convert input to Integers and repeat infinitely