From 6f70716b078606d40de9235acd8c4c77091c1882 Mon Sep 17 00:00:00 2001 From: Joshua Creek <8179928+jcreek@users.noreply.github.com> Date: Thu, 5 Dec 2024 21:47:47 +0000 Subject: [PATCH] feat(2024-04): Add partial day 4 part 1 solution --- .../AOC.Tests/Y2024/Data/Day04.dat | 140 ++++++++++ AdventOfCode C#/AOC.Tests/Y2024/Day04.cs | 240 ++++++++++++++++++ .../AOC.Tests/Y2024/Tasks/Day04.txt | 38 +++ 3 files changed, 418 insertions(+) create mode 100644 AdventOfCode C#/AOC.Tests/Y2024/Data/Day04.dat create mode 100644 AdventOfCode C#/AOC.Tests/Y2024/Day04.cs create mode 100644 AdventOfCode C#/AOC.Tests/Y2024/Tasks/Day04.txt diff --git a/AdventOfCode C#/AOC.Tests/Y2024/Data/Day04.dat b/AdventOfCode C#/AOC.Tests/Y2024/Data/Day04.dat new file mode 100644 index 0000000..f03ebcd --- /dev/null +++ b/AdventOfCode C#/AOC.Tests/Y2024/Data/Day04.dat @@ -0,0 +1,140 @@ +SMMSSSSXSMMXSXMMSASXSMSMXMXMMMSASXMASXMMMSSMMXMSMXAAMSAMXMSAXSXMMAMXXAXXAAMAXSMSAMXSXXXXXXMXSXAXSXXSSSMAXMMSMMMSMSAMXSAMXMAMSXSASMXXAMXMXSSX +XAAAAAAASASAMXSAMXMAMAAXAMMSAXSAMAMASXMASAAAMMMMMSAMXMAXAMMMMXASMXMSMSMMMSMSXMASXMASXMSSSXAASXMASMMSASMMSMAAAAAMMXMXSMASMSSXAAMAXAAMMSXSAMXM +SMMSMMMMSAMAMAMASAMXMXMMMSAMMMMAMMMAMXSXMXMMMAAAMAMXSXSSXSAAASMMMMAAAAXAAAXMAMAMXMASAXAAXMMAMAXAMAMMAMXAAMSSSMSSMAMSXMAMMAMMMSMMMSMSAAMMAMSA +XXMXMMXAXXMMMXSAMAMXSXMASMXSXASAMAMXSMMMSSXASMSXSAMXMAMMASXSMXMAAMSMSMSMSXXMAMXMXMAMMMMXMMMSSXXMSSMMXMMSMXAAAAAAMAMMAMSSMMMAAAASAAAMMSMSAMXS +MSAASXMMMSAMXMMMSXMASAMMSAMXMXMASAXAAAMAAXAMXXAXSMMAMAMMAMXXMAMMMXAAAAXAXXMSSXSMMMASMXSASXAMMMMAAMMMMXAXMMMMMMXSSSSMSMAAMASMSSSSSMXMSAMXSXAA +MMSXSASAAXMAMXAMXMMASAMXXXMAXAMXMMMSSSMMSSMMSMMMMMSMXAXMMMSMSMMAMXMSMSMMMXXAXAMAAMMMXASAMMXMAMXAXSAAAXSXMASAMXMAAXMAMSMSMMMAMMMMXSMXAMMAMMXS +MAMXMAMMSSSMSSMMASMASAMXMASMSMSAXXAAAXMXAAAAMASMMAAMXXSASAXMAMMAMAXMAMMMAXMAMMMMSMMAMXMMXSASMMMASMMSMMAMXASXMSAMMAMXMSXAMXMAMXXAAMMAMXMASMMX +MASAMAMXMMAAAAASASMAXMMMMXAAAASMMXMMSMMSXSMMMAMAMSXSAXXAMMMSAXXSSMSAAMAMSSMSMXMAAMMXSMXXXMAXSAMXMXXMASASMASAMXSXXAMMAMMSXSXSMSAMXSASXAMMSAAX +SASAMSSMMSSMSSMMMXMXMSASMSMMMAMAMSAXAAAAAXASMSSXMMAMMXMAMXASXSMMAASMSSXMXAAXMASMMXSAAXSSSMSMSMMSSSXMAMAMMXMMSSMXSAMMAMXMASAMASMSASAMSSMXSMMS +MASAXMAXAAAXAAXXMAMMMSAMXAXAMAMAXMASMMMMMSAMAXMMXMAMXXSAMXXXMAXMAMMXAXMMMMAMXASASAMMSMSAAAMAXXXXAAXMSMMMSXMAMMMXXMXSAMAMAMAMXMAXAMAMAMXXMMAS +MMMMMXAMMSSMSSMASAMXAMXMMMSXSXSMMSASXMSMMMAMXMAAXXMSMMMAMSMMMMXMXAMXMAASAMASMASAMSXMAMMSMSMXMXMMMMMMAAAAAAMASMXAXSASASMMSXSMAMXMXMMMXMXMAAXM +XAAXXMMMXXXMAAXAMXMMSSMSAAXAXMAXAMMSAASASMSMSSMMXXAAAXSSMSASASAMMMSASXMSMSASMAMAMAMSMSAMXAMAMXXAAXXMSSMSSXSMXAMXXMASXMAAMAXMMXAAMSXSASMMAMXX +SSSMMAAMMXAMSMMMSMXAAAASMMMSSSXMXSMSXMSAMXAXAXAASXSSMMXMASASASASAXSXMAAXMMASMXSAMMMAAMXMSXXAXAMMXMSXMAMXMAMAMSSSXMAMAMMMMAMAMMSSMMMSAMASXSSS +AMMMASASMMXMXAAAAAMAXMXMASAAAXXMAMAMSXMXMXMMMSMMSAAAASXMAMXMASMMXMSASMMMXMMMXXMASXMMSMMXSSSSSSSMSAMXXMXAMAMAMMAAAMASAMASMMMSMAXMMMAMAMXMAAAA +XMAMMMAMXSSMSXMSSMXSXXSSMMMMSMMMAXAMXMMASASAXAMAMMMMMXAMXSMMMMAXXXSAMMSMASASXMSMMAMAMAXXMAXAAAAAMMAMMXSMSASMSMMMSSMSASASAAAAMXSAXMASMMXMMMMX +MSMSAMXAMXAAAXMXMAAMMMXAXAXXAAAMMSMSAXSASAMXMMMXSXSXXXAMASAASMMMMXMMMXASXSMSAXAASXMASXMXMMMMMMMMMSSSMAAASXSXMAAAXMMSAMXXXMMMXXMAMSXMASXMXMXM +MAAMXMMSXSAMMSXAMMMMASMSMXSMSXMSMAMXAMMAMAMAMXMSMAMXXXXSAMSMSAMAXSAMMSMSXMXMMXSMMAMASAMXMAAMXMSXXAAAMXMMSMMMSSMXSAAXAAMMMSXSAAMXMXASXMSMAMAA +MMSMMAMMAMMAXXMXMAASMSAAXASXXXSAMMSMMASMSASASAMAMXMAMSMSXMASMXMAMMAMXMMMMMAMXAMXSAMXSAMXSSSSXMASMMSMMMMXMAAAAAXXXMMXMMSAAAASAMXAMSMMMXXSAMAS +SXMASMMSAMMAMAMSSSXSAMXMMMXASMXXXAXAMXMASASASXSAXXMASAAMSAMXXXMXSMXMASAXASASMASASXSXSAMXXXAXAXSSXAAMAAXASMMSSSMSMAXMSASMSMMMAMMXXAAAMSXSMSMX +MXSAMAASXXXAMAXMMMAMXMAXXAMMMMSSMSSSMAMMMAMAMXXMSMMXSMSAMXMMSMSAXMASASASASAXMAMAMAXXMAMMMMMMSMMMMSXSSMSASXMMMXAMMSSXMASXAXXMAMXSSXSAXSAXXAMX +SMMMMMMMAMSSSXMXMMMMAXSSMXXMAXAAAAXMXXMXMXMAXXXMAXMAMAMMSASXMAXASMXMASAMMMXMMSMSMMMMSMMAAAAAXAAMXXAAAAMXMXXAAMMMAAXMMMMXMAMXAXAXAMXMAMXMXASX +MAASMXAMAMSAMXAMXAASXMASMAMMMMSSMSSSMSMXXXSXMMMSAXMXSASXSASAMSMMMXAMAMXMMAAXXAAMAMAMAMSMMSMMSSMMAMMMMMMMXSSMSSXMMSSMAAMMSAMSXMXMXMXSSMASMAMM +SSMMAXSSSXMAMXXAMMXAAMAMMXSAMXXXXMAXAAXAMXMAMSAMMSSMMASAMXMXMAAXASXMAXAXMASASMSSMMAMSMSAXAAMXAAMSSMXXXAXMMAMAMAXMMMMSXSAXAMAXSASASAMASAXMAMS +XMMXMMXMMASMMSASAMMSMMXSAAMASXXSMMMMSMSXMASAMMAMSAMXAAMMMASMMSSMMSASMSSSMXAAXXAAXSASXAMMSMMSAMXMAAXXXSMSXSAMASMMMASXMAMXSXMSXSASMMASAMXSXSAA +MMAASXXMXXMAASAMMXAMSSXMMSSMSMMMMAMMAXMASASMXMXMMAXSMSSXSASAAMAXMMXMAAAAAMXMASMSMSXSMSMMAMSAXXAMMSMMMMAAMSXMXSXASASMMSSMMXMMAMAMXSXMAMXSAMXS +AMMXSAAMSMSMXSXMXMASASAMXXAAMAAAXAMSAMSAMASMMSAMMSMSAMXAMXXMMSAXMMSAMMSMMAAMXASMAXAMAMXMMXXAXSASAAAXAMXMMXMASMMXMASXMAMAASXMMMXSAMASAMSMXMAM +SSMMMMAMAAMSAMXSXMXMMMMSMSMMMSSSSMMSXMAXMXMAASASAAXMAMMSMSXMAMMSMAAAAMXXXSASMMMSSMAMSMSSSMSSMMAMMXSXMMMSMSAXXAASAMXXMASMMMSMXXXMASMMAMAAAMXS +XMXAAXAMMXMMMSASASXSXSASXXAAAMXMAMAXAMXMSMMMMSAMMXMXAMMMAMMMAXSAMAXMMSAMXXXMAXAAXMXMAAAAXAAMAXSMSAXMAAAAMMSMSXMXAMXASASMAXAXXMXSXMASXMMMAMXM +SMSSSSSMSAMXMMASXMASAMAXMSSMSSSSMMSSMMAAAXMAAMAMXXMSSSMMAMMSMSMMXXSXXXAMAMASMMMSXSSMMMMSMMMXMMMAMASMSMSXSAAXMMSSMMSXMASXSSSSSMXMASXSMASMMSAA +AMAAAAAASMSMXMMMAMAMAMXMXXXAAXXAAXMAXAASMSSMMSMMXSAAXAASMSMAMAAXAMXMMMAMASMMXXMAXAAAAXXXAMXXSMMAMMMAAAAAMXXXSAAAAASAMXMAXAXAAAASXSAXXMMAASMS +MMSSMMMXXXSMAXAMXMSSMMXXXAMMMSSMMMSAMXMXXXASMAAAAMMSMSMMAAXASMSMMSXAMMMXASAAXMXMASMMMXXMSSMMMASMSAMMMMMXMSXMASMSMXSAMSMSMMMSMMXMAMAMSXSMMMXA +XXAXXXSMMMMSMSMSMMMXAMXMASASAAMXAAMAMMMMMXAMSSMMMSAAAXMMMMMMMAXMAAMXMASMXSXMMSAMXMMSMSAMAAAAXXMXSXSMSSXSAXMSAMXXMASAMXAAXAAAXMAMXMSMMAXSAXXX +SMMSMXXAAAMAMAAAAAMMXSAMXXAMMSSSMXSAMAAAMMMMAMAAMMXSSMXSASMSMSMMSXMAMASAMMAXXXASMSAAAAMMMSXMSMXXSAMXAAXMAMXMMSSMMMSXMMSMSMSSXMAMMXMAMSMMMSSS +XAXAXMSXMMSASMSSSMSMMXAXSMAMAMAMAAXAXSSMSAAMMSMMXXAXAAXXXMASAXXAXASASMMMAXMMMSAMXMMMSMXMMMXXAAMMMMMMMXMSAMXXSAMAAXSMMXMMMMAMMSSSMAXAMMXSMAAX +SAMMSAASMXSXSAAAMAAXXMSMXAAXAMAMMMXSMMAASMSSXSXMXAMXMMMXMMMMMMMMSXMASAAXSASAXAMAMMAMXXXMASAMMXMAAAMASAMXAXXXMASXMSMAMMMASMAMXXMAMXSMMAAXMMSM +XAAASMMXMAXAMMMSMSMSAAMAMSXSXSMMMMAXAMMMMMMMAXAMXSXMMAXAMAAAAXAAMAAASMMMXMMAXMMMASMSMSSMASXAAAMSSMSASASMMMMXSAMMMXXAMXXAMSMMAXSXMMAMMMMSAMXA +SSMASXXMMMMMMAXAXAMXMMMAMMAXAAMXSMASAMXMASAMXMMMXMAXSASMSSSSSSMSSMMMSXMASAMXMXASXSXAAAXMASMMMSXXAMMASAMAAAXXXMXAMXMMSSMMMASAMXMAMXAXXAASAMXS +XAMXMXMAAAAAXXSSSXSAAMSMMMMMMMSAAMASAMXSASXMSAXAXSAMAXSAAAMAAAMAAXSXSAMASAMSMXMXAXXMMMSMAMAMXMAMXMMMMASASMSAAMXMSMSAAAAXMAMXMASASMMMMMXSAMXX +SXMAMASMXSSSXXMAAXMXSAAXXAMXMAMMSMASAMXAMMMXMAMMXMMSXMMMMSMMSMMSSMXAMSMMSAMAMASMMMSXAMXMMSSMSMMAXXXAMAMXAMXMASAMSAMMSMMXMSMXSASMMAXAAXAMMMXM +SMSXSASMXMAMMMMMMMMAMXMMMMXAMASAMMASAMSAXXSASAMXAAASAMMSAMAXMXMMXAMXMASAMXSMSASXSAASASAXMAXAMAMSMXXMMSSXMSMXAXASMAMAXAXMXAXMMASMSSMSXXAMSSSX +XAAMMXXMAMAMSAMAXAMASAMXSMMASMMMMMMSAXSMMMXAMSSXXXMSAMASASXMSXXMMMMMSMMXAMXAMASAMMMMMSMSMMXMXAMAMMMXAAMMXAMMSSMMMMMMSXMMSMSMMAMAAMAMSMAMAAMS +MMMSSSMSSSMXSASXSXSXSASMASXMMMASMMXMMXSXAMMSMMMXSAASXMAMMMMAMXMSMAAXAXMMSXMMMXMXMMXXAXXAAAASMMSAAAMMMMSMSASAAAMAAXAAMAAAAXAXAMMMXXSAXSMMMMMA +ASAAMAXAAAMAXXMASASXMXSASASAASASAMXAAMMXXSAXAAAAXMMMAMXSSSMSMSAAXSXSASXAMXAXXAXAXMMMXSMSMMMSAMSMSXSAMAAXAAMMSSMSMSSSMSMSSSSSXXAMXSMMASMXSXAM +SAMSSMMMSMMMSMMMMAMMMAXXXAXSMMMSAMSAMXAASMMSMMMMXMASMMAMAMAXASMMXXXMMMMMSASXSMSAMMAAMAAAXSASAMXAXAAAMSSMXMAXAXAXXAAMAMAMMAMXASASXXAMAXXAXSXX +AMSAAXAMAAASAMASMXMAMXSSMXMASAAXAMXSSMMXSAXAXSMSMSAMXMAXAMXMAXXMAMXSAAASMXMXMXAAXSMMAMXMSMAXXMMMMAMMMXAAXXSSSMSMMMSMAMAMMSMSMAAMXSXMASMSMMMM +SXMMSMSSSSMSASASMSSMSAAXMSXXSMSSSMAXMASASXMASMAAAMMMAMSSMMXMAMSMMSAMSXSAMMMMSASMMSMSMXMXXMSMSMXSAAXSMMMXSAMXAAAMXMMMMSXMXXASXMASMMXSXMXMAMXS +MSSXXAAXMAMXAMASAXMASMMMXSXMXAXAXMXMSSMMMMAXAMMMSMMMAXXAMSAMASXAMMMMMMMASASMAAMSAXAAASMMSAMXAAMXSXXSAAXSXMAAMMMMASXAXMAMAMAMXSASAMASAAAMAMAA +MAMAMMMMSMMMMMXMMMMAMAAMASAMMXMAMXMAMAMMSSSXSAMXXXAMSXSAMMASXSMMMAXAAXSAXAXXMXXMSMMMSAAAMAMSMSMAXMXSXMMMASXMXAXSASXMMSAMAMXMXMAXXXAMMMMSSMMS +MAMMSMXXAAMMMSAMASMSXMXSASAMAAMSMMSXSAMAASMAMAMMMMMMMAMSMSAMAXAXSMSSSMSXMSMXXXXMAXXXMXMMMAMAXXMASMAMXSMSAMASXSXMASAMASXSAMMXXMAMSMMSASAMXAXX +SXXMAAASMMMAASASXSAMMSAMAXMMSSSMAAAAXMMMMSMAMAMASAMXMXMAXMASXSMMAMAMMAMXXMASXSMSASXXMASMSMSMSMMASMMSASAMXSAMXXMXMSAMXXXXAXASAMASAAASAMXSSMMM +SMSSMSMAASMMXXAMAMAMXAAMXMSAMXAXMMSSSMXSAXXSXMSXSSSXSAMXXSAMMAMAAMXSMAMXAXSMAAAXXMMAMXXXAMXAAAMMSAMMXMASAMXSXMSAASXMSMSXSMSXMMSSMSMXXAMXAMAM +SAAXXXXSAMXSAMXMSMSMXSXMAXMASMSMXAAAAAAMMSXMAMAAMAMMMAMSMMSXAAXXXMMXMMXSAMXMSMMMMXSMMSMSMSMXMXMXMAMSAMXMMMASAASMMMAMAASAMSMAMXXMXMAMSMASXSAS +MMMMMXMASMXMASXAXAXMXMAXMMAMXAXAMMSSMMMSXMASAMXAMAMAXAMAXAMMSMSSSXMSXMAMASAMXAAXMAMXAAAAAXMASMSSSMMMMMSMASAMMMMXXSXXMMMAMASAMXMMAMXMAXMXXSMS +XAAAAMAMASAXAMMMMSMXASMMSAMMMMMXXMAMAXXAASXSXMXSSMSASXXMMASAAAMAAMXMAXAMASASXSMMSASMSSSMSMMMXAAAAXXXAAAXXMSMMXAXMXSMMSMMSMMMXMASXSXSSSSMMXSS +SSMSXSASXSXMSSMXAAXSXXAAXAAXXAXXXMASMSXSAMXMASAMAXMAXXAXSXAMMMMMMMSSMMAMAXMMAXAASAMAAMAXXAAAMMMXMMMMMSSSXXAMSMMMSAMMASAASXMAAMXMXSXAAAMAASAM +MXAAASASASASXAXMMSXMMSMMXSMXSMMMXXXAAAMXAMXSAMASMMMMMSXMASMASAMXSMXAASXMXSSMMMSMMAMMMXXMASMXSAAASXSAAXXAXSMMXAAMMMMAASAMMAMSMSAMXXXMMMMSMMAA +XMMMXMAMAMMSMMMSAMASAAAXXMXMAAASMMSMMMAMAMMMSSXMXSXAAAAMXMMAMAMASMMSMMAMXAXAAAXXSAMXMXSMMMMMMMXXMASMSMXMXXXASMMSMXSMMSXMXXMAXXAXSMMXAAXXXSAM +MAAMMMSMAMXSAMAXASMMSSSMXMAMMSMSAMXASXXXAMAAAXMSAMXMSSXMAAMMXAMMSAAAASAMXMXSMXMASASMSAAAXXAAXMSSMAMAAAASMSMMSAMXXAMXMMXSXXMASXMMAAASXMAXAMAM +AMXXSAAMASASAMXSAMXAXMAXASAMXXMSMMSMMMSSSSMSMMAMASXMXAMSSSMMSASASMMSXSMMAXAMXSXMSAMAMXSMMSMMXSAAMAMMMMMXAXMASMXSMMSXSAAXXMXXXAMAMSMXMASMMSAM +SXSXMMSXMMASAMXMXMMMSXMSMSXSSSMSAMXAAXMAAXAAXAMSAMMXSAMMXMXMASMXSAAAAMAMMMXSAMAMMXMXMAXAMXAAXMMMMSSSSMSMSMAMSXAMAAAAMMMSAAMMSMXMXMAMMMXAASAS +MMMASAMAXMAMXXMMAXSASXAMMMAXAASXXMASMMMMMMSMSMXMASAMSAMXAMXSSXMXSMXSMSAMXMXMASAMAXSXMXSAMXMAMSSXAMMAAAXMAMASMMMSSMMXMASMMMAAXXMASMMXXAMMMSAM +AASAMASXMMMMMMAXMXMASXMXAMSMSXMXSXMASXXXSXMXSMXXAMXXSMMMXMAXMASMMSXMAMMSAMXMAXASASMMMAXMMMMXXAAMMSMSMMMSASXSASAAMAMXASAMXSMSSMAMASMAMSSMXMXM +SXMAMMMXMASAAMMSSSMAMASMASXAXASASASAMXXASASASXMASMMXXAAXAMSXSAMXAXMMAMSSXSAMAMMMMXMASXMSXSAMMSMMMSAXXAXSASASAMMSSSMMMMAMXAXAAXSMAAMAMXAMXMAS +MXSSMMAMSASMXMAAXAXASAMXMMMMMAMASMMMSMMMSAMASMMMMAMMSSMMAXAXMASMSSMSXSAMXXAMAXMASASXMAXXAMXMAMAXAXXXSSMMAMAMXMXAMXAMXSAMMXMMXMXMAMXSMSAMSMAS +XMAMMMAMMMSASMMMMXMMMMMASMSSMMMXMMAAAAMXMAMXSAAAXAMMAAMASMMMSAMXAAMSSMMSMSMMSMSAMASMMXMMSMSMSSSMSSMMAMAMXMXMXXMSMSMMMMAXAAXSMSMSSXMAAAXMXMAS +SSSMSMXSAAMAMXAXXXXMASXMSAAMMMMXMXMMSXMASXMAMMMMSSMMSSMAXAXAAAXMXXMXAXXMAMXAAAMAMSMAASMXMAAXMAAXMAMSASXMXMAMMMMXAXSAAMSSSMXAAAAXXASMSMMSXMAS +AAAAAAASMMMMMSXMSAASXMAAMMMXAAMASXSMAMSXMSMXMAXXXMAMAMMAMXMASMMSSMAMXMXMAMMMSSMXXAMSMMAAMSMSMSMMSAMMMSXSMSXXAAAMMMXXMXAMAXSMSMSMSAMAXXAMAMXS +MSMMMMMMXAXMASXAXXXMMMMMMMXMSXSASAMMAMMAMXMXMASMSMSMXMXXSASXAAXAAMSMSAXSAMAMAAAXSMMMXMMMXAXAAAMXSAMAXMASAAAXSMMSMSSSMMSSSMAXXXAAXXMXMMSSXMXX +MAXSXSAXSMSMASMSMSMMAASXSMXAAAMAMAMSSMMASXSAMMMAAAXMXMAMXMMXMXMSXMAAMSMAASXSSMMXXSAMAMAMXXXMXMXMMXMXSMAMMMSAXXMAXXAAXAXAMXMMMSMSMSMASMMMAMXS +AAXAAXXXXAAMAXAAAAAASASAAMSMMSMMSXMXAXSAMXMAXAMSMMMSSMMSAMXXSAMMMMMSMAMMMXMAMXXSAMXSXSAMXAXXASMSSXMXMMMSXAAMSSSSSMSMMMMMMAXXAAXAAAMASAASAXAA +MMMMMMSMMSMSAMSMSMSMXAMXMMXAAXAASAMMSMMASMMSMAMXAXAAXMASAXAXMAXMAXSMXSSMMXMXMASMSMAXXXXXXMMSASAMAASXSAMAMXXXAMAAXAAXASASXSSMSSSMSMMASXMSXMAS +XMAXAAAAAAXMAXMAMAXXMASXXMXMXSMMSAMAMAMSAMAXMMXSMMMSSMMSAMSSSSMSSMAAAXAASXSASXXAMMMSSMMMSAAMXMAMSMXASMSSSMMSXMMMSSSXXSAXAMXAMAAXXMMXSAMXAAMA +SSMSMSSSMXXMMMMMMMMXSXAAASXSAAAAXXMSSMMMAMMMSSMAMAXAAMAMAMAAXAAAXSMMMSSMMAMASAMXMASAMAAAMXMSASMMAMMMMAAAAXAMAXXXMAMXXMXMMMSSMSMMXASMXMSMSSSM +MAASAXAMASMMSAXAAXMASMMSXMAMXSMMMAMXAAAMXMXMAASXMASXXMASAMASXMMMXASXMAMAMSMAMXAASXMMSMMSSMXSASMSXSAAMMMMMMMXMMMXMAMXXAAMXAAXAXXXSSMMAXAAMAAA +SMMMXMAMAAAASASMSSMXMAAMAMSMXXMXMASXSMMMSXSMSMMSMMAAASAXAMAXAAAXAAAXMAXMMMMMSXMAMXXXXXAXAXXMMMAAASMSMMSSSSSMMAMASAMAMSMSMMSXMMXMMXAXXSMSMXMM +MAMXXMXMXMMMXMAXAXAAXMMSMMAMMMASXMMAAAASAAMAMXASXSMSMMASXMSSSSMSMSMSMSXMAAAMAXMSMSXMAMMXMXMAAMXMXMMXAAAAAXXASASASAMMXMAMAMMAMAAASXSMMAAAAASM +SAMXMXMXMXMASAMSSSSMSAMAMMASAMAMASMSMMMAMSMASMSMAMMMMMMMAAAAAXMAAAMXAAAXSMSXMXSXAAAMSXSAXSSSMMXXXSAMMMMMMMSXMAMASMMMAMAMMAMAMXXXAAASAMXMSMSA +SASXAASASAMXMAMXAAAAAASXXSASMMASXMAMSMSAAXMAMMAMXMASMASXMMMSMMAMSMSMMMSMMAXMXXAMMMSMAASXXMXAMXSSMMASXXAAAXMAMXMAMXASASMSSSSSMMSXMMMMXAAXMMMX +SAMMSASASASXSAMMMMMMSAMAXMAMXMASAMXMAMSMXMMXXSASAMAMXAXXXMAXXAMXMXAAMXXXMAXAMMMMAAMMMXMMMSSSMAAAASMMMSSSSMSAMAMAXXXMAXMAMAAMAXAASMMMMSAMXAMS +MXXMMAMASAMXSASXXAXXMMMSMMASXMASAMXSMMXMAAMAXXXMAMASMMSSMMMMXXXMXSMSAMXXMMMASMXXMXSAXMMSMAAAMMSSMMAAAAXAAXXASXSMSMXSMMMXMAMMXMSXMAMAAAAXMASA +MSSXMXMAMAMAMMMMMSSXSMAMASASXMASAMXMXMASMSSXSXSSSMASAMAXXAASMSMSXMAMMMASAMSAMXSXMASXMSAAMMSMXXAMMSSMSXMMMSXXMMMAAMXSAAASMMMSXMXASXMMSSMMXMAM +SAMMSAMMSSMASMXSAAXAXMAMAMASXMXSXMXMAMXMAAMAMAXAAMXMAMAMMXXXAAAAXMAMAAAXAMMXSASAMXMAMMSMSXAXXMAMAXXMAXASAMMSASMSASAXMMMXAAASAXSXMAXAAXAXASAM +MASAMXMXAXMASMAMMSMMXMSMXMXMAMAMMSSSSSXMMMMAMAMSMMSSSMMSSXAMSMSMXMXMXMMMSMMXMASXMAMXMAXXXMMSMSAMXSXMASMMASXMAXAMAMXSMSMSMMMSAMSMSMMMSSSMMSAS +XAMMMAXMMSMASMXMAXAASAASXMMMXMASXXMAMAMAXXSXSMXMXAXAMAMAMMMMAAXXSXMMSSMMXAMXMXMXSASMMSXMXSMAXSXXAXASAMASAMXMSMAMXMXSAAMXAAXMAMSAMXAXAXAAXSMM +MSSSMMSMMAMSSMAMXMSAAXMAMAAXAMMSXXMXMSASAMXXAMXMMMSASXMAMAAMMXMAMMXAAAAXSAMXMAMXMASXAMAMASMMXMASXMAXASAMXSXAAMXMAXAMXMMSMMMSMMMXMMSMSSMMXMAX +SAAAASMMASXMXMAXSMMMSXXMSSMSMSMMMMSMMXMMAMXSXMAMAAXXMMSASXSMMAMAMAMMSSMMAMXXSAMXMAMMMXAMASASMMAAMAMSAMXMSAMXXSSMAMXMMSMSASMXMXSXMAXAMXXSSMSA +XMMXMMASAMAASMMMAAAAMMSMMAMXXAAAMMSAMAXXXXMAMSASXMXAXAMMXXAASMSSSXXMAMAXAMSMSXMXMAXAMSMSXSAMXMASXSMXMASXAXXSAMXMSXSAXMASAMMASAXMXAMAMMXMAAAM +MXAMSXMMASMMMAMSSSMXXAAXXAMXXSMMSASAMAMSAXMAXSMSASMXMMSMXMMMMAAAMMSMAMMMMSXAXAMSSSSXMAASAMXSXSSMXMASAXMMMSMMASXMAASMMMAMAMSAMMSAMASXMAXSMMMS +XMMMSAXMMMMMMAMXAMXAMSSSSXSMXXMAMAXXMAMAMMMXMSAMAMMMSAAXSMMSMMMMSAMMMXAAXMMMMAMAAAAMSAMXXSAXMSAMMSAMMMSAXMASMMMXMMMMAMXSSXMMSAAXAMXMAMXXMAMS +SASASMMMMASAMAXMAMMXXMAAXAAXMMASMMSSSSSMASXSAMAMXMAAMMSXSAASMXSXMASASXSMSXAAMAMMMMAMXXMSAMASXSAMXMXSAAXXMSAMAAXMMAASMSMAMXAMMMSMMSAMASMASXSX +AXMASMAAXASMSXSSXMASXMMMMXMXAXMXAXAAMAAXMXAMAMAXASMMXAXXXMMSMAXMASMASAXAMMSMSASXSXSMSSMMAMAAXMXMXASMMMSAXMASMMMAXSMMAAXASMSMAMAAXXAXAAMXMMAM +MMMXMMMSMASXMMMXAXMXSAMXSXMASMXSMMMXMXMMXMXMASXSXMASMSSSSSMXMASXMAMXMMMSMAAAMAXMASAAAXXAAMSSMMAMMXMXAAMXMSXMASXSMMSMMMMMMAMSSSMSMSSMASASMSAA +XSAMXXAAMMMXMAMSMMMASMMAMAMAAXMMSAXASMMMXMXXXSXSAMXMAXAXAMXXXMAMMMXMAXAXMAMXMXMSMSMMMMMMSXXAASMSMMMMMSSXMMMMXMAMMAAMAMMSMSMAMAMXMAMXXMXMASXS +XSAMXASXSAAAMXMAAAMMSXMXSAMMSMMASMSMSAAMSMSSMSXMASXMMMMMMMMSSSSMMSASMMXXXSMXSAAMXSXAAAXAMXSXMMXAMAXAXAMXMAAXAMAMMSMSSMAMAMMASAMXMAMMMXXMMMXX +AMMSMMMASMSMSSSSMMXXMAMXSXSAAAMXMAAASMMMAAMSAMXSMAMAXMAAXAAMMAAAASMSASMMSAMASMMMAMMSXSMMSASMSXSSMSSMSMMASASXMSASXMAAAMMMXMXMAXAMSSMSASMSSSXS +MAAAXXMMMAXAAXXMASAMMMSAMAMXSSMMMSMXMSSSMSXMXMASMAMSMSSSSMSSMSMMMSXMMSAMXAMXXAXMASAXXMAAMXMASAMXAXAAAASXSAXMASASAMMSMMAMMMAMASMMAXXAXSAAAXAA +XMSXSXMMMAMMMSXSAMASAMXAMAMXXXMSAAXMAAMXXMMMAMSXMMXXAMAXXMAAMXAAAMAMXSXMSXMAMSMSASMMMSMMMSMSMAMMSMSSSMMXMMMMAMMMXMXMXSXXAXXSXAAMXSMSSMMMSMAM +XXMXMAAXMXMAASXMASXMMMSMMXSMMAAMXMSMMMSXXMASXSMASMAMSMSMSMSSMSXMXXAMASAMXAMAMMAMXSAMAAASMSXMAXMSAAAAMAMXMASMMSXSMSASXSASXSMMMSSMAMAMMMMXMAAX +SXMASMMSSXSMAMAMASAMAAAXMAXAMMMMSMXXSSMAMSMMMXMAMMXMAAAAXAAAXMMAXSAMMSMMSXMAMMASASAMMXXMAXMXMMMAMMMSMMMASMSAASMMAMAXAMAMSAAXXAMMASXSAMMASXMS +MASXSXAAAASMXMAMASASMSSSXSMXMAAAAMSMMAMXMAAAASMXSMMMMSMSMSXXAXMAMXXMAMAAXXSXMSAMASAMSSMMSMMMSMXMXXXXAXSASXMMMSAMSMSMMMSMXSSMMXXSASXSAXSASAXM +SAMMMMMMSMSAMSAMXSAMAAAAMXASXSMSMMASMSMMSSSXSXXXMMASXXAXAXXMMSMMSXMXSMMMSXAAXMAMAMAMAAAMAAAXAXAXXMXSSMMXSAMSXMXMXAXAXAXAAAMAXMXMASAMXMMASMMX +MAMAXMAXXXMAMMXSAMXMMMMMMMAMAAAXASASMAAMAXMMMXMASASAMMSMSMSAMXXAAASMXASMMMMAMMXMMSSMSSMSSSMSSSSXSAMXXASASAMAXSAMSSSMMMSMMSSXMASMXMMMMXMAMASX +SSSSSSMSXXMSMSAMMMMXMAXSAMXMMMMSMMASMSMMXASASASASMXMAXAAAASMMMMMMSMASAMAAASAMSAMXAXXMAAAAAAAAAXAXSSXSSMASMMXAMAMAAAAAMMMMXMMASXMAMMAMXMASAMM +AXXAAMMMXXXAAXXSXASASXSSXSXMSAXAXMXMAMAMSXXASAMASAMXSXMSMMMXMXASMMMXMMMMSMMAMSASMXSASMMMSMMMMMMMMMMXSMMXMMMXMXAMMXMSMMAAXAASXMASAMMASASMMASX +MSMMMMAXMAMMMMMXMXSASXAMAMAXSASXSMSMASAMXSMMMMMAMXMAMAXXXXAAASMSAMXMAMSAXASMMSXMMSMASAMAXAXXAXAAXMAXMASXSAMXMXSSXAXMXMSSSSMSASASXXSAXASAMXMA +XAAAXXMMSAXAAAMAMMMMMAAAAMAMMAMXAAAMXSXMAAXAMXMAXAMXSSMSSMMMMMAMAMXSAMMAMAMMASXMXSXAMAMXSAMSMSXSSMMXSAMXSASMXAXMXMMAMXAMAAASAMXSAMMXMAMAMSMS +SSSMSAAMSASMSSSXSAAXSMMXMXMMMAMXMSMXXMASXMXMSXXMSMSMAAMMAXXXXMASXMASXSMSMSMMAMASASMSSSMMMMXSASXMMAMXMAXMSAMAMSMSXSMXMAXMSMMMAMXMAMAMSMMAMAAA +AAAASMSXMAMMAMMAMXSMMMSXSAASXMSAMAAMSSMMAMXSMXSMAAAMAMMSAMSMXMASAMXXXMMXAAXMASXMAXAMAMMXAMMSXMAXXAMSMMSAMAMSMAASAXXAMAMXAMASMMXXXMAMAASXSMSM +MSMMMAMMMMMMSMSSMAMMMAMASXSMAMSASXSMMAASAMMSAASXMMSSMXXMASXAAXAXMMXMMSAMSMXSXSAMSMSMMMMSAMAMAMXMSMSXAAMAMXMXMMSMAMSMMAXMASAXAAMSSSMSMXAMXAMX +XXXMMASAAAXXMAAXMXMAMASMMMXXMMSAMXXASXMSASAMMMSAMXXAMXXSMMXXMSSMASAMAMAXAMAXAXMAXAAXAAMMASXSSMXMAMMMMMSAMXAXXSAMXMAXXAXMAMMSMSMAAAMMXAMAMMMM +XMAXSAXMSSXSMMMMXSSSSMAXMXXAXAMMMMSAMMMSMMMMAXMXMMSAMSXMAMXXXAMSAMAMASMMMMSMMMXXMSMSSSXSAMXAMXMMSMXAMXMMMSMXMXXSASASMASAXAXXAAMMSMMSSMSSMMAS +MSAMMMSAMAASXSAAAMAAXAMMMAMSMASXSAMXMAAXAAXMASMSMMMMMXMMAXXSMAXMXMAMMSXAXAMAMXSMAXAXAAXMXMMXMAMAAMSSMMSAAAMMAMXXXMASMAMMMMXMXMMMMAAAMXAMXSMS +AXXSAAMAMMMMASASXMAMMMXSMAMAAXAAMMXASMSXSMSAMXAAAAAAXXAXMSXAMXMAMSSSXMXSMMSSXAMMAMMMMMMSMSXASAMXXMAXAASMSSSXSXMXMXXXMASXAXAMMSXMSMMSSSMMASMM +SXSMMSSMMSAMXMXMMSAXMXASXSSMSSMXMMSMSAMXMAMASMSMMMSSSMSAAMMMMMXSXAMMXSAMAAMXMAXMAMXAAAAAASMMMASAMMMXMMSMMAMMMASAMSXMASMMSSMSASAMSXMAAAXMAXAM +MMSAAAAAASXSAMAMXSASAMXSXMAXAMXAMMAXMAMMSMSMMMMXMMAMXAXMMMAXXAAXMMMXAMXSMMXAAMXSSSXSSSMMSMASXXMXMASASXXXMAMASAXAXXSASAAAXAAMXSAMXXMMXMMMMSSM +SASMMMSMMMASASMMAXMAXAXSMSMMMSSMMXXMMMMXAAAAXXSAMSAMXSXMASXSMMXSAMAMMSMSMSXSMSAAXAAMAMASAXAMXXXXSMSASAMXSSMXMMSMSMSSMMMMSMMMMSAMXMMSSMAMMAMS +MXMASAXAMSXSXMAMSSSMSAMXAAXAMAAASMXSASXSMSMMSAMAMAAXXMAAMXAXMXASMMMAXAAXAAAXAMMSMMMMASXMAMSMXSXASAMAMMMMMAMXAXAAAASAMXAXXXAXXXAMXMAXASMSMMSS +AXMSMMMAMAAMASMMMAAXSASMSMSMSSMMMAAMAMAXXAAXMXMAMXMMSMSMMMSMXMXXAAMXXMSMMMSMAMMXASXMXMAMXMAMASXMMAMXMAAAMAMMSMMSMSMAMSXSSMMSSMASAMXSMMMXMSAM +XMSAMXXMMMSMASXMMMMAXAXAXAXAAXAAMMMMSMMMSSSMAXMASASASAMAXAXAMXMSSMSMSMMMMSXMAMXXAMSMASXMASXMAMAXSAMASXSSSXSAAAAMMXMXMSAMAASAXSAMXMASXAXAXMAX +MSXMAMMAAXAMASAMXXXMMSMAMAMSMSSMSAXXXAXAXAMMSMSXSASAMAMSMMSSXMAMAAAMAAAXSAXXMSXMMMXXASASXSAMSSMMXAMAXXAMXAMMMMMSASAMXMAMSXMAMMXSASMMSSSSXSSM +MAAXAASMMMMAXSAMMSSXAXMMMXMXXMAASASASMMMSXXAXXSAMAMMMMMXAXAMAXSSMMMXSSMSAMMMSAXMXAMSMSMSASAMAAAMSSMSMAXSMMMSXMXMMMMSASXMXAMMMMMAAXAAXMAAXAMX +SSSMMXXAASXSMSMMAAMMSSMXAMSXASMMMMMMSAMXAXMMSAMMMMMXAXMXMMMSXMMMAAXXMAMXAMXXAAMMSMXAXSAMXMAMMXMMAXXAMMXMASAMXSASAMXSASXAMSMSAXAMSSMMMMXMASMS +MAMXSMSXMAAMAMXMMMSAAAAXMXMSMMSAMXAMXMMMXMXAMAMXMASAMXSXXAXSMSASXMXSMAMSAMXXMSMXAMSMSMMMMSMSXAXMMMSASXMSAMASMSASXSAMXMASMAASMSSMAAAMSXSXMAXX +MXMASXMASMMMMXAMXAMMSMMMSAMXXAXMASXSMAXSAMXMSSMMSAXAMAAAASXSASASMSAXXAMMAMXAXMMXXXAXXXAAXAAXMSMASAMXXMMMXSAAAMAMAMASMXAAXMMMAAMMSSMXMASXMMSM +SMMASAMAMXASMSMXMASMMASASMSAMMSSXMAAXAMSMXAXAXAMMXSXSXMAMMAMMMAMAMAMMSMMAMXMAMMXMXSSSSSMSMSMAXSMMAMMXMAMXMASMMXMASAMXMASMSSMMMMXAMASMAMAMSAM +AXMASAMSXXXXAAMSSMSMSXMASXMXAMAXASMSXMAXMXMSMSMMSAMXMAXXXMAMAMSMMMMSAAMSAMAMASMMSAAXAAXAXAXMAMXXSAMAAMAXXMAMXSXMAMXSXAMMMAAMSSMMMSASMASAMSAS +MSMMSAMMXSMMMMMAAAMAMXMAMXMASMASMMAMASXMSAMAMAAMMXXAMMMSMXXXAMAAXAAMXMAMASXSASXAMMSMMMMAXMXMAXMASXSSMMSSXMASAMSXXMASASXAMMMXAAXAXMAMXXSXMXXM +XXAXSMMSAMAAAAASMMMXMAMAMAMAMMAMAXXMAMAASMSASMSMSMSSSSMMAASMMSSSMMXMXXMSMSAMASMSMXMXSMMAAMMSASMAMAMASAMXAXAMAMASXMMSMMSXSAMMSSMSMMAMSXMMMMXX +ASXMMMAMXSAMSXMXXMAMSSSMSMSASMSSSMSMXMMMMXMXMMXMMXAXMAMMMMXAMAMXAXMASMXAAMMMMMMASXMASXMSSMASASAMMSMAXSSSXMASXMAXMSXSAMXXSAMMAMAMAMXMSAXAASMM +XSSSXASMMSXXMXMAMAAXAAAAAAMXMXMAXAAXAASAMXSXSXSAXMAXSAMAASXMMSSSMMMAMASMXMAXSASASXMASAMAAMAMMMAASXMMAMXAASXMAMXSAXMSAMXXSAMMASASXMSMSAMSMSAM +XMASXXXAMXMMSASASMSSXXSMMMMSSXMMMMMMXMSAXSAMSMSXMSAAXASXXMAMAAAAMAMAMMAMXSAMSAMASMMMSAMSMMAXXMXMXXAMAMMSMMASXMAMXAAMAMMMMXMXAMXXAMAMXAAXXMMM +XMAMMSXXMAAXSAMASAAAMMMASMAXMAMXXXSXSXSAMXAMSAMXMMMMSAMXMSMMMSMSSMSASXASAMXXMAMXMAAAMAMXAMSSSMAMMSXSASXMASXMAMXSMXXSAMAXSXSMXMMSSSXSSMMMMSAM +SMMSASAMMXMXMXMAMMMSAMSAMMMMXAMMSMMASAMMMSXMMSMMXXAMMMMXXAMMXMAMXAMAAMAMASXXSXMXSSMMSAMMXMXAMMAMAXXXMAAXAMXXXSAXMAXXAXSMSASASAMAMXXXXMXAAMAX +SAMMASMSSSMSMSMASXMMMMMAMAXSSMMAAAMAMXMSAMMSMMMXAMMXAAAXSASMAMAMMMMSMMXSXMXAMXMAMAAXSXMSSMMAMSASXMXXXMSMSMXSAMXSMMSMSMXAMAMASMMASXMMMSMMSSSM +SAMMAMXAAAAAAMMAMAAMAMXSSMXMAMXSSSMASXXMASAAAAAMSMAAMMXXSMMMXSAMXXAXXMASASMMMAXXSMMMMXXAAAXXMSASAMXMXXAAXAXMMMAMAMXAXAMMMMMXMXSAMAAAAAAXXAXA +MAMMASMMSMSMMMMASMMSMMAXAMMSSMMXAXXMMMMSMMMSMMMSAXMXMAXAXAXSASASMMMSMSASXMASMSSMMXMASMMSSMMSXSASAMASMMMMMXMSAMXSAMMMMAXXAMXSMXMAXSSMSSSMMAMS +SSMSASAXXXXAMXSMSMAAAMMMAMMAAAMSXMAMAAAAAMAMMSXAMXSMSMSMSMMMASXMAAXAAMMSMSXMAAAAAAMXMAMXMAAXAXASXMAXMASXMMXSASASASMMSXSSSXXAXMXMMMMAXAAXMMMM +MMAAAMXMMMSAMMMAMMSSSMASMSMXSAMSXSXSSMSSXMASASAMXAAMAAAAAXAMXMASMMSMSMAMAMAMMMMSSXSASMMASMMSMMMMAMAXSAMAXMASMMASASAASAMXAMSMSMMMAAMMMMMMMSSM +SMXMXSAMXASAMMMAMAAMAMXSAAAAMXXXMXMAXAMAXSSMXSAXMASXMSMSMSXSAMMMAXXAAMMSXSAMAAXXAAMAXSAXMAAAMAASAMXMMASMAMASXMAMASMMMAMMMMAAXAMSMSAXAXSAAAAA +SAMXMAXAMMSAMXSXSAMXXAXMMMMMSXMASXMASXMXMMAXXMAAMSXMAXAMXMASMSMSXMMSMSXXXSXSSSSMMMMMMXMASMSSSSMSXSXMAXSAMXXMASAMXMXSAMXMSSXMSAMXXMXSMSXMMSSM \ No newline at end of file diff --git a/AdventOfCode C#/AOC.Tests/Y2024/Day04.cs b/AdventOfCode C#/AOC.Tests/Y2024/Day04.cs new file mode 100644 index 0000000..b7bdf57 --- /dev/null +++ b/AdventOfCode C#/AOC.Tests/Y2024/Day04.cs @@ -0,0 +1,240 @@ +namespace AOC.Tests.Y2024; + +[TestFixture] +[Parallelizable(ParallelScope.All)] +public class Day04 +{ + [SetUp] + public void Setup() + { + realData = File.ReadAllLines(Path.Combine(TestContext.CurrentContext.TestDirectory, "Y2024", "Data", + $"{GetThisClassName()}.dat")); + } + + protected string GetThisClassName() { return GetType().Name; } + private string[] realData; + + private bool FindWord(string word, string[] lines, int charNum, int lineNum) + { + // This word search allows words to be horizontal, vertical, diagonal, written backwards, or even overlapping other words. + + // Start at the current character (if it matches the first letter in the word) and search in all directions for the next letter in the word. + if (lines[lineNum][charNum] == word[0]) + { + Console.WriteLine($"Checking char {charNum}"); + try + { + Console.WriteLine("Checking right"); + // Check right + if (lines[lineNum].Substring(charNum, word.Length) == word) + { + Console.WriteLine($"Found to right at line: {lineNum} char: {charNum}"); + return true; + } + } + catch (Exception ex) + { + // Ignore, probably outside the 3d array + } + + try + { + Console.WriteLine("Checking left"); + // Check left + if (lines[lineNum].Substring(charNum - (word.Length - 1), word.Length) == new string(word.Reverse().ToArray())) + { + Console.WriteLine($"Found to left at line: {lineNum} char: {charNum}"); + return true; + } + } + catch (Exception ex) + { + // Ignore, probably outside the 3d array + } + + try + { + Console.WriteLine("Checking up"); + // Check up + bool notFoundUpwards = false; + for (int i = 1; i < (word.Length - 1); i++) + { + if ((lineNum - 1) >= 0) + { + try + { + Console.WriteLine(lines[lineNum - i][charNum]); + } + catch (Exception ex) + { + Console.WriteLine($"Error with accessing the char on the line - {ex.Message}"); + notFoundUpwards = true; + throw; + } + + try + { + Console.WriteLine(word[i]); + } + catch (Exception ex) + { + Console.WriteLine($"Error with accessing the char number {i} in the word - {ex.Message}"); + notFoundUpwards = true; + throw; + } + + if (lines[lineNum - i][charNum] != word[i]) + { + notFoundUpwards = true; + break; + } + } + else + { + notFoundUpwards = true; + } + } + + if (!notFoundUpwards) + { + Console.WriteLine($"Found upwards at line: {lineNum} char: {charNum}"); + return true; + } + } + catch (Exception ex) + { + // Ignore, probably outside the 3d array + } + + try + { + Console.WriteLine("Checking down"); + // Check down + bool notFoundDownwards = false; + for (int i = 1; i < (word.Length - 1); i++) + { + if ((lineNum + i) <= lines.Length) + { + try + { + Console.WriteLine(lines[lineNum + i][charNum]); + } + catch (Exception ex) + { + Console.WriteLine($"Error with accessing the char on the line - {ex.Message}"); + notFoundDownwards = true; + throw; + } + + try + { + Console.WriteLine(word[i]); + } + catch (Exception ex) + { + Console.WriteLine($"Error with accessing the char number {i} in the word - {ex.Message}"); + notFoundDownwards = true; + throw; + } + + if (lines[lineNum + i][charNum] != word[i]) + { + notFoundDownwards = true; + break; + } + } + else + { + notFoundDownwards = true; + } + + } + + if (!notFoundDownwards) + { + Console.WriteLine($"Found downwards at line: {lineNum} char: {charNum}"); + return true; + } + } + catch (Exception ex) + { + Console.WriteLine(ex); + // Ignore, probably outside the 3d array + } + + try + { + Console.WriteLine("Checking diagonals"); + + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + } + + // TODO - diagonals!! + + return false; + + } + + [TestCase(@"..X...X +.SAMX.M +.A..A.A +XMAS.SS +.X.....", 4)] + [TestCase(@"MMMSXXMASM +MSAMXMSMSA +AMXSXMAAMM +MSAMASMSMX +XMASAMXAMM +XXAMMXXAMA +SMSMSASXSS +SAXAMASAAA +MAMMMXMMMM +MXMXAXMASX", 18)] + [TestCase(null, 232)] // The actual answer + public void Part1(string? input, int? expected) + { + // string[] lines = input != null ? new[] { input } : realData; + string[] lines = input != null ? input.Split("\n") : realData; + + var result = 0; + + foreach (var (line, index) in lines.WithIndex()) + { + Console.WriteLine($"=====\nChecking line {index}\n====="); + for (int i = 0; i < line.Length; i++) + { + if (FindWord("XMAS", lines, i, index)) + { + result += 1; + } + } + } + + if (expected != null) + { + Assert.That(result, Is.EqualTo(expected.Value)); + } + + Console.WriteLine($"Part 1: {result}"); + } + + [TestCase("blah", 1)] + [TestCase(null, 1783)] // The actual answer + public void Part2(string? input, int? expected) + { + //string[] lines = input != null ? new[] { input } : realData; + // string[] lines = input != null ? input.Split("\n") : realData; + + //if (expected != null) + //{ + // Assert.That(result, Is.EqualTo(expected.Value)); + //} + + //Console.WriteLine($"Part 2: {result}"); + } +} diff --git a/AdventOfCode C#/AOC.Tests/Y2024/Tasks/Day04.txt b/AdventOfCode C#/AOC.Tests/Y2024/Tasks/Day04.txt new file mode 100644 index 0000000..48928f6 --- /dev/null +++ b/AdventOfCode C#/AOC.Tests/Y2024/Tasks/Day04.txt @@ -0,0 +1,38 @@ +--- Day 4: Ceres Search --- +"Looks like the Chief's not here. Next!" One of The Historians pulls out a device and pushes the only button on it. After a brief flash, you recognize the interior of the Ceres monitoring station! + +As the search for the Chief continues, a small Elf who lives on the station tugs on your shirt; she'd like to know if you could help her with her word search (your puzzle input). She only has to find one word: XMAS. + +This word search allows words to be horizontal, vertical, diagonal, written backwards, or even overlapping other words. It's a little unusual, though, as you don't merely need to find one instance of XMAS - you need to find all of them. Here are a few ways XMAS might appear, where irrelevant characters have been replaced with .: + + +..X... +.SAMX. +.A..A. +XMAS.S +.X.... +The actual word search will be full of letters instead. For example: + +MMMSXXMASM +MSAMXMSMSA +AMXSXMAAMM +MSAMASMSMX +XMASAMXAMM +XXAMMXXAMA +SMSMSASXSS +SAXAMASAAA +MAMMMXMMMM +MXMXAXMASX +In this word search, XMAS occurs a total of 18 times; here's the same word search again, but where letters not involved in any XMAS have been replaced with .: + +....XXMAS. +.SAMXMS... +...S..A... +..A.A.MS.X +XMASAMX.MM +X.....XA.A +S.S.S.S.SS +.A.A.A.A.A +..M.M.M.MM +.X.X.XMASX +Take a look at the little Elf's word search. How many times does XMAS appear? \ No newline at end of file