aoc2025

Advent of Code 2025
git clone git://git.rr3.xyz/aoc2025
Log | Files | Refs | Submodules

commit 62428c885338b4de0fb66292c4809943548a90a4
parent 41a87c1f4049fa0c5a672a487af93e28e8a72701
Author: Robert Russell <robert@rr3.xyz>
Date:   Sun,  7 Dec 2025 18:40:48 -0800

Solve 05

Diffstat:
A05/Main.hs | 79+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A05/input.txt | 1183+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpackage.yaml | 4++++
3 files changed, 1266 insertions(+), 0 deletions(-)

diff --git a/05/Main.hs b/05/Main.hs @@ -0,0 +1,79 @@ +module Main (main) where + +import Control.Applicative +import Data.ByteString qualified as BS +import Sparsec +import System.Exit (die) + +-------------------------------------------------------------------------------- +-- Util + +count :: (a -> Bool) -> [a] -> Int +count p = length . filter p + +-------------------------------------------------------------------------------- +-- Solution + +-- It would be better to use an interval tree or similar data structure. + +newtype Ingredient = Ingredient Int deriving (Eq, Ord, Num, Enum, Show) +data Range = Range Ingredient Ingredient deriving (Show) +data Input = Input [Range] [Ingredient] deriving (Show) + +size :: Range -> Int +size (Range (Ingredient l) (Ingredient u)) = max (u - l + 1) 0 + +remove :: Range -> Range -> [Range] +remove (Range p q) (Range l u) = [Range l (min u (p - 1)), Range (max (q + 1) l) u] + +disjointify :: [Range] -> [Range] +disjointify = foldr (\r rs -> r : filter ((> 0) . size) (remove r =<< rs)) [] + +contains :: Range -> Ingredient -> Bool +contains (Range l u) i = l <= i && i <= u + +part1 :: Input -> Int +part1 (Input rs is) = count (\i -> any (`contains` i) rs) is + +part2 :: Input -> Int +part2 (Input rs _) = sum . map size . disjointify $ rs + +-------------------------------------------------------------------------------- +-- Parsing + +newtype ParseError = ErrorUtf8 Loc deriving (Show) +instance Utf8Error ParseError where + utf8Error = ErrorUtf8 +type P a = Parse ParseError a + +manyLines :: P a -> P [a] +manyLines p = many (p <* char '\n') + +twoSepBy :: (a -> b -> c) -> P a -> P () -> P b -> P c +twoSepBy f pa psep pb = (\a () b -> f a b) <$> pa <*> psep <*> pb + +pIngredient :: P Ingredient +pIngredient = Ingredient . fromIntegral <$> natural 10 + +pRange :: P Range +pRange = twoSepBy Range pIngredient (char '-') pIngredient + +pInput :: P Input +pInput = twoSepBy Input (manyLines pRange) (char '\n') (manyLines pIngredient) + +-------------------------------------------------------------------------------- +-- Main + +getInput :: IO Input +getInput = do + raw <- BS.getContents + case runParse pInput raw locZero of + Ok input _ _ -> pure input + Fail -> die "parse failure" + Error e -> die $ "parse error: " ++ show e + +main :: IO () +main = do + input <- getInput + print . part1 $ input + print . part2 $ input diff --git a/05/input.txt b/05/input.txt @@ -0,0 +1,1183 @@ +147026054002176-148722820532628 +405816093648050-406348543340995 +108145335897715-108145335897715 +504605303439855-504605303439855 +9336461060727-9336461060727 +414567783571520-417189330414630 +87596216404388-88042094726752 +541538541141727-542273896365233 +404045228579678-404167359993363 +515268224136064-520102523902809 +354911326288346-356004153136992 +185002494588732-185547223229317 +171394982991417-177868771319935 +426628116316669-430392154575571 +545877249906251-551802447025992 +189685683046934-190132980034950 +103897451708970-108145335897714 +185547223229317-185894895530767 +245727634348687-249469249579525 +187587166601839-187921897643842 +258447264144066-259936207978694 +26428223030413-27225313130731 +382563133156839-388251162528579 +82011581063377-82899176943173 +487766135067138-491977135306566 +181588107994114-181830541544351 +203919038977574-203919038977574 +184175611466113-184864651664138 +173995791715028-178750134057296 +540666904097506-540982830008685 +382563133156839-388251162528579 +355801967342027-357024542900226 +285098738899613-288223489159570 +185547223229317-186061892991929 +346023108750258-350759459008450 +186824226150466-187331343847678 +535123467876697-535766823482692 +373470309102070-381462964223567 +254720430535915-256265374384473 +124033519855927-124033519855927 +398242866038743-398242866038743 +411064382385939-411266106836577 +32853514772298-35912375621225 +483546673645989-487766135067136 +229539777187355-229539777187355 +54741812355556-56055181776317 +404902484411740-405304842680690 +81553603708172-82290882877664 +535017507202948-535766823482692 +395225857220347-398242866038743 +81894290659641-82290882877664 +504605303439856-511466604140435 +161511475950036-167212300465649 +252424753556335-254249509032175 +256784707973442-258211282021098 +474082537312288-476164956575333 +81894290659641-82011581063377 +444307992125768-449331507860417 +293055438852220-296746928050769 +332427924465119-338282641633280 +132982251050531-137452338178862 +533726793949828-534018416079315 +467259031253050-470035805650069 +302713900046223-308903802671005 +352153732467066-353538762829133 +186824226150466-187331343847678 +188051516291834-188325333471071 +356589489234717-358001607187609 +22795153642408-26428223030412 +13014008209745-13014008209745 +352841826116744-354227025309918 +3052721314366-9336461060727 +409756951788535-410580890037618 +533726793949828-534018416079315 +358561400834606-359842162588186 +188577779018891-189465843616861 +114153306009090-117017864808497 +523700914989374-523700914989374 +523700914989374-529606372407677 +322152360737057-325454661965918 +251379114566917-253150393528429 +406956152658127-407446264052044 +360266856941108-361826042120760 +338282641633281-338282641633281 +35912375621227-38293005670321 +475893779903458-478058630423491 +342220124925769-347913415593659 +40563812891942-47379617037789 +312312319803823-318832407931537 +224522070876287-229539777187355 +124033519855928-127156418728345 +357671884424702-358925443371260 +81388975511845-81894290659641 +322152360737057-330446712025527 +211435461151197-220804490825099 +296746928050770-299100765805750 +190132980034950-190684408356699 +161511475950035-161511475950035 +181830541544351-182532971787203 +417189330414632-419483745115504 +89183601638373-89860401643630 +438441840585789-439701337248186 +232348303098711-239141627621047 +538270798808987-538925732113641 +541959539867715-542273896365233 +72489132011956-76856328658588 +472817457751419-475048762813225 +214726686668216-216879558004314 +265514296554745-270766216843982 +85744832396248-86323884623839 +515268224136064-518604928210803 +493888391055899-500721543731899 +237311600827294-239141627621047 +264028451845520-265514296554744 +538270798808987-538925732113641 +91617226262917-98430744824388 +117475785167132-120188887075941 +359305541397876-360839864780861 +188931909913550-189685683046934 +61193714235901-69629759100651 +445548023983915-451349198787369 +453939198246555-460688492135913 +410580890037618-411266106836577 +434339023575100-438441840585788 +44456237144659-48513604663845 +285098738899612-285098738899612 +302713900046223-302713900046223 +407352716278275-407781045757980 +259693942784956-261223679445484 +273181531396231-276505676070918 +560350017104686-560350017104686 +132982251050531-137452338178862 +13014008209745-19208188363160 +188577779018891-189159268986080 +257426119381944-258911506363405 +249469249579526-249469249579526 +84482721203503-85062206721336 +188051516291834-188931909913550 +375117820166731-378942174241518 +255407275700158-256924814102263 +316778086637925-318832407931537 +188325333471071-188931909913550 +535849288071548-536672958212781 +557126116959796-560350017104685 +477386094235630-479517712328960 +84482721203503-84758025267134 +86490734330757-87366815427274 +535474757750378-535849288071548 +153447871615763-158515708897409 +50721455017362-59341594629507 +115702122862466-118762478188053 +402694171542882-403302155508771 +253592183539645-254892844274766 +365074885662518-369401675118289 +403496304928217-404167359993363 +539803656167800-540210531124244 +85744832396248-86490734330757 +430392154575571-430392154575571 +404045228579678-404167359993363 +153447871615763-158515708897409 +453939198246555-460688492135913 +142952773118732-147026054002174 +495520762611333-498666807655212 +193065109486232-198942214756055 +181830541544351-182391129847570 +478817233334144-481015787990997 +84230194314046-84482721203503 +464615256435121-470035805650069 +111098631544470-113561825863728 +81098891064645-81553603708172 +404902484411740-405543804186877 +91617226262917-95685230302892 +479988509395995-482247409917260 +81894290659641-82011581063377 +409615388188567-409756951788535 +65874463136534-69629759100651 +273181531396231-278706322697987 +112423809687803-115235755590305 +538722865893879-538925732113641 +81098891064645-81553603708172 +203919038977574-206826466434594 +353795822752757-355234799179947 + +256599037510259 +257045674285424 +326386632675641 +134298134829500 +345820086993217 +267478047688685 +298052214191178 +232809395498118 +240402361780592 +544303938676229 +127740421614535 +322997056321486 +386988108714180 +323311516865774 +204612688280655 +517981407444688 +200386540245960 +143533150529627 +263522927057391 +217800959193130 +369669455173448 +507329101681745 +433212006499677 +85947058093158 +512609921343768 +210061037712135 +91208266789716 +515258080524117 +415262177834975 +439739845594662 +95967199084903 +332714760482016 +8086536461164 +412587720918414 +163679268889162 +504670156697352 +534891079053670 +551053427545769 +127522195001135 +522136326408657 +249410645002794 +562784864587229 +192144617076408 +384836215084351 +313017443644508 +499880774521956 +320710950198797 +370956493615623 +130218742843629 +495870891853180 +408224914372360 +187229001875521 +478009932340584 +243031229787743 +494310385654669 +254980465798998 +390832921426530 +175656291120445 +558803414432611 +393714487283458 +16391088181902 +231810562898595 +385601054964865 +342450573668816 +198145263069587 +472423564017799 +124576869581404 +403538339109021 +297041730173167 +281647246222884 +535701744339872 +488257594255946 +42687870027666 +363507592763126 +295119793177331 +345385468394789 +282261361628758 +481330009260356 +83180826199710 +225198187193373 +39947182159857 +20006289644794 +534581917747904 +138691207807454 +9278500472677 +50705933144595 +28959269489397 +504500024363804 +327331725951017 +127627111327226 +337673996005971 +112147294589314 +522627605851400 +301293318504786 +532541396589152 +267642095541644 +413256558466757 +361336114066823 +39221994090480 +13886213321149 +368464366754671 +402417367168376 +394509571297991 +199016652249210 +339118736932408 +90432697800890 +496225138617677 +353220085600103 +88100750382555 +52483444708418 +19438610401078 +235449412563523 +503353894737021 +9527956659725 +214384033681052 +419729908993130 +524971715847814 +223029258505212 +367502649209536 +354498141106628 +262867456385224 +102055065851080 +79882713787488 +89236643063989 +205817305625301 +411604775162936 +197512143316520 +144949827219333 +270726450308733 +183486673727421 +473351095125533 +424483489995451 +161627439984205 +389370338226908 +402028589769567 +290858340328110 +500806256353787 +425921919265766 +441493182909332 +475123314035308 +176127199820049 +540737542580202 +29760195703071 +180960045468585 +338342045079576 +98896627322493 +250916762904820 +300401682448355 +20002308446993 +129020372690625 +544883579888208 +248537085338868 +286668805309976 +235236800450989 +536637606659152 +525812617930065 +370894341849524 +275030139389511 +496903087177920 +419453678749131 +126127257985925 +302129593142109 +246051717059752 +111209928757728 +223380435246796 +239398875605820 +192640664852479 +18818506184837 +155895170373928 +537280296348972 +87870195535034 +374940789667644 +280728141145776 +221439644034863 +309576983832839 +38863911127211 +440321747981240 +336464989074674 +41122921419325 +243188014099545 +24706280734977 +192292194178186 +380862698927557 +152169995973453 +496924584509076 +16966829433349 +447442036392985 +2486482920623 +417979560135373 +527278673568661 +78776188530705 +258582430048653 +501310072414638 +511753150918542 +529503681277669 +16359626547139 +313818993130120 +504418855982359 +67092894692312 +37566884425070 +351477475703205 +437878295686312 +107400773747658 +299008375252030 +165596827148130 +523788940836438 +503698016802212 +151946649529421 +516067712622696 +369113578324753 +494669108461894 +176171981613890 +64451222262136 +86005840864002 +286772815992358 +238425760894821 +502349076912881 +424539315986545 +356982176069130 +122677539712503 +444168645646361 +382623739008388 +265467114946876 +251047877237046 +103794725610622 +454201829656241 +123348214375953 +250361015471773 +194122704079015 +202577827173430 +97532740078344 +209563196439914 +500206251681553 +359885492523173 +367303539983052 +536441272396823 +266661382419626 +63308057155621 +186062497093854 +458363379556213 +194305527330408 +30865869581091 +465842461488211 +20634474951353 +433729696239594 +365420175851316 +546659295704076 +261136183010108 +425184200782612 +522783374310638 +49791898942316 +440435630163978 +468504176453488 +304137072443517 +96533435574478 +213008454701450 +511220387441200 +327749273398587 +205524238066739 +522685203942846 +493486845869722 +460384801215666 +172009118655197 +523641994291995 +561548477074126 +362816861710133 +322688661135927 +139318876924482 +245691811070680 +492087771560884 +311841620229962 +339672201038602 +522904482135421 +121080485825194 +487272699926880 +543995733412868 +346184756437397 +236989782703824 +455805059813231 +261201179483584 +57327395376953 +114192696674309 +469704201610240 +392721784031367 +270851420686371 +159328256962742 +149107073648225 +32124467093002 +148518478009853 +502234005612023 +275974853358003 +391339780298882 +332749894393659 +462151627681683 +188833422302122 +48135106068588 +17332048477201 +25197468900959 +408154551509201 +163152597528860 +290385736285129 +96146951174576 +32365929193280 +107054145285762 +156221005769717 +287255388833909 +401250701491282 +545507520587032 +121258120689887 +244019128711583 +345937932000167 +408914336990199 +90625414467278 +101263897139475 +2079452766963 +361190958378477 +226158006527402 +225300226782612 +232563992671131 +313617105063284 +523035110542518 +260713868788477 +389989190642033 +136674237301602 +52976877377674 +146205120088460 +49074508325504 +501952907407662 +189722035598205 +492922697371655 +431471593453903 +481614269130949 +471680887169753 +351578633729467 +471191475386800 +288616613474039 +384834978008884 +60667127013905 +220470592783113 +444267980365645 +210059241076439 +152770795790322 +348016980101456 +304143405666356 +369601808312624 +264483111859041 +292132376432937 +472385718837013 +524542054088857 +308632875292630 +194029449109238 +462502786632441 +70557592126080 +304097077332999 +198527566220668 +331172750267871 +523253758482573 +499251778216230 +80897602434280 +387794804821425 +544908222211762 +326671703691861 +135598883012325 +142365942316538 +492721663086929 +213951563163055 +394393903797874 +290522870292932 +182914477182004 +223198525942220 +75869265279096 +414799095382970 +287490034199474 +523465321532044 +135022913414560 +510461171825598 +311000926685572 +541337017900168 +500641298981547 +120685406799225 +316840736221299 +522131392022750 +477123018135158 +115420588471877 +302237915503073 +447963220630318 +404923093829632 +240831200717587 +400600186863182 +235118413055933 +39004942290708 +479675695229781 +549565736170069 +486754640141634 +46859837041286 +218656062520090 +445549331939386 +223948704192947 +55566371538735 +404905940172373 +541959338612610 +212496898689821 +370895187267202 +316222877805606 +77893555385907 +179829398923634 +426570138778876 +538860158884012 +349591436029128 +442795109733284 +213126739145670 +15348554087411 +394999857150191 +125675725522718 +144541391341975 +175211914359342 +198221293364455 +255731946793186 +532774048891313 +159030871646409 +284824949618143 +475410706253017 +493796957340778 +284035494576161 +470797755446900 +367005165625750 +93807953521499 +294608291644291 +106790900200793 +125691009169558 +63047176729162 +511970597265180 +465077014379805 +417796052955628 +318260901890872 +238352657606585 +497571129409225 +161607873414432 +489118528904132 +44223444580099 +357679706204606 +332122825129455 +25442475099127 +461360583220262 +261747250847474 +432853274991176 +335784849310220 +66865370192237 +503649483444080 +409073840054372 +102025798187812 +120523535582597 +464441274522540 +88923620317176 +144857001834803 +265343093186718 +423187343385785 +394746965208628 +358313310886116 +159728913257092 +391438905059214 +360849222741855 +319264775492793 +363205786676280 +345900302930928 +433491002443610 +463320939591334 +531369525714351 +391443254588774 +461258504001430 +539034747355315 +226885062994304 +339135801797264 +207704127501087 +234842013078217 +410600687278852 +160750189544199 +187617943784288 +313136787361981 +501266171645236 +168130881477827 +377923284848203 +379964633575318 +357628776004886 +295882469898250 +381413062695973 +369930600844199 +29586594292111 +291883022047578 +55706412680266 +527464998055975 +493612541032824 +57288363593916 +356813430082169 +492355181989257 +32292496291549 +429563506501426 +240056118721588 +316321802074394 +209797748924012 +201669688814223 +513296345340099 +172460195914576 +373426778963171 +192173190915589 +511057931122597 +13389316624753 +386742737801437 +107934587011651 +528592913901486 +87510930630343 +557793132276274 +540905592676414 +470529512278360 +549299416997840 +260820622504808 +409177275609323 +120509839609613 +322736210181314 +11856182975776 +91005909372147 +46487542697577 +278679647554882 +199344047399631 +393244601868992 +185292061803842 +378118824938225 +421355721806455 +479660617949864 +372819681563984 +252209798358533 +524649308744885 +280803549548860 +471439026172199 +111179869898338 +273181456094512 +345838589327197 +171321144012242 +408464530449721 +209257629972247 +249481840101088 +385879622213005 +251287468803038 +363992392574902 +155193085658744 +424003545835168 +77856594609715 +200736382712842 +58086968526881 +502884843280754 +192361374926584 +150816200106595 +39346181457910 +353610070887497 +146855444424235 +283584063116897 +326105248780707 +315805838130491 +118863264245797 +366112512539909 +250648198182500 +27676020980962 +67200661461464 +255112240794255 +422874173316204 +518645605478653 +297841993382451 +522465000410692 +12343791492976 +460141654936108 +401422946238802 +410642465041991 +209931770514806 +62863669431617 +272020397747285 +432268826248879 +142569234187618 +391281284831727 +528776261003782 +530373987537162 +456872077961001 +143877478705735 +89357494220755 +87449416851982 +299429589434953 +402003677109693 +259775664066730 +371803039508800 +390492574718593 +51653533515123 +495705884946536 +348029566444949 +31717397621632 +79357124334397 +140161116164327 +253779780626277 +160082644655310 +418470144052696 +561296664156998 +364140041439707 +50589050245379 +318200662541184 +170477088263013 +282245173555887 +36230305244967 +480651589484083 +459293530214437 +365766581179633 +540343139663118 +558603386953946 +298576934755514 +272047361405297 +272804974847136 +149976836051538 +77534942107057 +383316486088625 +527398466623351 +463722205984514 +547267968574772 +381197526950025 +429831671442716 +364270244822417 +15158828772424 +400439187922955 +46214792352722 +283781452786462 +28657293907448 +411454641729031 +450598209973569 +325661486540662 +562365980397548 +77057552794622 +512174327129718 +171477377390814 +453080748879848 +47282551766978 +225047904467804 +507354583487708 +452133953127351 +482363842121704 +556574880716998 +2813583953049 +493605171061962 +541917897398493 +256745227456210 +235288530123606 +373064399326787 +55251400371656 +95186339876970 +161793072200101 +429927068933367 +295357522206866 +52912352535519 +117004352488943 +190206426382221 +43498777979617 +418324227621099 +342632197200803 +244870236168219 +179029137046558 +426225604699232 +249104746935116 +32408580679309 +148701015136357 +158486409562767 +523777284601245 +181274635665011 +98008910190303 +325053362537293 +420180503205720 +35659385515094 +151068141319375 +108205017319853 +438572856183849 +545058424414594 +496145226519990 +509442202371012 +78440020714653 +547082650926595 +221007061292687 +350833363497385 +431233409779983 +272920463376495 +136969801173962 +402543858366335 +369834207606974 +182799814150783 +399747077574945 +476410389584382 +94388873275888 +163999722091194 +301384548565625 +140526902585586 +20946592283827 +248910535577272 +362674268932301 +559048491429359 +366845662601292 +138056695149452 +232040813156125 +240267522836398 +182968004963155 +158137090703620 +245133554958397 +108984822411587 +491286157054600 +454539208187302 +488825714030765 +29513886138152 +163566136121393 +255475143490450 +367855876188427 +450628808615311 +251729765649775 +220935194372434 +295261403788245 +141965824948765 +6688094640583 +8634260570625 +185870254212197 +20509930592910 +494017528048863 +407699895200353 +305459610200483 +361619895873226 +173773652740752 +145814820648124 +148014563736280 +124529323315269 +523048198329855 +100120633149193 +471622220141189 +111050814150670 +522236524532479 +339923886133481 +390855021420657 +212320955023781 +357167515391767 +222230347106576 +339357732488420 +288448098964519 +108928497286990 +293198118354739 +124712072918047 +246077954018496 +144199740014891 +310941613451054 +207242527219624 +111364582979393 +199029324992110 +64735734828909 +202165624661859 +244457176421601 +433694890853839 +394057288765118 +399663400748769 +132884307021331 +57666674633911 +307685474718809 +22502804320856 +38060928026986 +138525594621250 +203696693749312 +424535624708325 +179641654168586 +457402455285831 +221339979158515 +136592467624507 +475097190824473 +486284951829976 +205790543785820 +550957216593426 +284461378132843 +271308071549626 +535158926814062 +511654147930965 +309384315871103 +413191418812683 +522890285950216 +281792823461370 +122559072108477 +413508513565518 +318986927945219 +122437918055460 +290223480475205 +497941618873330 +218197017646192 +364402231530242 +327896327227508 +428726553258181 +370902708007354 +43774960360563 +361278420059350 +115256105561172 +172281199034804 +264879345633815 +323002552806352 +423108623763505 +431935093145770 +6012037673423 +159310475756330 +544302926765753 +139604170255064 +543817796744497 +555409085459962 +349626526090372 +337713819137956 +314978972433145 +530307265143986 +202152776868164 +148527437240880 +471507967260666 +316197161480901 +555195472075728 +123701324387481 +53240208623618 +526293272257685 +386458202177700 +284452282584570 +417541376821966 +433404665439729 +401549038397158 +242269583990498 +514660554612855 +218411755014493 +292654303514044 +258648220415629 +226857612057545 +129202675144622 +473677384723672 +423297782650571 +100675347958449 +409724426983549 +281063668646570 +57391513620658 +371915811358537 +298617508357997 +481895141748356 +157000346734215 +471607452668645 +502090585820229 +430533159015234 +200533269738039 +27201251630712 +324603777532624 +83811511637404 +20266647866945 +233256224976819 +523885097390096 +85682778056962 +439817559850394 +511904587166333 +351094977302027 +584549857031 +437452474271627 +97831920301042 +182579575466913 +125235084158538 +475148717771259 +156695873622789 +375414053790608 +39457166198009 +562633895591616 +115693173456541 +394668457634988 +136733242860074 +222558615308359 +352347540357187 +344943529886204 +504268052602929 +255036380707568 +215143879862451 +252410828551311 +102339420437616 +462474409821781 +456249721238159 +217459368216762 +161885155796593 +152705726063101 +368579089792527 +249309695725868 +331526200894304 +59256823627951 +300689392861024 +143220495186529 +455086999483749 +230958825825411 +292791851226149 +126143882936421 +239496993839586 +227653269319990 +85505467741159 +411086742448603 +200094117693889 +342667166972211 +178466729306667 +90181744561219 +109420275112684 +177323484126989 +149818935228622 +478831737609299 +61423308226335 +338986328996924 +324052632846719 +385945542792413 +140534775190815 +102504989223829 +422747843101819 +178534347982552 +560982174498823 +189223802266815 +250916202466135 +480862738328256 +155275682003472 +487029219266509 +453242000220716 +276609823547167 +469634900966590 +470072877875549 +412023514539875 +445445565636004 +375687067621349 +381515953425829 +22697884849452 +166548120506211 +125387616765580 +263202905537216 +362274032649519 +272931771811428 +516431726958542 +308456144175981 +342965177343316 +89137851204935 +44546940900358 +28097261430184 +151312584425572 +54195626834515 +488920774666216 +356019081082589 +60552616508441 +34326977758050 +377262449319555 +531934512345611 +306696903125088 +409070705413001 +278086952041285 +241475334218792 +60667274657992 +403666255868390 +216199438304091 +41649888279381 +232290211027008 +350862167155945 +227880952570891 +461841518007231 +217693902848632 +39550709754459 +442178285929437 +399792872369258 +394934521177956 +160988907673237 +478513977510611 +241929705455405 +56281591707766 +275365802102760 +492358229420878 +199204074353288 +213376711382733 +271532997955848 +349183760410681 +412570943106394 +10877652825593 +130494918516144 +38262986516822 +286042333962138 +470124447655584 +290229424802935 +525562135943326 +388696627299172 +84737699648678 +359237818305933 +122496835355668 +85463702379839 +304174533307205 +288097517484777 +145066772490515 +410335707905087 +421273513480373 +377640003874851 +562381002137653 +255598870069556 +490413632871037 +124154345267424 +452970699618762 +221352269741163 +549003533228190 +81512892429007 +530133158985307 +60445232385462 +433707444593759 diff --git a/package.yaml b/package.yaml @@ -34,6 +34,7 @@ default-extensions: dependencies: - base - bytestring + - containers - mtl - naturals - sparsec @@ -52,3 +53,6 @@ executables: 04: source-dirs: ./04 main: Main.hs + 05: + source-dirs: ./05 + main: Main.hs