diff --git a/.hspec b/.hspec deleted file mode 100644 index b43ecad..0000000 --- a/.hspec +++ /dev/null @@ -1,2 +0,0 @@ ---rerun ---rerun-all-on-success diff --git a/README.org b/README.org deleted file mode 100644 index e69de29..0000000 diff --git a/aoc.cabal b/aoc.cabal index f58726a..ed8bad2 100644 --- a/aoc.cabal +++ b/aoc.cabal @@ -14,41 +14,11 @@ license: MIT build-type: Simple extra-source-files: README.org -data-dir: data library exposed-modules: AoC - AoC.Day - AoC.Riddle - AoC.Util - AoC.Y2023 - AoC.Y2023.D01 - AoC.Y2023.D02 - AoC.Y2023.D03 - AoC.Y2023.D04 - AoC.Y2023.D05 - AoC.Y2023.D06 - AoC.Y2023.D07 - AoC.Y2023.D08 - AoC.Y2023.D09 - AoC.Y2023.D10 - AoC.Y2023.D11 - AoC.Y2023.D12 - AoC.Y2023.D13 - AoC.Y2023.D14 - AoC.Y2023.D15 - AoC.Y2023.D16 - AoC.Y2023.D17 - AoC.Y2023.D18 - AoC.Y2023.D19 - AoC.Y2023.D20 - AoC.Y2023.D21 - AoC.Y2023.D22 - AoC.Y2023.D23 - AoC.Y2023.D24 - AoC.Y2023.D25 - AoC.Year + AoC.Internal other-modules: Paths_aoc autogen-modules: @@ -59,8 +29,7 @@ library BlockArguments OverloadedStrings ImportQualifiedPost - DerivingStrategies - ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missing-kind-signatures -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages + ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages build-depends: base , containers @@ -69,7 +38,7 @@ library , text mixins: base hiding (Prelude) - , relude (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum) + , relude (Relude as Prelude) default-language: GHC2021 executable aoc @@ -84,8 +53,7 @@ executable aoc BlockArguments OverloadedStrings ImportQualifiedPost - DerivingStrategies - ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missing-kind-signatures -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages + ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages build-depends: aoc , base @@ -95,7 +63,7 @@ executable aoc , text mixins: base hiding (Prelude) - , relude (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum) + , relude (Relude as Prelude) default-language: GHC2021 test-suite doctest @@ -111,8 +79,7 @@ test-suite doctest BlockArguments OverloadedStrings ImportQualifiedPost - DerivingStrategies - ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missing-kind-signatures -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages + ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages build-tool-depends: doctest:doctest build-depends: @@ -124,16 +91,14 @@ test-suite doctest , text mixins: base hiding (Prelude) - , relude (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum) + , relude (Relude as Prelude) default-language: Haskell2010 test-suite spec type: exitcode-stdio-1.0 main-is: Spec.hs other-modules: - AoCSpec.UtilSpec - AoCSpec.Y2023Spec - SpecHook + AoCSpec.InternalSpec Paths_aoc autogen-modules: Paths_aoc @@ -143,8 +108,7 @@ test-suite spec BlockArguments OverloadedStrings ImportQualifiedPost - DerivingStrategies - ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missing-kind-signatures -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages + ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages cpp-options: -DTEST build-tool-depends: hspec-discover:hspec-discover @@ -160,5 +124,5 @@ test-suite spec , text mixins: base hiding (Prelude) - , relude (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum) + , relude (Relude as Prelude) default-language: GHC2021 diff --git a/data/Y2023/D01/riddle b/data/Y2023/D01/riddle deleted file mode 100644 index 979a9c6..0000000 --- a/data/Y2023/D01/riddle +++ /dev/null @@ -1,1000 +0,0 @@ -sq5fivetwothree1 -six5gc -txb3qfzsbzbxlzslfourone1vqxgfive -3onethreebrth -cseven7nqqxnkzngndtddfiverkxkxqjjsr -2lvpmzh4 -threeqxqndvjrz15 -threetwo1drtzsixtwofourppvg -zxhsndseven2vbnhdtfpr3bt86 -onethreelqqqqvj7eightnine5 -7sevenfour5gnine -1seven5 -vgxhqfrvr7vfsxqms3 -twokdkcbhtqxfc87rkgctwo -twosix9threernltgbffour -npvzzqfb5tbbn4cnt -jjxlckssjmdkm5szklnq1two -lblcscglvseven53251zzcj -threesevenzplpzlqb1 -threeeightxhrkflkbzp2 -honemkmbfbnlhtbq19twonekbp -vdttwoeight7eightoneone6vq -eightvszlvntpfourjqcgmjr3 -dslqnmd7k1twogbvhhnfmtsix -twocsnn7jslpsppxmjr36eightss -7eightrdcz74twolvd2cctg -4threerrqxpmmzhrqht4two2 -2seven9two -479 -threefour86 -5klxgb1 -dchrpzkfpgqzgjmpdcthreeeightsix82five -seven5tcls -six5three2six888zd -75nine274sbzd -seven7691dzflbg7seven -bjtrrvpx954lxr1qlqdvbldpt -zthree4 -sixfourfour68 -fourrjgvksixtwongbvkpff9 -3seventwo -bzqqjtqvfssevenonenqzctcgbch9three5 -4fourseventhreeck -mx5njh2 -1onebqkdcbmvrknghnn5frdjtrq -one1nineflfp957vkdgfrjtfive -7eight7fiveeight -zzxrsrp313 -1sixcksrxn4 -ggqvtwofrrfdhbsdfdpzpbjjckbrg5ninebqszf -pxjcgc2ggqscglhjpbpr6seven -sixsix7twofivexgdm -four4eightseventjsqlbhrzvsevenfivesix3 -twotwo8chjmb -dknnleightmmmmrmcrnr8 -twogzdgdqhrs3836 -ninebsztzhbqjvlbvhdktqjc6hpqcksfive6 -twofive1nqdxdvvtvf4oneone2two -1eight8nkmhcfvzn -dzmkzzx4lfljtzp95seven4qqnpjdtr -one7sevenninepsdgrjkxgdchjtxrx -fnltdcxqln314nine7n -three7sjgtnxgtllnpndfourfiveseven4 -64snine7 -ppjlpsnsbmthfivelffive59hsnmn2 -sevenqftktpnj6 -ninethreetbgprvchxlnmfs3fourhmcz -xhl1 -4qgf -1qbhrmfcffivedgtfour -eight86bcqskslkvlgone7gg -6pccldrtmsdbbrcbcq86 -ppzrxtsix94jplxff11 -786seventwoonezvnqrsix -7threeseventsjcdr -fivebfive3nineffcbzprh -4glxskdkjn -n8 -kzcvdtbq49 -7xvqxmhcfkkffnine93 -hhzmdnzktbtwojvlckvjsixeightone9rxqb -one3sqckgps8 -lscdfp8eightcgdvgssveightdldsreight -jhjsltwoeight1one -6trxnfcqdmlrmf3three -one1kdclsglmsjmczsksdfour -sevensevenshlhsvtl8three -four522sevenfourcrthhhvkj -197stxphm8 -8sixtwoseven6five -zjdhldjcqctkltggninesl6stplglmkn -6onesixrhmjvtcmbh -fivehnj8dninefourfive3 -4fourfncsrhf73 -nbcjqhlckonemdbcsvfsixvm3one -7seven6seven -fournfive6four9 -6brzhdxzmtxfoureightxg6onetwo -5sixmmddqgpdnq4 -6ndzzhlrdjxjqfxvss -gkvoneight29two -4threethree -eightsznbxf8fiveninetwo9vgfbv -8kzkmqncfhssjblmfd7hdmpkghsz9mmbsbjdxdlfmnxfour -four2threeeight19bx -1oneseven -fh5 -615zkzg -25six2mrtjthree -jvvmbfzr3seven7xjbhvvvhlz38ninejk -vzjthjkrcc5six3rrnrseven -rjthree3szfourbnvnbh7hgjzcrhfptmlghkk -tgjtdsnqrq39seven3hgqc9 -1vttzfour9 -6vbtcqmpk213sixzmjcnxn9qhdgr -3sffvspzmxjjfourjxjbbdfj5 -bdhj9lz1np7tvmfvptffhfdtbxld -kbkxldln99onetwoseven3 -rvsthree9seven4seventwo -32zbjmhr -eightfffkdgjqspgzmkvzxpls4one -three1kxqr21ninemhrmheightwoc -fqjvtsph8zpghgdbxrg4 -398seven -bnine1two5756 -7xkqkxjjvmd2n77 -9seven79foursxdqcvttwo -6d6zfxcmrzsixgmlqnfdn -kfhreightfnhcxpcrz9hqrqtmknpjxrt4hrk -seventhreeoneone4nngnlz37 -fphhxfs8jzkchp8twotjznmlxhht -474 -58eightnzxfgndgdvbvphzsqxqcffdqsvxtwo -3two5xvjjthreetmszrldjlknq -1nine7 -29kfrrdxvrmgjvfpqjcqlplfhrxpklzcrvndmdhjhninejhmph4 -fzbq39bs -85eight29fiveccsrvsixfive -sggksrnseven28ninesixnine -bggkmnrbjknxqfgttxsixnine4 -73nfive -fivefourgscsevencntfpzzrnineprdjqdbmq5 -6four2oneeightljstfshztx9 -sevenzkdqst6jncvcblb -dxrnzlsix5 -two1tmhmg4four -2mzfnc5threefourthreesixfivezq -jeightwo3jfzqdtjzschpzrj2 -5ccchkjzvqh7 -jdpnjqg3five48xmmptkzmvg -rgn146nineseven4six -eightonetwohsxms8six94 -eight4znfqgsftghtrhfkvj -btmk5834eight8mlcccnrzrb -15ninemhmhmqlb -85skmrvhl74 -dbvhkthj4 -one6keight -sixfourtwosevennine7tfrqgk8five -seven1kxcqbm1 -tmpl56rz27qfdfour -3eightggcjbnktmbqfivefdmczl -b2threethreemnxdhrzsxqhchzbnvhppdcqcffour -htpgc4blggnnzts3four7 -8sixbdntsg33njhtnsnsix -fourfour5seven3threesevensix -78eightsevenone -four5threefive -cjqbcfjnbf2six -five9ninesixonejdnsvcfive -rvrf9cjl3eightfvrzpjnxr -threeseven5 -vxvmpkffrtwo9twofivesix -67xnrcxsp9rk -mvzdgqgrv77 -one42qkfp -1vtq -225eightworbm -three9onefive -qxoneighteightzxlfksc3oneeight2 -mnqjhg6ffbhzcsixtrbfr744zlg -8nine7 -fivergqn2seven -44gpslt6nine6 -1six98fsgthctwoseven -ldrqsbjrtnlj6lqgptgplbsnhrhpsixzqgpzkxone -7knxhcfjvshqsxsqrponeightld -zsixsjbltfournzndqbqd2rone -qpnvkqmdthree3234ninefour4 -cdnhqqxxp2two6six -five9354xnbjjx -9eightsix4jjjeighttprrhqvqlt5 -lkcfmvtonexklgknxxsglcd5znseventwo -four31nine56pmh -eight96tb5t2nineoneightrlb -fourncvgmslx695twobdklqzfour -8fiveq75four -5six9fourfour59seven1 -eight2bqtqdjsvkkjfive81vpkvmbpxcp -nvxvgqhfouronefive4sixpqckgf -25onetwotwo -seventhreezkntcmjqeight493three9 -ptd58qrtfqj -2985lvlvlrfzrjmfqbrmgtonejxtgpspjnx2 -6qbzxqvx -three81btcngfkjj28seven -36six8 -5gzthcpffr2 -6kqtntqrzxsgksevengnzthree33 -87fmnvqpczzhone5seven -nine2cxpmrhp -vt46xflbjdkkb7seven -eightrgthreethree98fourhgcqjgzclc -5nfsbcvmfv484fxjtwothreefive -nhvcn4glfxtkfttthree -6five9qznggpkflhzht7zhjjone -ddzghtvmp78five4gzfnnkc -sflvnzkrjtonenplrbkzxmt9fhfdzxrfjrtwomctkrlkhghfpcmkn7 -sjxspdjhg96three112jz -xdbgzlfour2twosevenzfdtvxq6 -gdtnt2fivelscmsix -9threefkjkrskxrcjsbthree -ninepmqbdmlkrmfhpgsz3twothree -onebgtdg5mqrfxvnfkseven -6m949fivezthrbbkqfd -2five94threeone -eight8four42vb -2ninetwo -17two9nine -3pdmsixfouronethreesixfiveb -five1two5 -nine4four -three5lktjmlnbph -eight6onelrdlsevenj1zmmbtjrd -tkjhgvnpkvgsqzjrnine2hltwotwo -89xfpxgdlcpznxxfnpbzbzseven -293threej7four94 -v63 -pxccbml6sixhqnhmrfive -kddsix4fouronevtrgbvtxxxsix3one -5bxqjkdhthree -six4threezgg2 -fourtwoeightmftwo99 -t7ninenineeighteight8 -5xvvlnqkjs4 -seven7one -vqfhpk7hnthreeseven42 -7threef2two92 -2onefourckbrvqzq9 -tvvdxrvthree2 -seven1fourbvmfzftwortnjd16 -pmttpsggb134mlffcsnbftwox1 -2dzpvqtcxjfour5pgppvbk -9jfscbjzq -fiveninefivethreexdtgnbdfp5onefive -six1927 -one1xjjkvkkfk1zxxrjhkg3sixmhcgc -7fivetnncl5 -zbqzdkkthreekzdcbhpveightfourfivemrmpzv3 -twothree51three2phhmrnnhntnine -bfzzqmthtgthree4sjzkmtrnplbxeight2eighthj -nqsflrlmlthreemdzztlghgj5xcj -fdtflsqrxltwohcvsnrndmsixeight7 -fourbmlftwo2mzz8 -pjjqzmsx4ksix -six1219one6seven1 -gthznkpp31 -nine4four32 -xktzkqmmxct6fkhpkg -one5688sevenvjjthreefsvxt -36twonine -3fpdqtzrd3tslzgkjzxd5 -bsevendpvtmnzl9cqgjfjbzfv222 -lxbhkf2nseven79 -gqckmfeightnknineeightsix45four -n78 -42nggdthree4threefsxgjsixjdnqzkxdb -gbfbpjcjnzjrrqmm17473 -1eightzqxxnq -25twovmnltzx -seveneight9qtcvzvmone138v -msixjrqprlnqhdfourjdmsddzseven85 -eightninevvcp2 -mtvvjsck6hgkjml -121fthreethree -jncgfj3eightr6 -468four6xdlrgngbhcxbtf -3nqqgfone -1zmzjqscfournzbssixeighthmspdbhlpc4 -twoonejmkb8sevenfourseveneightsix -qxrznqone8z8sevenninesixsc -jrklnh6threeone -2xfnbrk6frzsvjhb5sixeight -ninethree8lbpmqhsppd9fht2ninefql -7bzcnthreejdh7oneightj -155twofourthreemfive -5ninerm -9lxrfoursixm -glvxvsbsg7 -jbrbhzrsftwofour1 -two4hkxztgbbgf4ptckpggkbvvj7 -vhqhqghjscvc3rcgttfv -ninetwo9threemhtsn -cnxzthgqz6pxfbsmkmm -45jgrr4ninetwo88 -dkhgscrthreeeightsevenhsxjhr6five -6nine7vpfbvlvdvzvj -goneg4threeeightslhlzkpqv2 -sjqgqz8oneglvzn -crj32neighttvv5 -blqptxbggl6three1two46cbdzt -vpxnvxkgdmggpnine61 -22kxn -5zvsmtzqjhhmfsvv4 -dkfknfnjxtzjrbfk1 -67sixzns61sdrpsmjsrftkdgjlb -6lnffcgtxfivesevenseven8 -px1one96slxflxdfxhninehkcszmdxzbbjmlq -3sixsevenseven7vlvdlcjhccvmlzcn -5frrqhseventftbln6 -three23seven7sixv -ninehscrb9 -fivepvsxqmnbmvgphsevencgkhsnqkz1rxvg8 -pbhsqvdxhf694six66 -four2nineczdtwobjxkfnkbg -nineml1jbnm6vhpsgmdq2 -three63vgbm -665 -htd7pvmrpptvtneightnzmngone7 -rfeightgrfffksdfmgclspbp7489 -4fdxcnbfjtbfg63ninefivegkmhgz -21eight7one39 -foursix8vrzhm -two8sevendneight -tncdggvfivekmbljttwo94fivetpstp7 -68seven -onenxh9eightone -twothree3threenine4oneightzkr -onetwosixeightkfxnfnssd5 -eightthree63five8 -6seven7one -mqkkhbrjjm8v4 -8six2 -threetvbonethreeqmpkxjqlqgghqrlh5sbf3 -blrnd9dkqgjf -41onervcmkgnpcbx52 -frmdcps8sixtwo4ninefbdjfour2 -8nineninenine -pkrln2dfrkkntwoonefjsfgx6 -xvrkcmfxpfourfourrxcxqmhfour29ftsfd -crkmrlrb4fourthreeeightcgk -7threemrss4eightsevenskjh -eightsixqppfhv3ztn -3threeeightseven5 -gkrfhthr12threeeightthree -8vthczh1 -seven6hfcfmrlkmqxpjq9eightlvlgqmf -fivednzg85eightseveneightfive -dz8ssixkbbtgv -rdmjrcgeight6r -five6nineonesixrlnhj -zh127four7two -six1sevenvmlnvkgcldsrrblfbrphrfsx -m584sixkgng7bzzpzjzbfzqpgdcn -2twozmvzzjbpdftm186eight -twoninekvspfvkbxtkc3 -fourrchgqkxfdzfccppqtpffhrtfive7seven7 -four483eight -threelqlc7 -xkgntdjninenine8brkjfsrttnineseven -9zkds -twostmdvsbflvqbdgfs55 -twobnzn1czdfpns -5onetwo5 -txsflrhgklnctfzrlgmplr8pdxl -93four882mgqmqnsnx -sevenfxschslsncjgqsctnineonenine1 -brb9 -7five9 -three425 -mkfone4ninefour -bkpdhbvq7 -dhrlbjvcgqdtqjlk4zxzjpvdfm -67threefive -nineninegvmlfthreevtndnb9 -ttmznl3fjdcbch -fqsxkm9nineoneh761 -sixfivesixnjrtqdkqpc2xdhlrrmp -eightsix793nvdvbtxxksix -5veighteightgscktfbtd513 -vfvrcknfls5q -7seven24rfpzpftrkgthree43 -qplqnt4threezldtjfdzv -three1ghfglcthreecnzjjphgrlmone -eightthree84 -xxtpxgonethree5 -3onengztdjljx -cjrtxxlcpfcqjmgqknineseven2 -sfxhqftcdht4eightthree -2plnnlkqjnfxv -ninenineeightone4brmgnngchf -fivexbtndsonesixlvtjvxhl4sixstn -dqcztwo8fourninexm -5532threeqmctrbnnhk -two4pqsjlcfone8jpt -onefour42jqs2 -4eightone3gvqfhmmrnprc -6sjlcfbs8fourfourfiveseven -nfdeightwo31threeoneeighthjnvcddclm -149two -8ckgmfsp32zsnzznine1 -sevenfourlfzztcbplszbninesix1 -htdtwoqxmhnbfxr23fiveone -qvvqnineqf1five -rchcjhvqxthv89pkqrffrvdthreesevennine -kzhtxmrzz3 -sevengnmtfxfthreeqd3fzkbvpgghpkvcgzhthreeeight -fsmnfc3one3five9mkqgnkkbpt -js9hbszkvngrnine9trbdkr -grdflnvhrnjcxgtshh95f35seven -xb9fxdbcbdninefive -9sevenmfvdbljjnkkh6shmnhzhvhczhtqhnztltc -tgkxpgkhdrhnpltgptdfj8 -4onesixfive -seven1rzpxlkmsbhfivexngj -plmhsjrgm414 -8twobllkqgllczsix6onexsrvq -4nine6 -vgfjtxhmqjtwopfrgbmr3 -jhoneight9tsgeight8fivejccrsblkfsndpcmbjm -dcdkbmkttwothree3six5six8seven -seven9fivepxlhhhxpmmmtrvvxgrzsxx62 -three59cksmfknhhdthreevpntxrnm3oneightpg -ninevcctklkbfdtlqv3five384 -f4999tcvvgpdn -78three23sixonecqbrrkthree -lcsrnr5rbbmone9 -eighthjjsxhvf7qdxnqsjpdlmzkv -86four -1four7one23threejvxh4 -seventwoone9two -ninejjdhg3fzkqp9 -nine14qjctcs1424vkc -two45 -gpzgdzcqone55nine -766fourrvhfrdcqvqn1 -cqfjjgbzhljcnjfnd1vhndrczpnhthreeeight -eightbzkgpvss7vpz16 -oneqcxqckg2dgnxtwo7lqjslxmeightwovs -tzvmvcjxk5nineltsb4three9nine -mkeightwooneseven2 -nrtkxhsevenzdfive3 -6kxrt -9gp838 -3sgtlcgvsix -dsqtwone42 -9sixonekjtpvfoursevenrhfqgvc -3gh -eightzdzhmjj9onermrzjdlq3sbgtqmkcchx -22fourthree7 -fxpeightccgmznphxghv2 -five8eight -seven7ftgqfour -7fvjtfxkmskseven3xdhrmdmjntsneight -vgqspdltzsevenbknftljmsk71fivechpjzsvlnm5three -2fournine6 -fchqnvjk51eightlfpmqtjtkv4bfpfour2 -1sixltcvfh7nngbcfbtvsftwonlncst4 -sevencp3sevenseven -lsqbbjsrthree5 -tfbbmtvmcnjbdm1dtwo2ghgthc -9lmdspfheightxrgnsffcdkztbvfsvfxkqtnddp -2gllnfivexgnsst -sixm4 -fourthree7twobcm5vxdtlcmcg -onenine873gszpxcsonep -2threenvxrbsxnjkonernsqrnqhzmsix5p2 -sllbrnpsjztwo779 -6dfive4zqmhpzcdqj8eight -5nineqdmbg -hbrffrnkvthreekjstcv7hvmngdfcn -21249 -ninekdgfqppzt972five -7ljrvzfrklgmtqrstxkrkbjbpzeightxfnvr9 -sevenfour9onesevensixlczmmlg -kcteightwo6752 -fivethree9eight -zzgmn5nnfndqeightbzbcsxqpzj5one -6fourvqfhs -fivexfqvmrpgpgxz3 -txqbhgcxjfive1seven44 -82jonehgntqmxjbs5two2 -4eightxmz53 -lnzvmqrsgsfiveeight9 -threefour7 -seven4ljsevenfive -1jfcvdvgmb7scmcfsbbnine3 -kpxpxsvvg4fcjxjcmltnineone4eightsix -zjdcddgtwogfbbmdvcczbcfjpcdtslckbtzqfive6nine -4tqghjdjnfour7six3 -lgdtjjktwothree89scfivethree -3xvvmzshronefour6sevenktdjmrmfqtnvhvl -9fivexcpvthree8njncvnnz4 -gcgx5sixdgqznrrstwo -1fivereightonefour -tfclzvrhb1five -xcq5 -five9four8fourtrdbmcjjjvnine -63rlxseven7bltsm -1bnzzkgm7seven5onezqjvzrnbnxkgffvt -sixone9 -7jzmnhjvzxfive8 -16mbrtmstrhhsevenxkhgkmhreight -ninetwosevenp2ndddnhlczfnzx5pt -bv83blnnpfrbsone2ninethreethree -zjjvslrqpvrhxsix5z1nine8six -cqqfxzzxrnmvdvssevenrdm1dckrhjbdxpgqshlnxvj -78sevenkrsvceight2eight -twogrflcthree5gvmqfkpjfjcnqdhfourfour -dcttz7sevengtgstlznlgcmbzs -four64fournpxmfkdmqn1 -gmgndczvqeight6sixhhfgdrzbl1three99 -twoseventhreefivecfsdlmnzvlqbrszjdz2 -onebh2 -5tcrkzggfdfzq77 -gjhfrt871hmgsix -qn589stxkhnlnhvzptzs6qlfvhz -qhtnjvdmtflxffour6sevenktgtr8 -7sevenhjjdvmsixpqzxkkzcqzd -849six1kt -trhhcsndhtwoeightfournineszdrmrqhsq4 -dfzrnine9 -roneightgqnxnd18frkjgvhpngpcs9 -3nine8lvkpzzqjkhxjjthree -2cmdmvnzb -dkxscqdrctgxzlflrlvtnkqlmrlgsrqseven8qlqrdz -4fivethree -2qtbhgfjcpchsjslm -gtvvdchll61gczsrlxhgf356 -6onegckf4seven4sbntwotwo -ccstwone1872hdv2 -515mhxpngvzqt -fourjhhfsbonexdzhgrseven3 -twoxklx6seven4ninethreertczhbsfour -rhtl4pg1four -6dlprbkclc4nxvfqkpt -5onelkmrhczkm -zqhxmhgkone5xpkvsntwo3 -2two461 -twolr6two4bzssevenfive -2oneone7ninetsgxlx332 -eight3hvlzpxtcs -25eight3tbpccjbx3sdcmt -krdzhfh2sixeightgrszdxt -tjxlhrgmqcdspzdb6ssgqnxcxlvbfivetwo -snninedqlbnhqzjthreebhfnfrf3pfcqzfnffhsix8 -8nine3 -9five1xlbvsix5sdcrlhgtffxb -seventrldtzv5ninetwofive7four7 -blbvthree1grdhltsevenfive -fkrhh4gd1 -1jncdsphsnjzkxphbdftksc5dtgsixone -fglnthreehgkx31 -threexnfour8threefive -zzjnmhvbltp1 -6vcjxszkfmkprpl32cfjsrhzmdfourjdflnfql -49tlsqspjjcmtjvpd4 -7sevenjfqpktqpdhonethreefpjqhbjcpfourdzzcbxp -xn7sixeight9dphpvscjlxdtwovjbnx -tzgrvrkgbs7cfzf2eight76eight -4xlnzqrxqk8two97vxjninelmhzhv -ninedqlbgpbmf7dhmshsbq2eighteightpgzq -fourthree825 -jcqftlf2threecbnine24lds -fourtxnine8zhlzcqjmvk -5two3 -zfkdgfourtwoc4 -7fivefch -fourqrvjmbninelcvjlgqxmvhf2hldvjzhl7seven -vkfeightwo8four5seven -79fxdpd -tdjspcsixdqrgkxvk1vjmggfpbrvfour -43tnmdpslnxfourtwovnzdzhvteightseven -threenine1zklgrlllhonekn6 -one2zhnthreez -bone11npzv -five44614jnzxvdjhm -277seven1 -6djmb65nglbkzrlpfgsqchbp18 -ninesix2four -four8nshkzhzvxlxxnngxvfive -2threejrxhhqkctsthreemdqzpxxrrglnine8nine -1xdm -kgnprzeight7nine -mssbnjdcjvvtpnsrnslmeightbzl3nr -9dppkrcf6oneoneeighteightklmtfvl -8ninebrzqx4kbhkcp6 -seven1hklsjbdqzp1zc -twofcbxntcskg1onezzqfrff -94xssjlkccfbljz -spfive47ssjssevenrz2two -98threelc676 -mxrgthreezzkhcmoneseven7three -crdvdtq5sixone97 -8eightbvbg -gvjscdfkdmseventhree2nbvbzmdmmtrfive -1threesevenhcxggpds4two12six -5onekxzkfour8 -2ddeight4 -645 -ninejjrlhdhjtzmrlvljfr98 -seven11ninebvbtnbzdmblbjvzsh -9nine59xmdktjsnseventhree -qdxgtk6126vxcgtxkkbqjrpfntvsprq -75cqkfddg5ninejkbvpsbcltssh1 -3onerfpqbsvone39one3nrxmbk -1612three1 -8hqrsksevenldcqrcfxhr -ninerfkxndfhhkfivefjntjzxhgpbbffvfour2sg1 -seven37kbxszsgpt -89435jpgsfiverhsztt -threeseven1sixsix21five6 -pzht15gxvjlvsfour6eight8two -lkvcseven771gcvrsvsshtppdgxnvclqhnjlvvthree -sevenmpghzvvrd6 -8vprrlcq9xzhmhnj4 -dxhsxknone1two4 -eight64d -8jqdlcsixzzhvnnfiveqbtlhrr -9eight5nine5fiverk -xhhxgf5bfsbthreesthreeltlvhvrjnslxhsrp -twoqccssix55twofour3vtsjxk -goneightpqgblvhpmp4sevenonethree9sixsixfour -onethree536xhznine7df -998 -hsix23three -chgtqonenvxtlrhxvxmbbl5 -2zkzg -1hgrpzshm5onebcgpfv9onecgtr -3sixonevldsdlxqtjsnlt5onehxdpfive -eighteight59phbd9ldnvdlsxninenine -zseven9 -xptwonekdrnv2 -5tsmnbhxhzrtfbknbqsevensnxbqrhs5 -694onebvmscclkbsfour1kxgfxdbfour -g2ninetwoned -gmlsjjttcngblmjhtgkz3fourdrzrrmsszfivefive -gtmzmkrktmrkfive8tq5 -eight1four -8eightthreevqgtlfxrm4three6mnrfzvpkbl -szrbvtwo3lqbxthreefivemshzfgjzlllrmr6 -kzczdbjcbnine8nnineninevfbt3vsvcplsnj -ninesevensmgfsix5fivedfpxvmtmcsgzpbppfjt -sevenctdzznone7three5kngbthreenine -44sixoneonesix -nine9fiverrbbrqtfive53 -onesix2oneseventhree3rmpjl -23htxtgxqkseven -fourlkbsix3twonndccsseightbs -eight8two5four3 -five8dvxpqfsixghrkg3fourninetfsdbxzp -bhtqtclbsix6jlvxtgmq -498three1 -2t -7five3bcjxsglnxqjxjqfb -6seveneightxvmqgbklgnbfgzlncvg -89nine74gbgbcone -8dtln6 -svtl5eight8 -jsxzlsix8bzrmcl659lrmgtnpv -64rklskvlndm6ninextbrs4 -voneight79two -sbzdmjbtwo7dnglczphb77fvhtwo -two3eightwoj -rtoneighttsgeight89nine4 -3six8vbdbthxxffgm -rxgoneight4mtqdpzbfndtsvsrzt -7one4lbqcfnffive8 -fivecd8two2eight -twofivefive6twotwoklvbdstxfcvsm9 -threemdrdnhl7sixseven46mctldxnn -5njljbxdrcbrrm3ninec -5jg6eight4 -ninethreetwo6dnldknsnn -xrpczvvfnpjfbpvxzjzpmrkpb8fivesixtwonetj -4five4vmone3td6 -77jbgjkgkfd1691lfp -fhxvlvct6 -scjeightwo6onedjz71jslzdfxp -7eightpblnnbvqtvtwoseven -btdgplkdvl5rlzjkthree2threefive -298 -7hhfxtfcvsqjvsxpbdjqzxngg832tdznpfhz8 -drhfzlnlcrsix2dbjqhrxzqrsixsevengrnine -sixninesixoneeighttwo96 -onekqzjft4zdspcvmbjtzbsixv -sixgkx74 -75eightqvblvm2gtjmcljphjvtwonesq -bcmqtltwoxsbkvhdv96df81 -eight3bk45sixninezdnntshfv -9threetwosix -2vrfzsvcprnjzngl2nine -fivekdhcgrpznvsix2nmhthl27 -195 -four8tspldsixzzqxrqqmsr -8bnvksmmlhnfive372jmxhj -nineseven6threeeightnine7vtzmpf -2twofivehbponevptflmzgxljzfour -85eight81two -2ctnhxfivethree148vjtzfdfkkfvvtgb -62sixpsfjzcxzlzsjbtxnjpbctgcjm9 -gmclvqfq1 -32csv9dgfxsjm -4fjcdrzmznhfive33345 -62eightrdplbxdhfq1eight -4four97skpvpphtbqmmsckxpdqnfour -913sevennmmbbnntrs -862twonec -three2four7foureighttwo6 -ninejnt721nine8 -eight1gpnrlklmxt -nine2mrzvhlzxgninesixkp -cklsqdf9nine3 -seventhreefivehdnkjqtd4tcjxpbcvpjsvbhdvx3frkc -one85sbrtsftwo6 -sixnine8nineone46six -dmtlrzkfdsdklbvzckjmnthkkmqh9 -ninetwojone8 -bfneighttwo5 -slqmsbnl4mmeight7 -55dnsb2485 -fivesixmzvmsmkkhd86twotwofour -gppnzsevenninemzbzzqqhzvgclndss16 -8two7r -8xsevenbfvhdqxtwoeight86 -fnnineeight1eightninenine8twonejgf -five7three51 -eightthreevsnn4seven -nhhjkxhtxp4csfeight -2nine9sixfour9 -fveighttvjxbhzfour7ninetwo -5eight6 -txnxcrx3 -chbmjvmlfqfgsg2hdg -56five29hrrjgxnrbnzjjktdfqssjqksxn -eighttwohszdlc7veight -5ltglgmlfkkbzkvh -eight336gbxmzjsbpgztprdv2eighttwo -five44 -kdfbgxpcqtdlksc4threefournineeightnshlmfvs -1c5six -nss7bccb -34eight9six92 -onetwofivedblgtrxzpvmrhhsj2jhrcbbsseven3 -vxkczjfhnine5drz -bfourqkmt1 -two2onedgxgmffcg1 -3threenine6vlstktnqdzfive -three8gsqdqpv -7ndgkns -4onerglbzsjrkqskljcgthree -zxkgzkvn7fssgdsblvksixn -788sjxcxmtxfivezzpgsbzbtl8fourtwo -9mhrlcsqqgzjrfnd -7kbmhmlghssix231 -7tcfv6jpkxnzmrtx2 -bcxvhcjbhsxbgbrj28fivenhk -jrm3447 -ljsix29mhrmrjpcfqone -xqdxkzls46 -bmhnfnd9qmbndfhqnv9bhdpqxthreefbptttwosix -six9three5blqp37seven -44ffvsnxttwo8seven -cmjccpp34threesix6jhthree -eight86 -3vqqjlgdj9zncvjhbpr2d -26sfzqpfgfivetwo56 -xljmtkjkzthree8 -ninesevenfourtsctjhvfive4dt -jzsxmmxmpllqpmszczxzghpxp4 -hcrtjnvghvnthree5one -5twoeightsktxhmkpcts -ltrkvbzlnccrmrsfmjrbfjrh75 -cbxfpfsix8lkbqh -9mseven7fivefivexdjxct5 -9sevenklrvhclkrfourtwo96four -2pkbthree -kqpbhjxzfn147 -nineqnjxrmq2gnineh -5sixcrtgqqlqflm -9fourzjzmhmnksxc -four86rdndxscqnjcxghnvgmzp3 -mqmfive98eightmbxrgddqbbqone -gtb66rbclkxdl4spzpgqmkdh3 -965two -96pskqjvckxffkone8four4 -three9xlf1 -spczeight9dvg -v6two -pgksdtnkbbninef5zttwo2seven -4gnvxkc -9four43sixtwofzf -3xsbfcsixsix4eighteight2one -3oneeighttwo -ptwonetwoskjsspjhmxrmvlzcqz572fourmpxx -threeonetwotwo2 -slcseven1xtxbpfb -peightwothree7pdmktbcfouroneninekrf6two -668 -lxshscpkv8fmhcpslhpp -tzrdone7onethreectwo -8pkkpdmzhfourcmjljfour73hhqqmfc -one71ninesix8oneighthlx -72pjpmfcgjhvsixksgrjthreegcspcdxchxkxflmh -4bzr98threeksb -9one6xdfcsvbbqfour -hr5eight33 -zgsvc9 -71hfourtch395pvnzsmhdf -zsvppvgzllgf22 -threebkkrcqzvnt4rjblsnsixninetrjgjjvlv2 -289 -krqdkcfbpp48fivefour -five7tgpt5flkone -eightfive31twoghnqffp6 -eightseven6oneckpsixtwo1 -4l4 -4sevenxzdnprlcjrfive -68vntztlbjqtqkstsp7lkhcgpbtdmzrndsix -onesix2 -sixhc4hhglhp7281h -3zvhhv -lmfsqtnzfk52qrdh -fourbvnsjfjfive87seven1 -twoonesixsix1twodxjdkdeight -nnine3 -ccclkfdb2lftfhnjcqd -1q -gtcdzjhfv8p9 -fivefqxrfourtwo62eighthdcsqrmxjv -one556mgtsdvkqfiveseventwo3 -mvkrxnj34psqtwojhrdjgthree5 -sevencndnndjfzp2eightqcbhvb -eighttbvvck2fiveone6vkljmslcrsghk -tqdhnzfrr6fourzf -ninecqxgkbsv7 -8nsl4sixnxrcdhtkeight3 -sevenxsczhz6dv4sc9brxnsms -5glknvqzlqvmzvnzrb1 -5oneqcshgqbfp1 -5two1sixsevenjpgnbvjpcgd1eightwoh -2qglrzsxz -fpdthreek2 -gplr51sevenfg34jhhp -six78tbzz -hntwonethreergcp7 -59fivefive5 -threezfjxxtqrvhjcdkjsevenhgp44fivetphhfbdtxs -njkd2dcddfzpvpfqp -3sixgnnl -6ninefdqzfpxspsnzs13gz4 -3four66one -fivesevenczmt22nfvnxhbvgjtvjmdzhfqhxtthree -sttx4gktnine5vlqjzddkr -4fivejpsscfqdtgjmtvrljdseveneight -xtfqvnpsfnfppx12rvcldvkhbb -62hj4oneqlp4seven -6hdnlgrfdccsqsxjqrv -331 -nine6eight -two6mbfdmgpfourng -fmnv3three3 -nine5hvzkrjtwo -6eight73 -fourfive79six7two1 -thzhjrfsfoureight53 -1lzfxgvtxgdxtsixffptldz1srgsnvtpnsevensix -seven8onertbqhthreefourctdbsrcvcsjlvcxneight -5eightfive3 -6phjbkvrjd -gssfoursevengvtfznklj97 -fivemgrddqslp3 -ninetwo6sixpv -lhdjm82tlnqrxqtvd -six7hpcjqnrszkfiveftvjnhjsevendqmmr -m2cjfjcb -thfive27fjnshtwo -vmzxlq7 -xlg3nine -schnfive33sevenninedhpjfrsixeightwoxr -bmnine3mgrttsevennvhtdszmtxoneone -zgkqdrvfjtg1sixbsqgdjfivelnrmpqqstv6seven -ljln11fourgjgvfmhmninekdlpjmrn -jffhrkpm22sbnsrpxg9three -fourtwo1sixjvv55ttflnvshb -xgndhkmdnxgrhqh4lm -87five6nineddnrzd -9pmmddvffivesix3one37 -2flddmzcjbfrbdxzhvhsrx16twonej -knzfrseven71fjzhmdznfthree -9five84dfj -sevenc1qhxqhgl -flkdskjjzmqtcmljkone49ljffjtxhs9eightwopq -qhhktqkdfjzth5eight6 -sevensixmvvrzhsixsixsix9 -2241 -1xzjfpjkkcltvznzzfrh -jrvcznlvfgntthree5fivejqrheightwoxkh -lqxtk1oneone3rkfive -hqjbpqjeight3588 -one96sixkbgcx6zhmnine -eight77six -four46nine31five3five -lhd8two7dhthqhbzvlknvtrlfthreeninethreetwonez -5cdgllrdsspnninerxdphcsstt -s9twosixonezcrfmcd -dtqfrnrtdn2threespcfh -113six -onefkznlfjpkfivethree47three -f4hlxdlndqp4blmbzxfvone -czsdseven22ht9threepmfhdpq -7mdvchlcpn -5ssxkrgvhthmleight -seven13four7fiveq -threetcstlhfcqdfhjgccckcvk1hjlpmmkjmr8six -sljoneightg8fourfrsfbgfktr -jfeightwolzcmztqeighttftr3oneonefour -four7tdkq8threeeightfcgpddp -drj3vlj5tcjsfbzffcmmqmgtt5 -82 -jsvzmkqrlkkvfmdxjrshhnsixseven53three -seven1twoninebdpb4 -bjhtgqbfnccspgzbhlqgdzfznxhsixgdfkg91two -fqzrrbchbmhrneightclvd1 -sixeightseven1rlnlqlm -pxxtd793frjfckbhstcdhsrx58mksktwoneqx -zccxxqcfglnnrxdonefivevxtxgzgkh51 -fivenzrmrjfpjhxhkxthtkdrqfthree2twoeight -kzjn9fourqmglnxmqfivenfg51 -cxeightwo8lzqcdlmbgt5 -fivekmfkjnqseven9jlts4 -724dtlznnqtthreeeight54one -7ninesevennine -dj5zhmxtgsdpzlkzcbvnldeight3kk5mmvs -19hczk -3sevenhlkttqsqllsbplone -fourtzlbxhvt7ht54dvtkdprljj9 -fourmvpzqjnb2hmhc3zjvlgrxsm -onekqjtd8five -82rbnsg48twoseven -four352 -2rlxcfoursixczbvb9 -5fourjxggrtg9bmrlnmmhsgtwo96 -8nd2foureight7qg5nine -8twozx -rpfmg3twoeight87 -13five5 -one39six55ninenhhdd -9eightnineone -321fivefour -531sevenhxznfmdxnxfptkbcfpn84xtjrbrmbxk -5tqkzdf6 -sevenlnmnzh35fivetwotrbnknfive -qjqbcbhlqfive8mfmxdssvtdhq -threesixlxmhgzxxjxrgmxzqprl7 -24nnjmxxkbxjmmdssdpb8twotwoone -9four7 -9sixtgj29eight8 -fivebvzrbftvvdzd5nctrmjmbx5eight3 -4threedfzlzxfprzqpkzmlnsix9four -qbqjfbqthxvhnine99five7kgqm -pdvcpcdvjninethreethreeseven5 -ninelrsshpxvb32trfrhnnbkseven5 -1zktcvtrknt -tbxt59dfqzxcdj -zclzlgcmkneightzskgbg62five -vlhtm4gsjtcvkkprsix1sixmdkxlgp76 -vxgmnjsixfivesix69threejlrrcc -onefive5sevenfhvsbfpcxbqn1one1 -rlxrbhtwobmhfcgnmtg6zlgz95sncg -6tgsl -mjsjpone9 -rsqfmseven5qqhrxhfxf6twohnxjgh66 -xbfqgxkxmninegmhcrcmxgllktllbqpsvrfthree9 -2one7kthlnfive3kq -sixfour8lztglpvfv5 -bjcrvvglvjn1 -3mlfdone42 -4one5twoxqfcflcbjqsixeightdlknnzdbzlrqfkhvm -cfpnhsgs956 -xsdm7lhcjzk3hstcf -9fourcsjph86shfqjrxlfourninev -bgcxqff8 -4eightv51 -six6two4lvtjt61 -44kmn -rbgfivefive3eightthree -three4nhvblteightfour -2six64rjmcvvxshxjlndj -3nine4fourjclspd152rpv diff --git a/data/Y2023/D02/riddle b/data/Y2023/D02/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D03/riddle b/data/Y2023/D03/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D04/riddle b/data/Y2023/D04/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D05/riddle b/data/Y2023/D05/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D06/riddle b/data/Y2023/D06/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D07/riddle b/data/Y2023/D07/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D08/riddle b/data/Y2023/D08/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D09/riddle b/data/Y2023/D09/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D10/riddle b/data/Y2023/D10/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D11/riddle b/data/Y2023/D11/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D12/riddle b/data/Y2023/D12/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D13/riddle b/data/Y2023/D13/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D14/riddle b/data/Y2023/D14/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D15/riddle b/data/Y2023/D15/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D16/riddle b/data/Y2023/D16/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D17/riddle b/data/Y2023/D17/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D18/riddle b/data/Y2023/D18/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D19/riddle b/data/Y2023/D19/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D20/riddle b/data/Y2023/D20/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D21/riddle b/data/Y2023/D21/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D22/riddle b/data/Y2023/D22/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D23/riddle b/data/Y2023/D23/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D24/riddle b/data/Y2023/D24/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/data/Y2023/D25/riddle b/data/Y2023/D25/riddle deleted file mode 100644 index e69de29..0000000 diff --git a/gen.sh b/gen.sh deleted file mode 100755 index a065029..0000000 --- a/gen.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash - -Y="$1"; shift -if [ -z "$Y" ]; then - Y="$(date +%Y)" -fi - -fday="$1"; shift -tday="$1"; shift - -if [ -z "$fday" ]; then - fday=1 - tday=25 -fi -if [ -z "$tday" ]; then - tday="${fday}" -fi - -days=($(seq $fday $tday)) - -if ! grep -q "Y${Y}" src/AoC/Year.hs; then - sed -i -e "s/\(\(\s\+\)= Y0000\)/\1\n\2| Y${Y}/" src/AoC/Year.hs -fi - -mkdir -p "src/AoC/Y${Y}" -if ! test -f "src/AoC/Y${Y}.hs"; then - sed -e "s/Y0000/Y${Y}/g" template/Y0000.hs > "src/AoC/Y${Y}.hs" -fi - -for d in "${days[@]}"; do - d=$(printf "%02d" "$d") - mkdir -p "data/Y${Y}/D${d}" - touch "data/Y${Y}/D${d}/riddle" - touch "data/Y${Y}/D${d}/result" - - if ! test -f "src/AoC/Y${Y}/D${d}.hs"; then - sed -e "s/Y0000/Y${Y}/g" -e "s/D00/D${d}/g" template/D00.hs > "src/AoC/Y${Y}/D${d}.hs" - fi -done diff --git a/package.yaml b/package.yaml index 7d8239b..6b63cc4 100644 --- a/package.yaml +++ b/package.yaml @@ -9,15 +9,13 @@ description: "Advent-Of-Code" extra-source-files: - README.org -data-dir: data - dependencies: - name: base mixin: - hiding (Prelude) - name: relude mixin: - - (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum) + - (Relude as Prelude) - containers - text - megaparsec @@ -26,7 +24,6 @@ ghc-options: - -Weverything - -Wno-implicit-prelude - -Wno-missing-import-lists # Requires explicit imports of _every_ function (e.g. ‘$’); too strict - - -Wno-missing-kind-signatures - -Wno-missed-specialisations # When GHC can’t specialize a polymorphic function. No big deal and requires fixing underlying libraries to solve. - -Wno-all-missed-specialisations # See missed-specialisations - -Wno-unsafe # Don’t use Safe Haskell warnings @@ -43,11 +40,9 @@ default-extensions: - BlockArguments - OverloadedStrings - ImportQualifiedPost - - DerivingStrategies library: source-dirs: src - generated-other-modules: Paths_aoc verbatim: default-language: GHC2021 diff --git a/src/AoC.hs b/src/AoC.hs index 3431b23..7a3c6dc 100644 --- a/src/AoC.hs +++ b/src/AoC.hs @@ -1,32 +1,21 @@ +{-# LANGUAGE OverloadedStrings #-} + module AoC ( defaultMain, - runAoC, - module AoC.Day, - module AoC.Year, ) where -import AoC.Day -import AoC.Riddle -import AoC.Year - import Control.Exception qualified as Exception import System.IO (hPutStrLn) import System.IO.Error qualified as IOError -import AoC.Y2023 qualified as Y2023 - -runAoC :: (MonadIO m) => Year -> Day -> m (Either Text Solution) -runAoC y d = do - riddle <- loadRiddle y d - solve y d riddle - -solve :: (MonadIO m) => Year -> Day -> Riddle -> m (Either Text Solution) -solve Y2023 = Y2023.solve -solve y = \_ _ -> pure $ Left $ show y <> ": not implementedi" +runAoC :: [String] -> IO () +runAoC _args = putStrLn "Hello" handleError :: IOError.IOError -> IO () handleError e = do hPutStrLn stderr $ "I ran into an issue: " <> show e defaultMain :: IO () -defaultMain = Exception.catch (runAoC Y2023 D01 >>= print) handleError +defaultMain = do + args <- getArgs + Exception.catch (runAoC args) handleError diff --git a/src/AoC/Day.hs b/src/AoC/Day.hs deleted file mode 100644 index 76232c6..0000000 --- a/src/AoC/Day.hs +++ /dev/null @@ -1,29 +0,0 @@ -module AoC.Day (Day (..)) where - -data Day - = D01 - | D02 - | D03 - | D04 - | D05 - | D06 - | D07 - | D08 - | D09 - | D10 - | D11 - | D12 - | D13 - | D14 - | D15 - | D16 - | D17 - | D18 - | D19 - | D20 - | D21 - | D22 - | D23 - | D24 - | D25 - deriving stock (Read, Show, Eq, Ord, Enum) diff --git a/src/AoC/Util.hs b/src/AoC/Internal.hs similarity index 89% rename from src/AoC/Util.hs rename to src/AoC/Internal.hs index aa91a52..d3d22c9 100644 --- a/src/AoC/Util.hs +++ b/src/AoC/Internal.hs @@ -1,5 +1,5 @@ -- | Internal module in order to facilitate testability. -module AoC.Util (solveRiddle, readFileUtf8) where +module AoC.Internal (solveRiddle, readFileUtf8) where readFileUtf8 :: (MonadIO m) => FilePath -> m Text readFileUtf8 = fmap (decodeUtf8With lenientDecode) . readFileBS diff --git a/src/AoC/Riddle.hs b/src/AoC/Riddle.hs deleted file mode 100644 index f9ad279..0000000 --- a/src/AoC/Riddle.hs +++ /dev/null @@ -1,20 +0,0 @@ -module AoC.Riddle ( - Riddle (..), - Error (..), - Solution (..), - loadRiddle, -) where - -import AoC.Util (readFileUtf8) - -import AoC.Day -import AoC.Year - -type Riddle = Text -type Error = Text -type Solution = [Integer] - -loadRiddle :: (MonadIO m) => Year -> Day -> m Riddle -loadRiddle y d = readFileUtf8 inputFile - where - inputFile = intercalate "/" ["data", show y, show d, "riddle"] diff --git a/src/AoC/Y2023.hs b/src/AoC/Y2023.hs deleted file mode 100644 index 389adc6..0000000 --- a/src/AoC/Y2023.hs +++ /dev/null @@ -1,57 +0,0 @@ -module AoC.Y2023 (solve) where - -import AoC.Day -import AoC.Riddle - -import AoC.Y2023.D01 qualified as D01 -import AoC.Y2023.D02 qualified as D02 -import AoC.Y2023.D03 qualified as D03 -import AoC.Y2023.D04 qualified as D04 -import AoC.Y2023.D05 qualified as D05 -import AoC.Y2023.D06 qualified as D06 -import AoC.Y2023.D07 qualified as D07 -import AoC.Y2023.D08 qualified as D08 -import AoC.Y2023.D09 qualified as D09 -import AoC.Y2023.D10 qualified as D10 -import AoC.Y2023.D11 qualified as D11 -import AoC.Y2023.D12 qualified as D12 -import AoC.Y2023.D13 qualified as D13 -import AoC.Y2023.D14 qualified as D14 -import AoC.Y2023.D15 qualified as D15 -import AoC.Y2023.D16 qualified as D16 -import AoC.Y2023.D17 qualified as D17 -import AoC.Y2023.D18 qualified as D18 -import AoC.Y2023.D19 qualified as D19 -import AoC.Y2023.D20 qualified as D20 -import AoC.Y2023.D21 qualified as D21 -import AoC.Y2023.D22 qualified as D22 -import AoC.Y2023.D23 qualified as D23 -import AoC.Y2023.D24 qualified as D24 -import AoC.Y2023.D25 qualified as D25 - -solve :: (MonadIO m) => Day -> Text -> m (Either Error Solution) -solve D01 = D01.solve -solve D02 = D02.solve -solve D03 = D03.solve -solve D04 = D04.solve -solve D05 = D05.solve -solve D06 = D06.solve -solve D07 = D07.solve -solve D08 = D08.solve -solve D09 = D09.solve -solve D10 = D10.solve -solve D11 = D11.solve -solve D12 = D12.solve -solve D13 = D13.solve -solve D14 = D14.solve -solve D15 = D15.solve -solve D16 = D16.solve -solve D17 = D17.solve -solve D18 = D18.solve -solve D19 = D19.solve -solve D20 = D20.solve -solve D21 = D21.solve -solve D22 = D22.solve -solve D23 = D23.solve -solve D24 = D24.solve -solve D25 = D25.solve diff --git a/src/AoC/Y2023/D01.hs b/src/AoC/Y2023/D01.hs deleted file mode 100644 index d7a0c8a..0000000 --- a/src/AoC/Y2023/D01.hs +++ /dev/null @@ -1,24 +0,0 @@ -module AoC.Y2023.D01 (solve) where - -import AoC.Riddle -import Data.Char (digitToInt, isDigit) -import Relude.Unsafe (fromJust) - -digits :: String -> [Int] -digits = fmap digitToInt . filter isDigit - -digits' :: String -> NonEmpty Int -digits' = fromJust . nonEmpty . digits - -calibrationValue :: String -> Int -calibrationValue s = firstDigit * 10 + lastDigit - where - ds = digits' s - firstDigit = head ds - lastDigit = last ds - -solvePart1 :: Text -> Integer -solvePart1 = fromIntegral . sum . fmap (calibrationValue . toString) . lines - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve input = pure $ Right [solvePart1 input] diff --git a/src/AoC/Y2023/D02.hs b/src/AoC/Y2023/D02.hs deleted file mode 100644 index ee63e88..0000000 --- a/src/AoC/Y2023/D02.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D02 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D03.hs b/src/AoC/Y2023/D03.hs deleted file mode 100644 index c509d93..0000000 --- a/src/AoC/Y2023/D03.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D03 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D04.hs b/src/AoC/Y2023/D04.hs deleted file mode 100644 index d433091..0000000 --- a/src/AoC/Y2023/D04.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D04 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D05.hs b/src/AoC/Y2023/D05.hs deleted file mode 100644 index 2abeb79..0000000 --- a/src/AoC/Y2023/D05.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D05 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D06.hs b/src/AoC/Y2023/D06.hs deleted file mode 100644 index 4b9fd40..0000000 --- a/src/AoC/Y2023/D06.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D06 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D07.hs b/src/AoC/Y2023/D07.hs deleted file mode 100644 index 68a369e..0000000 --- a/src/AoC/Y2023/D07.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D07 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D08.hs b/src/AoC/Y2023/D08.hs deleted file mode 100644 index 024d550..0000000 --- a/src/AoC/Y2023/D08.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D08 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D09.hs b/src/AoC/Y2023/D09.hs deleted file mode 100644 index c0111cf..0000000 --- a/src/AoC/Y2023/D09.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D09 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D10.hs b/src/AoC/Y2023/D10.hs deleted file mode 100644 index dedcb34..0000000 --- a/src/AoC/Y2023/D10.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D10 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D11.hs b/src/AoC/Y2023/D11.hs deleted file mode 100644 index 979fee6..0000000 --- a/src/AoC/Y2023/D11.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D11 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D12.hs b/src/AoC/Y2023/D12.hs deleted file mode 100644 index 035fca3..0000000 --- a/src/AoC/Y2023/D12.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D12 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D13.hs b/src/AoC/Y2023/D13.hs deleted file mode 100644 index a8678c6..0000000 --- a/src/AoC/Y2023/D13.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D13 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D14.hs b/src/AoC/Y2023/D14.hs deleted file mode 100644 index 7c591d3..0000000 --- a/src/AoC/Y2023/D14.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D14 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D15.hs b/src/AoC/Y2023/D15.hs deleted file mode 100644 index 43b5888..0000000 --- a/src/AoC/Y2023/D15.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D15 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D16.hs b/src/AoC/Y2023/D16.hs deleted file mode 100644 index edcb507..0000000 --- a/src/AoC/Y2023/D16.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D16 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D17.hs b/src/AoC/Y2023/D17.hs deleted file mode 100644 index ae873c6..0000000 --- a/src/AoC/Y2023/D17.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D17 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D18.hs b/src/AoC/Y2023/D18.hs deleted file mode 100644 index f8d5908..0000000 --- a/src/AoC/Y2023/D18.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D18 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D19.hs b/src/AoC/Y2023/D19.hs deleted file mode 100644 index 54e3187..0000000 --- a/src/AoC/Y2023/D19.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D19 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D20.hs b/src/AoC/Y2023/D20.hs deleted file mode 100644 index 7fee6f1..0000000 --- a/src/AoC/Y2023/D20.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D20 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D21.hs b/src/AoC/Y2023/D21.hs deleted file mode 100644 index cc073fb..0000000 --- a/src/AoC/Y2023/D21.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D21 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D22.hs b/src/AoC/Y2023/D22.hs deleted file mode 100644 index 2d59dae..0000000 --- a/src/AoC/Y2023/D22.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D22 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D23.hs b/src/AoC/Y2023/D23.hs deleted file mode 100644 index 953685b..0000000 --- a/src/AoC/Y2023/D23.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D23 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D24.hs b/src/AoC/Y2023/D24.hs deleted file mode 100644 index 27cab03..0000000 --- a/src/AoC/Y2023/D24.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D24 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Y2023/D25.hs b/src/AoC/Y2023/D25.hs deleted file mode 100644 index cb0b109..0000000 --- a/src/AoC/Y2023/D25.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y2023.D25 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/src/AoC/Year.hs b/src/AoC/Year.hs deleted file mode 100644 index 0576478..0000000 --- a/src/AoC/Year.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Year (Year (..)) where - -data Year - = Y0000 - | Y2023 - deriving stock (Read, Show, Eq, Ord, Enum) diff --git a/template/D00.hs b/template/D00.hs deleted file mode 100644 index be4d8fd..0000000 --- a/template/D00.hs +++ /dev/null @@ -1,6 +0,0 @@ -module AoC.Y0000.D00 (solve) where - -import AoC.Riddle - -solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" diff --git a/template/Y0000.hs b/template/Y0000.hs deleted file mode 100644 index 60cfbff..0000000 --- a/template/Y0000.hs +++ /dev/null @@ -1,57 +0,0 @@ -module AoC.Y0000 (solve) where - -import AoC.Day -import AoC.Riddle - -import AoC.Y0000.D01 qualified as D01 -import AoC.Y0000.D02 qualified as D02 -import AoC.Y0000.D03 qualified as D03 -import AoC.Y0000.D04 qualified as D04 -import AoC.Y0000.D05 qualified as D05 -import AoC.Y0000.D06 qualified as D06 -import AoC.Y0000.D07 qualified as D07 -import AoC.Y0000.D08 qualified as D08 -import AoC.Y0000.D09 qualified as D09 -import AoC.Y0000.D10 qualified as D10 -import AoC.Y0000.D11 qualified as D11 -import AoC.Y0000.D12 qualified as D12 -import AoC.Y0000.D13 qualified as D13 -import AoC.Y0000.D14 qualified as D14 -import AoC.Y0000.D15 qualified as D15 -import AoC.Y0000.D16 qualified as D16 -import AoC.Y0000.D17 qualified as D17 -import AoC.Y0000.D18 qualified as D18 -import AoC.Y0000.D19 qualified as D19 -import AoC.Y0000.D20 qualified as D20 -import AoC.Y0000.D21 qualified as D21 -import AoC.Y0000.D22 qualified as D22 -import AoC.Y0000.D23 qualified as D23 -import AoC.Y0000.D24 qualified as D24 -import AoC.Y0000.D25 qualified as D25 - -solve :: (MonadIO m) => Day -> Text -> m (Either Error Solution) -solve D01 = D01.solve -solve D02 = D02.solve -solve D03 = D03.solve -solve D04 = D04.solve -solve D05 = D05.solve -solve D06 = D06.solve -solve D07 = D07.solve -solve D08 = D08.solve -solve D09 = D09.solve -solve D10 = D10.solve -solve D11 = D11.solve -solve D12 = D12.solve -solve D13 = D13.solve -solve D14 = D14.solve -solve D15 = D15.solve -solve D16 = D16.solve -solve D17 = D17.solve -solve D18 = D18.solve -solve D19 = D19.solve -solve D20 = D20.solve -solve D21 = D21.solve -solve D22 = D22.solve -solve D23 = D23.solve -solve D24 = D24.solve -solve D25 = D25.solve diff --git a/test/spec/AoCSpec/UtilSpec.hs b/test/spec/AoCSpec/InternalSpec.hs similarity index 73% rename from test/spec/AoCSpec/UtilSpec.hs rename to test/spec/AoCSpec/InternalSpec.hs index a6d8739..345cfcb 100644 --- a/test/spec/AoCSpec/UtilSpec.hs +++ b/test/spec/AoCSpec/InternalSpec.hs @@ -1,6 +1,6 @@ -module AoCSpec.UtilSpec (spec) where +module AoCSpec.InternalSpec (spec) where -import AoC.Util +import AoC.Internal import Test.Hspec diff --git a/test/spec/AoCSpec/Y2023Spec.hs b/test/spec/AoCSpec/Y2023Spec.hs deleted file mode 100644 index f09e7a3..0000000 --- a/test/spec/AoCSpec/Y2023Spec.hs +++ /dev/null @@ -1,10 +0,0 @@ -module AoCSpec.Y2023Spec (spec) where - -import AoC -import Test.Hspec - -spec :: Spec -spec = do - describe "Day 1" do - it "calculates correctly" do - runAoC Y2023 D01 `shouldReturn` Right [54331] diff --git a/test/spec/SpecHook.hs b/test/spec/SpecHook.hs deleted file mode 100644 index 7335e6a..0000000 --- a/test/spec/SpecHook.hs +++ /dev/null @@ -1,6 +0,0 @@ -module SpecHook (hook) where - -import Test.Hspec - -hook :: Spec -> Spec -hook = parallel