diff --git a/inputs/day1.txt b/inputs/day1.txt new file mode 100644 index 0000000..3fbca4c --- /dev/null +++ b/inputs/day1.txt @@ -0,0 +1 @@ +29917128875332952564321392569634257121244516819997569284938677239676779378822158323549832814412597817651244117851771257438674567254146559419528411463781241159837576747416543451994579655175322397355255587935456185669334559882554936642122347526466965746273596321419312386992922582836979771421518356285534285825212798113159911272923448284681544657616654285632235958355867722479252256292311384799669645293812691169936746744856227797779513997329663235176153745581296191298956836998758194274865327383988992499115472925731787228592624911829221985925935268785757854569131538763133427434848767475989173579655375125972435359317237712667658828722623837448758528395981635746922144957695238318954845799697142491972626942976788997427135797297649149849739186827185775786254552866371729489943881272817466129271912247236569141713377483469323737384967871876982476485658337183881519295728697121462266226452265259877781881868585356333494916519693683238733823362353424927852348119426673294798416314637799636344448941782774113142925315947664869341363354235389597893211532745789957591898692253157726576488811769461354938575527273474399545366389515353657644736458182565245181653996192644851687269744491856672563885457872883368415631469696994757636288575816146927747179133188841148212825453859269643736199836818121559198563122442483528316837885842696283932779475955796132242682934853291737434482287486978566652161245555856779844813283979453489221189332412315117573259531352875384444264457373153263878999332444178577127433891164266387721116357278222665798584824336957648454426665495982221179382794158366894875864761266695773155813823291684611617853255857774422185987921219618596814446229556938354417164971795294741898631698578989231245376826359179266783767935932788845143542293569863998773276365886375624694329228686284863341465994571635379257258559894197638117333711626435669415976255967412994139131385751822134927578932521461677534945328228131973291962134523589491173343648964449149716696761218423314765168285342711137126239639867897341514131244859826663281981251614843274762372382114258543828157464392 diff --git a/inputs/day2.txt b/inputs/day2.txt new file mode 100644 index 0000000..491e0d4 --- /dev/null +++ b/inputs/day2.txt @@ -0,0 +1,16 @@ +3458 3471 163 1299 170 4200 2425 167 3636 4001 4162 115 2859 130 4075 4269 +2777 2712 120 2569 2530 3035 1818 32 491 872 113 92 2526 477 138 1360 +2316 35 168 174 1404 1437 2631 1863 1127 640 1745 171 2391 2587 214 193 +197 2013 551 1661 121 206 203 174 2289 843 732 2117 360 1193 999 2088 +3925 3389 218 1134 220 171 1972 348 3919 3706 494 3577 3320 239 120 2508 +239 947 1029 2024 733 242 217 1781 2904 2156 1500 3100 497 2498 3312 211 +188 3806 3901 261 235 3733 3747 3721 267 3794 3814 3995 3004 915 4062 3400 +918 63 2854 2799 178 176 1037 487 206 157 2212 2539 2816 2501 927 3147 +186 194 307 672 208 351 243 180 619 749 590 745 671 707 334 224 +1854 3180 1345 3421 478 214 198 194 4942 5564 2469 242 5248 5786 5260 4127 +3780 2880 236 330 3227 1252 3540 218 213 458 201 408 3240 249 1968 2066 +1188 696 241 57 151 609 199 765 1078 976 1194 177 238 658 860 1228 +903 612 188 766 196 900 62 869 892 123 226 57 940 168 165 103 +710 3784 83 2087 2582 3941 97 1412 2859 117 3880 411 102 3691 4366 4104 +3178 219 253 1297 3661 1552 8248 678 245 7042 260 581 7350 431 8281 8117 +837 80 95 281 652 822 1028 1295 101 1140 88 452 85 444 649 1247 diff --git a/src/Day1.hs b/src/Day1.hs index 133fb85..d52e76d 100644 --- a/src/Day1.hs +++ b/src/Day1.hs @@ -6,7 +6,8 @@ import Protolude import Data.List (tail, foldl') import Data.Char (ord) -ex1code = "29917128875332952564321392569634257121244516819997569284938677239676779378822158323549832814412597817651244117851771257438674567254146559419528411463781241159837576747416543451994579655175322397355255587935456185669334559882554936642122347526466965746273596321419312386992922582836979771421518356285534285825212798113159911272923448284681544657616654285632235958355867722479252256292311384799669645293812691169936746744856227797779513997329663235176153745581296191298956836998758194274865327383988992499115472925731787228592624911829221985925935268785757854569131538763133427434848767475989173579655375125972435359317237712667658828722623837448758528395981635746922144957695238318954845799697142491972626942976788997427135797297649149849739186827185775786254552866371729489943881272817466129271912247236569141713377483469323737384967871876982476485658337183881519295728697121462266226452265259877781881868585356333494916519693683238733823362353424927852348119426673294798416314637799636344448941782774113142925315947664869341363354235389597893211532745789957591898692253157726576488811769461354938575527273474399545366389515353657644736458182565245181653996192644851687269744491856672563885457872883368415631469696994757636288575816146927747179133188841148212825453859269643736199836818121559198563122442483528316837885842696283932779475955796132242682934853291737434482287486978566652161245555856779844813283979453489221189332412315117573259531352875384444264457373153263878999332444178577127433891164266387721116357278222665798584824336957648454426665495982221179382794158366894875864761266695773155813823291684611617853255857774422185987921219618596814446229556938354417164971795294741898631698578989231245376826359179266783767935932788845143542293569863998773276365886375624694329228686284863341465994571635379257258559894197638117333711626435669415976255967412994139131385751822134927578932521461677534945328228131973291962134523589491173343648964449149716696761218423314765168285342711137126239639867897341514131244859826663281981251614843274762372382114258543828157464392" +ex1code :: IO [Char] +ex1code = toS <$> readFile "inputs/day1.txt" sum :: Num a => [a] -> a sum = foldl' (+) 0 diff --git a/src/Day2.hs b/src/Day2.hs index ccf107e..70a1412 100644 --- a/src/Day2.hs +++ b/src/Day2.hs @@ -1,4 +1,5 @@ {-# LANGUAGE NoImplicitPrelude #-} +{-# LANGUAGE OverloadedStrings #-} {-| description: @@ -49,26 +50,20 @@ module Day2 where import Protolude import qualified Control.Foldl as F -import Data.List (foldl') +import Data.List (words,lines) -input = [ - [3458,3471,163,1299,170,4200,2425,167,3636,4001,4162,115,2859,130,4075,4269] - , [2777,2712,120,2569,2530,3035,1818,32,491,872,113,92,2526,477,138,1360] - , [2316,35,168,174,1404,1437,2631,1863,1127,640,1745,171,2391,2587,214,193] - , [197,2013,551,1661,121,206,203,174,2289,843,732,2117,360,1193,999,2088] - , [3925,3389,218,1134,220,171,1972,348,3919,3706,494,3577,3320,239,120,2508] - , [239,947,1029,2024,733,242,217,1781,2904,2156,1500,3100,497,2498,3312,211] - , [188,3806,3901,261,235,3733,3747,3721,267,3794,3814,3995,3004,915,4062,3400] - , [918,63,2854,2799,178,176,1037,487,206,157,2212,2539,2816,2501,927,3147] - , [186,194,307,672,208,351,243,180,619,749,590,745,671,707,334,224] - , [1854,3180,1345,3421,478,214,198,194,4942,5564,2469,242,5248,5786,5260,4127] - , [3780,2880,236,330,3227,1252,3540,218,213,458,201,408,3240,249,1968,2066] - , [1188,696,241,57,151,609,199,765,1078,976,1194,177,238,658,860,1228] - , [903,612,188,766,196,900,62,869,892,123,226,57,940,168,165,103] - , [710,3784,83,2087,2582,3941,97,1412,2859,117,3880,411,102,3691,4366,4104] - , [3178,219,253,1297,3661,1552,8248,678,245,7042,260,581,7350,431,8281,8117] - , [837,80,95,281,652,822,1028,1295,101,1140,88,452,85,444,649,1247] - ] +parseInput :: IO (Maybe [[Integer]]) +parseInput = do + inputTxt <- toS <$> readFile "inputs/day2.txt" + return $ inputTxt -- Str + & lines -- [String] + & traverse lineOfInteger + +lineOfInteger :: [Char] -> Maybe [Integer] +lineOfInteger = traverse strToInteger . words + +strToInteger :: [Char] -> Maybe Integer +strToInteger = fmap fst . head . reads solution1 :: [[Integer]] -> Integer solution1 code =