From 40c2d06a8cdd77c3c8c9a899e29a935762cc7210 Mon Sep 17 00:00:00 2001 From: Jonathan Chan Date: Tue, 12 Dec 2017 09:28:55 -0800 Subject: [PATCH] Day 6 - imported only needed functions so that I don't have to Data.* everywhere --- 6.hs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/6.hs b/6.hs index 4fe9f05..caae8d9 100644 --- a/6.hs +++ b/6.hs @@ -1,10 +1,10 @@ -import Data.Foldable -import Data.HashMap -import Data.Sequence +import Data.Foldable (toList) +import Data.HashMap (Map, member, insert, findWithDefault, empty) +import Data.Sequence (Seq, length, update, fromList, foldlWithIndex, mapWithIndex) type Bank = Seq Int type HashableBank = [Int] -type Config = (Bank, Data.HashMap.Map HashableBank Int) +type Config = (Bank, Map HashableBank Int) (%) :: Int -> Int -> Int (%) = mod @@ -20,7 +20,7 @@ nextBank :: Bank -> Bank nextBank bank = let len = Data.Sequence.length bank (index, value) = getMaxMem bank - zeroedBank = Data.Sequence.update index 0 bank + zeroedBank = update index 0 bank mappedBank = fmap (+ value // len) zeroedBank indicesToUpdate = fmap ((% len) . (+ index)) [1..value % len] in mapWithIndex (\i v -> if i `elem` indicesToUpdate then v + 1 else v) mappedBank @@ -30,7 +30,7 @@ cycles :: Int -> Config -> (Int, Int) cycles prevCount (prevBank, banks) = let count = prevCount + 1 bank = nextBank prevBank - hashableBank = Data.Foldable.toList bank + hashableBank = toList bank in if member hashableBank banks then (count, count - findWithDefault undefined hashableBank banks) else cycles count (bank, insert hashableBank count banks) @@ -38,5 +38,5 @@ cycles prevCount (prevBank, banks) = main :: IO () main = do input <- readFile "6.txt" - let bank = Data.Sequence.fromList $ fmap read $ words input :: Bank - print $ cycles 0 (bank, Data.HashMap.empty) + let bank = fromList $ fmap read $ words input :: Bank + print $ cycles 0 (bank, empty)