From c45f28f35d0916fea2c8390b0195388d9b60c8e3 Mon Sep 17 00:00:00 2001 From: Alexander Kobjolke Date: Thu, 5 Dec 2024 00:29:00 +0100 Subject: [PATCH] Solve 2024-04 --- data/Y2024/D04/riddle | 140 +++++++++++++++++++++++++++++++++ src/AoC/Y2024/D04.hs | 95 +++++++++++++++++++++- test/spec/AoCSpec/Y2024Spec.hs | 4 +- 3 files changed, 235 insertions(+), 4 deletions(-) diff --git a/data/Y2024/D04/riddle b/data/Y2024/D04/riddle index e69de29..813bb37 100644 --- a/data/Y2024/D04/riddle +++ b/data/Y2024/D04/riddle @@ -0,0 +1,140 @@ +MXAMXAMMXSMSMXMASMMSMMMXXXMSSXSXMSASAMXSMXMASMAAXMASXMXAMXXAXMASXMMMSAMXAMMSMSMMSAXMMMMMXXXSAMXSSSMMMMXMAXSAMXSXMMXSASMSMAXMSMMMXXXSMMMSMMMX +XSAMXMMSAAXXXASAMXAAXMMMMMMAXASAMXASXMASXMSMSAMXMXASASAMMMMMXMAMAAAAMAXMASMAAXMASMMMASAMXSXMASMSAMMAAMMXSAMXMAMASXXMAMMAMAMSMAMSMSAAAXAAAAXA +XAMXAXAMSSMSSXMMXXSMSAAAAAMMSASAMMXMXMMMMMAAXMXAAMXSAMXMXMAMAMASMMMSSSMAASXMMMMXSAMSASASAAASXMXMMMSXSSMAXXMXMASMMMXMMMSASAMASAMAASMMMMSSMMSM +MMMMXMAXAXAAMAXSMMMXMMSMSSSXMASMMSMMXMAXASMSMSSMSSMMMMAMASXSASMSXSAMAXAMXSAMSAMXSAMSASAMASMMXMAMXXXXMAMASAMSSXMAAXMASASASXSASMSMXSASMXXXAMXM +SAASAMXMSMSMMXXAAASAMMMAMXMAMXMMASMMASASMMXXAXXAAXAAXMASMSMSMSAXAAAMSMSMMSAMSAMXMAMXASXMMMAXMMSXSMMXSAMASAMAMMXSAMXXMASXMAMAXAXXAMAMXMAMMMAM +MXMSASXAXAMXSMSSSMXASAMMMSSSMSSMASAXAMMMAXSMMMMMMXSMXMMAMXAMAMXMMSSMMMMAAMAMSAMMXMMMAMAMXXMMSAMXMASAXAMAMAMMXSAXAMASMAMAMXMAMSMMXMAMAASMXMAX +MSMSAMMSMAMAXMAXAMXMMMMSAAAAAAXMMSAMSSSMMMMAAXMSSMAMAMMAMMMMASMXXAAAXASMMMMMSXMMASAMASAMMMSAMXSASMMASMMSSSMXXMASXMASMASAMXSASXAAXMSMXSAASMSS +XAAMXMAMSSMMSMXXXMASXMAMMSSXMMSXMMXMXAAMMXSXMAXAAXAMSMSMSAMXAMXSMMSMMMSMSASXMAXSASAMAXAXAAMXSASMSXMXMAAXMXSXXMAMMMAMMASASAXMSMMMSMAAMMMMAAAA +SMSMMMSXMMAXSMXSSSXSAMMSMMMMMXXMMAMSMSMMAXMASMMXSMXMMAAAMAXMASXMAAMMMXMASMSASXMMASMMSSXMMSAAMXSXMASMSMMMMAMMMMAMAMSSMMSMMMSXXXMAXXMASMAXMMMM +AXAAAAXAASMMSAMSAMASMMXSAAMAAAXMSAMAAAXXXAXAXAXAAMXAMMMSMAMSAMMMAMSAMXMAMXSXMAAMAMAXMAMAMMMMSAMAMSMAAAAAMAXAASXSXMAAAAXMASAMXSSSMSXMAXAMXAMS +SSSSMSSMMMAAMAMMAMAMASASXMSSSMMASASXSMXMMXXXSAMSSMMMSAAAMAMMASASAMXAMXMASMMMSSMMASMSXMAMXAAXMASAMAXSSXSSSSSSMMMAMMXSMMSSXSAAAMAXASASAMXMSMSM +XXAXXMMAAXMMSSMSXMMSXMXXXMXXAXMASXMAMXXAXAAXMMMAAXMAXMSXSSSSXSXSMSXXMXXAXAAAXAXSAXAXAXSMSMSMMXMXXXXXAXMAMXAXXXSAMMAMMMAAXMMXSMAMXXXMXSAMAXAX +SMSMMASMMXSAXMASMAXMMMSMAMSSMXMASXMAMAXSMMXMASMSXMMMMXMAAMAMASAMASAMMSMSSMMXSAMSAMSMMMXAMXMASXMSSSMMMMMAMMSMSXMASMASAMXXAXASAMSMSSMSASXSSSMM +XAMAMMMSSSMMSMAMMAMXAAAMAMAAXASXMASMXSMMXSASXMAXXAAXSAMMMXXMMMAMAMASAAXMAMAAMMMMAMMAXAXXAMMAMAAAMAAXSASXMMAAXMSAMMASAMMMSAXAMXAAMXAMXMAXAAXS +MXMAMXASXSAASMSSXSASMSSSSSSSMXSASAMXAXAXASASMSASASAMMAMXMSMSXXMMXSAMMMMMAMXSASXSSMSSMXSAMXMAMMMMSSMMMMXMASMSMMXMXMASAMAAMAMMXSMMMMXMAMXMXMMA +SASASMXMASMMSXAMAMXXXAAAXAMXAMXAMASMXSXMAMAMAMASMMSMSMMSXAAAAMXSMMMMMSSSXSAMXXAXXMAXMAMMSMSMSXXXXAXSSMXSAMXMXMASXMASMSMMSAAXMAMAXSASXSSMSSSM +AASAXXAMXMMMMMSMMMSAMMSMMSMMSSMXMMMXAAXMMMAMMMMMXAAMMMAMXMMMSASXMASXAAASAAXSMMMMMMMSMXXXXMASAMXMSMMMAAAMXSAMASAMMSAMAXAXSASXMASAXMMXAAMAAAAX +MXMAMSMSAMAAXAXAXAXMSMXMAAAXAAMASAMMSSMMASMSXSXSMSSSSMSSSXMAMMMXSASMMMSMMMXMAAMAMASMMMMMXMXSXSXMASASMMMSMMASXMASAXAMMMMMSAMASAMMSSMMMMMMMSMM +XAMAMAAXASMSSSSSMMSAAAAMXSSMMXSASASAAAXMAXXMASAMXXXAXAAXAAMAMXMASASAAMAXXSSSSMXAXXSAAAAXMSMMMMASASXXXAMAMXXAMXSMMSSMXXXAMAMXMASAAAAXMSMSAMAM +SMXSSMSMMMAAAXAMAMMXMMMSAMMAMXMASAMMSMMMMSMMMMMMASMMMSMSSSMSSSSMMAMMXSAXMAAAAMSXSASMMSXXAAAAMSAMXSASXMSAXMMMSXXAXAMSXMMXSAXXMMMMMSMMXSAMXSAM +ASAXXMXAAMMMMMMMSMMSSMAXXXSMMAMXMMXAAAMXMAAASAMSASAXAXAAAAAAAAASMXMMMMMSAMMMMMAXMMMMMAMMXSSMMXMXMMXMAAMAMMAMAMSMMASXMAMMSMSXSMAXXAAXXMXMASAM +SMXXAMMSMMMXXXAAMAAAAMMMAXSASXSASMMSXSMMSMXMMAXMXSAMXMSMMMMMMSMMXMAXAAAAMAXAXMASMMAMMASMAMMMAMSSSMSMXMMAAMSXMAAASMMMMMSAMXSAASASXSMMSMXMASAM +MASXXMAXAMSXSSSSSMMSSMMAMXSAMASAXSAMSAAAAAMXMSMSMXXAXAMSMAMXXAAASMMMMMXSMSSMSSMMASMSMAXMMMAXMASAAAXXXXXMAXXAXMSMMXAAMMMASAMSMMMXAAAMAMAMASAM +MAMMMMMMAMAAMAMAXXMAMMMSXAMAMXMAMMMSAMXSMSSMAXAAAMSSMXAAMAMASXSMSAXMASMXMAXXAAASMMMMMSMMXSAMXSMMMMMMMMXXMAXMMMXAMMMMMAXXMAXXMASMSMMSAMXMAXAM +MAMXMAXXMMMMMAMMMXAMMMAXMXMAXAMXMASAMXMXMAAMAMSMSAAXXMSMSMSXMAMASAMXASAAMMSMSSMMMAMMAAASMMSSXMMSSMSAAASMSMSMMAMXMASXSASASMMASAMXAAMSMSMMSSSM +SMSMSMSAMXSASMMSAMXXAMMSXSSMSXMASXSMXMMAMXSMXXXXMXSXXMMAAXMAMAMMMSSMMSMMSXAXAAXXMAMMSSSMAMAXAAAXAASXXSMAAAAMMMXAXXXXAAAAAMSAMMSSSSMXAXMAXAXM +AAAAAAAXMAMXXAAXSAMSMSAMAMAMAMXXAMXXSASMSMMMMAMXMAMXMMXSMSSXMASXAAXAXSXMXXMMSSMMSXSAMXMXXMASMMMSMMMAMXMSMSMSASMSMAMSMSMMMXMASAMAMXMMAMMMMMMM +MSMSMXMXMASXSMMSMMAAAAAXAXSMMSMXSXMAXMMAAAAMMMMSMASXAAAXXMMXMAXXMXSMMSAMXAXAMAMXAXMASASXMMMXAAAXAAMAMSAXMMXMXSAXMAMXAXXAXXSAMXSXMAMMXMAMAXAS +MXMAXASXMASAAMXSMASXXSMSMSAMMAMAXAMMSSSSSMMSMAAXXXMAMMSSMAMMSSMSXXSMAXXMMMMXSSMSSSSXMASMMSXSSMASMMSAXSAMAMASAMXMMASMSMXSXMMXXXMMMSSMSSSSSSSS +MMSXSMSAMAXMXMAXMAMXAAAXMAAMSAMXMXMSAAAAXMXAMMXSSMASXXMAXAXXMAASXMXMAXMXSXXXXAAAAAXSMXMMXAAXXSAMXAXXXMAMXMAMXMAMSMSMMSAXSAXMXXXMAMAXAAAMMMAM +MAXAMMSAMXMSAMXSXAMMSMSMASXMMAXMSSXXMMMMMSSMXSAAAAAXXMXSSMSMSMMMASAMXSMAAAMMSMMMMMMAMAMXMMMMAXMMMAMSMSAMAMSSSSXXAASAAMXMASMSMSSMXMXMMSMMAMAM +MMMMMASAMXXSASASMSSXMAXXAMXXSXMSAMAAXXAXAMAXAMMSMMMSMMAAXMAMAAAXMMAXAAMXMXMAAAAAMSXMSASXAXSMAMMMSASXAAMMSAXAMASMMXSMMMSAMXMAAAXAMSMMAMXSAMAM +MSXSAXMAXMAMXMAXAAXAMAMSXMXXXMXMASMMMSMMSMMMXSXXAMXAAMXSSSSSSSMMXMAMSSXSMSMXSSSSMMAXSASXSXAMASAAMMSMMMXAMXAMXMAXSMXAXAAMXASXSMMXMAAMXSASXSSS +AAAMMSSMMMASMSSMSMSAMXMXAXASMMXSXMAAXXXAAAAMSSXXMSSSSSMAAMAAAAMASMMXMAMMAXMAXMXMAXXMMSMAXMMSASMSMAXAXXMXSMMSMXMAMXASMXSMSMSAMXAXMSXMAMXSAAAA +MMSMAAAAXMAXMAAAMASMXMSMMMAXAMAXAMXAMXMMXSMSAMMSXAAMAMAMSMMMMMMASAMXSMAMXMMMSMSSSMAMXAMXMAXMMXAAMXSSMXSASAAAXSXMMSAMXXMASAMMMMMSMAASAMAMXMAM +SSMMMSSMMMASMSMMMAMXXXSASMXMSMXSMMSSMSASAXMAMAAMMMSMAMSSMXSAAXMASAMAXXSMAAAMAAMAMXAMXXMXMSXSSMSMSAMXAMMASMMSMMAMAMAXXMMAMAMXMXASMSMMAMSSMXMX +XMAAXMXMASAXXXXAMXXXMMSAAAMAXMXAMXAAASAMXSMSSMASXMAXSSXMXAMSXMMAXAMXXSASMSSSMMMASMMXSSXSAAMSAXMXMASXSAMAMAMXMSAMXMAMMMMASXMSMMMSAMXSMMAAMAMX +SSSMMSASASXMXMASXMMSAMMMMMASAXMASXMMMMAMAMXXAMMAMXXMMAAMMSMMSSMASXMMXSAMXAXXXAMASAMSAAAMXMXSAMXMXMMXMSSSMSMAXSASAXAXXASXSMAAAAAMAMAXAMXSSXSX +AXAAMSAMAXMMSMMXAAASXMAMXXSMXMSAMXXSAMXMSSMSMMSMMMSMXSMMAXAAXXMAMAAXMMSMMSMSSXSASAMMMMMSSSMSAMXMMMMMAAXMAXSXMSAMAASMSMMXXMSMMMSSMMMXAMAMXMMM +SSMMMMAMSMSASAMSSMMSXSAMXMMSSMMASXXMASXSXAXMXAAAAAMAMMXXXSMMMMMSSSMMXAMXAAAXAXSAMXMMAMXAAMMMMSXMASAMMSSMXMASAMAMXMXASMSMXMXSSXMAXAXSSMMXAAAA +MAXAXMAMAAMASAMAMAXXAAXMAAAAMXAXMMXSAMMSSMMSMSSSMXMASMASAAAASMAMAAAAMSMMMSXMMMSAMMMMAMMMMMMMASMSMXASAXXMAMXASMMMMXMSMAAXMXAXMASAMXXXAAXSMSAM +MAMSMSSSMSMASAMXXMMMXMASXSMMSMASAXXMXSAMAMAAAMXXMSMMSAAXXXSMMMASMXMXMMASXXAXXASMMASMSSSXMAXMASAAXSXMMSMMMSMMMSAAAXSAMSMSAMMSMMMXSXMSSMMAXMAS +MXMXAAAMMMMXSAMSSMSAAXXXAAMAAMAMXXMAAMMSAMSSSSSMXXAXXMMMSXMAXXMXXAXXMSAMASMMMMMAXMSAMAMXXXXMXSXMXAMMAAAAAAAAAMMSMXMAMXAMMAMSAMXXMXMAMAXSXMAA +MASMMMSMAXXXXAMAAAXSMSMMSMMSSSXAMMSMMSXMXMAXXAAMASXMSXSASASMMSSMSXSSXMAMMMXAAMXSMXMMMAMAMSASASAMSSMSSSSMSSSMXSAXXSMSSMAMXSXSAMXMSAMASMMMAMMS +SSXSSMXMXSSSSSMMMMMMMAMAAAXXAXMAMAAAMXAMSMSSMMMMASAAAAMMSAMMAAMASMAMXSAMAASMXSAMMAMASMMAMSAMASMMAAXAMXXAAXAAMMAMAMAAAMAMMMAMXMAXSASMXAASAMMX +SXAXXXAXXAAXXAAXXMAMSAMSSXMMMMSAMMSSSMAMXAXXAAAMXSMMMXMXMXMMSMMAMMAMXSAXMMMAAMMSSMSAMXMXXMXMAMMMSSMMSXMMMSXMAMAMMMMMSMMSXMASAMXMSXMMSSMMMXXX +MMMMMMMMMMMMSSMMXMXMXMXMMMSXXASASAAAXXSAMXMSSMXXAMXAXMXSMMXMMXMSSMAXAXAXSMSMXMAMAAMASXXSASXMASXMAMXXXMMXXAMSASAMXASXXMXMAMMSAMSAMXMXAAAXSXMX +XAMASAAAAAAXMMMXMSSSXXAAXASXMXSAMMMMMXMXXAMAMXSMASAMXMMAMAAMMSAXAMSMMMMMSAAXAMAXMMMAMXAMAAASAMXMASAXXAAMMMXSASAMSMSASXSSSMAMMASAMXMMSSMMAAXX +SXSASXSSSSSSXMAMXAAAASMXMMSAXMMXMASAAXSXSMSMMAXSXMXSAXMAMSXSAMXXSXXAXMAAMXMMXSMSAAXAXMSMAMAMMSMSXMXSASXMASXSXMAMMMMAMXMAXMXSMAXSMAXXAXMAXXMM +MXMASAMXAAAXMMSAMMMMXMASMXMMMSMASMSASAMASMAMMMMSXSASAMMSMXMMXSSMMASMMSXSSXSAMXMAXASAMXAAASXXXAAMXMASMMASXSAXXSXMASMMMAMXMMAXMSMMXSSMMSASMSSS +SAMXMAMMMMSMSAXSMMSMMSXAMSXMAAXAMXSXXAMMMXAXMMAMMMAMASAXMSXMAXASMAMMAMMXXAAAXXMAXXXMASXMMSMMSMSMAMMSXSAMAMXMXASXMSASXXSAMSAMXMASAMXMXMAMAAAX +MXMAMSXSSXXXMXMXMAAAAMMMAMAMSSMSSMMXSAMXASMSSMASXMXMAMASAMXMXSAMXMSMAMSAMSSMMMSSXMASXMXSXXAAMXMMASAMMMMMXMMXXAXXASAMXMMAXSXMASAMMXAMXMAMMMSM +XASASMAAMAMXSMMAMXMSXMASASMMMMAAAASASAMMMSAAAXXMASXMXMAMXMASMXASMMMXMSMXXXAXXAAXAMXMAAASMSMMSASMXSAMSAMMAMXMMMMMXMASASMSMSAMXMAMXSSMMMSSMAAX +SASMSMMMAAAXAASASAAMMSXSASXAAMMSSMMAMXMAXXMMMSMMMAXMAMASMMMSASXMMAXAXMASXSMMMSSSSMSMMMMSAXMXSAMXXXAMSASXMSMXAAASAMXSXSAAAXXMASXMAAXAAAXAMXSA +XXXAXXXSSMSSMMSASMMXASAMXXXMMSAAMXMAMMXSXMXMAAAAXMAXMSAMAAAMXMAASMSSSSMSAMXAAMXAAXMASMMMXMXMMMMSSXSMSAMMXMAXMSMSASAMAMXMMMAMXMXMAMMMMSSXMSMM +XSMSMAMAAAAXXXMAXAAMSMXMMMXSAMMSSXSAMXAMAMAMSSSMMSMSAMXSSMSSSMMXMAXAMXAMAMAMXSMSMXXXMAAAASXMAAAAAAXAMMMAXXSSMXMSMMASXMSXSSSXASMSSMSSMAXMXMAS +MAAAMAAMMMMSMXMXMMXSXAXASMAMASXMAXXMSMASAMMXAAAAAXMAMXMAMAMAMXSAMXMSAMXMAMASXXAMMAMSSSMSSSXSSMSSMXMAMXMMMXXAMSASASAMAAXAMAMMMMMAAMAAMAXMMSMM +AMSMSSSXAXXAAAMXSSMMXMSMMMMSAMAMSSXMAMMMMMSMMXMMMSASMMSAMMMXMAMAXAAXXMAXXSASMMSMMASAAAAXAMAMAXMXXSSSMASXAMSAMMAMMMASXMMSMSMXSAMSSMSXMSXMAAAX +SMMMAAMMMMSMXAXAMXAMAXAMASXMMSSMAAASXSAMXAMXMAMXXXAAAAMAXAMXMAXSMSSMSASXXAMXAXAXSMSMSMMMSMSMMXSAMMAASASASAMAMMSMXMAMXMAXXAAXXAMAXXXAMXAASXSM +MAMMMSMAXMAMSSXSMSSMMSMXASAAXAMMMSMMAMASMASXSMSAMMSMAMXAMSMMSASXMMMAXAMXMASMMSSXSAXXMASXAAAXXASASMSMMXSAXMSAMMMXSXAXAXSXSSSMSMMMSAXMAMMMXAXA +MSMAXAMMMSMXAMXXAAAAXAMMXSXSMMSXMAMMMMAMXSMAAXXAXAXMXSMMXMAAMSSMAMMXMASMSMMMAAXAMXMXXMMMMMMMMMSAMMAAXAMASMSASXMAMSMSMSMAXXAXXAAAMMSMMMXXMXMX +MMSXSMMSMMXMASAMMMSXMAMSMSMMAXMAXXMMAXAMXMMMMMSAMXSXASAMASMMSAMMAMAXMAMMAAAMMMAMMSAMXMSXSAXAAXMXMXXMMXMXMASAMMMSMMMAMAMMSSSMSSMXXAAAASXAAXXS +SAXMAMAAAXXSAMASMAMXMXXAXSASAMSMSSMSASXMXMAXXAXXAMXMAMAMXXAXMASXSSSSMAXSSMMSMXMSMXMMXXAASASMSMSSMMMMXMASMXMAXMMXAXMAXAAAXMAAXXSMMSXSMSAMXMXM +MASAXMMXSMMMASAMMASASXSMSSXMXMAXAAAMASAAXSMMMSSMXMASMSXMXXSMXMMAXAAMXSMMASMXXAMAXAAMSAMXMXMXAAAAAAASAMSXMASXMSMSXMSMXSMMSSMSMSXXAAAMAXXMASAM +SSMMMMSMMAAMAMXSXMMXXAAXAMAXAXMSSMMSXSAMXSAMAAAAMMXMXAMXSMMASAMSMMSMAXAMMMSASMSSMXAAMAXMMMMMMMSXMMXXAXAMXMSAMSASXMXXAMASAAXAXSAMXXXXASMSXSAS +MAAXAAAASMMXMSASASMAMMMMASMMSMXAXXAMASMMASAMMSSMSMMMMXSASASXMASXAMAMAMMMSAMXSAAAMSSSSMMAMASAAAMXSXMSMMASXXMAMXAMMSAMSSMMXMMMAMAMAMMMXMAAAXAX +SSMMMSSMMASAXMAMAMMAMSASMXMAXXAMSMAMAMAMXSAMXMXAAXAMAAMASAMMXMAMSMMMMMMMMASAMMMMMAMAAMSXSASMSXSAMAMAMSAMMSMMMMMMXMAMAAMASMMXASAMAMMAAMXMSMMM +MAAMAMXXAASXSMSMSMSXSAXASAMMSXMXXMAMAMXXXSMXAMMMMMSMMSSXSXMAMAAAAMXAAASAMMMMSXSSMMSSXMAAMAMAMAMMSAMAXMASAMASXSMAXMMMSXMASAAXXMAXMSMSSSMAXAAX +SSMMAXMXMXSASAXAAXXMAMASXXSASAMSXXSXSAMXASASMSASXMAXAMXAMMMXMSSSSSSMSXSAMSAMXAAAAXAAAMMSMMMAMAMXXAXSXSXMASXMAXAXSXMAXAMXSMMMSSSMASAMMAMXSMMM +XMASMSMAMAMMMXMAMMMSMXSAMXMASAMAMXXAXMMAAMAMAAMXMASMSSMXMAMAXAAAAAXAXAMAMSAMMXMSXMASMMAXAMMSSMMSXSXMASXSAMMMSMMMSAMASAMXXAAXXAXMMMAMSXMASMSM +MMMMXAMASASXMXSAMXAAXSAMSMMAMMXSSMMAMXSXMMAMXMSXMXAAMAMMSXSMSMMMMMMSMMMSMSAMMXXMAMAMAXXXAMAAAAXXAXAMAMXMMSAAAAAASMMMSAMMSXMSMMMMXSMMSAMAXAAX +AAAXSSSMMXSAXAXAXMXSSXXXAAMXSXAMAXMAMMXASMMSSXMASXMMSAMAMXAAAXAAXXAXXSAMXMAAMMMSAMAMSMMSSMMSMMMMMMAMAMXSASMSSSMMMXXXSASASAAAAAAAXMAAMAMMMSMS +SMSMMASASASAMSSMMMMXMAMXSSMXXMXSAMMMSASMMAMAXASASXMASAMSSXMSMSSSXMMSAMASAMSMMAAXXSXXAAXAMMMMXXAAXMXXASXMAXXAMXXAMSMMSMMASMSMXSSSMSMMSXMAMXAA +MSMAMAMXAMMMXXAMASAMMSMXAMXSXAXXXMASAMXXXXMXXAMMSAMXMAMAXAXAXAXMASXMMMAMMXXASXSSMXXMSSMASXXAAMXSMMXSAMAMAMMSSMSSMSAMSXMXMMAMXMAMXMXMXXXAXMMM +MASXMSMSMXAXMSMMAXMXAXMAMSAMMMMMXSXSAXMMMMMSXXSMSAMAMSMSSSMSMMMSAMAMASXSXMXAMAMXMAMMAXMAMAMMMSAAAAXMMMAMMXAMAAAMASMMXMAXMXMXMMAMASMSMMSSXMAS +SAMXSMASXSXSAAXMXSXMMSAMXMAXAAAMXMASXXAASAASAXMASXMAXAAAAMAXXAAMASXMAMASXMMSMMMAMASMXMMMSMAMAAMSMSAMXSXASMMSMMMMAMMSSSMXSAMSSSMMAMXAAXAAASAS +MASXXMAMASXAXSXSAAAXAAAXMSXMMSMSAMXMASXSXMMSAMMXMMSMXMSMXMAMMMSSXMMMMXAMXMAAAAMXSSXXAXAAXXSSXMMXAXMMMAXAXMAMXMXMXMSAAAAASASAAMXMASMSMMMMMMAS +XAAMXMAXAXASMMAMXSXMAMMMMAMXXMASASMXMAXMXSAMAMXAAXAAAXXMXMMMSAAXAAMASMMMXMXSSMXAXAMSSSSXMAMXAXXAXASAMMMMMMASASAMAMMMSMMMSXMMXMASMMMAMXSASMMM +MSXSAMSMSSXAMMSMAMMAMASMMAMXAMASMMAMMMXMAMMSSMSSSMMSMXAMXMXAMMMSSMMAMAXMAXMXMMASMMMAAAAMMMSSMMSXMASAMXAAASXSAXMMASXMAXSXMXMXXSASAMASMASASAMX +XMASASAAMAXMXAAMMSSSMXMASASMAMAMASXMAAAMMSAAAAMAXXXAXSSMXMMXXXXAAXMAXMMXASMSAXSXAAMMMMMSAAXXSAXXAXSMMSSXXAMMMMASASASMXXAXMXAXMASASXAMASAMAMS +AMAMSSXSMSMXMSSXXAAXXSSMMAMXAMXSMMMSXSXSAMXMMMMMMMXXXXMAMXSMMXSMSSSXSAMXXAAMMSMSSMSMMSXSMMMAMXXMSMXAMAAXMASAASXMASAMXASXMSMMXMAMMMXMMASMMSMS +SMMSAMXMXXAXMAMMMMSMMXAXMXMAXMXXXAMMXMASMSMMAMSXMAMMAMASMMAASAXSAAAMAAXMMMXMXAAAXMAXASAMXSMSMSSXAMMMMSSMMXMXMMXMXMMMXMAXAAAAAMSSSMAXMMSMAXMX +XAXMASXSASMMXAMAMAAAXSMMMXMMSSMMSMMMSMASXAXXAMAXMASXASAMAMSMMASMMMMMSSMMXSMSSMSMXSASMMXMAAXAASAMXXAMXMAAXSSSMSMXMMXMSXMMSSSMXMXAASAMXMSMAXAM +MMMSAMXSAMSAXMXSXMMSMMAASMSXAAAAMXAAXMAMMMXMAMMMSASMXMASXMXXMXMXSXXAXAAXAAAAAXAXAMASXMMMSMSMXMASMSMMAXMMMAAMSAMMSMAASAMXMAMMSSMSMMMXAXMMMXSA +XMASAAAMXMASXMAMASAMASXMSAXMMMMMSSMSSMSSMASXSMXAXAXMMMXMXXMASXSXSAMXSMMMSSMXXMMSAMAMAAXMXXAXMMXMAAASXMSSXMMMSXSAAXAMSAMXMASMAAMXMAMSMMSAMAXM +XMASMMXMXXMXMMMSAMASXMAAMXMMXSXMXMXMAXAAMASAXXMXMSAMXXAAXSSMMAASXAXMSAMXMAMSMSXSXMMSXMSMSASMMXAMMMMMXAASAXXXMAMMSSSMMXMASXXMAMMXMAXXAASXMXMX +XMAMMXMXAMXMSAMMASAMMSSMMMXAASASMMSSMMSSMASASMSXMMMAXSMSMMASXMSSXSXAXASMMMMAASASXSAXMMAAMXAASXMMASMMMMMSMMMXMASMXXAAMMXXSSXMASMXSSSMMMSASMSM +XXMAAMSAXAAAMAXSAMAMAMAASXMMXSAMXAAAAXMAMXMAMASAMMSSMAAAASAMXXMMAMXSMMXXASXMSMAMAMXSXSMMMMMSMAASASAMXMAXAAXXXXXXXMSMMXXXXXXAXXXAAXAAMMSAMAAA +MSMSMAAMXSXMSAMXASAMAMMMMMSXAMAMMMSSMMMXAMMAMMSAMAAAXAMSXMASMMMMMMAAAXSSMMAXMMAMAMMMMSXMAMXAXSMMSXXMXMXXSMASMSMXMXXAXMASMMXMXMMSMSMMMMMMMSMS +AXAXXSMXMMMMMASXMMMSASXMAXSMMMAMXAMMAAXXMAXXMXXAMMMSMSXMAMXMAAAAASMMSAMASMSMMSASMSAAASASMSSMXMAMMSSMSMSXAMAMAAXMMAMXMMMXAMMMAAMAAAMAXXAMMMMM +SMXMAMXAAAAMMMMXXAASMSAMXSXAMSMSMSSSSMXSMMASASXSMSXMAMAMASMMSSSMXXXSXXMAMXAAXXAAXXMMXMXMMAMMAMAMMAXAAASMMMAMXMMXMASASXMSMMASXMSMMXSASXXSAAAX +MMMSMSMSSSMSAAMXSMMSSSMMSMXXMAASAXXAAAMSAMASAMAXAXMSMSAMMMAAAAMMMXSMMAMSSSSSMMSMSMMMMXMMMXMSAXXSMMMSMSMAXSXSAXMASXSXMAASXSXXSMXXSAXXAAASXSMS +MAAAMAAXAXASMSMAXAXSAMXXMAASXMMMAMMSMXMXAMMSAMAMMSMXAXAMXMMMMXMASXMASAMXAAAXXAAXAAMXSAASMSMSMSMMAMXMMXMXMMASMSMAMMXMSMMMAXMASXMAMMSMMMMMAXAA +SMSSMMSMAMXMAMMSSMMMMMSAXMXMAASXMMXAAMSSXMASAMXSAMMMMMSMSAAAAXSXSASMMSSXMMMMMSMSAMMASMSXAAAMMAASXMAXMASXXMAMXMMAMAAMAXASMSMAMMXMAMAMXASMMMSM +XAMXMMMMMMMMMMAMAMAXXAXMASMSSMMAXMXMXAXAAMMXAXAMXXAAAAAAASXMXMMASMMAAAXAMAXXAAXMASMMSXMMSMMXSSXMAMSSMMXAMMXXSXSSMSASASASXSXSXMASAMXASXMAXAMX +MXMAMAXAAAAAAMMMAMXMAXXXSXAAAMSSMMAXMSXSSMXSSMSMASMSSSMXMMXMMAMAMASMMSSSMMSMMSXSAAMXMXSAXAMAMMMSMMMAASXSASMXMAMAMMAXASXMMMAMASAXXSXMAMSMMSXS +XXSASXSXSXSSSSMSSMSSSMMMMMMMXAMXASASAMAAAXXAXAAMXSAAAMMSSMASAMMSSMMMXMAMAXSAMXXMAMMAMXMASAMSMMXXXAMMXMAXMAXMMAMAMMAMMXXMAMMSAMXXMMMAAAAXAMAS +SASASASXMXMAAAAXXAAAAAMXAAAMSSMSAMXSMMMSMMMSMSMSMMMXMASAAXMASMAXAXAAAMASXMMXMMXSXMSASMMMMMMMAMXXSXSMSMMMASMASXSMSSSMSMMSMSXMXXSASASMSSXSAMAM +AAMAMAMASMSMMMMMMMMSSMMSXMXXAAAAMAAMMMMAAAXXAMMSASXAXMMXXMMMAMXXXMASXSXSMAXMMMMMAXSASXSXXAAXAMSXSAMAAXXASXAMXAAXAMAAXAXXXAAMAXMMSASAAAXSXMAS +MSMMMXMSMAAMASAAXXAAAAXSMSMMMMMMSMMMAASXSMMMXMAXAMSXSAMSSSXXMAXSAMXMASXSMSMSASAMXMMXMASMSMSMMMSAMAMSMMXSAAMMMMMMSSMMSSMSMMSMXMSXMAMMMMMMXSAM +XAAAXASAMXMXASAMXMMSSSMMSAASXSSXSASMSMSAXMASAMXMSMMXMAMXAAAXXAASXMASMMAXXMASASXMSMMMMAMXAMMASAMXMXMAAASXMSSMAAXAXXXXMAASAAXASAMMMMMMAMXMASXM +SSSMSXSASMSMMSAMSAMXAXAXSMSMAAAASAMAXXMAMXAXAXAAAAMAMSMMSMMMMMMMSMASMMXMMMXMMMAMXAASMASMSMSAMASMMSSSMMXAXAAMSSMSSMXASMMXSMSAMAMSAMASASAMXSAX +MAAMXMSAMAAMAXAMSMMSSMMMSSXMSMMMMXMMAMSMMMSSMSXSMSMSAAMAMAXXAXAAXMAXAMAMXAMMSSSMSSMMSASAXAMXSAMAAAXASMSSMSSMXMXMAAMAMXMXMXSXSXMMAMASMSASASMM +ASMMAAMAMXMMSSSMMAXAAASAMAMAAAASMXMXMXAASAMAMAMMAAAXSMMASXMSMSMMSMASMSMMAMSAAAAAXMAXMXMXMAMMMMSMMMSMMXAMXAMAMXAMXMAASASXSAMAMAMXXMXXAXXMASXA +XMAMAXXXXSXAAXMASMMMSMMASMMSMSMSAASASMSXMMSMMAAMSMMMMXSASMMAAXXASMMMAAASAXMAMMMMMMSMMSSMSAMAAXXMAMAMXMXMMXMMMSMSMMSMSAMAMMMAMXMAXSSSSSXSASAS +SSMSMSMMMMMMSSXXMSAXMAMAMXMXAMAMMMSASXXASXMXXXMAXXSXXAMAXXMMXMMMSASMSMMMMXMXSASXXMAMXAAMSMSXXSASMSMXSASXSMSAAAAAXMAMMAMAMXSSSSMXSAAAAAXMAXAM +XAXAAAAAAAAAXAXSAXSXSASMMMSMMMAMXXMXMASAMXXSXSXSMMAAMSMMMSXSASXMSAMXMASASAAMSAMAMASMMMSMMAMXAMAXAAMXMAMAAASMSSSXXMAXSXMXSAMAAXAMMMMMMMMMXMAM +SMMMSMSSSSSSMXMMAMXMMASAAAMAMSXMXMASMAMAMMXSAMAAXMMXMAAASXASASMXMXMXSXMASMSMMSMSAMMASXXAMAMMXMMSSSMSMSMMMXMAMXMXXSSMSMXSMMSMSMSMXMSXSXXAASXS +AXAXXXXMAXAXAMXSAMAAMMMMMMSXMMXMASAXXAXAMXSMXMXMAMMMSSSMXMXMMMMMMAMMMMMMMMXMAXXXAXSAMASXMXSXXAXAAMAXAAXASAMSMSMSMAMAMXMSAAXAMAMXXXSAMXMMMSAM +SXSSSMMMMMMMSMAMAMXMSASXSASXMAAAMXMMSMXASMXMASAAAXMAAMAMXMAMXAAXSMMAMAAAMMSSSMMSMMMAMAMXMAMMSMMMSMAMMMSSMXXAAAAXMAMXMAMMXMMMMAMMMMMAMMMSMMAM +ASAMXAAAMAMAXMXSAMSXXAMAMXMASXSSMXAAAMMMMAAXASMSSSMMMSAMASMMSSXMAAASXSSXSAAAASASASXSXMMAMMSAXAAXAMASAAMMXXSMSMSXMASASXSMAAXASASXAAMAMAAAAMMM +SAMXSSMMXAXXXAXMMXMAMMMXMMSMMAMAMSMMMSAMXSMMMXMAXAAAXSXSMAMXXASMSMMAAAAXMMMSMMMSAMXXASXSSMMMSSMSMSASMSMAMMAXXAMXXMXAMAAXXXSAMAMMXSXSSMSSSMSM +MMXAAMMMSSSMMXMASAMAAAAMAMXXMMSAMXAAASAMAXXXXAMXSSMMMMMXMASXMAMMAAXXXMSMMSMXAMAMXMASMMAXSAAXXXMAAMASAXMAXMAMXAMXASMSMSMMXMXXMAMXMMAAAXAXMASA +MSMMMSAXXAAXXAMMSASASASXSAMXMAMMMSMMXXAMAXXMSMSAMXMXAAAASASXMSMSSMMMMXMAMSASAMXSXMASXMMMSSMSMSSMSMAMMXMASASASMSAASAMMMAMXMAMSAMXAXMMMMXSMAMS +MXMMASMSMSMMSMSASXMAMAMXMASAMSMSXMASASMMSXSAXMAMSAXMXXSASASXSAAMXSAAMASAMMAMXXAMXMAXAAMAMAXXAXAAAMSSSMMMSAMAXAMMAMAMXSASXMAXSASAMMMSMSAMMXSA +MAMMASMMAAAXMXXXMAMAMAXMMAMXMXAXXSAMMSAAMAXSSSXMMMSSSMXAMAMXAMSMASXSSMSSSMAMMXMMMSMSSMMASMMMSMMSMSMAMMAAMMMAMMMXMSSMMSAMXMMMSAMMXSAAXMASASMM +XASMMSASXSSXMASMSXMSSSMSXMASAMAMMMMSMMMMMSMMMMAMSMAAXAMSMSMMXXAMMMXMAAXASMXXSAMAAAMMAASASAAAXAAXMXMAMSMXMASXMMAXAAAAAMAMAMSAMXMAAMMSMSMMMMAX +SASAXMAMXXXMSAMMAASAAMAMASAMAMXMXAAXXAXSAMAMASAMAMMSMMMMAMAMSMMMMSASAMMMMMAASASMSSSMSAMXSXMSSSMSXXMAXAAMMMMMXXSSMSSMMSSMAASAMMSMSSMXXSMMSSMM +AASXMMSMSAMXMAMMMMMMXMMSAMXSSMMSMMXSSSXMASMSASASXSXXAXMMSMSAAAXAAMXMAMAXAMMMSAMXXAAXMASAMXMXAAAXXMMSSMSXASAMAXXAAXAXXAXMXASAMXAXMAMSAMAAXAMM +MXMXMAAAAAMSSSMXMASXMMXMXSXXXAAMASAMXMASAMXMXSAMXMMMSAXAXAAXSSMMSSMSSSMMMXXXMASMMSMMXAXASXMMSMMMMMSMXAAMXXAMXMSMMMMXMASMMMSMSSMSSSMMAMMMMAMX +SSMAMSMMSXMAAAXMSMSAAXAXMMXMSMMMXMXXAMMMXSAMXMMMXMAAXAMXMSMXXAMXMAMXXAMSSMSXSAMAAMAMMMSAMAMAMAASAXXXMXMMMSSMAMMXAAXMSMXXSAMXAMXAAAXSXMSXXAMA +AASXXXXMMMMMSMMMAMSAMSXSAMXMAMSMSMSMSMSAMXMXXXAAASMMXXXXMXMMMAXMMMSMMAMMAAMMMASMMMAMAAAMSXMAXSMSSSMSMSXMAAASMMMMSXSMAMXMMMMMMSMMSMMAAMAXSAMS +SAMXMXMAAXXXAAASAMXAMAMSAMXMAMAAAAAAAAMAMMMSMSMSMSAAASMMSSXAMXMSAMAAXAMSMMMSXMXAASASXSSXSMSMXXAXASAAMSXMMXMMMASMMASXMSSSSSXSXMAXAMXSAMAMSAMA +AMMAMASMAMXSSSMSMSSSMXMSAAASASMSMSMSMSMSMAAAMAAMASXMASAAAMSSSMMSASMSMMMAASASASXSMSASAXXAMXAMMMXMXMSMAXXMSSMASASASMXAXSAAAMSXAXMMASMMAMXMMXSM +AAXAXXSMAMMMAMAXAAAXXXMMMSXSAXMAMMMMAMAAMMXXSMSMMMXMXSMMXXAMXAAXAMXAAXAMXMASAMXAAMAMMMMSMMXMXAMAAXMMSXAMAAXAMXSAMXSXMXMMMMSSMMMXXMASAMMAMASX +MSSMMMXMAMAMAMXMMMSMSXSXAXAMAMSXSAAMAMSMXSAMSXMAXSXMMXMASMMMMMMSMSSSSMMXAMAMAMSMMMAMXAAAAMAMSMASAXXAMXMMXSMXSMSASASAMMMSAMXAMAMSMSMMASAMMASX +XAAMSSMSMSXSMSAMAAAXAASMXMMMSMXASXSSSMMAAAMXMASAMSAMSAMMSAMSMSXXXAXMMAXSXXXSMMSAAXASXSXSSMAXAAXMAXMASMXSAMMAXXMAMAXSAAAAAMSMMMSAAAXSXMMXMASX +MMSMMAAXAAASASMSASXMMSMAMAAAMMXMXMXMXAMMMMXMXAMAMSAMSASAMAMAAXAMMSMXSAMXSXAMAASXMSMSAMXAMMXSMSSMSMSAMXAMASMMXMMAMAMXMMSSSMAAMXSMSMXAMXXXMSSM +XXAAMMMMMMSMAMAXXXAMMAMSASMSSMASXMAXSAMXXXSMSASMMSMMSAMXSSMMSMAMAAAAMASAMMSMMXSAMAXMAMMMMXMXXXAAAAXASMASXMXAASMSMXSMXMAMMMSMSAXMAMXXAMXMXAXX +SSSSMMXSSMXMMMAMMSXMMASMMAAAAXAXAMAXXMXMMMSAAXXMASMXMSMAMXSAAXMMMXSXMAMAMAAXMXSMMMSMMMAMSXMSSSMMMSMMMMAXMAMMXMAAMMMAAMAXSXMAMASXMMSXSAAMXMSX +AAAMXSAAAMXXAMXSMAXXSMSMSMMMSMMSSMMMSMAAAAMMMXSMMMSMAAMAXAMSMSMSMAXASXSXMSXSXAMXSSXMAMAMAAXAMMAMXMXXSXAMMSMMAMSMSXXXMSMMSAMMMMMAAASMMMAXMXAM +MMMMAMMSMMMSMSAMMASMSASAAXMAMAXAMXMAXSAMMXSMXMXAAXAMMMMSMXMAMAAAMAMMMAAXXXAXMXMAMMAAMSMSSSMMSMAMXMAMSASXAXAMMMXAMMMSMSXAXXMASASMMXMASXSMSSSS +XXXMAXMAASAAAMASXAXAMAMSMMMSSXMAMAMAXAMXSAMXXMSSMSMSMMAAXMSXSMSMMXMXMSMMAMMMMAMASMMMXMAAAAXMAMASXMSXMMMMMSMMXAMAMAAAAXAMSMMMSASXMMSMMAMAAAMX +MSMMXSMSAMSMXSAMXXMMMSMMSMAAAMXSSSSXMASAMASMMAXAASXAAMSSMMMMAXAMXAMAMAAMMSXAXMSASAAXAMMMXMASXSXSAXMASAXXMAAXMMSSMMSMSAXMAXAAMAMMMAAAMSMMMSMM +MMAAAAAMXAXMXMASMSMSAAXAAMMMMMAMAXAAXXMMXSMXAMMMSMMMSMAAXAASXSMSSSSSSSXMASXMSAMASMMSXXXMSXMMAAXSAMMAMXSMSSSMAXAMXXMAMAASXSMMSAXAMSSSMMASAXMM +SSSMSSXSMSMMSMSAMAAMMSMSSMSASMXSASMMMSMMMMAXMXAXAAXMAMXMSSMSAAXAAXAMAMXMXMAXMXMMMMMMXSAMASASAMXSASMSSXXAMAMXSMMXMXMAMAMXAXAAMMSMXXXMAMAMXSAM +MXXAAXXXAAXAXXMASMXMXAAMAAMAMAAAXXAAAXAAMMAMMXSMSSMXXSMXXXAMXMMMXMMMMXXMXMXMMSMMAMXAASAMASMXMXXSAMAXXXMMMASMMXSAMXMAMMXSXMMMXMAMXSMSSMMSXSMM +AMMMMSMMSMMMSMSMMXASMMSMMSMMMMSSSSSMMSSMSMMMSAMXMMMMMMMMSAMXAXAMSSXAXSAMAMXSAMXAAMMMXSMMXXXAMSMMSMSMMMSASXSAMAMASMSMSAAAMMXSAMXMAAMAAAASAMXA +SXXMASMAAXAAAXAMXMASAMXAAXASAMXAAAXAXMMMXAAMXASAXAAAMAASAMXSSSSSXSAMXSASAMSAMXXSSSXSAMXASXSASAAAAMAAAASASMSAMMSAMAAASMXMAXASASAMSSMSSSMMAMAA +XMASXSMSSSMSSSMSXMASMMXMASXMASMMMMMXAAXSSSMSMXMASXSSSMSSSXXXXAMXAXMSXSAMASAAMAMMXXXAAXMASXSMAMMMSSSSMMSXMASXMXAMMMMMMXMXXMASMMAMMAMXXXASXMXM diff --git a/src/AoC/Y2024/D04.hs b/src/AoC/Y2024/D04.hs index eaacb21..72ad8e9 100644 --- a/src/AoC/Y2024/D04.hs +++ b/src/AoC/Y2024/D04.hs @@ -1,6 +1,97 @@ -module AoC.Y2024.D04 (solve) where +{- HLINT ignore "Use bimapF" -} + +module AoC.Y2024.D04 (solve, example) where import AoC.Riddle +import Data.Array + +type Index = (Int, Int) +type Puzzle = Array Index Char + +-- | example data +example :: Text +example = + unlines + [ "MMMSXXMASM" + , "MSAMXMSMSA" + , "AMXSXMAAMM" + , "MSAMASMSMX" + , "XMASAMXAMM" + , "XXAMMXXAMA" + , "SMSMSASXSS" + , "SAXAMASAAA" + , "MAMMMXMMMM" + , "MXMXAXMASX" + ] + +mkArray :: [[a]] -> Array Index a +mkArray vss = + array + ((1, 1), (w, h)) + [ ((x, y), v) + | (y, vs) <- zip [1 ..] vss + , (x, v) <- zip [1 ..] vs + ] + where + w = case vss of + [] -> 0 + (vs : _) -> length vs + h = length vss + +neighbors :: Int -> (Index, Index) -> Index -> [[Index]] +neighbors n b i = filter (\is -> length is == 4) (take n <$> result) + where + directions = [(dx, dy) | dx <- [-1, 0, 1], dy <- [-1, 0, 1], (dx, dy) /= (0, 0)] + move :: Index -> [Index] + move (dx, dy) = i : Prelude.unfoldr (\(x, y) -> let p = (x + dx, y + dy) in if inRange b p then Just (p, p) else Nothing) i + result = move <$> directions + +extractPath :: Puzzle -> [Index] -> String +extractPath p path = (p !) <$> path + +extractPaths :: Puzzle -> [[Index]] -> [String] +extractPaths p paths = extractPath p <$> paths + +extract :: String -> Puzzle -> [String] +extract w p = Prelude.filter (== w) $ extractPaths p (Prelude.concatMap (neighbors (Prelude.length w) (bounds p)) (indices p)) + +xmasStencil :: [[Index]] +xmasStencil = + [ [(-1, -1), (0, 0), (1, 1)] + , [(1, -1), (0, 0), (-1, 1)] + ] + +line :: (Index, Index) -> Index -> [Index] -> Maybe [Index] +line b (x, y) xs = result + where + candidate = filter (inRange b) . fmap (bimap (x +) (y +)) $ xs + result = if length candidate == length xs then Just candidate else Nothing + +getXs :: Puzzle -> [[String]] +getXs p = result + where + stencil :: Index -> [[Index]] + stencil i = mapMaybe (line (bounds p) i) xmasStencil + + result = filter (\xs -> length xs == 2) $ extractPaths p . stencil <$> indices p + +extractX :: String -> Puzzle -> [[String]] +extractX s = filter (all (\w -> w == s || w == reverse s)) . getXs + +parse :: Riddle -> Puzzle +parse riddle = result + where + input :: [[Char]] + input = toString <$> lines riddle + + result = mkArray input + +part1 :: Riddle -> Int +part1 = length . extract "XMAS" . parse + +part2 :: Riddle -> Int +part2 = length . extractX "MAS" . parse + solve :: (MonadIO m) => Text -> m (Either Text Solution) -solve _ = pure $ Left "not yet implemented" +solve riddle = pure $ Right [fromIntegral $ part1 riddle, fromIntegral $ part2 riddle] diff --git a/test/spec/AoCSpec/Y2024Spec.hs b/test/spec/AoCSpec/Y2024Spec.hs index c68d82b..240d295 100644 --- a/test/spec/AoCSpec/Y2024Spec.hs +++ b/test/spec/AoCSpec/Y2024Spec.hs @@ -17,11 +17,11 @@ spec = do it "calculates correctly" do runAoC Y2024 D03 `shouldReturn` Right [185797128, 89798695] -{- describe "Day 4" do it "calculates correctly" do - runAoC Y2023 D04 `shouldReturn` Right [24542, 8736438] + runAoC Y2024 D04 `shouldReturn` Right [2567, 2029] +{- describe "Day 5" do it "calculates the example correctly" do runAoCExample Y2023 D05 `shouldReturn` Right [35]