Added solution for day 4

This commit is contained in:
Andreas 2024-12-04 16:04:03 +01:00 committed by Andreas
parent 6cf6f5bf02
commit 97e4aafa98
4 changed files with 244 additions and 0 deletions

10
day4/example.txt Normal file
View file

@ -0,0 +1,10 @@
MMMSXXMASM
MSAMXMSMSA
AMXSXMAAMM
MSAMASMSMX
XMASAMXAMM
XXAMMXXAMA
SMSMSASXSS
SAXAMASAAA
MAMMMXMMMM
MXMXAXMASX

140
day4/input.txt Normal file
View file

@ -0,0 +1,140 @@
SAMXXSXXSXSAMXMMSMMMMSAMXSXMMMAMXXMSSMSMMMMMXSAXMAMMSSMXMXMAXSXSASMSSMXMMSAMXMMXMMSSSMMMSAMXXSASMSAMXMSXXAMAMXMMXMSAMXSMSMSXSMAMXMASXMXAMSMM
MAMMXSMMMAASMMMASAAAAXAMASXMASMMSSMAMAASAASXMMMMSAMXAAAAMMMSAXXMASXAAASAAXMXASMXSAXMASAAMMSXMXAMASXXAMXXMMSAMXXXAMXXMXXAXAAAXSMXMAMMAMSAMAAX
SAMXAXAAMAMMSXMASXMMMXAMASASASAAAAMMSSMSMMXAXAAAMASMSSMMXAAXMSAMXMMSMMAMMXAMXXAAMMXSAMMMMAMASMSMAMXMSSMAMAAAXXMSMSAXXAMXMMMSMAXSSMMSAMMASXSM
SSSMXMXSXAMXAXMXXMMAMSMMXSAMASMMSSMXAAXSXMSMMMMSSMMAAXMAMMSMMXMASMAXAAMSSXMSMSMMMXXMAMSXMASMMAAMAMMAAAXMMSSMMAAAXMMSMXMASXAMMMMMAAMSASMXMAXA
SAMXMSMMXMSMMMMSMMMAMAXSMSXSXSXAXXXMSSMMAXAAAMAAAAMSMMMSAXAAXMMAAMXSAMXAXAAXAASXXMMSSMAMSAMAMSMSXSAMSMMMAAAAAXMAXMAMXAXXMMMMSXXSSMMMXMAMSASM
MSMAAAAMXMAXXAAAASXSSMMMAMAMXXMSMMMMXMASMSSSMSSSSMMMXMAXMSSSMMMASXMMMMMMSMMMSMSMMSAAAMMXMSSMXAMXAAXXAMSMSXMMMMXSXMASXSMSMXSAMXXMXASMSASXMASM
SXSMSMSAXXAMXMSSSMAAXMAMAMAMSXMASAASMSMMXAXMAXAMXXMASMAXXAXXAAMSMMMAAAXXMAMAAAXXAMMSSSXMAXXXSSSMMMMMMMSAMASMXSAMASXSMXAAMAMASXXMAXSAMXMAMAMX
MASMAMMASMMMSXAMMMMMASXSASASAMSASMSMAAXXMXMMXMAMXSAAXMASXSSSSMSXMXSSSSXSMSMSMSMMXSXAAXAMAMAMXMAMSAAASAMAMSMAAMXSAMASAMSMMMSASMMAXXMMMASXMSMX
MAMMSXMAMAAASMMSAXMMMSASAMMSXXMXMXXMSMMXASAMMSMMMAXMASXSAAMAMXSMMAXMAMXSAMXMAMXMSMXMMMXMXAMXASXMXSSXMASXMAMMMMAMXSXMAMMAXXMMSASASXSXSXXXMAXA
MXSAMMMMSMMXSAXSMXXMAMMMAXXXMMSMXMMMMASAAXMMAAAXAMXMASAMMMMAMSMAMMSMMMAMAMAMXMASAMMAAMXSXSXSASMSMAXXSAMXXXMAXSMXMXAXMMSMMSMASAMASAMASMMMSSMM
AXMASAAMAXMXMXMMXSAMSXMMSMMASAAAASASAAAMMMXMSSSXXXXMSMAMAXMAMAXXMMAAXMAMMMSMAMXXAMSSXSAMXMXSXSAAXAMXMASMMSSSXSAMMMSAXAXXASMAMAMAMAMAMAAAAAAM
XSMASMMSASMSMXMAASAMAASAMASAMSMSMSASMXXAXSAMXMAMAMXMAAMMMSSSSSMMASXSMXAMAAAXXMXXAXAAMMMMAMXXAMMMSSMMXAXAMXAMAMMMSAXMMSMMXMXAXAMAMAMASMMSSSMM
SXMASAMMXSAAMSMSXSAMSSMASAMXXXXMAMAMAMXMXSASMMASMMASXSMAXMAXAAASMMMAMMMSMSSXSAAMSMMSMAASMSSMSMSXAMMMMSSMMMXMXMXAAXAMAMASAMSSSXSSSMSMXAMMMAXS
AMMAMAMXMMMXMAAXAXAMXAMXMXMMXSASXMSMSAASMSAMAMASAMAMXAXXSXMMXMMAMAMXMAMAMXAAMXMSMAXXXMXMXAMAXAXMSSMSAMAMMMAXAAAXMSMSASXMAMAAAAAXAXXMSMMXMAXX
MMMSXMMMXAASMMMMMMSASXMMMSXMXSMMAMXAXSMSAMMMSMXSMSSMSXMMSAXXXSAMXSMMSXSASAMXMXSAXAMMMSAMMSSSMSMMMAMMASXMASMXSAMXXAASASXSXMMSMMMSMMSMAMMMMSSS
XMAXAMXASXSXAASXSAXASAXAAAXMAMXSAMMAMMXMAMASAMXMXAAXSAMASXMASXSXAAAAXAAMMXSAMMSASMSAASAXAMXXMAAXMAMXMMXXXXAAMASMMMXMMMMMAMAMXAAXMAAXASMMMAAX
XMASXMAMMMMMXMAXMASASXSMMSSMASAXMAMXAMXMASMSAXMXMMMASAMASAMXXAXMXSMMSAMXAASASAMXMASMXXMMSMMSXSXMSSSXSMSASMMMMAMXASAXMAXSAMASXMMSMXSMMXAAMMSM
ASAMXSXAAAAXSMSSMXMXMXMAAAXMSMMMSASXMAAXAMXSAMSXMSXASAMASAMAMSMMMXAMMXAMMXSAMASXMXMXAXSAXASXAMAXAXAAAAXASAMXMSSSXSSXSAXSASASAXAAXMMASXSMMMMA
AMASAMXXMMSSXAAAAAMAXMSAMSSMMAMAMAMASMMSMMAXAXXAXAMXSMMMSXMMMAAAXXMXASXMSAMASXMAAMXXSXMASXMMSMMMSSSSMXMXMMMAMAAXXMAXMMXMXMXMMMSSSXSAMAXMMAMM
MSMMMSMSMAMMMMMSXASXSMXXMXAASXMASASAMXMAMXASXMSXMXSMXXAMXXMXXSMMMSSMMSAAMXXAMAMSMMMAMAMAMASAXAAAMXXXXXSMSMXAMMXMXSMSMXSAMXMMSAMXMAMMMMMMSASX
XAXMXSAAMXMAXSXMMMAXAAMSMSMMMMSMXMAAXXMASMMMXAAXSXSASMMSSSMSMXASXXAAAMMMMSMASXMAAXXAXAMAMXMAXSMXSXMAMMAAAMSSSXMMAMXSMAASAMXAMMSASMMSAMSMSASM
SXSXAMSMSMSAXSAXSMMSSMAAAAXMXMAAXMMSMXMAMAAAMMMSAAMXSXMAMXXAAMAMSSSMMXMAAASMMXXSMMSMSXSAMMXSXXXXSAMMSMMSMMAAMXXMASAMMMMMSMMMMMSASAAMAXXASAXX
XASMMMXXXAXMASAMXMAAAMSMSMMMASMSMMAMAMMSSSMXMAXAMXMASAMSSMXMSMAMAXMXXASMSXMXXSMMXXAXAXMXXSAXMSAMMAMAAXXAXMMSMSMSMSXMAXXAXMASXXMAXMMSSMMMMMMM
MMMAASMSMSMSASXAAMMMXMAAXAASXSMMAMXSAMXAAMAXSSSSXAMMXAMXMXAAAXAMXSSSSMMAMXMSMMAXMASMMMSAMMAMAXMASMMSSSSMXAXMAAAAAMMSMSMMXSASMSMSXAAAXXAXAASX
XMASASAAMAXXAXMSMSSMMSMSMSMSAXASAMXSMMXMSMMMXMAMMSSSSSMMASMSMSSMXXAAAAMSMSMAAMSMSMXXSASASMMMSMXMMAAAAAAXXSXMSMXMSMAAMXASAMXXAAAASMMSASMXXAMX
MMAXAMMMSMSMAMAXAAAMAMAAAAXXMMXMXSXSAASXMASXAMAMSASAMXAMMMXXXMAMXSMSMMMMAXSMSMAAAXXXMASAMXMAMXMMSSMMSMMMAMAMXMASXMMSSMMMMSAMSMSMAXXXASAMXSSS
XMAMAMMXAAAXXMXSMSSMXMSMSMSSXMASXXASAMXASAMXSXMSMMSMMMXMAXMXMXSMAAAMMSAMSMSXMXSSMMMXMAMAMSMASAMAAAXAXAAXAXAMASXMASAMMXSAMSAMXAMXSAMXSMMMMXAM
XMASAMSSMSMSMSXSAMXMAXAMAMMMAXAAMMMMMMSMMMSMAXSAMXMASAASXXMASAMAMMSMASAMAAMAMXXAXXMMMXXAMAMASMMMSSMXSMSMSMXSASXSAMASMMSAMSAMMAXAXAMMXXXAAMMM
MSMSXSAMAAMMAAAXXAMXMSASXSSSSMSSMSAMAAXAAAXAMMXAMASAMMMMAMSAMAMSXAXMASMSMXMAMSSMMSXASASASMMXMXMXXXMXXXXAXAXMASAMASXMAXSSMMAMMMMMSASAMMMMSMXM
AAMSXSAMSMSMMSSMMMSAMSAMAMXAAAAMASXSMSSSMSSSXSXSMAMAXXAMAMMAMMMXMMSMAMAAAXMAMXAAAMSMMAAMSXMAASMMMMMSXAMAMXMMXMAMAMXSAMXMMSMMASMXSMMMSAASAMAA
SSMSAMXMXAXXAAAAMAMAMMMMAMMMMMMSAMXAMXAXXAAMAAAMMSMMMSMSAMSAMSXXAAAXAMSXMAMSSSSMAXAXMSMXMAMXXXAAMAASMSMMMAAAAMXMMXASASXXMAMXXXMASXAXXMMSASMS
XMMMXMAMMXMMSSSSMASXMAXSASXSSMXMAXAMSMMMMASMXMMMAMSMASMSXMMXSMAXMMSSXXAMSMXMAMXMXSASMMXMXSMSMMSMMMXMAAAASMSSSMSSSMASAMXSXSSSSMMMSMMSMSXSAMMM
XAAAASAXXMXMXAAAMASAMXMSASAAAXSSSMMXMXXAMMMMXMAMSMXMXSAMXXXMAMMXSAAAXSAXAXXMAMMMAMXMAMAMAMAMAAXXSMMMSMSMSAAMAAAAAMAMAMAXAMXXAAXSXMXAAMASXMAS
SSMSMSASMMSMMMMXMSSXMXAMXMMMMMAAASXAMSSMSXAMMSSSMAMMMMAMMXSSXMAAMMXXMMMSSSXSAMAMASAMASMSAMAMSMSASXAXAAAXMMMSMMMSAMXSSMAMSSSSMMMMAMSMSMXMXSAS
MAAXMMMAAASAXSMSSMMMSXAMAMAXSMMSMMSXMAAAAMMSMAMAXXAAASXMMAAMXMMSSSSMSAAXMAASMSXSASASASMMXXSMXAMAMSMMMSMSXSAAAXAAMXAMXXXMAAAAXMASMMMXXMAMXMMS
SMMMXAAMSXSAMXMXAASAXSSMXSASXMXXMAMSMSSMMSAAMAXXMSMSXSMAMMXSAXSXAAAASXMSMMMMMMMSASAMXSAXMSAAMXMAMAXSAMXSAMSSMMXXSSSMMXXASMASMSMSAAXXMSSSXMAS
SXAXSMMMMASMSXSSSMMMXAXAMMXSAXMASMMXMMAAXMASMXMAMSXMAXMAMAAXMMAMMMMMMSAAAAAAMAAMMMMMXSAMXAMXMAXAXSAMXSMMMMAMXSAMAAAMAXXAMXAMMXMSMMMMMMMAAMAM
MSSMMXAAMMMASAAXAAAXMAMXMAMMXMXMAXMAMMSSMXMXASMMMMAMSMSXMMSXMXSAAXMSAMXMAXMXMMSMMAASXMAXXMXASMSMSMMSASAAXMASASASMSMMASMMMMMSMAAXSXMAAASMSMSS
XAXAASMXMXMAMMMSSMMSMXMXAMSMMMAMSMSSXXAMXXXMAMMMSSMMXAXSXMXASAMMMMMMMSSXSMSMSMMXSSXSASXMSXSMXMAMXAXMASXSSSXMASAMAAXMASAMXMAAXASMASAMSASAXAXX
MASMMMSAXAMAMAXXXXXXMSMSXAAXAMXSMMAAXMMSXAAMAMMAAAAAMXMSMASAMAXAAAXMAXXAAAAAASMAXXASAMMSMAXAXSMSSMMMMMAXAMXMAMAMSMSMASAMSXSMSSMMAMSMMMMAMXMX
MMMASASMSXSASMSMSMMMASAMASMSMSXSXMMSMMASXMMMAXMMMXMMSMAXMAMAMMXMMSMMXMMSMSMSMXSMMSMXMSXAMSMMMSXMASAXMMXMMSMMSSMMMXSXXXMASAAXMASMAMXXXAMXMSAS
XMSMMASAMXXAXAAMAMASMMAMXXXAAAAMSMSMAMMSAMASMSSSSMXMAMSSMMSSMAASXXXSSXAXXMAAXAMXMAXASMXASXSXAXASAMSMAMXSASAAAAXAXASXMASAMSMMSXMMSXSASMMMSMAM
MXAAMAMAMSMSMSMSXXMSASXMASMMSMSMAMASMMAXAMAXAAAAMAAXXSXAAAAAMSXSAXAAAMMSAMXMMXMAMMMXSAXMAAXXXSAMXSXXAMSMASMMSMMMMASAMASAXXMASAXXXAXXMAASMMAM
ASXSMMSSMMAAAXMMXSXSAMXMASXAAAAMMSASXMMSXMSSMMMSMSASMMMSMMSSMMMMMMMMMMXSAMAXSXSXSXXSMMMSMMMMXXASMMMSXMAMXMXAXMXAAMMAMASAMXMASASXMMMSXMMSASMS
MAMXAXAMAMXMSMAAXSAMAMXMASMSMSMSXMASMSXSAAAXXAXXAMXXAAAMXMAMXAAASXMXMXXXASMSMAMAAAXMAMASAMXAMSMMXAAMSSXMMXSXMSSSSMSAMXMMAAMAMAMMAXAAAMASXMAM
MXASXMASMAMMMXMSMMMMAMXMASXXAXASXMSMAMAMMMMSSMXMXMXSMMMXAMASMMSXMAMAMSMXMMXAMAMXMXSSSMASAMXMAXAASMSAAMSXMAMAAXAAAMMXMAXAXXXAMXMSSMMXSAAMAMAM
XMMMXAMXXAXXAMMMAXXSASXMASMMXMAMMMMMAMASXAMXMAXMAMXXAAXMXMAXAXXMMAMAMAAMSMXSAMMMMXMAMMXMXSAMSSMMSAMMASASMAMXMMMMSMMSMSXSSSSMSAMMMXSAMMAMXXSS
SXASXMSMSMMMASAMAMXMMMAMASAMXMAMAAASXSASXSXMASASAXSSSMSASMSSSMSASMSMSSSXAAMXAXMASAMAMAAMXMASAAAAXXMSSMASXMMSMMSAMAMSAAAXAAXASMSAAAMXSXMXSAAX
XSAAMAAAAAASMMXSASXMASXMASMMXSASXSXSAMASMXAMSMASASAXXMAMXAXAXXMAMAAAAAAMMXMXMMSSSXSASXMSASXMXSMMSMXXMASXAXAMAAMAXXMMAMXMMMMXMASMMMSASASAAMAM
XMMSMSMSMSMSAAASAMXSXSAMASAMASASAXMMMMAMASXMMMAMMMMXMSMMMSMMSAMXMSMMMXMASASXMAMXMMMMSXASASAAXMAAXMAMXMMSMMSSMMSMMSMXAMAXAAAMMAMAAXMAMXMASXAA
XXAXMMMMXMASMMMMMMASMSXMXSAMXMAMXMMAAMXSMXMASMMXSAXAMAXXAMAXAMMXMXAXXSXASAMXMAXAMAAAMMMMMMMSMSMMSSSMSXAXXAXAXXAXAXAXMMXSSSSXMASMMXSMMSAMAXMS
SMASAAASMMAMAMSAMSMMASMMXSXXXMXMAXSASMAXAMXMXAAASASXSXSMASMMMSMAMSMMAAMMMAXXSXSSSMMMSAXXXAAAMAAMAXAASMSMMSSMMSSSMSSMSMXMMAXXMXXMSASAAXAXMASA
XAXSXMMXAMMSAAXAXAXMXMASAMMMMMAMXXMAMMMMSMSMSAMXSXMAXAXMAMAXXMMXMXXAXMMSSMSMSMAAAASASMSSSMSSMMXMXMMMMAXXMAAAMXMAXAXAXMSAMAMMMMAAMASMMXMMXMAM
MXXMMMXSSMAMMSSXMMMSXSAMASXAAXASAMXSXAMAAAAXMAMAXAMXMSMSXSAMXSMSMMMMXXSAAXXAXMMMMMMASXXAAXXMASXMMSAAMSMSMSSXMASMMSMXMAMXMSMXASXMMXMMMSMSAAAM
XAMXAAXAXMMSAXXAXXAMAMMSXMMSMSSSMSAMXSMMMSMSXMMSSMMAXMASMAXXXXAAAAAMXSMSSMMMMMAAXXMAMMMSMMSMMMAAAMXSSXAAAAMAXXMXAXMASMXSSMMSMSMXMXSXMAASMSSS
XSSSMSSXMAAAMMSMMXXMXMXXXSAAXMASAMMSAXAXXXMXMSMAAASMSMAMAMSXSMSMSMSMMXAMMXAMASMSMMMMXSAMAASMSSSMMSMXMMMMMMSSMSSMXMSXMAASAMXAAMXMAMMASMMMXAXA
MXAAAAMAMXMXXAAXMMSMMXMAMASXSMAMXMSMMSSMMMXMAAMSXMSMAMMMXXXAMAMAXAMASMSMSMMSMSAMAMXMAMASMXSAMAMMMAAAMAAXXXXAAXAMMXAAMMMSAMSMSMAMSXSAMMASMMSX
AMSMMMSXMAMMASASMAAAMAMMXMASAMAMXMXAXAMASMASXMXMAXMAAMMSMSSSMAMXMASAMAMASXAAAMAMMMAMXSXMAXMXMAMASMSXSXSSMMSXSMMMSMSSMSMXXMAMAMASAAMXSSMSAXAA
SXMSMXSXSXSAXXAMMSXXXAXXAXXSXMAMXXSMMASAMSAMAXASAMXSMSXAAAAXMXMXXXMAMSMAMMSMXMSMXSXMXMMSMMMXSAMMSAMASMMAAMMMXAAAXXAAMAMSXXMXSSMMMSMAXAASXMMX
XAAAMMMAMAAXSMMMMAXSSSSSMSMMMXAXSMMMAXMAMMMXAMAMAMXMAXMMMMXMMSXMAXMMMAXAXXAMSAASMAMSAMAMAAXXXXMXMAMAMASXXMAASMMMSMSXSASXMXSAMAXXAXMXMMMMMXMX
MMSMXAMAMAMAMMMMMMMXAAAXAAAASMSXSAAASMSXMASMSSSSSMXMSMAMXSAAAMXMASASAMXMMSAMSAMXMAAAMMSSSSSSSMSMSAMXSMMMMSMXXXAAAAXAMXSXAAMASAMMASASXMMMAASX
MXXASXSASXMXMAMMASMMMMMMSSMMXAXASMMXXAMXMMMMAAXAAMSMASMMASXSAMMMMAMXAXXSAMXMXMXMSSSMXXMAAXMAXXAMSMMMAMAAAAMAMSMSMSMAMAXMSMSAMXSMMSAMAXAMMSMA
XAMXMXAASXAXSAXSAMXAXSXMAMASMMMXMASAMMMSAMAMMSMMMMMXAAXMASAMAMASXAXSXMMMASXMAMAXXXAXMXMMMMMMMMMXXMAXASMSSMSAMXAXAXMMMMSAXMMAMAAXAMAMXSXMXAXM
MXSASAMXMMMMMAMMASMSSMASMSAMAMXAMXMXMAASASMSSMMSMMMMMSMMXMMSXSASXMMSAMXSAMAXSSMMMSMMSMMAMXXAAAMSASXMMMAAAASXSMSMSMAMXMMMSXSAMSSMMSAMXMAMSMMX
XAXXXMMASAAAMXMSAMXMAMAMXMMXAMSSSMMMSMMSAMASAMSAAASXMAMSSMXAAMXSXMASXMMMXSMMMAMAXAMSAMXMSMSSSSSMAMAASMMMMMMMMAAMAMAMAXMAXAMXXMAMXAXSAMAMAAMM
MSSMMAMAMMSXSAXXMMASMMXSAMSXMMAXMAAAAAXMAMXMAMXSMMMAMMXAAMMMSMAMAMMXXXXAMXXMSAMMSAXSASMAAAAAXMAMAMSMMAXXMMMAMSMSMSMSXSMSMMMSMSMMSMMMAXASMSMX
XXAMSAMXSAXAMXXAXSAMXMASASAASMMXXSMSSSMSAMAMAMXAMSSSMMMSXMSAXMXXAMXXMMMSSMSXMSSMMMMXAMMSMSMSMMMSMMXMSMMMSASXMMAAAAXMASAXAMXAXMXAAMSSSMASAMMS
MMSMSAMSAMXAXXXMMMMSXMASMMMMMASXXMAAAAASXMAXAXMAMMAMMSMMAAMMSMMXSMSAASAAAMMAAAXXMASMAMAMXXMAAMXAMMXMAMAXMASMASXSSMSMAMAMXMMXSAMXXSAAXMAMXAAM
XAMAMAMAMSSSMSMXAAAAMMXSAAXASAMMAMMMSMMMASAXSMSAMMXMASASMMMAAAASMASMSAMSMMXMMMXMSAMSAMMXXMASAMSASAXSASMSMAMMAMXXAMXMASMSMMMMXASMMMMMMXXXXMAS
MMSAMSMSMAAAAAXSSMXSASAXXMSXXAAMAMMAMAMSXMMSAASMSXSMASXXXAMXSXMAMAMXXMXAAXXSASAXMAMSXSXMSAMMXMXAXMASASAAXAXMSSSSXMASXMXXAXAMSMMAXAAASMMMXSAM
SAMXMXAAMXSMMMXMAXAXMAMSAMXAMSMSASMASAMXAASMMMMAMAMMXSXMMASXXXSXMASMAXMMSMASAMXMASMSASMMMAMMAMMMMXAMMMXMMMSSXAAMASXSMMAMSSXMAASAMSSSMAMAMXAA
SMXAXMSXSXMAXMXSAMMSXMMMMMMSMMASMSMMSAMMMMMMAMMAMMMMXMAMXAMAMAMMSASAMXXAAMXMMMMMAMAXMMASMSMXAMAAXMXMXSAMAXMMMMMMAMXXAMASAAMMMMMXMAMMXXMXMXAM
SXSAXAXAXMXSAMXXASXXXXMASAAXAMAMAXMASAMXSAMSASXMSAASAMASMAMMMMMAMASXMAMXSMMMSAAXAMAMXSSMAXMSMSSSSMSMXMASXXXMXXAMXSXMXSMSMSMXSASXMSSMAMSASAMX
SASMSSMAMMAMAXMXMMMSMXMMXMSSMMSSMSMASAMXMAMSMSAAMXMSAMAXMAMAAXMSSXMXMXSAAAAASXSXMSAXAXAMAMMAAAAXAAAMXSAMXMXMASXSAXMAMMAXXMAXMAXMAMXMAMMASMMM
MAMAXXXMXMASXMAMXAAAAAMXSMAXXMXMXSMAXMAMXMAMMSAMMSXSAMMSSMSSSSMAMAMXMAMAMMMXSXMAMXMSMSSMMSSMSMMMMSMSAAAMXXAMAMAMASMSAMXSMMMMMMMMAMXSSSMXMASA
MAMXMSMSAMXXAAXASMSSSMSAAMAMMXAMSMAMXSASAXAXAMXMMXASXMSAXMAMAAMSMMMSMSSXXASASAMMSAMAAAMAMXXMAAAXMAMMMMXMASAMASXSASAAXXAXXAAAAAXSAMXAMMXSXMAS
SASMAAAXAMASXSXMAAXAMAMXSMMSMSMSMMAMASASASMSSMASXMMMAMMSSMMSSMMXAXAXAMAMSAMASXMASXSMMMXSMMSSSSMMSXSAMXSXXAASASXMASXMSMMMSXSXSSMSMSAMXAASAMXM
SASMMMSSSMAMSAASMSMMMSMMMAXAXMSAAMMSXMAMAMMAAXAXAXMXMMAXXXAAAXASMMMSMMAMMMMAMMMASXMASAMXAMAXAXAASMXMXXMAXSXMASAMXMMXAAMXMAMXAMXXMAMXMASMMMXS
MXMASXXAAMXMMSMMAAAXAXXAMMMSAMSSSMAMXMXMXMMSMMSSSMSSSMXSASMSSMXSAAXAXMASAMMXSAMAMAMXMAXSAMMAMXMASASMMSASMMMMMSAMSMMSSSMAMAMAMXMAXAMAMXXMASAX
SXAASMMSMMXAMAXMXMMMMXMSMSAXMAXAMMAMSSMSXSXXXAAAAAXAMAMMASXAMMASMMMXSAMMMSMASMSMXSMSAMXSMMXMMAMAMXMAASAMAXSAASXMMAAMMMXASASAXAXMSMSMAAMSXMAS
SAMXSAXXMXXSXSAAASXSMSMXAMASXXMAMSAMAAAXXMASMMSSMXMMMSMMAMAMSMASXSAMAAXXAAMXMMSXAXASMSASASAMXSSMXSMMMMAMSMSXXSSMSMMSMXSMSMSMSMXAAAAMAXXAXAAA
SASASXXSASXMAMMSXSAMAAAMAMMMMXSSMMMSSXMMXMXMMAAXMXMXAXXMXXMMAMXSAXMAMMMMSMSASAXSSMAMAMXSAMASAMAXMAMXXSSMMAMMMXMMAMMMMXSAMXMMAMXMMSMSASXMSSSM
SAMASAMXMMAMAMMMASAMSMSSMMSAMXMASMMXMASMXMASMMSSMAMMMSSMMSASXSXMXMASMSAAAAMAMAXSXMXMXMASMSXMASAMSMMXMMMAMXMAMAAXAMAASXSXSMSMMMSMMAXMASXXAXAX
MAMAMMMMXMAMXSASASAMAXAAMAMXXAMAMXSASMXSASASAAXXXXSAMXAAAMAMASXMXSAMASMSMXMSMMMSAMMMMSMXMAXSMMMMAXMAMAMXMASXSXSXSXMXMAXMSAMXSASASMSMMMXMXMMM
SAMSSXSXMXMXAMXMMMAMMMSSMSSSMSMMSMXASMASXMASMMSAMXSXSSMMMSAMXMASAMAMXMAXMSAXAMASMMAAMXXSXSXSAAXXSXMXMASASAMMAXXAXMSMMSMAMAMXMASAMXMASASXSSXA
XMXXAAMAMASXXMAMXMAMXAMAAXAXAAAMXAMSMMAMAMXXAAMAMAXXAMXAXSXSXSAMXSAMXMXAAMXSXMAXASXSSXXAAMASMMSMAAMXSASASXMSMMMAMAAAAAAXMMMMMMMMMMSXMASAAXSS
XSSMMMMXMASAMXAMSSMMMXSMMMMMSSXMMSMMAMMSSMASMMSMAMSSMMXMASXMXMAXAXAXXXSMXXAXXASXMSAMAMMMXMAMAXAMSMMAMMMAMMXAAMMSMSMSMMSSSXMXASXMSAXXMXMMSAMX
MMAXXSXMMMSAMSXMAAAMAMXXAAMXMXAAAXASAMXAAAXXSAMXASAAASXSAXAXMXXMMXSMMMXAAXXSSMXAAMXMAMAAXMAMASMXMMMXSAMSMSSSSMAAMAAAXXAXXAMSMSAMMXXAAXXSXMXS
ASAMXMSMAAXAMAXMSSMMSMMSSMXAMMAMMSXSMSMSXSAMMMSMMMXSMAAXAXSMMASMMAXASMSMXSAAAXSMMMXXMSMSXSAMXMMAAMSMSXXMAMXAAMSSSMSMAMXMSAMAMSXMAMSXMAMAAXAX
MMASAAASMSSSMMSMMAMAAAAAAMSASMXSASMMAXAXAAMSAXAMXAAMMMMMSMMAMAAAMMSAMAAAAXMMMMSAMXMAMAXMASXSAXSMSMAMMMXMXMSSSMMXMAMMMMSMSMSMMMAMXMAXMAASMMMS
XSAMMXMMXXMXAMAMSMMXSMMSAMXAMXAMAMAXXMSMMSXSXSMAMMSXMAAAXASXMSSSMMMXMXMSMASASMSAMMAMSASMXSMMAXSAXMSMXAASMMAXAAXXMAMSXAAAXXAXASAMXMXXSAXAMAMA
XMMSMXMXXMMSSMAXAXMXAXAMASXMMMXMMMSMSMXAXMAMXXXAXMAAAMMSSMMAAAAAXAMMSAMAMXSASASMMMSAXAXXASAMXMMASAMXMXASMMAMXMMXMAXXMSMSMMMSMXASMSAASMSMMAXS
AMAAMSMSMAAAASASXSMMMMASAMAMASASXMAAAXXAMMSMSMSSSMSSMMAAAMSXMMSMMMSAMMXASMMAMAMXAMAMMMMMXSMMSSMMMAMASMASMSMSSSMXMSSSXAMMMSMAAMSMAMMMMAAAXSSX
MMMMXAAXSAMMXAXXMMAAXMAMAMMSAXXSASMSMMMMXXXAXAAAAMAAAMASXMAAMAXAMAAMSSSMSAMMMXMXMMXXAAAXMMXAMAAXMXMAXMXMAAAXMASMAAAMSMSAAAAXXXXASXSXMSMSMMAX
XAXMSMSMXXMXAMSSMSSMSMXSMMXMMMMSXMXMMSSSSMMSMMMSMMSSMMAXMMMMMASAMXSMSAAASMMXSMSMSAASXSSMMSMSSSMMSAMXMMAMXMSMSAMXMMXMAMXMSSSSMAMAMXMAAAAAAMSM
SASXAAAAMSMSMXXAAMXMAXXMASXAAXXXMSXSAAAMAXAAAXMMXAMMAMAXXAAAMXSXMAXXMMMMMSMAMAAAAXMXMAXXAXAXAXXMASMASMSXXMAAMASMXXXSASMAAXAAAAMAMASAMXSSSMMS
MAMXSSMSMSAAXMSMMMSMMSMMMMMSMMMAMXAMMMSXXMSSXSASMSSSSMMSSXSMSASAMXXAMXAXXXMAMSMSMXMXMAMMMMSMMMSSXAXXSAAASMMXSAMASXMSASMMMMSAMMMSSXMASXMXAXAA
MAMAXMAMAMMMMAMXMASASMXAAAAAASMSMMMMXAMMMXMAMSAMAXAAAXMAMXMXMXSAMMMMMAXMAXSAMXAXXXMASAMXAAXAXAMXSMMMMMMMXAAAMASAXSAMMMMAXMXMASXAAXMAMAMMMMMS
SAMXSSMMSMSXSMAMMASXMASMSMSSSMAAXAXXSAMXMAMXMMAMMMMMMXMASXMASAMAMXASAMSASMSXSAXXMXMAXXSSSSSMSASAMXAMXMXMSMMXMAMMXASXXASMMMAXAMMMMMMSSXXAMAXA
SXMXMMMAAXAAASXXMAXMXMAMAMAMXMXMASXMMXMASASMMSSMXAMXXAMAXAMXMASXSSMXASXMMAMXSAXMSSMSSMXAAAAAMMMAMSMSXXAMSXXMMMSXMAMMSMSASXMMXSAAXXXMAMSASXSM
SASAXMMSMSMAMAXMMSMMASMSXMSSSSSXMAAXSMSASMSAMXAXSSSSXXMSSMMMAXMAAASMSMMAMSMAMMMMAAMXAMMMMMMMMSXSMSMAMXMMMXMXXSAXMAMXAMXMMAXAXSXSXSXMAMSAMXXX
SASXSXXXXAMSXSAAAAAXMSASMMXAAAAMXSMMSMMMMXXAMSXMAMAMMSAMXAXASMMMSMMXAAMXMAMMSSSMSSMSSMAMASAMXMAXAMXAAASASXSASMAMSSMSSSMXMMMSXMAXAMSMXMMMMMAA
MMMMAMAXSSMXAXMMMSSMASAMAAMMMMXXAMMAXMASMXSAMXSMXMXMXXMASXMSAXXAXAXAMMMXSMSXAAMAAAMAAAXSASXSAMAMAMSSSMSAMAMXXMSMXAAAAMXSMMAMAMAMAMAXAMAAASAM
XMAMAMMXXMAMMMSSMAMMXMAMXXXXAXMMSXMXMSASAXSAXAMMAMAMXMXAMAXMASMMSAMXMAMXSAMMMSMSMMASMMMMXSMXAMSXSMAXMXMXMSMSMAMMSMMMXSASAAMSXMMSXMXSMSASMSAA
AMASXSXMXMAMMMMAMMSXAXXMMSSSXMASXSMSXAXMAMSXMAMMAMASAMMSSXXXAXAXAMAMXASAMASXAAXAMXMXXMXXAMXSSMXAXMMAMMSSSMAMMMMMAXXXMMAMXMXSXAXSMSAMXAMMXMMM
SSMSAMMAASASAAMSMXAXMSAMAMAAMSMMMAXMASXSSMSMSAXSMSASMSAMMXSMXSSSMMAMSMMMSAMMMSXMXAXSASMMAXAXAAMMXAMMMAAMAMXMAAASAXSSSMSMAMAMMSMMAMXMSSSSSSSS
MAMMAMAMXMXSXXSAAXMAMAMMASMMMMAAXXSMAMXMAASAMXMAMSAMXMASMAMAAXMAAMXMAXAAMMMAAXXXSMMSAMXSXMMSMMAMMXSXMMSSSMASMSXSAXSAMAMSMMASAXAMXMAXAAAAAAAX
SAMSXMSSSMASAMMMSSXMSSSSXSAXASMSMAMMASXMMMMMMSSMMXSSXXSMMXSSMMSSMMMMASMSSSMMXSAXXSAMAMASXAXXXSASMMSAMXMAAMAXXXMMXMMAMAMAXSXMMSAMASXSMMMMMMMM
SAMSMMMAAMAMAMAXAXAAAAAMXSMMXAAAMAMSASMSMXMXAXAAAAXSAXXAMXAAAAMAMXXSAMAMAMAMAXMMAAXAXMASXSMAXSXXAXSAMMMXMMMSAMSMMASXMXMMMSAAAMAMASMAXXXMASMM
SAMXAAMSMMXXXMXMMSMMMMMMMMXMMMSMMMMMASAAXSAMXMXMMXXMXMSAMMSMMMSAMAXMMMAMMSAMSMXMXMXMXMXXMXMMMMMSMMSAMSSMXAXMXAAAXXMSMXAXASMMMSSMMSXMMMXMAMAX
SAMSSMXMMSMSMXXSMSASXSAXASAXAAAAAXMMMMMMSAMXSASXSMXMSASMMAXAMXMMMXSASMSSXSXSAAMMMXAMMMMXSMXAAAAXXAMSMAAASMXMMSSSMSMAMSMMASXMMXXAASAMAXMMMSSM
SAMXXXAXXAAAXMASAMMSASXMXSASMSXSMMXAXMAMMXXMMAAAAAAXMXSXSXMSXMMXMASAMAAMASMSASMAASMMAXAMXAMSSSSMMMMAMXXMXMASAAMMAASAMAAAAXAXMASMMXXMMMMMXAMA
SMMMASXMSMSMSMXMAMXMAMASXXMMAMAMAMSSMSASMASAMMMSMSAMXAXAMSAXAMSASXMMMXMMAMAXXMXMXMASMMSAMSMMAAXMASXMSMSMMSASMSSMSMSXMMSMSSSMMASMMSMSXSASMMXM
SASMAMAAAAAMAMMXAMXMAMAMMAAMXMASAMSAASASMMMAXMAXAXMASMMMMAXMAMSASXAMXSAMASMMMMAMSMAMXAMSAMXXMXMMASAXAAAAMMMSXMXMXXSMSMAXXAAMMAXAXAAMASASXSAS
SAXMAXMXMSMSASXXSSMMSMSSSMMSXMAXAMMMMMXMXXXXMMXMAMXMAXAXSASXMMMAMXMMAXAXAXAXXXAXXMXMMMMXMMMMMAMMAXXMSSMMMMASASMSMXXAAXAMMMMXMXSSSMSMAMAMASAS
MXMSMXSXMAAMASMMAAMAMAAAAMASMMSSXMAAAMSAMXSMSSMXMASXMMSAMAMXAAMASMSMXSAMSSSMSSMSSMMSSSMSSMSAXAMMXXSXMMMXXMASXMAASXMSMMAMXAMXSXAAXAAMXSAMAMAM
SSMXXASASMSMMMAXXXMAXMMMMMXSAXMAMSSSSMSMSMSASXAASASAXAAMMXMMXXMMXAAAMMXMXAAXAAAAXXAAXAXAAAMMXMXAASMSXAAMMMMXAMXMMXMASAAXSASAMMMMMSMSMSMSXMXM
XAMSMMSAMAAMXXSXAMSSSSSSSXXMAMMMMXAXMASASAMMMMSMSAMAMSSXSSSMMSSMMSMSMMASMSMMMSMMSMMSSSMMMMMSASMSMAAMMSMMAAMXSMSSMASASMMMMXMMMAAAXAAAXXAXMASM
SSMSAXMMMMMMXMMSSXAAXAAAMXMASMSSMMSMMMMAMSMXAAAMMAMXAXAAXXAAASAMXXAMAXAMMAMAAXAMXMSMXXASAMXMASAAXMAMMAAMSXSAXXAAXAMASASASMXSSSSXSMSMSMMMMAMM
MMASMMASXSAMXAAAMMMMMMMMMSAAXXAAXAAAAMMMMMMMMMSXSXMASXMSMSSMMMAMMMXMAMXXSAMMMXAMAMXAASMMMAMMXMASMSSMMMSMAAMMSMSMMXMXSAMASAAXMAXAAAAXSAAMXMAS
XMXXSSXSMSASMMMMSAMXAXMMASMSXMMMMXXXMSASASXSMAMMAAXAXXAXAAMASXMMMXAMSSMASXSAMMSMMSSMMMXMXAXMXXXXAAAASAMMMSMMXAXMAASXMMMSMMMSAAMSMMMSXSXSXSAM
XMSAXXXMASAMXAAAMMXSSXXMASMMASAXXSSMASASAXAAXXXASMMMMMXMMMSMMASMMMMMAAMAMMMASAXAAAXAAXSSSSSMSMSMMMSMMASXAMASMAMMXMXAAAXMASAXXAMXMXXSMMMMMMAS
XXMXMASMXMAMSMMSMMMSMXSMMSAMAMMSAAAMXMAMAMSMMMSMAAASMMAMMMXMSMMASXMMMSMASXSAMXSMMSSXMSXAAXAAAXAAAXMXMXMMMSAMMMMSAMSSMMXSAMXSAMXSMXMXAMXMAMMM
SMSMSAMXXXAMMXAXMAMXAASXMMMMXMASMSMMAMAMAMAAXAAXMXSMASXSAMAAAMMMXAXMXAMXSAMASXAAXAMXSMMMMMMXMSSSMSMAMSXXAMXMXMAXAXAXAXXMAMAXASAAMAMSSMMMMSAX
AAAMMSSSMSMSXMSSMMMMMMMAXAXMXMASXXXSSSSSXSSSMSSSXSXXAMMSASMSMMAXMMMSAAMSMAMASMSMMMMMXAAMASXAXMAMAXMAMXAMXSSSSMMSSMMXMMXSXMSSMMMMSAXAAAAAXAMX
MSMSAAMAAAAXMXXAMSASXSSMMSMMAMASXMASXAMMMMMMMAAAXAMMMSMSASAAASMSMSASMXMASXMAXMAXXSMASXMSASAXXAXMMMSMSMAMAAAXAAMAXAXAMSMMAAAAXXSASXMMMMMXXAXX
MMAMXXMMSMSMMMMSMSASAAAXAAAXXSAMAMXMMMMMAAXAMXSSMMAAAAXMMMMMMMMAXMMSXMSXSMMSSMSMMAMXSAAMAXMXSSMSXAMXMAAMXMMMMMMMSMSXSAASMMSXMXMASAMSXSAXXMMM
SMMMSMMXXMAAXAAAMMAMMMMMMSSMASAMXMASAMASXXSSSMAMAXSMSSMSXXXXAAMXMMASXAXAMXMMXMAASAMMXMMMMSMXAMAXMMSAMXSMXAXXXAXXSMAMXXMMAXMASXMAMAMAAMMXAAAA
SAAAAASASXSXSMSXSMSMAXXXAAAMAMAXSSXMSMMXSAAAMAMSXMAAXMMMAMXMSMSMMSAMMMMXMAMSAMSMMASMXSXMXAMXMMMMAXMASAAMSMMMSSSMXMASMSMSAMSAMXMAXAMMSMASASMS
SSMSSMMASXMASMMMXAAAXAMMMSSMAXAMMMSXXXXAMMMMMSMSMSXSMSASAMSXXAAAMMASAXAASXMMAMMXMAXAMAAMSMMAXAXXMXXAMMXMAAXXAAAXAMXMASMXMAMXSSSSSMSXAXAAXXMM
MAMAAXMXMAMAMAXSMSMSMAAAAAAXSSSXXAMMXXMSXSAMMAMMASAAASXXASXAMSMMMSAMMMSXMXSSSMSSMMSSSMXMAXSXSSMMSSMSSSSSSSSMMSXMSXSMAMXSAMSMMXAXMASXMMXSMSSS
MAMMAMMSMSMSMMMMXMXXAXXMSSSMXAMSMASMMMMXAXSXSASMAMMMMMSSMXMSMMAAMMMSXMMAXAXAMXAAAXAMAXXMSXMXMAMMAAXAAXXAXAAAAXAMXAXMXMAMAMXAXMSMXASMSMAMAAAA
SMMXMAXAAMAXMXSMAXMXSMSMAXAXMXMXSAAXMAXMSMMMSASMSSSMSAAMSXXAAXMASAMXASMXMSXMAMXSMMASMMMMMASMSSMMXSMMSMMMMSMMXSAMMSMAMXMSAMXMMAMAMXSXAMAMMMMM
AMAAXSSMXMSMMASMMSXMAAAXMSSMAMMMMSSXSXSAMASAMAMMAMAAMMSXSXSMSMXASASXMMAXSAMSASXXAXXMASMASMMAAMASAAAXMAAAAXXXASXMAAMMMAMAMSMMMSXMAXXMMSMSSMSX
MMMSMMAMAMMAMAXAXSAAMSMSXAAAMAAXAXMMAMMXSAMMSAMMASMXMXMAMMMMMXMASAMAXMXMMAXSASASMMSMMASASAMMMSAMASXMSMMXSMMMASXMXSSXMXSAAAASAMAMSMAMXSXAAAAX
SSMMMSAMSMSAMMSMMMXSAMXXAMXSSSMMMSSXMASXMXMXMXXSXSMSXAMAMAMASAMXSASXMMMSXMMMXMAMMAAAXMMXXAMXXMAXXAMASAMAXASMSMASAMXMMMSMSMSMAMXMAAXMASMSMMMM
SAAXMMAMAASXMAAMASAMASAMSSXMXAAAAXAXXMASMAMSMSXSXMAMMAXMXXXAMAMXSAMMXXASASXSMMXMMSXSMXXMSMMMSSSMMAMASAMASXXXMSAMASAMAAXXAXMXXMSMMSSMXSAMXMAS
SMMMMSXSMXMMMSASAMXSAMAMAAAMSSSMMSMMMMMMSMXAAMASXMAMSMSXSSMMSAMMMMMMMSMSAMAMAMAMXAMXAMXMAMXAAAXXSAMMSAMAMAXMMMMSAMXMMSSSSSSMSXAAXAXXAMMMAMXM
MAAAASMXXSAMXAAXMAXMXSAMXSMMAXMAXAXAASAAAXSMAMAMASXXSASAAMAMSXMXAXMAAXAMMMAMSMASMASMAXXSASAMMSMMSXSMSXMASXAMAAMMASMSXMAXAAAAXSSSMXSMXSXSXMAX
SMSMSSMXMASASMSMMXXMASMMXXAXXSSMSASMSSMSSMSSXMASMMXAMAMMMMAMMMSSXMXMSSXMXMASMMXSXXMMXMASXSXAXAMMXMAXMASXXAXXSSSMXXMASAMXMSMMMAXXMASMSAMXASMS

49
day4/solution.py Normal file
View file

@ -0,0 +1,49 @@
def read_grid(filename):
grid = []
with open(filename, 'r') as file:
for line in file:
grid.append(list(line.strip()))
return grid
def count_word_occurrences(grid, word):
rows = len(grid)
cols = len(grid[0])
word_length = len(word)
count = 0
directions = [
(0, 1), # Right
(1, 0), # Down
(0, -1), # Left
(-1, 0), # Up
(1, 1), # Diagonal down-right
(1, -1), # Diagonal down-left
(-1, -1), # Diagonal up-left
(-1, 1), # Diagonal up-right
]
for x in range(rows):
for y in range(cols):
for dx, dy in directions:
match = True
for k in range(word_length):
nx = x + dx * k
ny = y + dy * k
if 0 <= nx < rows and 0 <= ny < cols:
if grid[nx][ny] != word[k]:
match = False
break
else:
match = False
break
if match:
count += 1
return count
# Main execution
if __name__ == "__main__":
grid = read_grid('input.txt')
# grid = read_grid('example.txt')
word = "XMAS"
total_occurrences = count_word_occurrences(grid, word)
print(total_occurrences)

45
day4/solution2.py Normal file
View file

@ -0,0 +1,45 @@
def read_grid(filename):
grid = []
with open(filename, 'r') as file:
for line in file:
grid.append(list(line.strip()))
return grid
# Function to check if a diagonal forms 'MAS' or 'SAM'
def check_diagonal(grid, x, y, dx, dy):
rows = len(grid)
cols = len(grid[0])
letters = []
for k in range(-1, 2): # Positions: -1, 0, 1
nx = x + dx * k
ny = y + dy * k
if 0 <= nx < rows and 0 <= ny < cols:
letters.append(grid[nx][ny])
else:
return False # Out of bounds
word = ''.join(letters)
return word == 'MAS' or word == 'SAM'
def count_xmas_patterns(grid):
rows = len(grid)
cols = len(grid[0])
count = 0
for x in range(1, rows - 1):
for y in range(1, cols - 1):
if grid[x][y] != 'A':
continue
diagonal1 = check_diagonal(grid, x, y, -1, -1) # Top-left to bottom-right
diagonal2 = check_diagonal(grid, x, y, -1, 1) # Top-right to bottom-left
if diagonal1 and diagonal2:
count += 1
return count
# Main execution
if __name__ == "__main__":
grid = read_grid('input.txt')
# grid = read_grid('example.txt')
total_xmas = count_xmas_patterns(grid)
print(total_xmas)