day1: add solution
This commit is contained in:
commit
ab438d84d2
|
@ -0,0 +1 @@
|
||||||
|
*.in
|
|
@ -0,0 +1,8 @@
|
||||||
|
module Day1A where
|
||||||
|
|
||||||
|
read' :: String -> Integer
|
||||||
|
read' ('+':str) = read str
|
||||||
|
read' str = read str
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = interact $ show . sum . map read' . lines
|
|
@ -0,0 +1,14 @@
|
||||||
|
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
|
Loading…
Reference in New Issue