diff --git a/2024/Cargo.lock b/2024/Cargo.lock index 2a4539d..83cf089 100644 --- a/2024/Cargo.lock +++ b/2024/Cargo.lock @@ -141,6 +141,15 @@ dependencies = [ "nom", ] +[[package]] +name = "day04" +version = "0.1.0" +dependencies = [ + "divan", + "helper", + "nom", +] + [[package]] name = "divan" version = "0.1.16" diff --git a/2024/day04/Cargo.toml b/2024/day04/Cargo.toml new file mode 100644 index 0000000..0f0b68f --- /dev/null +++ b/2024/day04/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "day04" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +nom.workspace = true +helper.workspace = true +divan.workspace = true + +[[bench]] +name = "benches" +harness = false diff --git a/2024/day04/benches/benches.rs b/2024/day04/benches/benches.rs new file mode 100644 index 0000000..a4fc28b --- /dev/null +++ b/2024/day04/benches/benches.rs @@ -0,0 +1,3 @@ +fn main() { + day04::bench(); +} diff --git a/2024/day04/input.txt b/2024/day04/input.txt new file mode 100644 index 0000000..9540440 --- /dev/null +++ b/2024/day04/input.txt @@ -0,0 +1,140 @@ +SASASMSSSMSMSMSMSSMSAMXMAMAMXSXXXMAMMXSAMXMXMXSMMMXXXSXXAXSMMMAMXAXSMSSXXMSASASMXSSMSMSXMMMAMMMXXSAMXSSMXAXSASMMMXMASAXSXMXMAMXAMXXMAXXAMAMX +AASAXAAAAXXASASMXSAXAMXXSMSSMSAXSMSMMASAMAAXMAMAAAMMMMMSMXSAMXSSMSMXMAXMASXAXAMXAAXMAMXAMASAMAAMXMASAMAAMSMSASASMMMMAMSXSMASMMSMSMMASMMMSAMA +MXMXMMMSMMMMMAMXAMXMSSSMAXAAXMAMAAAXMASASMSXMASMMXSAAAAAMAXAMAXAAXAAMXMAMXMSMSMMXMASMSMXSASAXXXSASXMASXMMXAMMMAMMAXMXMMAXXAMAAAAAAMAMAAXSAMA +XSMSAXMAMAAXMAMMSSXSAAXSMMXXMASMMSMSMXSMMAMMSMAAXASMSMSSSMSSMMSMMMSSSSSSSMAMAAXMXXXAAAAAMMSAMSMSASMSXMASAXSAMMSMSMMMAAMAMMSSMSMSSSMAMMSMSAMX +XMAMAMSASMSSSMSAXAMXMSMAXAMMMXXXXMMXMAMAMXMXAXMMMMSAMAAXAXAXMXMAMXMXAAMAAMAMXMMXMMMMMMMMSAMAMMAMAMAMASXMXMXXSAXMAAASXSMXSAAAXXAXAXXSSMMASAMM +XMAMAMXAMXXXMAMXMMAXAAXMXSAASAMXSMASMASAMXSXMSXSXAMAMMMSSMMSXXMASAMMMMMXXMASMMMSMMASAMASMASXMMAMASXMAMXMAMSXMXSSSSMAMAXAMMSMMSMMAMXMAAMXMMMA +MSASXSMSMXSAMXMMMMSMXMMMAMXMMASXXAXXMAMASASAAXAMMSSMMMXAXMAMMMXASMSASXMSSSXSAAAMAAASASXSAMSAASXXXSASMMMXAXAMMXMXMAMXSMMXXAXMAMXMXMASXMMSMASX +MSXMASXAAXSAMXMAXXXAMMMMASMSSMMXMXMSMSSMMASMMMAMAMAASMMMMMASMSMMSXAXSAMAAAASXMMSSMXSAMMSMMSMMMSMSMXMAASXXMAXMAXMMXMMAXXXMASMXMAMASMSASAXMAMX +MXMXSMSMSMSXMSXSXMAMAAAMXSXAAMSMAAAXXAAMXAXAXXXMXSMMXXASMSMSAMAXSMSMSAMMSMASXMXAAMAMASAXAAXAMAMMAMSMSMMAMSSMSXSASMMSXSXMMASMMSASASAXXMASMXSM +SAXMAMAXAASAMXMMASAXSMXSAMMSSMSASMSMMSSMMXSXMSAMXSAMSSMMAAAMASMMMAAMMAMXXAASXMMMMMMSAMMMMMSXMAMSAXMAAXMAMXAAASMMMXAXMMAMAXMAMMMMXSXSSMMMXAAA +SAMSMSMSMSMMAAMMAMAXMASMMSAMXAXXXAAMMAMXMMSMAXMMASAMASXAMMMMAAMXMSMXSAMXXMMSMXAAASXMASXXSASMSSMSXSMMMXXAMMMMMAXAMSMMASAMXSMSMXAMASAAMAAAXSMM +XAMMXSAAMXMASXSMXSSXMMMAMMASMMMSMSMSAMSASXSASMXMASXMASMSSMXMXSAMXXXMSXXMAAAXAMMSMSAXSMMAMASXAXMSXAAXAASMSMXAXMSAMMASXSXMAMAMXMASASMMSSMSAMXS +XAMXASXMSSXAXAXMAXMAAXMMMSXMAMASMAAXAXSASAMSMAXMASAMASAAAAXMAMXASMSMSMASMMSSSSMMASAMMAMXMMMMSSMMMXMMMXSAAASXSXSAXSAMAMMSSMMMAMMAMXAXAXMMAMAM +MSAMXXAXAMMSSMMSXXXAMXXXXXXSAMSSMXMSMMMXMMMASXXMMMXMASMMXMXMASXSXAXAXSMXAAXAAAXMAMMMXAMXSXMSAAAAMASXMMMMMMSAAAXXMMMSAXXAAAXMXXSAMSXMASMSXMAM +XXAXXSMMMSMAAAAMMSMAXXMMAMXSASMXMAMAASMMSASAMMMMSXXMASXSSMSMASXMMSMMMSXSMMMMSMMMXMAMSMMAXAXMASMMXAXAXMAMXMMXMMSMASAXASMSSMMMAASAMSXMAAXXMSAS +SSMMMSAAXAMSSMMSAXXAMXMSSSMSXMAMMSSSSMAMSAMMMSAAAMAMXSMXXAAAAXMXAMASASAMXAAXAXXXSAMXAAMXSXMSMMMXMSSXXMASMAAXXXAAMMMSAAAXAXAMAXMAMMAMMSAMXXAA +XAXMASMMSMXMAAXMASMMMXXXAAAXSMMMAMAMXMAMMAMAASXSMXMASXMXMSMSXSMSSSMMAXSMMSSXMSMXXMASXSMAXMXMASXSSMAMASASXMMMXSASMAXAXMSXSSMSMMMMMSXMAMMASMMM +SMMMASMAXXXMASMMXMASXMXMSMMMMSAMXSAMSSXMSSMMXSAAXASXMAXXAAXAXMAAAAXMMMXSAAXASXAMMXMMMAMSSMMSAMXMASMAXMASXSXAAAAAMXMMXXXMASAAXAXAAXSMASMAMAAM +MMMSAMMXSXMSXMASASXMAXSAMAMAAMXSXXAMMMSMAMXXSMMMSXSAMXMMSMSMMMSMMMMSMAMMMXSXMAMAMXAAMAMXMAAMAMXAAMXXMASXMSXMMMMMSMMXSAMMAMXSSSSMMMAMAXMASMMM +MAAXAXXXAMXMASMMAXAMAMMAMMSMXSAMXSSMSAAMAMSXMAAXXASMMAXAAXAXXXAAXSMMMASXMXSASAMSMSSSXSSMSMMMSMSMSXXXSXMXAXMMASXXXAXXXAXMXSXMAAAASMMMAMSASASA +MMSSSMSMSMAMXMMMSMSMSXMMMXAAAAAXAAMAMSXMASXAXSMSMMMASXMSSSSSSSMSMMAASXSMSMSASXSXAMAMXMAMMAMXXAXAAXSMAAMMXMMSASXMSSMSSMMMASAMMMMASAXSSXMASAMM +SAMMAMAAASMSMSAAAMMAXMSAMMMSMMMMMSMAMAMSMMXSMAAXAMSXMAAMAAAAAMSXAXSMMXMASAMAMMXMXMAMMXAMSAMSMAMXMAMAMAMSSMMMSSXAAAAMAMAMASXMASXASXMAXAMAMAMX +MASXAMMMMXXAMXMMXSMAMASASXXMMSSXMAXAMXXAXSAMSSMSSMXXAMMMMMMMMXSMXXAAXXXSXMMAMAXSXXXMASMMMMXAAXXSMMMSSMXXAAXMASMMXXMXAMAMASXMASMASAMMSXMMXMMX +XAMMXSAXXXSMSSMSMSXAMMSAMXAAAXMASMSXMXSSSMAXAXMAMMMMAMAXXXXSMAXAMSSMMMXMAXSXMSAMXSSMXSAAAMMMXSMMMAAMAAXXMMMXMXXMASMSXSMSAMXMAXAMMXMXMXMAAMSS +SSMMXMASMAXSAMAMAMSXSXMAMSXMXMMAMAAASAMXAAXMASXMXAAAASMSMSAAMAMSMAAAXMAMXMXAAAAXXAXMASMSXSAMMAAASMSSSMMMSSSXMMMMXXAAAMAMAMXMASXXMAAASAMMXSAM +XAASXSAAMAMMXMAMAMXMXMMXMSXSASMMSMSMMAASMMMMXSMMSSSSMSASAMSMXAMAMMSMSSXXAAMMMSMMMMAMXXXAASASXSMMSAXAXXAXAAMXXAAAXMSAMXAXAMMMXSMASMSMSASASMMM +MSMMAMSSMSSSMMXSXSSMAMXSXXAMAXAXAXAASAMXMAMXAXAAAMAAAMAMXMXMMMXAXMAAAAMSXXAMAMAXXXMMMMMXMMMMMAMAMXMAMSSMMSMSSSSSXAAXSXXSASAMAMMMMAAASMMMXASX +AXAMXMAMMXMAAXXAXSAMMSASMMSMMMSMMMMASMMASAMSAMMMSSXMMMXMXSXSAMSMSXMSMXMASXXMASXMAXSAAXMSXMXXSAMASXMAMAAMMAAAAAXXASXSMAMSAMMSAXAXMSMMXMASXMMX +SSXMAMSSMASMSMAMXSXSAMXSAAAXAAAAXXXXMAXAMAMMAMSSXMASAMXMASASMXAAXMAMXXSAMXMSMSMSMASMSSMMAAAXMXMXSXSASMMMSMMMSMMXXMMAXSMMAMAMMXSXXXMSASASMAMA +AMXMXMXAXASAMMSXMSAMMMAMXSMSMSSSMSSXSAMSSSMMXMXAAAASASXMASAMXSMSMASMSMMMSXMAAMAAMAXMMAASMMMSSXSASMXAXAXAXXXAAAXMASMMXMAASMSXSAXSMAASXMAXMAMX +MMAMAMXMMMXAXAMAAMXXAMAMAXXAAMXAASAAMXSAAASAMXMSMMASAXASAMAMXAAXMSMAXXAAAASMSMSMSMXXSMMMMXAAASMAMAXSSMMMSMMSSSMSAMXSASAMXAMAMMSASXMXXSXMSSSM +XSASASMXXSSMMSXSXXAMMSMSMASMSSSMMMMMMMMASAMMSAAXXXAMXMAMASMMXMXMXAMMMMMMXXMAAAAAAASMSAMMMSMMSMMXMSXMAMAMXAMXAXAMXSAMXSMSMAMMMMSMMSSXMSAXSXAX +ASMSASAMXXAAAMXXXMMAXAAAXAMXAAAAMXAXXAXMMASASASMXMASAMASXMAMXXAASMMAAXASXSMXMXMXMMXASMMAAAAXXXMAXMMSAMXXXAMMXMSMMMMSAMXXMAMXXXMAAAXAASXMMSXM +XSAMXMAXSSSMMSAMXSASXMSMMXSMMXXMASMSMMSXSXMAXAMAXMASASASMMMSSMAXAASXXSASASXMSASXSMMAMMSMSSSMSASMXXAXAMAMSSMMMMXASMSAMXAXXMASXMSMMSMMMMAXMXSA +MXASMSMXXAXAXMXMASMMXAAMMMMMSMAXAAMXMMSAMMMSMMMXMMXSXMAXXXAAASMMMMMAAMAMAMAXSASASMSAMXAXXXXASXMSAMSSMMMXAAXMAMXAMMXMASXSXAAXAAAXAAXMASMMMMAS +SMMMMAMSMXMXMXMMXSXXMSMSAMAAAMSMSMMAXMMMMMAXAXMMASAMXMMSSMMMXMXMAXMXMMSMXMXMMAMMMASXSMMMSAMXMMAXMAMAAASMSMMSSSMMMAAMMXMMMAASMMMXSAMSASAAAXSX +MXMAMAXAMMXMMMSAMXMSAMXSAMMSXSAAXASXMSASXMSXXMASAAMXAMXAXMAMMSMSSSMXXXAMAXASMMMAMMMMMXAASAXMXMASXSSMMMSAMXAAAXAMXSSXSASMASMMXAXXMAMMXMMSMSAM +SASXSMSMSAASAAMAMAMMSMXSAMXMMMMXSAMAASASAAMXMSAMXSXSSMMMSSXSAAAAAAXSMSMSSXMMAAXMMAAAXMMXSAMXMMMMMXMASXSXMMXSMSMMAXXAXMMAMMAXSMXAMAMXMAAXMMMA +MMSAAAXAAMMMAXSAMASAXMXMMMAAAMXAMAMMMMAXMAMXXMXSSXAAAASXAMAMMSMMMSMSAAXSAASXSMSSSXSMSXSASASMSAAASASMMAMMMXAXXAAMMSMMMAXMMSSMSASMSSXSAMASAXXS +SXMXMMMMMXMMXMSXSXMASMXAAMMSMSMMSXMAXMMMMASXAAASMMSMSMMASAMXAXAMXXASMMXMSAMAXAAAMMMAXMMXSAMAXXSSXXSXMAMAMMMSSMSMAXAASAMXXXMAMXMAAAAXSMMAMXXX +AXMXMSMMXMSSMAXAXAMAXMAMMSAMMAXXXMSMSMMXSAMXMMMMAXAXMXAAMAXMSSSXSMAMXMXXXSMAMMMXMAMMMAXXMAMMMXMXMAMXSMSASXAAMMAMSSSMMASXMSMSMSMMMMMMXMASXMXX +XMAMAAAXXMAAMXMMMMMMSXMSAMAMSSSXMMAMAAAAMAXAMXMXMMSMSMMSMXMXAAXAXMXMSMSMAMMSXSMXMXSAASMXMAMXMAASXSAAMXSASMMSSXMSAMMXSAMXASAMXXASMXSSXMSMAMSM +XMAAMXSMAMSMMXMAAXAMAAMMMMAASAMAXSMSSSMMSSSMMASAMXAAAAXAXSMMMSMSMMXMAAAMXMAXXAXMXAXXXAMXSMSMSMSMAAMASAMMMMAAXASMMXSAMXSMSMMMSSXMXAXMAMAMAMAA +MSMXSAAMMMMAMAAXXSASMXMASMXSXAMSMMAAMXAAAMAASASASXMSMXMMXAAAXMAXAMSSMMMMMMXSXMMSMMSMSAMXXMAXMXMMMMMAMMXSAMMSSMMAXXXXMMMMXAAAXMAXMAXSMMXSSSMS +AAAAMMSMSASAMXXSAMAXXXSASXMMMMMAAMMMSSMMSMSMMAXAMXXMMMAXXSSMSMASAMXASAXXASMMMMAAAXAXMXMXXSXSXMXMASMXSXASASAMAXMSMSMSAAAASXMXSSXMASMAASAMXMXM +SMSMXAMXMASXMAXMAMMMMXMAXAXXAMSXMMMXAAMXMAAXMMMSMMXAAXSAMMAMXMAXAMSAMMMSXSAXAMSSSMSSMXSAAMAMXAMMAMXSMXMSSMASAMMAAXAMSSSMSXMAXMASAMMSMMAMXXAS +AMAMMXSAMAMAMMMSMMMAAXXXMMMSMMXMSAMMSSMAMMMMXAAAAXMSMXMAXMAXAAMXSMMSMXASXSXSXMXMMXXAMAMMSMAMASXMAXMXMAMSASAMASMMSMXMMXXXMAXMSSXMASAXXMAMXSAS +XXAXXASAMXSXXAAAAASXSMMMMSAAXMAMMAMMAAMASASASMSSSMXAMXSAMXSSSMSAMMMXSMXXAMAXMAMSMXSAMXSAAMAMXXXXMXAAMMXSMMXSAMXXAMASAAXMSMMMAXMSXMASMSMSMMAM +SMXSMASAMXMMMMSSMMMXMAMAAMXMAMMMSAMXSSMXSAMAXAXXMXSXSXMASAAAAAMMSASAMXSMAMAMASMAMXMASASXXMAXMMSSSSSMMSAMMAASXMXSASAXMMSXAXSMAXMMSMXMXAAAXMMM +SAAAMAMAMSAMAXMMASXMSSMMSMMXSXAAMAMXAAMAMAMSMMMMAAMMSASAMMSMMMMXSMMASAAXXXAMSAMAXASMMASASMSSSMAAXAAASMSSMMMSAMASMMXSAAMXMSXMMSMXAXAASXXMXMSS +SASMXASAMSAMXSASAMAMAXAXMASAMMMMSSMMSAMAMAMXMAAAMAXXSAMXSAAAAXSAMXSSMMSSMSASMMSMSASXMAMXMAAAAMMSMSMMMAAMXMAMAMASAAAMMMSAXMASAAMMXSMXSAMSMMAM +XAMMSMXMMSAMAXXMAMSMMXMMSAMAXMAXAAAXMMMSAMXMXXSSSSMAMXMAMMXMMMMASMMMAAMAAXXSXXAMMAMXMAXAMSMSMMAAAXMMMMMSMSMSSMXSMMSSMASASXSMMSXSAXXAMAMAAMAM +MXMAAAXSAMAMSSSMSAMAAXMASXMMAMXMSSSMSXAXAMXSAMXXAAMSSMMSSMSSSMSAMAASXMSMSMMMMMXSMMMMSMSMMAXAAMSSSSXSAMAAAAXAAAMXMAAAMXMAMXAASAAMMMMXSMSSSMAS +AXMSMXMMASMMMAXAMASMSSMASXMSXXXMAMXAMMASXMAXMASMMXMAAXAMAAAAAXMASXMMAASAAAXAAXAMAMXAAAAMMMXSSMAXAXAMAXSMSMMSSMMAMMMMMXMSMMSMMMSMSXSAMXAXAMXA +SAMAMSAMAMAASXMXMAMXAAMAMXAAMSMSMMMMMMAMXMXSXSXAASMSMMXSAMMSMMSAMMASMMMSMSMSXSASAMMSMSMSXXMAMXMXXMMMAMMAAXXAMXSXSSSSSXMMAMMMAMAAAAMASMMXXMAX +MMSAMMAMXSSMMAXXMXSMSSMSSSMSAAASXAAAXXASXMAXXAMMMSAXMMAXXAAXMMMAMMAMASAXXXMAMXASXXMAAMAXASASXSXSAAXMASMSMMSXMXMASAAAMAMSAMAMAMMSMXMMMMSMSMSM +MAMMSSMMXXMAXXMXAXSAMXAXAXAAXMSMSSMMMSXSAMSSMMXMAMAMAMAXMXAMXMMMMMSSMMASMSSSMMXMASXMXMSMXMAMAAAXSMMMAMXAAAMMMMMSMMMMSAMXASXMXSAMXAMAAXAAAAAX +MMMAXAASXXSAMSMAXXXSSSSMMMXMXXXAAMASAMMSAMAAXXAMASASMMSASAASXSMSXMXAXMAMMAAAAASMXMAMXMASMSXMMMSMXMMSSMSSMMXAMMXAXXAXMXSSMMMAAMAMSSSXSSMSMSMS +SXMMMXMXAXMASAAMAMMMMMAAXAAMXMMMMSAMAMASAMSSMSXSASXSAAXAXXSAAAASAMSXMMMSMMSMMSMAASAMXMAXXAXXXAAMXAAAAAXXXAXXSSSMSSMSXXMASAMXMSAMSMSMAAMMXMAA +MAMXMMXMXMMXSASMSXAAAXSMMMMMAAAAAMXSAMMXXMAXASAMASASMMMMMMAMSMMXAMSMMXMAXMAMMAMSMSMXXMMMMMAMMMSSSMMSSSMMSMSXAAMXMAXAXMXMMMSAXXAXMAMMSMMMAMXM +SAMASAAMASMAMAMXMASXXMAXMASMMSMSXSASASXSSSMMXMAMAMMMXXXAAAMXXXSMSMSASXSXSXMXMAMXMXMASMSAMXAAXSAXMXMAXXAAMAAMMMMSSXMMMSAAAASXSSMMMAMXMMAXMMAX +SASXSMMSAXSAXAMXXAAAMSMMMAMAXAAMAMASASAAMAMMMSAMXSXSXSSSSSXSSMMAMAMSMXSAMXXSSSXSASAMMAMXSSMSXMXMSAMMMXSMMMMMAMXMMMAAASXSMXSXXAMASASASMSMSSSS +SXMASMMXAXXXXSSXMMMSAAMAMMSSMMSMAMXMXMAMSAMAAMASMSMSAAAAAXMXMAMMMSMMMAMAMMAMAAAMMSAMMSMMAXMMMMMXSASXSAMXAAASAMXAAMMMMSMXXXMMSAMMMAXASAAAAAAS +MAXAMASXMMSMMMXXXXAMMXMSXAAXXAMMMMAMXSXMXMSMMSAMAMAMMMMMMMMAXSMXAXAAMXMSXSXMMMMMXSAMAAASAMXAAAMASAMAMAMSXXASASMMMSAAXMASMMSASMMMMSMMMMMMMSMS +SMMMSAMMMAAMASAMXMXSSMMXMMSXMASAXMASAMMSXXSAAMAMXMAMAXSAXSSXSAXMASXMSSMMASMMXXXXAMMMMSMMASMSSSMMSAMMMSMMSSXMAMXAASMSMXMAAAMAMSASAMASAXXSAMAX +AMAMMMMMMSMSXSAMXMAMAASMSMAMSSMMMSAMXSAMXAMMMSSMMMAXMSMMSMASAMXMMXMASXASAMXXAMMSXMASXXXSAXMAMXMMSAMXAXAAXXXMAMMSMXXMMASMMMMSAMXMAXAMSSXMAXSA +MMXXAAXXMAMMXXXMAMAMMMMAAMAMXAAAMMXMAXASMMXAMXMMASMXMAMXAMMMXAMXMAMMMSXMASXMASAAAMXSAXAMASMMMAXXSXMMMSMMSMXSSXAXSMSMSAMAXXXXXMASAMXMAMXMAMMM +XMASMSSXXMASAMSSXSXSMMMSMMMSSSMMSXMASXMXMMSMSMXMXSMAMASXMSXSXSSSMMSSMMMXMMXXAMXSMMSMMMXMAMASMMSMMXXMAAAXAAAAXMAXAXAAMMSSMSMMMMMMXSXAMSMMMSAS +XSASXAXMSXAMASAAXSASXXXAMAAXAMXMSAXSAXAAAMAXSAMSASMSMASMAAAMAMAMSMAAAMAASMSMMSAMAXXAAXXMMXXMAMSAMXMMSSSMMMMXXMSSMMMSMMXMASAAAXAAAMMXMAXMXSAS +XMASAMXAXMSSMMMSMSAXMXMAXSSMMMSXSAMAMSMMSMSMMSMMASAMMMMMAMSMAMMMAMSSMMMMSAAAMMXSXMMSMSXMASXSMMSSSXXAAAXAMXXMSAMAXMXMMSMMSMSMSSMSMAAMSXSXAMSM +MMAMMXMXSAMAAMXXAMMMAASMMAMAXAMMMXMAXAAMMMXAXXXMAMXMAMXXSSXMXSXSMMXAXAXMMMMXMXMMMMAMXXMASXXAAASXMASMSSSMMMAMMASAMMMXAAMXMAMXMMMAMXXMXXAMMSAX +AMAMSASXAXSSMMMMSMXXSXAXMAMMMMSXMAMXMSSMSASAMXXMXSAXAMXXXAXAMXAMXMXMMMXSAMXMSMAAAMASXMSMMMSSMMMAAXMAMAMXASASXMMAMAAMSXSASAMAXXMAXSMMMMSASMMM +SXSXSASMXMXMAAXAXASMXMMASMXSAMXXMAMAXXAAMXMAAMAMASMSMSAMXMMSAMXMAMAXMAMSAMMAASMSMSXSAAAAAAMMSXSXMASXMSMSMSASAMAAMMXXMASAMASXMSSMMSAAAAXMSAAM +MAMAMAMAAMXSSMSMXAMMAMXMAAMMMXMAXXSMSSMMMAMXSSXSAXXAAMAMXMAXAMMMXSAXMMMSMMSSXXXAASAMMSSSMSAAAXSAMXSAMAAAAMASAMSXSXSSMMMSMAXXAAAMAMMMMMSASMMS +MAMAMXMSXXAMMASMMSMXASAXMMMASASAXMAMAXAASMSAMXAMXSSMSMAMSMMSAMAAXMXMXMAMXAAXXSAMXMAMAXAXMXMMXXSAMMMASMAMXMAMAMMAXAMAAXAXMMMMXSXMASMXSAMXMAMA +MASMSSMASMASMAMAAXMMAXMXMASMMASAXSAMASMMSMAMMMXMAXXAAMAMMAXSASMXSAXSXMSMMMSMSASAXMAMMSMSMXSSXASAMXSAMXAXXMAMMSMMMAXXMMSSMAXXAXXSXSAAMMSASAMM +SXXMAMMASMSMMMSMMMMMSMMASXSAMMMMMMXMASAMXMAMXXSSSSMSMSMSMMMSXMASMXMXMAAAXAAMSAXMASAXXAXAMSAMMMMMMXMASXXSXSASMAAMSMMSSXMAXXSMMXASASMXMXSMSXSA +AMSMASMASMMASMSXSASAAASMSAMXMXAAXXAMXSXMASXSXMXAAAAXAAAAAXAXAMMMMAMAMSSSMMMXMAMMMSASMMSMSMAXXXMAMXXMMXAMXSMSMMXMAAMXMASAMXMMSMAMAMMSMASXMAMX +SAASASMAMAMXMAMAXMAXXMMXMAMAMMAMMSMSMMXSXSMMASMMMMSMMMSMSMMSAMXAMAMXMAXAXSSMAXMXMXXMAAXXXMMMMSSMASXMAXMAMMAXAMXSAMXAMMMAMAXAXMMMXMXAXAXAAMXS +MSMMSSMMSSMAMAMSMSXMSSMMASMXXMAAXAMXMXMXAXAXAMAAXXAASXMAXAXXXMSMSSSMMMMMMXAAMXSXSMASXMAMSASASAMAAXAMXXXMAMMMSMAMMMSMSMMSMSMMSMMXMMSMSMSXMXAX +MXXMAXMMAAXMMAMXAXAXAAASXMASMSXSSMSXMAXMSMSMSSSMSSSXMAMXMXMAAXSAAXAMAXASXSMSMXSAMSXMASAAXAXMMASMXXAMAMSMSAXAXMMMAAAAAAMXAXAMAXAAAXAAAAMMSMMS +AXSMSAXMSSMSSMMMMMXMMSMMAMAMAAAXAMMASXSAAAXXMAMAMAXSSXMASXMSMAMMMSXSSSMSAAXMMXMAMAMSAMMSMXMXSMMAMMAMASMAMMMMXMASMSXSXSMMXMSSSSSSSSMSMSMAMAMA +MAXXMAXXAMXAAASAMXXAXAAMXMSMMMMMAMSMXMAXMSSMXAMXMAMMMAXAXAXMXMSAMXAMXAAMMMXMXMSXMSAMAMAXAMAMMAMAMSMMMXMAMXMSAMMSAXXAAXXMAXXXAAMMMAMMMMMXSAMA +SMMMSAMMASXSSMMAAAMMMSSMXMXXMAMSSMXSASAMXAAMSMSXMASMSSMSSMMSAMAMXMSMXMMMXMMMAMSAMXXAAXMXSASASMMXMAMAXMMSSSXAMXMMAMMSMXASXSSMMMMAMAMXAASMSMSX +XAAAMXXXMXMAXMSMMMXSAAXMXXMAMAMAAXAMXMASXSMMAMAMSASMAXAAAASXXSMSAMXAASAXAMAXXMMASAMXSAXAMMMMXXAXSASMMSAMXXAXMASMMMAXXSAMXAXXXASMSMSXSMSAMASM +SSMSMSXSXSMSMMXXSAAMMMSMXMSMMAMSSMMSSSMMAXXMAXAMMXSMAMXXAMXMXXMAXXMXMXASMSSMSASASASAAMMXSMSXXMXMMAMXAMMSMMXMSXSAMXSMASMMMMMXSAXAAXXMMMMMMAMA +XMAXAMAXMAMAMSSSMMMXSMMMMMAMSXMXAAXAAAXMXMXSASMSSMSMAMSMXSAMXAMSMSMXSXMXAAAASAMASMMMSXSXSAXXXAMSMXMMSMAAAMMXXASMMMXAXSASAASMMSMSMMMXSASXMASM +MMAMAMMMXSAMXAMXAXSAXAMXAMAMMASMSSMMXMMXAAXMAMMAAAXMMXSAASMSSXMAAXMASAMMXMXMMAMAMXSXAASAMMMMXMMSASMAMMSSSMAAMAXASXSSXSAMSMSAAAMAAXMASXMASAXA +AMAXSMXMAMMMMSSSMMAXXAMSSSMXXAMXAAAXSSMSXSAMAMMSMMMXSAMMMSAMAMMXSAMASAMAMSSSSXMASASAMXMXMAAAMSAMXMMXSAAXMASXMMXMMAMAAMMMXXSMMMSSSXMMSMSMMMSX +SSMSMAXMAMXAAAMAMSAMSAMMASAAMSSMMSSMAAASAAMXXXAAAXXXMAXXXMMMMMSMXAMXSAXMAXAAMXXAMXSMMAAXMSMSSMXSXXXAMMMSXAMAAMSSMAMMXMASMASMMMXAMMSXSMAMAXAM +MMMAMMMSSSXMXSMAMMAXXXMMAMMMXXAAAAAASMMMXMXSSMSSSMMMSAMXSMMASXAAMMXAMMMMXMMMMSMXXXXAXXSSXMAXAMSSMMMXXAXMMXSSMAAAMXXXXSASMMXAAXMXMAMXXMASMSMA +XASXSXMAMMAMAXMASMMMMSXMXSXSXSSMMSSXXXXXMXAXAAAAMAAXMASMAXSAMMXXASMSXSASAAXSASASMMSSMXAAAMXMAMAMAXXAMSXSAXMMXMSMMSXMXMAMXXSXMSSMMSSMMSMXXAXM +SMMMSXMAXSMMASXMSAMAXAAXMXAAXXXAMXMMMMSSSMSSMMMSMSSXSAMMMMMASMSMSMAAASASASXMASXXAXAAMASMSMASMMASMMMXSAASMXAAXMAXAXAMMMSMSMSAMXMAMXAMXAAMSSSS +AXAAMASAMMXMXMAMXMSSSMMMAMXMMXSXMAAAASAMAAXXMAMAMXMXMAMAMAMMMAAXASMMMMAMAXAMXMAXMMXSAMAAAXXXASAXXAXMMMXSAXSMXSAMSSXSAAAXSAMXSXXSMSMMSMSMSAAX +SSMXSMMASMAMMSSMXXAXXAAASAXXAMMMSSSSXMASMMMXSSSSMMXSXSSMXAXSMMMSASXMAMMMMSXSXSMSXMAXMSMSMSXSXMASMSSSXMAMMMXAMSASMXASMSSXSASASAAAAAMMXAMMMMMM +MAXXAXSAMMAXMAXMMMMSSSXSAMXSXMXAAMMMMSMMXMSAMMAMXSMMAMAASXSMAAAMASASMMMAAXXMAAXAAMASXMAXASMSASXSAAAAAMAMAAMAMSMMMMMMXXMAMAMASMMMSSSMMMMASXSX +SAMMAMXXSSSSMAMMAAAMXAXMXSASASMMSMSAAAMXSXMASMSMAMAMSMMMXMAXSMXSASMMSSSMXSAMAMSSSMASXMMMMMAMAMAMAMMMMSSSMSSSMSAMXASXSAMMMSMMMXAXAAAMASXMMAAS +MASXMMXSAMXAMSMSXSMSMSMMAMMXAMAAMASMSXSAMASXMAMMMSXMXXXXMSAMXXMMMSXAAXAAASAMAXMAAMAXXMAAAMSMAMMMSMXXXXAAXMAMASXMSXSAMXSAAAAXAASMMSMSAMAAMXMX +XMXAAAXXSMXAMXAMAXXMAMAMAXXMSMMSMAMXMMMMXAMXMXMAMMAMMXMMAMXMMMXAAXMMSSSMMSMMSSMMMSSMASASMSMXXSAAAXXMAMSMMMAXMXMXSMMMMAMMSMSMSSXMXXAMMMSMMAXX +SMSMMMXXAXAXAMMMAMAXSSXMAMSAAAAXMXSAMAMSMSSSMMSSXMAAAAMMAMAAAMXMXXMAMAAMMXMAXAMXXAASXMAMXAXXXSMSSSXSAAAAXMMSMAMSMMAMMAMXMAXAXMAMASMMSAXXSXXX +AAAXMASMAMSSSMXMASXMAMMMAAMXMMMXMASMAAAXXAAASAMAASXSMMSASMMXAMASASMSMSMMSAMMMMMSMSXMSMSMSMMAMXAXAAASXXMMMAMAMMMAXSASMMSAMAMMMSXMASAAMMSMMMSM +MMMSMASMAMMAAAXSAXXAAXXMMSMSXXMXSAMXSMSAMXSMMSXSXMAXAAAMMMMMAMASASAAAAAASMSSSSXSAXXXAXXAXSXMAAXMMMMMXSSMSAMXSSSMXSASAAMXMSSXAMXMASMMXMAAAAAX +ASAXMAMMMSMSMMMMASMSMXXXAAXXMASXMXSMXMXAMXXXMAXXMMXMMMSXMAMSSMXMXMMMSMMMSAAAAAAMMMASMMMMMSMXMMMAAXAMAMAASASMMMAXAMMMMMMMXAXMAMSAMXASASMSMSSS +XAXXXXMAXSMXMMMMMMMAMXXSSSMMSSMAMMSAAMSSMMXSAMXSAASXSAMAMMMAAMMMMMAXMXMAMMMSMMXMAMMXAAAAMXAMXSASXSMMMSAMMMMAASXMSXSAXXASMMSXSAMMMSXMASAMAMXM +MMSSXASXXMMAMAMAMXSXSSMXAAAASAMXMAMSXXAAASAMAXASXMAAMAXAMSMSSMAAXSAMMAMXSXMAXMSMSSXSXMXMSMMMAXMAMAAAAMMMAXXXMMSAXASMSSMMAXAMMMMAAMAXAMAMXXAM +MXAMMAMXASXXXASASMMMXMAMMMMMSAMXMSMMSMMSXMASXMMSXMMSMMXSMXAAAXSSXMMXSAMMMASMMMAAASAMXSAMAAAMXSMMXSMMSSSSSSMMSAXSMMMMMAASXMMMSASMSSMMSMMMSMAM +XMAXMAXMMMASMASASMXAAXSMXAXAMXMASXSAASMXMSXMASAMAAXXAAAMXSMMSMMXAAAASASXSXMAMSMMMSXMASASXSXSXXAMXMAMMAAXAAAAMAXAMAAAXMMMSAXAMXMAXAAAXAMAXMAM +MSSXSXSAAAAMMAMXMXSSSSXAXMMSXXXXAXMSMSMMAXXMAMASMMMSMMXXAXASXMSSMMMMSMMMMXMAMMASAMAMAMAMXMAMAMSMMMAMMMMMSMMMMSMMSSSSMAAAXSMMSXMXSXMASAMXSXXX +MAMXSAMMSMSSXAXMAXMAMMXXMXMXAMSSMXXAMXAMSMSMASAMAAAXMASMMMSMSAAXMAXXSMSMSAMMMSAMASXMAMSAAMAXAXMXMASMXXAAMMASAXMXAMAAMSMSSXXXAXSXSXSXSAMAMMXS +MASMMAMAXAAAMSXSXSMAMSMMSXSMAMAAXXXASMSMAASXMMMSSMMSMAXAXXMAMMMSSMMMXAAASAXSAMXSXMAMAAMXXSSMMXSAMAMASMMSMXAMMASMMMSAMXXMAMAMMXXAXAMAMXMXSAXA +SASASAMMSSMMXXAAASXXSAAAAAMSMMXXXSSMMMASMSMASXMAAAAAMSXMMMMAMAXAAASXMMMXMAMMAMXXASXMMSXSXAAAXMSAMAMASXMAXMXSXMSAMAMMXSMSAMXAXAMSMSMMMAMXSMSM +MASAMMSMAXSXAMMMMMASXMSMMSMSMMMSMMASXXAXMAMXMXMSXMMSAMXSAXMASMMSMMMAAXMSMMMMXMMMMMMXXAAXMSSXXAMAMXSAMASASMMMAMSMMAXXSAAMASXMMXSAAXMXMASAMXXM +MXMASAAMSSSMAMXSSMMMMAMAXXAXXAAAASAMXMAMSASMMXMMXSAMXXXSASXMSXAXAASXMMAAAAAMSXSAAMAXMMSMAXMASMXSMXMXSAMXSAASAMXXSMSMMAXSAMMSSXSMSMAAMMMXSMMS +MSMMMXSSMMMXSXMSAMXMMASMMMMMSMMMXMASMXAMMAMXMMSAAXMAMXMMMMAMMMSMSMSXMXSMXMXXAAMSXSXAMAMMMMMMAAAXMSAXMMSASXMSAMXXMXXXAAMMASAAMAMAXXSMSMAMXXAX +XAAMAMMXXAAAXAMXSMAXSASAMAAMAASMSSXMASASMSMAXAMMSSMSXMSAXSMMAAMAXAXASXXMSSSMMSMMMMMSMMMSAAXSMMMMAXSAASMASMXSXSSMMMXMMSSXAMMAMSMAMAXAAMMXMMSS +SSSMASMMSMMMSAMSMXMMMASASMMSMSMXAAXAXAMXAXSMMSSMMAAAAMXSMAMMMSSSMMMXMMAXAAXMXAXSAMXXASASXMMMASXXMAMMXMMMMMMMXXXAAXAXAMMASXSXAXMXMAMSMSMMSAMX +AAAMXMAAXAAXXAMAAAXAMXMAMXAMXMAMMMMSAAXMXMAMAXAXSMMMXMAXMAMXAAAMXSSMSSSMMXMSSMSASXMXAMASASXSMMSAMAXMSSMAAAAMMMSSMXSMSXSAMXAXMXSMMSXXXXAASAMX +MSMMXSMSSXMMSSMMSMMASMMSMSSMMSAMXAAXMAAXMSMMSSMMSMASAMXSSMSMMMSMAMMAAAMASMXAAXAMAMAMXMXSMSXAAASXSSSMAMXSSMSAXAAAXAXAXXMASXSMMASAXMAMXSMMSAMX +XXXSMAXXAAMXAMXXMXASXXMAMXAAASAMSMSMXSSSMAXSXAAMXSASAMAMAMMAMSAMXSMMSXSAMAMSSMMXAAMAASXSXXMSMMMMAMXMASXMAAAMMSSSMMMAMASAMMXAMAXXMASMMSAASAMM +XMAXAMSMSMXAXAASMMMXAXXAMSSMMSAMXXMXAMXAXAXASMMSAMMSAMASAMSAMXAXMXAXXAMXSSXXXAXSMSMSMSASXXAXMXMASXXMMMAMMMXXXMAXAXMAMAMXMASMMXSSMAAMASMMSMMA +SMMMSXAAAAXMSAMXAMXMAMSMXMAAAMMAMXMMMSSMMMMMXXAMASASXMXMXMSXSSSMAMMMMMMAMMSAXXMXAMMMAMXMAXSASMSMMXXXSSSMXSXMXXASXMSAMXSSSMMXSXAAMMMMASAASMMS +SAMXASMSMSXMAMMXXMAAAAAXAXXMMMXMMMSAAMXMAXSXSMSSSMMXMSSSMXSAMAAXXXAAXMMMMAMXMSSMMSMMAMAMXMXASMASAXXXMAMMAMMMMXMAMASASAXMAASAMMSMMAAMMSMMMAXX +SAMMMMXMMXAASMSMSSMSMSMSMSSSMSMSMASMXSAXAMSASAAXMAMSAMSASAMMMSMSXSSSMMASMAMAXXAAAAXMASXMSXMXMMAMMXAMMMMMXXAAAAMAAXSMMXXXSMMASMASXSXSMXMASMMM +SMMXAAAMXSSMXAAAAMMAXAAAAAAAAAAAMMMSMSAMSMMAMMMXSAMASMSXMMSXAAAXAMXXASASXASXXSSMMASXXXMXMAMMMMXSXXMSAXXXXSSSSXSASASASXXMASXXMXAXXAASAXXMAMAM +MAMSMSMSAMXSMMMMMSXMSMSMMMSMMMSMSAAAMMAMXASXXSXAMASMMXMSXXAXSMMMXMASMMMMMXSXAMXMMAXXXXMAMAMAMXMAMAMAMSAMXXMAXAXAMAMAXAXSAMMAMMXSMMMMAMSSSSMS +MAMXMAXAMSAMXSSXXXAXSAMXXMMMMAAXSMSMMSAMSAMAXMMXSAMXMMMSXMMAMXSMAMAMAAMSMMMMMMASMASXMMSAXSSMSAASXSMAMSMSMSSMSMSAMXMMMSMMXMXMXSAAMSAMXMXAAMMM +SSXSMSXMMMMSAMXASMMMMAMSAMXASMMXXAXXXSSMMAMXMSAMXMMASAASASXMSAASXMXSSMMAAASAXXAMXSAMXMAMXAAASMMXAXMSXMAAAXAAAAMXMAAXAAAMSMXSAMSSMMMXAAMMMSAS +XAASAXXXAXXMMMAXXMSAMXMMASXMSAMMMXMMMMMXMXMAMMAMMXXAMMMXAMMXSMMMXMMAMXSSSMSASAXXXMXAXSASMXMMMMAMMMMMAMSMMMMMMSMAMSSMXSXXAAXMAMAMMASAMXSXXSAS +SMXMASASMSMAXSMSXMAMSAMSAMMASXMASAAXSXMSSSMAXSAMASMSMSSMAMSMMSXAAXSMMXAAXXMAMAMSSSSXMMAMXSMSMMAXAAASAMXMSAAAXXXXMAXXAXXSMSMSMSAXSASAXAMAXMAM +AAXMSMAAAXMXMASMASAASAMMSSMAMAMAXMXMMAAAAXMAXXMXMXAXAAAXMMXXAMXMMXMAMMMMMMMMMSMXAAAASMMMSAAXXSMSSSMSXSAXASXXMSXSAXXMMSAMAMAAASAMMASXMMMSMMMM +MMMMXMSMMMSAXMASAMSMSXMAAXMAMSMSSSXAMMMMSMMSMSSSSMMMMMSXSASMSSSMSASAMAAAAXMAAMAMXMSAMASXXMMMMMAAAXAMAMMSMXSAAMASXSMXAMMMAMSMXMAMMAMXASAMAMAS +XAAXAAAAAAMSSSMMXXXXXAMXMMXASMAXAMXSAMXXXAMXAAAAMAAXXAXMMASAMAMXSMXASXSSSSSMXSASXXMAMAMXAXMAAAAMMMASMMAAXAMMMMAMASASXSMSMMAXSAXMMASXXMASAMAX +SSSSMMSSMXSAXXXXMMMSMMSAXSMXAMXMAMAMASXSSMMMMMXMXSMSMMMMMAMAMAMXMXSMMMAMMMMAMSASXSMXMASXSMSXXSSXXMXAXMASMSSSMMASMMAMAAAASAMXMAAXXMAXXMASAMMS +AAXAMXXAASAMXMMSAXAXAASAMXMAASXMMMXSAMMMAXXAAMASAMXXAAASMMSXSASMMAXAAMMMAMMAMMAMAAXASXSAMXAMMMMMSMSMMMMXMMAAXSMSAMXMSMMSAMXXMAMXXMASXMXSXMSA +MMMMMXMAXAMXMSASMMMXMMSMMAXXMMAAXAAMAMMXMMSSMSASAMMSMSMSAAAXSAMAMAXSMMXSAMXAXMAMXMSASAMXMMASAAAAAXAXAXMASMSMMSXSMMXMXXXMASXMXMSXSMASASAXMXXM +MSAAXSMMSAMAMMAMXAMAXASAMMXSAMSMMXMSSXSASMMAAMXMAMAAAMXMMMSMMAMSMSXMASXSASMMXSASMXMAXMAMXMASMSMSSSMXSASASXMAXXMXMXMASXSMAMAXMASAAMXMMMAMSMAX +SSMSXSAAXXMASXSXSASMSASAMAAMAMMMSXXXAASAMXMSMMSSMMXSAMAXSAMXMMMXAXASAMAMXMAMAMMMAXMAMMAMAMMSAXXMMXXAXXMAMXMSSSMSXXAAXXXMASXMASMMMSSMXMSAASXM +XXAAMMMMSMSASAXAMAAXMASAMMSSMMMAMAMMMMMAMXAMXAAAAAMMAMXXMASXMMSMXMASAMXMASMMMSSSSSMAMSASXSSMMMASASASMSMSMSAAAAAMMMMMSMMMASAMSXAXAAXMAAXSMSXM +MMMMAAAXAMMASMMXMSMSAMXXXXAAASMAMXMASXSSMMSMMMSSMMMSAMSXSAMXAAAAASXSAMXSASAAXAAAAAXAMSAMAMXAMSXMASAMSXAAAMMMSMMMAAAXXMASXSMMASMMMSASMSMAXMMS +XMMXSMSMMSMAMXXXXXMAMSAMXMSSMMSMSASMSXXAXAXXMAXXMSAMXXXXMASAMSMSAMXSXMAMXSXMMMSMSMMMMMAMAMSSMMMMAMAMAMSMXMXXMXMASMMSAMXAASAMXSXXXXMXAMMAMXSX diff --git a/2024/day04/input_small.txt b/2024/day04/input_small.txt new file mode 100644 index 0000000..1f4eda2 --- /dev/null +++ b/2024/day04/input_small.txt @@ -0,0 +1,10 @@ +MMMSXXMASM +MSAMXMSMSA +AMXSXMAAMM +MSAMASMSMX +XMASAMXAMM +XXAMMXXAMA +SMSMSASXSS +SAXAMASAAA +MAMMMXMMMM +MXMXAXMASX diff --git a/2024/day04/src/lib.rs b/2024/day04/src/lib.rs new file mode 100644 index 0000000..bebaf50 --- /dev/null +++ b/2024/day04/src/lib.rs @@ -0,0 +1,123 @@ +use helper::{Day, Variants}; + +pub fn main() { + helper::main::(include_str!("../input.txt")); +} + +struct Day04; + +helper::define_variants! { + day => crate::Day04; + part1 { + basic => crate::part1; + } + part2 { + basic => crate::part2; + } +} + +impl Day for Day04 { + fn part1() -> Variants { + part1_variants!(construct_variants) + } + + fn part2() -> Variants { + part2_variants!(construct_variants) + } +} + +fn part1(input: &str) -> u64 { + const XMAS: &[u8] = b"XMAS"; + const SAMX: &[u8] = b"SAMX"; + let mut count = 0; + + let lines = input + .lines() + .map(|line| line.as_bytes()) + .collect::>(); + + // Horizontal rows + for line in &lines { + for i in 0..line.len() { + if line[i..].starts_with(XMAS) || line[i..].starts_with(SAMX) { + count += 1; + } + } + } + + let line_length = lines[0].len(); + + let cols = (0..line_length).map(|i| lines.iter().map(|line| line[i]).collect::>()); + + for col in cols { + // dbg!(std::str::from_utf8(&col)); + for i in 0..col.len() { + if col[i..].starts_with(XMAS) || col[i..].starts_with(SAMX) { + count += 1; + } + } + } + + let all = lines + .iter() + .flat_map(|line| *line) + .copied() + .collect::>(); + + for i in 0..all.len() { + if i % line_length >= (line_length - 3) { + continue; + } + (|| { + let offset = line_length + 1; + let a = *all.get(i)?; + let b = *all.get(i + offset * 1)?; + let c = *all.get(i + offset * 2)?; + let d = *all.get(i + offset * 3)?; + let chunk = [a, b, c, d]; + if chunk == XMAS || chunk == SAMX { + count += 1; + } + + Some(()) + })(); + } + + for i in 0..all.len() { + if i % line_length < 3 { + continue; + } + (|| { + let offset = line_length - 1; + let a = *all.get(i)?; + let b = *all.get(i + offset * 1)?; + let c = *all.get(i + offset * 2)?; + let d = *all.get(i + offset * 3)?; + let chunk = [a, b, c, d]; + if chunk == XMAS || chunk == SAMX { + count += 1; + } + + Some(()) + })(); + } + + count +} + +fn part2(_input: &str) -> u64 { + 0 +} + +helper::tests! { + day04 Day04; + part1 { + small => 18; + default => 0; + } + part2 { + small => 0; + default => 0; + } +} +helper::benchmarks! {} diff --git a/2024/day04/src/main.rs b/2024/day04/src/main.rs new file mode 100644 index 0000000..58c8ad1 --- /dev/null +++ b/2024/day04/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + day04::main(); +}