feat(2024-04): Add partial day 4 part 1 solution

This commit is contained in:
Joshua Creek
2024-12-05 21:47:47 +00:00
parent 84044f8d6a
commit 6f70716b07
3 changed files with 418 additions and 0 deletions
@@ -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
+240
View File
@@ -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}");
}
}
@@ -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?