My attempts to solve puzzles of Advent of Code
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

day 2

+329 -7
+1
AoC.cabal
··· 22 22 23 23 exposed-modules: AoC 24 24 AoC.Y2018.Day1 25 + AoC.Y2018.Day2
+250
data/input-d2-p1
··· 1 + kbqwtcvzgumhpwelrnaxydpfuj 2 + kbqwtcvzgsmhpoelryaxydiqij 3 + kbqwpcvzssmhpoelgnaxydifuj 4 + kbqgtcvxgsmhpoalrnaxydifuj 5 + kbqwtcvygsmhpoelrnaxydiaut 6 + kbqwtcvjgsmhpoelrnawydzfuj 7 + kbqftcvzgsmhpoeprnaxydifus 8 + rbqwtcgzgsxhpoelrnaxydifuj 9 + kbqwtlvzgvmhpoelrnaxkdifuj 10 + kbqwtcvzgsmhpolqrnaxydifub 11 + kbqbtcqzgsmhposlrnaxydifuj 12 + kbqwmcvzgswhpoelxnaxydifuj 13 + kbqwtyvzgsmhkoelrnsxydifuj 14 + khqwtcvzgsmhqoelinaxydifuj 15 + koqwtcvzcsmhpoelrnaxydizuj 16 + kbqwtcvzlsmhpoezrnaxydmfuj 17 + kbqwtcvzdsmhpoelrjaxydifij 18 + kbqwtcvzgsmhpoelrncxyjifuk 19 + kbtwtcvzgsmhpoelonaxydiwuj 20 + kbqwfcrzgsmhpoelrnaeydifuj 21 + kbqutcvkgsmhpoelrnfxydifuj 22 + kbqwtcvzgsmvvoelrnaxydihuj 23 + kbqwtcvzhymhpoelrnaxydifyb 24 + kbqctcvzgumhpoalrnaxydifuj 25 + kuqktcvzgsmhpoelrnaxydieuj 26 + kbqwtcvzgsmvpozlrnaxydifmj 27 + kbqwtcvzgsmhpojlraaxydiouj 28 + kbqwtcvzgmmhpoelknaxydizuj 29 + kbwwtcvzgsmhpoefrnaxydifij 30 + kbqwucvzgsmhpoelvnahydifuj 31 + kbqwtcvzpsmhpgelrqaxydifuj 32 + kblqtcvzgsmhpoeirnaxydifuj 33 + kbqwtcvzgsmhpovlrnabydifum 34 + kbqwwcvzgsmhpoelrnaoydnfuj 35 + kyqwdcvzgsmhpoelrnaxfdifuj 36 + kbqftcvzgsmxpoelknaxydifuj 37 + kbqwtsvzksmhpoelqnaxydifuj 38 + kbqwtcvzgsmhplelrnauydifux 39 + kbqytcvzgsmhpkelrnaxydefuj 40 + kbqwtcvzgsmjjoelrlaxydifuj 41 + kbqvtcvzgsmhpoelnnaxydafuj 42 + kbqwtcvzgsjhioelrnaxpdifuj 43 + kbqptcvpgsmhpoelrnaxydiful 44 + kbqwjcazgimhpoelrnaxydifuj 45 + kbqxtcvzgwmhpaelrnaxydifuj 46 + kbqwtcezgsmhqoelrnaxydifub 47 + kbqwtcvzgsmhooelynaxydifuf 48 + kbqwtwvzgsmkpoelrnaxrdifuj 49 + nbqwtcvugsmhpoelrnzxydifuj 50 + kbvwqcvzgsmhpoelsnaxydifuj 51 + kbqwtcyzjsmhpoelrnaxymifuj 52 + kbqwtcvzgsmhpoclrnaxykzfuj 53 + kbbwtcvzgsmhyodlrnaxydifuj 54 + kbwwtcvzgsmytoelrnaxydifuj 55 + kbmwtcczgpmhpoelrnaxydifuj 56 + ubqwtcvzgsmmpoblrnaxydifuj 57 + kbqwtcvzgrmhpoelrnaxnrifuj 58 + kbqwhcvzgsmhpoelynaaydifuj 59 + kbqwtcvzgsmtpoelrcpxydifuj 60 + kdqwtchzgsmhpoelrmaxydifuj 61 + qbqrncvzgsmhpoelrnaxydifuj 62 + kbqwtcvzghshpoelrnaxodifuj 63 + kbqwhcvzgsmhpoelknaxydiwuj 64 + ebqwtcvzgsmhpoelrotxydifuj 65 + kbqwacvzusmhpoelryaxydifuj 66 + kbqwtcvggsmhpoelrnaxygifyj 67 + kbqwtcvzgsmhpoelrnaxycwfuo 68 + kzqwzcvzgsmhpoelrxaxydifuj 69 + khqwtcvzgsmhpoelrnaxldifyj 70 + kbqwtbtzgsmhpoelrnaxydifud 71 + gbqwtcvzgqmhpoelrnaxydifrj 72 + kbqdtqvzgwmhpoelrnaxydifuj 73 + kbqwscvzgsmhpoelrpaxypifuj 74 + kmqwtcdzgsmhpoelenaxydifuj 75 + klqwtcvvgsmhpoelrfaxydifuj 76 + kbuwtcvzgsmhpoelrtaxyuifuj 77 + kbqwtcvrgomhpoelrnaxydijuj 78 + kbqwtgvzgsmhzoelrnpxydifuj 79 + kbqltcvzgsmhooeljnaxydifuj 80 + kbqwtcvzgbmxpoelrnaxydivuj 81 + kbqdtcmzgsmhpoelrnaxydmfuj 82 + kbqwtcazgsmhpoplrnacydifuj 83 + kbqztcvegsmhpoelrnvxydifuj 84 + kbqwtcvzgsmhpoecrnaxydzfsj 85 + kbqwtcvzgsmepoelrnaqydifuf 86 + kbqwtcqzgsmhpoelrnoxydivuj 87 + kbqwtcvzgsmhpoeylnaxydhfuj 88 + kbqwtcvfgsmhpoelrnaxgdifyj 89 + kbqwtcvzgsmhnbelrnaxyfifuj 90 + kbqwtcvzgsmhpoelrnaxbdffmj 91 + kwqwtcvogtmhpoelrnaxydifuj 92 + kdqwtcvzggyhpoelrnaxydifuj 93 + kbqwtuvzgtmhpoelrnaxydifxj 94 + kbqctdvzcsmhpoelrnaxydifuj 95 + kbqwtcvzgsmhpoblrniyydifuj 96 + kbqwucvzzsmhpoelrnvxydifuj 97 + kbqwtcvzgslzpoelrnaxydiruj 98 + kbqwtdmzgsmhpwelrnaxydifuj 99 + kbqwtcvzgsmhpoilrnaxqiifuj 100 + kbqwtcvzgsmhpgelrnaxydisnj 101 + kbdwtqvzgsmhpoelrnaxydivuj 102 + kbqvtdvzgsmhpoelrjaxydifuj 103 + kfqwtcvzgsmhpoeurnyxydifuj 104 + kbqwtcvzgsmhpoglrnaxqkifuj 105 + kbqwtcvrgsmhpoelrnajydifnj 106 + xbqwpcvzgjmhpoelrnaxydifuj 107 + kbqwtcvzgsmhpoelrdaxvdihuj 108 + kbuwtcvzssmhpoklrnaxydifuj 109 + kbqwtcvzgqmhpoelrnzxydifbj 110 + kbqwtcvzgsmhsoeoknaxydifuj 111 + kfqltcvzgsmhpoelrnaxydifnj 112 + qbqwtsvzgsmhpoelrnaxodifuj 113 + kbqwwevzgsmypoelrnaxydifuj 114 + kbqwtcuzgimhpoelrnaxydffuj 115 + kxqwlcvzgsmhpoelrnaxyrifuj 116 + nbqwtcvzgsmhpoelryaxyiifuj 117 + kbqwtcvzgsmhhoxlreaxydifuj 118 + mbqwtcvzfsmxpoelrnaxydifuj 119 + kbqwttvzgsmhpoeqrnaxidifuj 120 + kbqwtcvzgamhpielrnaxyiifuj 121 + rfqwtcvzgsmhpoelrnaxydifun 122 + kbpwtqvzgsmbpoelrnaxydifuj 123 + kbqwtcvzgsmhpoqlroaxydifua 124 + hbqwtcvzksmhpoelrnaxydbfuj 125 + kaqutcvzgsmhpoelrnaxydiiuj 126 + kbqctcvzgsnhpoelrcaxydifuj 127 + kbqwtnvzgsmhpoelrnaxydqfoj 128 + kbqwtcvzhsmhpoelrnaxydifyb 129 + ubqwtcvcgsmhooelrnaxydifuj 130 + kbqwtcvrgsmhpoelrnaxtdivuj 131 + kbqwtcvzgsmhplelrnmxydifaj 132 + ebqwlcvzghmhpoelrnaxydifuj 133 + hbqwtcvzgsmhpoelrnaqyeifuj 134 + kbqstcvzgsmeprelrnaxydifuj 135 + kbqwtcvogsthpoelrnnxydifuj 136 + ybqwtcvzgdmhpoelrnaxydufuj 137 + kbqutcvzgsmhpoelrnaxydifgx 138 + kbqwtcvzgsmhpozlunadydifuj 139 + kkqwtcvzgsmhpuefrnaxydifuj 140 + kbqrtcvzgsmhpoelrnaxcdifuq 141 + kbqwtcvzjsmupoelrnaxydiluj 142 + kbqwmcvzgsuhpoelrnaxydifhj 143 + kbqwfcvzgsmhpoelrnaxydkzuj 144 + kbqatcvzgsdhpoeyrnaxydifuj 145 + kbtwtcvzusmhpoelrxaxydifuj 146 + kbqwtcwzgsmhpoelrnaxysofuj 147 + kbqqtcvmgsmhpoevrnaxydifuj 148 + kbqwjcvzgsmhpoelrnaxydhuuj 149 + mbdwtcvzgsmhpoelqnaxydifuj 150 + kbqwtcvlgsmhpoelrdaxydifaj 151 + kbqwtcvzgsmmpoelrlaxydnfuj 152 + kbqwtchfggmhpoelrnaxydifuj 153 + kbqqtcvzgsyhpoelrnaxyoifuj 154 + knqwtcvzqsmupoelrnaxydifuj 155 + kdqdtcvzgsmhpoelrnaxydmfuj 156 + kbqwtcvzgsmhptelrnawyhifuj 157 + kbqwtcvzgrmhpoeqrnaxydifuw 158 + kbnxtcvzgsmhpoelrnauydifuj 159 + kbqwacvsgsmhpoelrnaxydifgj 160 + kbqwtcvzgsmhpperrnaxydifuc 161 + gbqwtcvzgsqhxoelrnaxydifuj 162 + kbqwtcvzgsmhpoeljgaxydifwj 163 + kbqktcvzgsmhpotlrnatydifuj 164 + bbqwtcvzgsmhpoilrnaxydjfuj 165 + kbqwecvdgsmhpoelrnaxypifuj 166 + keqwtcvzgemhpotlrnaxydifuj 167 + kbqptcvzgsmvpoelrnaxydixuj 168 + kbqwbctzgsmhpoelrnaxydifup 169 + kbqwtcvzgszhpbelrnzxydifuj 170 + mbqwtcvtgsmhpoeyrnaxydifuj 171 + kbqwtcvzgsmhqcelrhaxydifuj 172 + kbqotcvzgsmhooelrnazydifuj 173 + kbqwtcvzgsmhpoelmpaxyiifuj 174 + kbqwtcvwgsmypoclrnaxydifuj 175 + kbqwtcvsgskhpoelrnaxykifuj 176 + kbqwtcvzgszvpoelrnwxydifuj 177 + kbqwtcvzgsmhpoejonaxydrfuj 178 + kbqwtcvzgsmhkoelrnazyqifuj 179 + kbzwtzvzgsmhptelrnaxydifuj 180 + kbqwtcdzgsmhptelrnaxydiduj 181 + kbqwtcvzgamhpoelrnakyzifuj 182 + kbqwtcvzgsmhpoeonnaxydifxj 183 + kbqwtcvzgsmhpoeranaxydifej 184 + kbqwscvzgsmhpoelunaxydimuj 185 + cbqwtcvzgsmhpoelrdaxydefuj 186 + vbqwtcjzgsmhpoelrnaxydifua 187 + kmqwtcvzksmhpoeljnaxydifuj 188 + kbqwtcvzgsmppojlrnasydifuj 189 + kaqwtcvfgsmhpoelrnaxydiauj 190 + khqwccvzgsmhpoelrnaxydifud 191 + vbqwtcvzrsmhpoelrhaxydifuj 192 + kuqwtcvzgsmhpoelgnaiydifuj 193 + kbqwtcvzdsmhpbelvnaxydifuj 194 + kbowtcvzgnmhpoelrfaxydifuj 195 + kbqwtcvsgsmhfoejrnaxydifuj 196 + kbqwtcvzgskhtoelrnxxydifuj 197 + kbqwtcvzgtmhpoevrnaxydivuj 198 + bbqptcgzgsmhpoelrnaxydifuj 199 + kbqwtpvzgsmnpoelhnaxydifuj 200 + kbqwtovzgsmmpoelrnaxydifuw 201 + kbqwtcvzgsihpwelrnaxydsfuj 202 + kbqwtcvzggmhpollrnaxydifsj 203 + kbqwtcjzgsmhpoelrnaxyxifub 204 + ebqwtcvzgsmzpoelrnaaydifuj 205 + kbqwtcvzusmhpoelrnqxydijuj 206 + obqwtcvzgsghpoelrnaxydifkj 207 + kbrwtcvzmdmhpoelrnaxydifuj 208 + kbqwtcvzxsmhpoblrnhxydifuj 209 + kbqwacvzgsahpoelrnaxydiguj 210 + kyqwtcvzgsmipoelrnlxydifuj 211 + kbbwtcvzgsmhboelpnaxydifuj 212 + kbqwtcvzgsmhpoelrnaxhdosuj 213 + kbqwtgvzgxmhpoelrnaxyrifuj 214 + pbqwtsvzgsmhpoelrnabydifuj 215 + kbqrtcvzgsmhpsblrnaxydifuj 216 + kbqwtcvzgsmhpoexrnaaycifuj 217 + kbqxtcvzgsjhkoelrnaxydifuj 218 + kbqwtcvzgsmhpxelrnaxydifby 219 + lbxwtcvzgsmdpoelrnaxydifuj 220 + kbqwtcczgsmhpoklrnzxydifuj 221 + zbqwtcvzgsmhpoelrbaxydifui 222 + krqwtcvzbsmhpoelrjaxydifuj 223 + kbkwtcvzgsmhpoelrnaxydiacj 224 + kbqwtcvzgszhpseprnaxydifuj 225 + kbxwtcvzxsmhpoesrnaxydifuj 226 + kbqwdcvzgsmhpoelrbaxygifuj 227 + kbqwthkzgsmhhoelrnaxydifuj 228 + klqwtchzgamhpoelrnaxydifuj 229 + obqwtcvzgsvcpoelrnaxydifuj 230 + kblwtcvzgsmhpoelrnanydifuw 231 + kbqwtrvzgsmhpoelynaxydifug 232 + kbqwtcvzgsmhcoelmnaxydkfuj 233 + kbqwtcvzgsmhpotlqoaxydifuj 234 + kaqatcvzgsmhpoelrnaxyiifuj 235 + kbqttcvwgsmhpoelrnaxydifgj 236 + kpqwtcvzgsmhpwelynaxydifuj 237 + kbqwucvzgsmhpyelrnaxyxifuj 238 + kbqwucvzgsmhprelrnaxyfifuj 239 + kbqwthvzgsmhphelrnaxylifuj 240 + kbqwtcvzosmhdoelrnaxwdifuj 241 + kbqwtxvsgsphpoelrnaxydifuj 242 + koqwtcvfghmhpoelrnaxydifuj 243 + kbtwicvzpsmhpoelrnaxydifuj 244 + kbawtcvzgsmhmoelrnaxyiifuj 245 + kbqwtcvzgslhpbelrnaxydifuk 246 + kbqttcvzgsmypoelrnaxydifua 247 + kbqwtcvrgqmhpnelrnaxydifuj 248 + kbqwtcvzghmhpoekpnaxydifuj 249 + kbqwtcvzgsmupoelrnaxidifui 250 + kbqwtcvzgsmhpbelrnaxrdifux
+2 -1
src/AoC.hs
··· 1 1 module AoC (module X) where 2 2 3 - import AoC.Y2018.Day1 as X 3 + import AoC.Y2018.Day1 as X 4 + import AoC.Y2018.Day2 as X
+6 -6
src/AoC/Y2018/Day1.hs
··· 1 1 module AoC.Y2018.Day1( 2 2 makeFreqChanges 3 3 , calcFreq 4 - , doPuzzle1 4 + , doDay1Puzzle1 5 5 , checkRepeating 6 - , doPuzzle2 6 + , doDay1Puzzle2 7 7 ) where 8 8 9 9 import Papa ··· 31 31 checkRepeating = hasDuplicates S.empty . Just . scanl (+) 0 . cycle 32 32 33 33 34 - doPuzzle1 :: FilePath -> IO Int 35 - doPuzzle1 = (<$>) calcFreq . makeFreqChanges 34 + doDay1Puzzle1 :: FilePath -> IO Int 35 + doDay1Puzzle1 = (<$>) calcFreq . makeFreqChanges 36 36 37 - doPuzzle2 :: FilePath -> IO (Maybe Int) 38 - doPuzzle2 = (<$>) checkRepeating . makeFreqChanges 37 + doDay1Puzzle2 :: FilePath -> IO (Maybe Int) 38 + doDay1Puzzle2 = (<$>) checkRepeating . makeFreqChanges
+70
src/AoC/Y2018/Day2.hs
··· 1 + -- | 2 + 3 + {-# LANGUAGE TupleSections #-} 4 + 5 + module AoC.Y2018.Day2 6 + where 7 + 8 + import Papa 9 + import qualified Data.Map as M (fromListWith, toList) 10 + import qualified Data.Text as T (lines, unpack) 11 + import qualified Data.Text.IO as T (readFile) 12 + import qualified Data.Sequence as C (fromList, elemIndicesL,deleteAt) 13 + 14 + type BoxIDs = [String] 15 + data IDMeta = IDMeta 16 + { 17 + _id :: String 18 + , _numTwice :: Int 19 + , _numThrice :: Int 20 + } deriving Show 21 + 22 + type IDDB = [IDMeta] 23 + 24 + parseInput :: FilePath -> IO BoxIDs 25 + parseInput f = do 26 + ls <- T.readFile f 27 + return $ T.unpack <$> T.lines ls 28 + 29 + transformToIDMeta :: String -> IDMeta 30 + transformToIDMeta s = mkMeta (filter (> 1) $ snd <$> M.toList (M.fromListWith (+) $ (, 1) <$> s)) where 31 + f :: (Int -> Bool) -> [Int] -> Int 32 + f p xs = maybe 0 (const 1) (find p xs) 33 + mkMeta :: [Int] -> IDMeta 34 + mkMeta xs = IDMeta s (f (==2) xs) (f (==3) xs) 35 + 36 + totalTwiceCounts :: IDDB -> Int 37 + totalTwiceCounts = sum . (_numTwice <$>) 38 + 39 + totalThriceCounts :: IDDB -> Int 40 + totalThriceCounts = sum . (_numThrice <$>) 41 + 42 + checksum :: BoxIDs -> Int 43 + checksum is = let db = transformToIDMeta <$> is 44 + in 45 + liftA2 (*) totalTwiceCounts totalThriceCounts db 46 + 47 + doDay2Puzzle1 :: FilePath -> IO Int 48 + doDay2Puzzle1 = (<$>) checksum . parseInput 49 + 50 + eqIndex :: String -> String -> Maybe Int 51 + eqIndex a b = let is = C.elemIndicesL False $ C.fromList $ zipWith (==) a b 52 + in 53 + case is of 54 + [x] -> Just x 55 + _ -> Nothing 56 + 57 + commonLetters :: [String] -> Maybe String 58 + commonLetters xs = let cs = take 1 $ do 59 + a <- xs 60 + b <- xs 61 + case eqIndex a b of 62 + Just i -> [toList $ C.deleteAt i (C.fromList a)] 63 + Nothing -> [] 64 + in 65 + case cs of 66 + [x] -> Just x 67 + _ -> Nothing 68 + 69 + doDay2Puzzle2 :: FilePath -> IO (Maybe String) 70 + doDay2Puzzle2 = (<$>) commonLetters . parseInput