This commit is contained in:
Georgios Samaras 2024-12-04 12:24:52 +01:00
parent 687b12a4b3
commit ea7bb081cc
3 changed files with 214 additions and 0 deletions

140
day-04/input.txt Normal file
View File

@ -0,0 +1,140 @@
XMASAXMASXXMMAMAXAXXXMSASXSXSXMAMMAMXMASASXMXMASMSMSSMMSXMASXMSMXMASMMSSMMMSMMAMMSMMMMMSXMAXMSMMMMMSAXAXXXMASAMXXSXMXSSSMSMSXMAMXXXSAXSMSAMX
MSMMMMSMXMXSSSSSSMSMSMSASAAXXASAXXMAXSMSAMMSAMSXAAAAXSAMXMASXMXMASAMXXAAAXMAMMAAMAMXAASAMMMSAMXMAASMSXMSMSMXMASMXMASXMAAXAAAXXSSSMMAMMXAXSXX
AAAAAAAMMSAAMAAAXAAAAAMMMMMXMXMASXMSASXMAMAMASAMSMMMXMXSAMXSXMASXSAMXMSSMMSASXXSSMMSAMMASAAAAXXXSMSAAMXAAMSXSAMASAAMAMAMSMSMSMAAASAAXAMXMMMS
SSSMMSSSSMSSMMMMMSMXMMMAAXXAXAMXMXAMASMSMMMSMMMXASAMXSMSXSAMAXAMAMASAMXAXXMAMXAAMXXMXMMAMMSSSMXXXAMXMAMMSMAXMASXXMASMMAXAAAXAAMMMMSXXSAMXAAA
XMAXMXXMAAAXXXAMXXSMMMSMMSAMXMMMMMXMXMAAMAASAMXSAXXMAXAMXMMSSMSSSSMMASXMMMMAMSSMSMMAAXMASXAAAAASMMMSXSXAXMAMSAMXSSMSXMAMMXMSMSSXSAMXAAXXSMSS
XMASMMASMMMSSSMMSAMXSAAAAAXMAMASAMASXMSMSMXSASXXSMSMSSSSXXAAAAAAXAASAMASXXMMXAAXXAMMASAMXMMMMSMXAAXMAMMMMMXMMASAAAXMASXMSMAMXAAXMASAMXMMAAAM
XAXAAAAXAXAAAAMSMAMAMSSMMSMSMSASASASAXAAXMASAMMAMSXMAAAXMMMSMMMMSSMMXSXMMAMSMMSMSXMMAAAMMXSAAAMSMMSMAMAMAMASXMMMSMMMAMAAAAAMMMSMMAMMSAMXMMMS
MSXSMMXSXMMSSMMMSXMXMAMAAAXXAMAMAMXXAMXSXXAMMAMAMSXMMMMMMMXAXXMAXMASXMMASAMAXXAMXAXMXSAMMASMSXMXMAXXAXAMAMXSAMXXAXXMMMMMMSMSAXMAMSSXSAMXSAMA
AAAMXSASASMAXAAAMXSSMMSMMSSMSMSMSSXMXAMMMMXSSXMSSMAXAAAAAXXMSMXXXXAXAASMSASASMSXSSMMMMXXMASXMXSMMXSXXMMXMMAMAMXSAMXSSXMAAAXSMSMSAAAXSAMASASM
SXXMAMASAMMMSSMMSAXAMXAMMXMAAAAXXAASMXSASXAMAMXMAMAMXSSSXSAXAXMMMMMSSMMASXMXSAAASMSAAMXSMASAMAAASXMXSAMAXMSMSXMASXMASAMMMSXXXAAMMXMAXAMXSAMX
MMMMXMXMXMXXAMXAMXXSMSMXSAMSMSMXMXMMAAMAMMMSAMXMAXMXAMXAASMMMSAAAAAXAXMXMASXMMMSMAXMMSAXMASAMXSXMAAASAMMSAMAAXXAXXXAXXMAXMMXSXXMXSMXSAMAMAMS
XAAMAMAMSAMAAAMSSSMAAXAAMXMAXXXXSMMMMMMSMAXXXMMSSMMSMMMMMMAAAXXMXMXSMMMXXMMXMXMAMMMXAMMXSASAMMMMSMMMXAMXAAMAMMMSMSMMMAXAXAMXXMSMXXAXMASMSAMX
XSMSAXASAASXMMAMAASAMXXMSMSMSXMAXAAMAMAMXMSSXSAAAXAAXAAMXSSMSSXSASXSXAMAMXSXMASXSMSMASAAMAMAMAXAAMAXXAMAMAMAXXXAAMASAMMMSMSMMSAMXMXMSAMXSXSA
MMASMSMSMMAAAASMMMMMXMASAAAAMMMASXMSXMASAMAAASMSSMSSSMMAMXXAXAMXAXAMXSMXSAAASASAAAMSAMMMSASMMSMSMSASMSMMMAMMXXSAMSAMAMAXAMAAMSASXSAAMASAMXXM
MMAMAAAXAMSSMMXASXSXASXMMSMXMAXXAXXAAXASAMMMMMXXAAXXAXAAMXSXMXMMSMSAMXAAAMSMMAMAMMMMXSAMMXMXAAXMXMMSXAAAXMMMAASXMMASASMSSSSSMMAMASMXSXMASMMM
XMSMSMSMSAAXXASXMASMMMAXMAXMSMSXAXMMSMASAMSSXMSMSMMSAMSSMAMAMXMAMMAAAMMMXMAXASMAXAXMMSMSMSXMXMXMAMAMXSMMXSAMMXSAMMMMAMAAAAMAMMSMAMAASAXAMAAM
ASXAAMAAXMSMSAMXMXMAMMSMMASXAAAMSMAAAMMMAMAAAAMAAAXXAXAMMAMAMAMASASMSXAXXXXXSASXSSMMAMXMASMMMXXSMMSMMXXAASXMMAMAMXSMSMMMMMXAMXMMAMMMXAMSSSMS
MMMSMSMXMXAAAAMXMASXMAXAMAMMMMMAAASMSXXASMSSMMXSSMMMSMMMSASASXMASAMMMMXAMXMMXMAXMAXSSSSMAMAASMMXAAMASMMMMSXAMASMMAMAMMXXXXMSSMXSSMMSMSAMAAXA
MAAMAXMAMSAXSAMASMSAMAMAMXXAXMSSMXMAMASMMAMXMXMAAAAAXAAASMSXSXMXMMMASASXXSMAXXMSMMMSAAXMSMSMSAMSMMSXMAXMAXMMXMAASXMAMXXXXXAXAMXAAMASAXSXXMAS
SASMXMASAASAMXXASXMMMMSSMMXSMMAAXSMASAXXMXMXMAMXSXMSXMAXSXSASXSAAAXMMAXMASXSAXXAAXXMMMMXAAAAXMMAAAXAMSSSSSSMAMSXMASMSASMMMMSSMMSMMAMXMMXMXMX
AAXMXMAMXAMMSSSXXXMSSMAMAMAXAMMSAMMAMMMXXASMSASMMXSAMXMASAMAMASMSMSSMXMSXSMXAXMSMMXXAAASMSMSMSSSSMSSMXMAXAAAXMXASASASMAAAMXAXAAXXMAXAXMASAMX
XXAAAMXSXSXAAAAMMMXAAMXSAMMSAMXMAXMASMAXSASASASAMXMAMXSASMMMMAMXMASAAMAMAMXMXMAMASXSMSMMAMAAXXMAXAAMAXMXMSMMXSXXMASAMXSXMMMMSMMXMSSSSXSXXAXX
MMMSMSXSAXMMMSMAAMMMSMAMXMASAMXSAMXMXMAMMXMXMAMXMASAMXAAMXMAMAMXMMMMSXMMAMMSAXXSASAAXMXMAMMMXSMMMMMXSMXMAMAMASAMMAMAMMXXMXAMAMAXMAXXAASMSSMM
ASMMAMAMXMAAMXXSMMXMAMMSSXASAMXMXMAXMMXSMMMAMXMASXSMSAMXSXSASAXXXAAXMAXSAMASASAMXMMMMSASMSASMXASXXSAAMXXMXAMAMXXMAMXMAXMAMMXASXSMMSMSMSAAXAM
MAASAMSMSSSMSXXXMAAMASMAMMAMXMAMAMMSAMXMAXSASMSAMMMXMXXXAASASAMSSSMSMSMSAMAMSMXSAMXMMSAMASASXMSMAAMSMMMMMSAMXSSSSMSMMMSSMXSXMSMXAXXAMAMMMSSM
XMXMAMXAAAXMAMXXMXMSAXMAMXMASMSSSSXSXMASMMMXMAAAAASASMSMMXMMMMMAAAASAMMSMMMSXXAXASMSAMAMMMXMASAMMMMMXMMSAAXXASAAMAAXAAAAMASAMXXMXMXSMAMMXAXM
MXXSXMMMMMMMASMASAMMXMSMSXAXXAXAAXAMAXASASMMMSSMXASASAAMXXAXAAXMMMMMAMASXXXAMMMSMMAMMSAMAMASMMMXAAAXXXAAAMSMMSMMMSMSMMSXMASAMASXMXAAXAXXMASM
SSMMAMXMAMAMAXXAMXSXMAAASMMMMMMMMMMSSMMSAMAAAAAMSMMMMXMSSSMMMXSAMXXXAMAXMAMXMSAAAMMMASASXSASXXASMSSSXMMSMMXAAXAXAAXAXMMXMXSAMAMAMMMSSSSXSAMX
AMAMMXSXMASXMSMXSXMXAMMMMAAAAMMMMXXAAAASMMSMMSSMAMXSXMXSAAXXXAMXMASMXMASXMMAMMSMSMSMMSAMXMAXXAXMAXMAAXXMXMXSXSMMSMSSSXSASXSXMAXAMAXAAMSAMXSX
MSAMSMSASAMAMMMAAAMAXXAAMSMSXXAAAMMSSMMMAAXMXXAXMSAMASMMSMMMMMSXMAMAAMMMAAMMSAAXAMXAXMXMSMAMSMMMMMMXMMMMMSAMMSAAAAAXMAMMMAMASXSSSSSMSXSXSASX
XMAMSAMXMASXMASASMMAXSSXMAAAMSSMXAMAMXSXMMSSSSMMXMASAMAAXXAXAAMAMASMXSASXMMXMAXSMXSAMXSMMMXMAAAXSAXAMXAAAMAXAXMMMMMSSSXSMAMAMMXAAXXXAAMXMASX
MSSMMMMXSXMASASAMASXXMAMSMMMMAXSMSAMXASAMAXXAAXAXSMMMSMMMSSSSMSAMASAASASAMXMXMXXXXSASASAAXAMSMMXSMSMXXXMXXXMMXAMXMAXAAAMSSSXSXMMMMMMMSMXMXMX
MAMASAMXMASAMAXMMAMXAMSMMXXSMMSMXMAXMMSAMXSMXMMMXXAAASXMMXMAMAMMMAMMMMAMMMAMAMMMMMSAMASMMSSMXASMXMAXXMASMXMXSAMXSMSMMMSMAMMMMASAAAAAXAMAMAMX
MMSAMAMAMMMSMAMSMSSSXXMASXMAAXMASXSMSXSMMXXMXAAXXXMMXMASMMMSMAMXXAXAMXMAMMXMASAAAAMXMAMAXMXAMAXMASASXSMXAASASMSXMAXSXXXMASAMSAMXSSSXSASMSASX
SAMMSASMXXAXMXSXAXAXMASXMAMXAMXAMXMASAMMXMAXSSMSSMSMSSSMSAAAMAMXXXSSSXMASMMSASAMMSSXSAMMMMMSMMMSXSAXXAAMSMMAMXMAMXMXSXSSMMAMMMMXMAAASAAASAMX
XAMXSASASMAXXMMMMMMMAXMAMXMASMMXSXMMMXMAAMSAMXXMASAAAMMASMSMSMSMMMMAAXMASAXAMXAXSXMAXMXXMAAXAAXMAMXMSMMMMAMMMSSMMSSMXMAAMMSMSASAMMMMMMMMMAMX
SAMAMMMAMXMMSXMAAAXMMXMSMSXMXAMXXMXXXMASXSAAMASAMXMMMSMMMXAXAAAMAAXMMXMMSMMXMMMMXAMSMMMSSMSSSMSSMXAXXAMMSAMXXAAAAAXAAASXMAAASASXSAMXXXSMMXMX
SXMMASMSMAMAXASMSSSSXMMAAXAMXAXASASAXMXXMAXMMASMXSXXASAMSMMSMMMSMMSXAXSXSXMSMSSSSXMAAAAMAAAAAMAAXSAMMXSASXSAMSSMMMMMXXXXMMMXMMMASMMMXMXMASMM
SAMXXMAAXXMAMMMAAAAAASXSMMAMXMMMMXMMMMAASASXSXXMASMMMMAMSAMXAXMMMMMMMMSAMXXSAAXAAASXSMSMMMMSMMSSMMXMAXMASAMMAXXXXSASMXSXSAMAMAMAMAASASAMXSAA
SMMSXMMMXSXSXXMMMMMMMMAAMSSMAXAXSASASMAXSAMAAMXMAXAASXMMSXMMMMAAAMAMXAMAMMXMMMSMSMMXMXMXSXXXXXXAAXXMSSMAMMMAXXMMMMASAASASASXSXMXSSMSASAMAMMM
MAAMMMAXMSAMSXXMAMSSSMMMMAASXMMMSASASMMMMAMXMXSMMMMMSAAASMSXSAMSMSXSMMSMAAAMAMXAAAXXSAMXMAMXMMSSMMXMMAMMSSMSMXAAMMMMMMMAXMMAMMMAXMASAMXXSSSS
SMSSMSASXMAMAMXSASXAXAMXMSXSMXSAMXMMMASXSXMMXMSASAMASXMMMAXAXSXMXMAXMAAMMSXSASMSMSMMMMMAMMAAAAMAAXMXSMMXAMXAASMMSXXAXMMSMXMAMAMASMMMMSXMMAAA
MXMAASXSXSAMMSASXSMSMMXSXMASAASXSMSXMASAMMSAAAMAMAMASXMSMSMSMMMXAMMMMSMSXMAMXXAAAAXXAXSASAMSSSSSSMSAMXSMXSMMMMAAMMSMSMAAAXXXMMXMXAAAASMMMMMM
AASMMMXMASXSXMMSAMXMXSAMASAMMMSASAMXSXMMMASXMMXASXMAMAXMAXAAMXAXSASMAMASAXMSASMMMSASAXMASMXMAAAAXAMASAMMAMAXSXMAMXMAAMXSSSSMMSAMMSMMMSASXSAM
SMSASMAMMMASAMAMAXAMMMASMMASXXMAMXMASAMXMMXXMAMMMMMSSXMMMMSMSMSMXAMAXMASAMMMMSXAAXAMXSMMMMAMMMMMMXSMMASMAMXXMAXMXSMSMSXXAAXAASAMAXXMXSMMAXMM
MASAMMAXAXMSMMAMSSMMASMMXSXMMXMXMSMXSMMMMMMSMSXXAMAMAXMAMMAAAAMMMAMSXMXMXSXAMSMMMASMASMMASXMAXAXAXMAMXMMSSMXXMASAMMMAAXMMMMMMXXMAXAAAMXMMMSA
MAMAMSMSMSAMXMASAAASXSAMASASXXSAAXMMMAAAAMAMAMXSXMASMMSSSSMXMSMMXAMMAMXXMAMASXAXAAMMXSASXMAXSSMMXMAMSASAMXMSAMXMASAMMMMAAMSMSMMMSSSMSSSXAAMX
MMSXMAXAAAMAASXMMSMMAXAMASMMAXSMXASASXMSMXAMMMMAASASXXXAAMAASMMXSASMMMASMAXMMMMMMMSSMSAMXMMMMAAAXSAMSAMAMAMMASAAAMASMAASMSAAAAAAXXMAXXMXMXMM
SAXMSMSMSMXSXSAMXXAMXSSMXMAMAMXMSASMSAAAASXSMAXMMMAXXMMMMMSMSAAXSMMAXMXAMXSXMASASAMAMMAMXASMSSMMXMAMMXMAMMXSAMXMMSXMMMXMXSMSMMMMSAMMMAAMSMSA
MXMXAAXXAXXAMXASAMAMXXXAAMAXAAAAMAMMMMMMXMAAXXSMSASMMSAXXMXASMMXSASMSMSMXXMXSXSAMXMAMSMMSXAAAXMSSSMMMSSXASAMXSXMASMMXXMMAMXXMSSXSXMASXXXAAMX
XMSSMSMSMSXXASMMMSSSMMSSMXMMSMMMXXSMSMASXMSMMMMXAAAAASAMXMMXMXMASAMAAAAMMAMXMMMXMMSMMSAMXXMMMMSAMAAXXAASMMAAAXAMASAMXXXMMMSXAXMAXMSXSXMMMSMS
MMAMAMMXMXMXMMXXXAAAAXMXMASMMXSXMAXAAMAMMMMASAMAMXMMMSSXAXMSMSMAXAMSMSMSMXMAXAAAMAAMXSAMMAXSAMXMSSMMMAXMXSXMSSMMAMMMASXSXAXMMMMXMXMXMMSAMAAA
AMASAMMAMAMXMMAMMSMSAMXSSMXAXASAMAMSMMASAAMSXSMSSMXMAXMSSSXAAAMSSMMAMAAXMAMMSMSSSSXMAMAMAAMSAMMXMAMXSSXAXMXXMAAAAXSMMAAMMMMAASMMSXMASAMASMSM
MSXSASXXSASAXMASXXAMXSAMAMSMMASXMXXXAXMSMSXXAXSAMXAMSXMXMSXMSMSMAASXMMXMMASMAAAAAXAMSSMMSAMXAMAAXXMASMXMSMMMSAMXMMXAMMAMAAXSMSXAMXSSSMSMMXMX
ASMSMMAXMASMXMXXAMXMAMXXAMAXMXMAMMMSSMMXAMMMMMMXSSMXXASMMSXMXMAMMMMAMSXXMAXXSMMMMMXMAAXAMXMSXMSMSSMXSAAASAAXSAMXSXSXMXXMXXMAMXMSMASAMXAAXAMA
MMASAMXXMAMXMSSSMAAMXSMSSSXSXSSSMAAAAAXMAMMAAAMAMMMAMMMASXAXMSASAMXSASXXMSSMMAXXAXSMSSMMSMXAMXMAAXMASMMASMMXMAMSAAMXMAMSASXMMAAAMSMMMSSSMMSS
XMSMXMMAMASXMAAAXSXSASXAMXAMMMAMXMMSSMMMMMASMMSSMMMSSSSSMMXXASAXXSAMMMAXMXAASMMSSSSXXXMSAXAMMAMMMSMMMXMXMAMASMMAMMMAMAXMASAXSXXXSMASXXAAAXAM
MSMMSAMXSASAMMXMMXAXAXAMXMAMAMAMXSXXAMXAMXAMAMAXAAAMAMXAMSASMMAMXMXSAMXMXSAMXXAMMAMSMXMSASMSMMMSAMAMSXSXSMMAMMXMAXXXMXMMMMXMMAMSXMAMXASMMMMS
SXSASXSAMASMMSAXXMMMSMMXAAMXSMMSAMAXMSSMMMMMXMMMXMXMAMMSMSAMXXASXAASAMMMXXAMSMXMMXMASAASAMAAMSAMXSAMXXSASAMAAMMXSASMMSASAAAMMAMAAMXXXAMXMASX
SAMXMAMMXXXXAMXXXMAAXAXXMMSAMAAMMSMMXXXXAXSASMSSSSXSASXXAMAMXSAXMMMSXMAXAMXMXAMXMAXXMXMMAMXMSMXMAMMSMAMAMXMASXSAMMMAAMAMXMMSAASMAMASMMSMMSSX
MAMSMSMASXSMSSSSMSMSSSMSMAMASXMXMAMASAMSMMAASAAAAMXSAXAMXMMAXMMMXAAXASMSSXAMMAAMXSSMMSXSAMMSXXSMMSAAMMMSMSAAMAMXSXMMSSMSSMAXMMSXMMASMXAMMAMX
SSMSAXMXSAAAASAAXMAMMAAAMAMAMAAXSASMMAXAXXMMMMMMMMMMMMSMMXXMXAMMXMSSXMAAMSMMAMSAAXAMXAAMXXXMAAXMSXXMXAAMAMMMMAMAMXMAMAMAAMSMSXSASMASASASMASX
XMASMMSXMMMMMMMMMMMMSMMMSXSXSMMMSXMXSXMASMXMXXMXMXMASAMXAMSMSAMXXSAXAMMMMAMSXXAMXSAMXMSMMMSMMMXXXXMSSMMMAMASXMSASAMASXMXXMXAMASAMMAXMMXMASXX
AMMMMAXAMXMSXSXMXXMASXSAMXSXAMAAXMMXAXMAMAAAMXXXMASMMAMSSXMAMXMXXAAMMMAXSAXAMXSAMSAMXAAAAAAXAXMXXAXAAAMSMMAMAASAXXSXSXSMSMMAMXMAXMAMXSASMXAS
XXSAMMSMMAMMAMMMSXMMXAMXXAXMMSXSAMXSSXMAXSXMASMAMAMMMMMAMMSSMMSSSMSMMSMXSMSMMMMAMMAAXSSSMSSXSSMAXSMSXMMSXMASMMMSMMMAMAMAAMXAMXMASAXXASASAMAS
SXSAMASASASMAMXAAXSXSSMSSSMSXAMXMSAAXMAXMAMMAAMAMXSMSMMASAAAAXAAMAAMXAXXXAXXAASAMXSAMXAXMMMMXAMXSXAXXSXSAMXMAXAMXAMAMAMSMXMAMAMMSASMAMAMMMAM
AASXMXSASAMMAXMMXXXAXXAAAMAMXSAAMXAMMSAMMSMMXSSXSAAMAMSMMMSSMMMSMMMSSXSMMMMSSXSMSAMMSAMXSXMMSAMXXMXMXMAMAMSXSMMSSXSXMXXXASXXSASXMAMMAMXMAMAS
MMMASXMMMMMMSSMMSSMMMMMMSMMMAXSMSAXXAMASAAXXAXMASMMMMAASAAXMXXMAMXSXXAAXAAAMXAMXSAMASAXMSAMXSXMSMXAMMMAMAMXAMXMAXMAMXSAMXMAMAMXMMAMMXMXXASAX
XASMMAAAAAAAXAMAAAXMAAXAXMSMSMMMMMSMXSMMMSXMXSMXMAMSXSASMSXSMSSSSMXAMSMSSSMMMXMASAMASASXSAMAMAMMMSMMAXAMSAMXMAMAMXASXSXSAMMXAXXMXAMMASMMXMMS
SMSXSSMMSMMMSAMMXSMMSSMMXMAAMXAAAXAXXMASXMXSXMMAMAMXAMASAXMMAXXMXMMXMXXXAMAAASMXMAMMSAMASXMAMSASAMAAMXMSMXAXMSMSXSASXXAMAMXMMSMMSMMSASMMAAAS
MXSAMXAAMAMAXXMSSMAAAAAXMSMSMSSMSXAAMXXSAMAMMAAASAMMMMAMAMXMSMXAAXXXMMASASXMMXMXMAMXMAMXMASASXMMASMXSAMAMSSMMAAXMMASXSMSSMMAXMAMXXAMMSASXSMS
XAMAMMMMSXMAMSMXASMMSXMMXAAAXXAAMMMMSSMMAMXMSXAXXMXAXMXMXMASAAMSXSMAAAAMAXMSXMMASASASMMXSXMXSAXMXMAASMXXXAAASMMMXMAMMMAAXAMSXSSMXSMSASAMXAXX
MSSSMSAMXMMSAMXSMMSMXXSXSMSMMSMMMAMXMAASAMAMAMXXAMSSMMSMMSXSMSAAAAXSMMXMXMAMAAXMXXSASXMASMMXSAMXSMMMSXMSMSSMMSSMXMASAMMMMMMMXMAMAMAMAMMAMMMM
XAAAAAAMAXMASMAMMASXMXMASAXMAAAMSMSASMMMASXSMAMMSMAAAAXAXSXSXXMMXSAMXSMSMSMSSMSMSXMAMAMMSAMASAMXAAXXMAXAAAMAAXMXMMMSXSAAASMSASMMASAMXMMAMXAX
MMSMMMSMMSSXMMASMMSAMMMMMMMMXSMMAASASXMSAMAMXSAAXMSSMMXXMSASMSXXMMASAMAAAAXXAMAAAAMAXXSASMMMSAMSSMMSMSAMMMSMMXSAMAASMSMSMSASXMMSMSASMMSMSSXS
AAAASXAAAAAXXMMMXASXMAMAAAMXMXXSXXMAMAXMMSAMMXMXSXAXMMXSAMAMAMMSMSAMXSSMSMSXMSSSMXSXXXMXXXXXSXMMAAXAAXXXAXAAXASMSMMSAMAXAMXMASXAASAMMMAAMMMX
MXXMMXSMMMSSSSSSSMXMSASMSSMSASMMSAMXMSMAAMAMAXMASMSXSAAMXMAMXMASAMAMXAMXAAXXXAAXXMMXXSAXSASXMMSSSMMMXMSSSSSSMMSAAMSMMMAMXMASXMSMMMXMASMSMSSX
SXSSSXASXMAMAASAMXAXSASAXAAMXMAXXXMXAXSMMXMMSXMMXAMAMMXSASXSXMASMSAMXMMSASXMMMSMMAAXMASMAMXAAAAAAMXMXSAXMAMXAXMMMSAMXMMSSSXMAXMXSMXSASAAAAMM
MAAAMAMAXMAMMMMSMMMMMXMMMMMMASXMXSSMXMAXSAMMXASXMAMXMAASAMASAMXXXMXSAAXAMXASAAXAXMXMAMMXXXSSMMSSXMAAXMAMMXMSMMMAXSMSAXAAXXMXSMSAMXASAMXMMMSM
MMMAMAXMXSSSSMSAMXXSAMXMASXSXSASAAXAXAXASXSAXAMAMMMSSMXSAMSMMSXMXXAMMSMAAMXMASMSMMXASXMMSMMAXMXMASMSMSSMMAMXASXMMSXSMSMMSMSAMAMASMXSXSXXMASX
XSSSSSSXMAAAAXSASMXMASXSASMMMSAMMSMSMSSXMAMXSSSXMAAXXMASXMXAAAASXMXSXMXMMMSAMXAAAXSMMAXAMXXSMSSMXMAXAAMAXASXMMAMSXAXAXAMMAMAMAMXSMXMAMAMXAMX
AXXAAAXXAMMMMMSXMMMSMSAMXSAXAMXMAMAXAXSAMXMAAXAASMMSAMXSASMMMSSMAXAAMSAMXMMASMMXSAAASAMXSSXMASAXAMXMMMSXSMSAXSAMAMSMSSMMMMMSMMMAXXAMAMSSSMXS
SXSMMMMSMXAAXMXMMAAAMSMASXMMXSAXXMXMSMSXMASMMMSMMAAXXMAXMMAMAMAMSMXSMSXXAXMAMAAAXMSAMXXAAXAMSXMASMSSMAMXMAMMMSMSMAAAAXXAXXAAMXMAMXXSMSAAAMAM
XAXXXAAAMSXSMSASMMSXXXXMXMASXSASMXMAXAXAXXXMXAMMXMMXMSASASAMASMSXAMXAMASXMMASMMMMXXMMAMSMXXMMAMXXXAAMXMAMSMSASXAXSMSMMXSSMSXMAMSSMASMMMSMMMS
XSMMMMMSXSAAASASAMMXMXMMAXSAMXXMMMASMSMXMSXMMSSMSXSAXXAAMSASXSMSMSMMAMMMSAMAXAAXXAMAMSMAASXXMASXMMSSMSMXMXAMAMSXXAXMAXAMAAMSSXSAAMAMAAAAAAAM
AMASAMMXAMMMMMASAMXASAMSSSXXMMASASMMAXXXMXMAAAXAAASXSMXMASXMXSXXAMXMAMXAXMMXSSMMMXMAMAMMXMAAXSMMSAAAAXXMASMMSMAMXMXSAMXSAMAAMMSMSMXMMMSSSMSS
XSAMASXMMMXAAMMSMMSXMAXAMMAMXSMSASASMSMSMAAMMSMMMXMAXAMXASMMAMXMSMMSMXMSMXMXAXXMASMMSMSSSMSSMAAMMMSSMMMMAMXAMMXSAXXXMAMXMMMASAMXMMXSAAXXXMAX
XMASMMAAMXSSMXAXAAXMSMMMSSSMMSAMAMAMAXAAXXMXSAAAXAMXMAXMMSAXAMAAMXMASAAXASAMXMXMASAXSAMXAMAMMMMMAAXXASXAMXMSSXAXMSXSXSASXSSXMAMAAAAMSMSSMSMM
SXXMAXSSSXAAAMSMMASXAMAXXMAAAMXMAMXMAMSSMSSXMASXMSAAXMASMSXMASMSSXSASMSMAMMMAMXMAXMMSAXSXMASAXMXMSXSAMXXMXXAAMSSXXAMAAXAAXXMXSMMMMXXXMAXASAS
SXSSSMXAMMMMMMMAMAAMMSMSMSSMMSSSSSSMMXMAAAAAXMAMAMMSMMMMAXMSAMXAAAMAMMXMAMAMMSAMAMSASXMMSSXSMSSXXAXXMAMAMXMMSAXMXMAMASMMSMMMAXAMXXMAMAAMMMAM
SAMAMAMAMXSXAAXAMXSXXMMMAAXAMXAAAAXXMAMMMMSSSMSMXMAAAAAMMMXMASMMMMMXMSXSSSSMASASASMASXMAAMMSXAMMMSSSSMMMAMAXMXXMAMXMMXAXXAXXMSAMAMMAXXMSXMAM
MAMAMXXASMSMMMSSMMXMXSAMSMSSMMMMMMMSSMSXMXAAXXMMMMSSSSXSXMMSAMAXAMXMMSAMXAAMXMAMMSMAMAMXMSAMMMXAAMAMAAAMSMSMSMSMSMMAMSMMSMMMXSXMASMSMAAAXSAS
MAMAXMMMSMMASMAMAXXAMXMMXMAXASXSXAAMAAAAMMMSMMAXAXAMXAXSMMAMASMMSSMAAMAMMSMMAMMMAXMASMMSXMASMMSMXSASMMMXMAAAAAAAAAAMXAMXAXXMAMXMXAAAMXMMMXAS
SSSSMSAXMASXMMASMMMSMAMAXSMMXMAMMMSMMMSSMAMAMMMASMSSMXMMAMMSXMAXAAMSMSMMAXASXMAMSSSMSAAMAXSMMXAAAMXSAMXAMXMSMSMSSSMMSSSSMXSAMXXAMMSMMSSMMMXM
AAAXASASMXMAXMXMXAMAMAXAAAXMSSMMXSAXAAXAMAMAMAXXXMAXMXXXAMXAXSXMAMMAAAAMASAMMSSSMAXAXMMXSMMAMSMMMSMSMMMXSXMAAXXXMMAXAAXMAAMMAMSXXXAAXAAASXSA
MMMMXMASMMSMMSXMSSSSSSSMXSAMAAAAXSASMSSMSSSSSXSAMMSSMMSSMSXMMMSMSASXSMSMASAXXAMAMMMSMXMAXAMXMAAAXAXMAMSAXASMSMXAMMMMMSMXSMSMAXAMXSMXMXSMMAAS
XMXSAMASAAXAXSAMXMAMAXXMMMAMSSMXMSXMXXXAAAXMAMMAMAMAAAAAAAXXAAAXMASAMAXMMSAMMASXMXAAAAXAMAMMSMSMMSSXMAMMSMMXMASMSAXAAAXMAMXMSSSMMXMASXMXMAMX
AMASXMASMMSXMMAMMXMMMMSXMXMMXAMXXXAMXSMMMSMMMMMAMXSSMMSSMMMMMMMXMMMAMSXSMMMMSMMMSMMXXMMXMAMXSAAAMASXMAAXAAAMMAMASMSMXXXAMMMAMXMAMSMASAXMASXM
XMASAMASAMXMMSSMAAXAAAMAMASXMSXSSMMMAXXMAMAXAMMMSAMXXAMXAAXXSASXAMMXMXAMXAXXMAAAAMXSXSASMMSAMMMSAASXSMSSMMSMMASAMXXAASMMXSXMXMMAMXMSSXMAAMAA
SMMSXMXSXMAXXAXXMASXSSSMMAMAAMAMXAAMMSSMSSXSXSAAMXSMMSSSSMXASAMSAMSMMMAMSMMMSSMMSSXAAASMAMMMMSAXMXMAAXXAAAMASXSXSXMMMSAMASAXAMSXSAMXMMAMASAM
MAMSMSMSASXSMMSSXMAMXAXASXSMMMMMMXMSXAXAMXASASMMSMSXAMAMXSSXMAMMMXXAMXAMASAXAMXAMAMMSMMSXMMXAMAXMXMMMASMMMSAMASAMASAMXMMASAMXMAXXMSAXSAMXXXX
SAMXAAASAMXXAAAXSAMXMMMMAAAXSXMASXMMMSXSAMXMAXMASASMSMAMAXMXXMXXMASXMSXSXSXSASMXSAMXXAMXMSMMXXMMSAAAMXMASXMAMXSASAMAXMXMASXMAMMSMMMAXAXMXSMS
SASMSMXMMMMSMMMSAMXAMAAMMSMMMAMAMAAXAXSXXXXMXMSAMAMAMXMMSSMAXXXSMASAAAXAXMASAMAXMXMXXAMASAMXSAAAXXSMSASXMASXXMSAMMSMMSAXXSASXSAAXAMSMMMMXXAA
SAMMXSSMMAAAMSMMASXMMSSSXAAAXAMMSSMMSSMMSAMMSAMXSSMAMAAAXAMASAAAMAXMMMMMXSAMAMSMMAMMMXSMSXMASMMMSMMMSMXASMMMMAMXMMAXXSMSXSMMAMMSMMSAAXSXSMSM
SAMAAXMASMMMMXAMAXXSAAMAMSSMSSXXAMXMXMAAMASAMXSMMAMAMXMMXMMASMXMMMSMMASAMMASAMXAMASASAAMMMMAMAAAMAAAXMSMMAASMMMMMMASXSAXMXAXAXAXAMXMSMMAXAAX
MAXMAMXXMMASASMMSMAMMSMSAMAMAMMMSMMXAXMMSAMXSAXAXXXSSMSXSXMMXXMXAMAAMAXXASAMXMXSMMXAXSSMXAMAMSMMMSMSMXAMMXMAAXSASMAMAMAMASMSMSMSAMXXAXMAMSMS
SXMMSSMSASAMAXXAAMAMMXAMXSAMAMMAMAMSSMMAMXSAMMSSMSMAAAXAAMXSXMASXSSSMSSMMMXXASAXASMSMMMXSXMAXXASAMMAMSAXAMXMSMMAMMAMXMAXXXXAAAXSAMXSMSSSXMAX
SASAAMASXMASAXMSMSXSXMXMASXMASMASAMSASMASAMXSXMXAAMMMMMMMSAMAMAMXMXAMAAXSXMXXMASAMAAXXSASMMSXSAMMXMAXXAMSXSAXXMXMSXSASMSSMSMMMMMXMAAAAAMMMSM
SAMMSMMMAAXMMSXMAMMMXMSMMMASASMAMAMMAMSAMMSAMXMMSMMXMAMMAMXSAMASXXXMMXMMSASMSMXMAMSMSXMASXAXMMSMXMSXSMMMAAMAMXMAXAAMMMAAAAMSXSASMSSMMMXMAAAA
MAMXAAXMXMMSSMAMMMAXAMMAXXAMXMMXMAMMAMMMSAMMSAXXMASAMAMMASASMSAMMMMXMMSAMAMAAXMSAMAMAMMAMMMSAXASAMXAXXSMMMMAAASXXMAMAMMMMSMMXMASAAXXXASMMSSS
SMMSSSMMSAMXAMMMSSSMMSSMMMSSSMSMSSMMAMAMMXMXMXSSXMAXSASXSSXSMXMMASAAXAAXMAMSMMASXSMSAXMAXAXXMMMSXSMMSMMASXMXSMAXAMXSASMMAMAAXMAMMMMMMMASXXAX
SAMXMAAXAASXMMSAAXXMAAAAXXAAAAMAAAXSSSSSXMSSMMMXSXAXSMMXAMXXMAXSAMSSMAXSSXXAAMMMAMMMASXSSSMSXMXSAXXXAMSAMASMXXAMMSAMXMASASMMMMASAXMXAXMAXMAM
SXMMSSMSMSMXXSMMSMSAMSSSMMMSMMMMSSMAAAAAXAAAMAXAMMSMSSMMMMMXMAMMAMAMXSMAAMSXMMAMXSXMMMAASAMSASAMXMMSMXMASAMASMMSAAAXAMAMXMMASXMMXMSSMSXMMSAM
XMAXAXMAMAAXMSAMAAAMMAAAAXAMAXXXMAMMMMXMSMSSMSMASAMMMAXMASAAMSMSAMXSAMMXMXSXSSXSAMMXSAMXMMMMAMAXMMXAMXXMMMSSXASMXMASMSMSMXSASASMMAXAXMASASAS
SASMMSSMSMSMASAMMSMXMMSMMMSSMMMASMMXXSMMMMAMAMSMMMMASAMXSMMSMMASXSAMXSAAXAMAMMAMMSAAMAXSMXSMAMAASMSMSSXMAXSMMMMMMXAXXAAAAMMAXAMXASXSMSMMMSAM
ASXXXAAXXXAAMSXMAMMXMAAAXXAAAXMAMAXMXMASAMXMMMMXAXSXMSMSXXAMASAMXMAMMSMSSSMAMXMMAAMMSAMXSAASAMSSMAAXAAASMSXXAAAAXMASXMSMSMMSMSMMSXMAXAMXAMAM
MMSSMSSMMSMSXXMAXMXAMXSSMMSSMMMSSMXMAMAMAXAMAAXMXMMXAAXMASAMMMXMXSXMAXAMAXXXSMXMXMAAXXSXMXMSMXMAMSMMSSMMXAMSMSMSSSXXAAAMAXMAMXAXMAXXSXXMSMAX
XAAXXXXAAXMAMMASMMMMMXAMXAMAMXAAXXXSAXAXMSXSSMSAMMASXMSSMAXMXMXMAMMMSSMMMMMMXMAXAXMAXMXXMSMMMMSAMXXAAAAXMAMSAMAMAMXMMMMSSMSMSXSMMAXMMMXMASMS
XMMSMMSSMMAXMMAAAAMASXMAMMXAMMSMMMMSMSSSXSXAAXMASMAMAAXMSMAAAMMMASXXAXXAAAAMASXSSSMMXMAAAAXAAMXXXXMMSSMMMSAMXMXMAMSAMXAXMAAXMXXAMMSAAAMSMSXS
MAXAAAAMASXASMMSSMMAMASXAMSSMAMAMMAMXAAMASMMMSSMMMAMMXMAXXMMMXMXMXXMSSSSSXMSAMMXMAXAAMSSSMSMSSXSSMSAXAXXXMASMMASXSXXMAMMMSMAXASAMAMMXMXMXMAM
MXSMSMXSAMXXMXMAMMMASXMMSXAMMMSAAASXMMSMAMAMAXAMXSASXMSSMXSASAMASXMAMAMXAXXMMXAMSSMXSAAXAXMMAMXAAASMSMMMXMXMASXSMSAMMAXSAMXXMASAMSXMXSMSMMAM
SMXAMXAMAXSXMAMXMASMMAXAAMMSMXMMMMMAMAMMASMMMSAMAMXSAAAAXAMASXSASMASXMASMSAASMSAMAXAXMASMMXMASMSMMMMAXAAXMAXXMXSAMAMSMMMASASMMXXAMASXMAAASMS
AASXSMSSSMMMSAMAMXMAXAMXSXAAXMASXXXXMAMXXSMAMSXMASASMMMSMMXMMXMXSXSXMXXAAMMXMAXSAMMMSXMSXAXMSSXMSSSSSXSSSXMXAMAMMMXMASAMAMMXAAXMASAMAMXMMMXM
AMAMXAMAAMAAXMSXXASMMSMMXMSSSMAMMMSMSSSSMMXAMSASAMMSASXXASAXAXMMXXMASMSMSMSSSXMASXAMAMAMXSXSAMAMAXMAXAXAAAMSMMMSAXXSXSSMASMSAMSSMMMSXMSXMSAM
SMAMMXMXMSMSXXAMSASXAAAAMMAMAMMSSMAAAAXAAMSMXSAMMSXSAMXXASMXSAMAXMASAAAAAAXMASXXXMSAMSMMAXMMASXMASMAMMMMMSMAMSASXSMSAMXSASAMMAAAMAXMAMAAMSXS
MAAMSXMXXAAXMMAXAMXMMSMXXMAMAMMAASXMMSMMSMAMAMAMSAMXXAAMXMAAXAAXMXMASXMXMXMSXMMMMAAMMXXMXSASMMXMASMASAASXMMAMMAMASAXMAXXXMXMSSMMMSSMSSMXMMAM
SSMASAMSSMSMMSMMMMXSMMAMSSSSSSMXXMSSSXMAXMASMMAMAMSMMSXMAMMMSMMSMAXAXXMASXMMAMMAASMXMSSXXXAMAAXMASAMSMXSAMSXMXAMXMMMAMMSSMAAMMASAMAAAXXMASAM
XAMXMAAAAXAAMAXMAMXMAMMMAAAXAXMXSAXXAASMMSXSXSSSSSMMAMASXSMXMAAAXMMMSASASAASMMSSMXXAXAMMSXXSMSSMAMXMXXMMXMASMSASXMXSXSAAASMSXSSMAXMMMXXSAXAS
XXMAMMMMXSXSXSXSASXMAMXMMSMMSMSAMMMMSMMSASXMAAAAMXAMXSAMXSXXXMMMSXAASXMASXMXMMMMMMSMMMSAXXMXXMAMAXMASMMSASASMAMMMSMSAMXSMXMXAMAAXMMXSSMMXSAM
SSXSAAAXAMAXAXMSASXSASXMAMXAXAMSSMAAAAXSMSAMAMMMMXMMMXAAAMMSMMSMMMMMMAMAMMMAMAAAAXASAXMMXXAAMXMMMMSAAAASASXXMAMAMMAMXMAXXXSMXMASMSXAXAAAAMAM
MAAMMSMSMMAMMMASAMAMAAMMASMSMXMAXMMSSMMMAXXMSSMXAASASMSMXMAMAAAMAASMSMMASXSASXMSMXAXXXAMAMSXSAAAAMMSMMMMAMASMMSSXMAMXMAMMXSAMXXXAXMAMSMMSXMM
MMMMXMMAXMSXMMAMAMXMAMAMAXMAMMMMSAMMXAAMMMAAXAXMSMSASAAAAMSMMMSSSXSAAXMXSXSXSMMMXMSMMSXMAMAAXXXMXSAXXSAMXMMMAXAAASXMSMSMSMXXXXSMSMAMXXMAMAAS
XAMAMMSXSMXASMMMAMXXASXMAMSAMAAASASASXMMAXXMSMMMXAMAMXMMMMMAMSAMMAMMMSMASAMMMMASAMXAMAMSXMMSMSSSMMMXMSASXSXSXMMSMMAAXAXAAMMMMMSAMXAMMXMASMMM
SMSASAAASASAMXMSASXAMAAMAXSAXMSXXAMASMSMSMXMAXAAMMSSXAMASXSAMMXMXMMAAAMAMMMAAXASMSSXMAXXAXAAAAAAMASAAMAMMMMAXXMAMSMMMMMSMMAAAAMAMSMSAXMASAXM
SMSASMMMMAMXMAXXXMMXMXXMXMXAMMMMMAMXSXSAAXXSSSMMSAMAMAMXSAMXSAAXAAMSMXMAXSSXSSXMMAMXSXMSMMSMMMXMSASMSMAMAAMXSXXMMAAAAXXMASXSMSMSMMMAMXXAXXMM
MXMAMMAMMAMAMSSMXSAASXSSMSMAMAAAMXMMMAMSMMMMXMASMASMSMMAMAXXAXASMSMXMSSMMXMAXMMMMMMMASAAMAMMASAAMXSAXMMSSXSASAASXXSSSSXAXXAAMMMXASMSMSMSSSMS
XXMAXSASMSSMXAAXAXSASAMMAAMAMMMMXAMAMXMXXMAMMXXXSAMXAASXSMSXMMMAXAASAAAXSMSSMASAMXSAMMMMMAXSAXMSMMMMMXMAMXMAMXSMSAXAMXMXMMSMMSAMAMAXAAAMAXAS
MXXMXXASAMAMSSSMXMAXMAMMSMSMMSASMSSSSSMXSSSSMMMMMMMMSXMAAASMSASASMXMMMSMMAAMXAMASMMMXSAXXAMMASAMAMAAMXMASMMSSXXAMXMAMAMAMAMSAMXMAMAMMMMMAMSM
SAASMMXMAMSMAAAAXXMASAMXAAAAXMASAAAAAMXAMXAAAAAAAAXXXMASMXMASASAMXXXXMAAMMMSMMSAMAAXASMSXMAMAAASAMAMSAMXSXAAAAMMMAAASASASMMMMSAMAMXSSXMMXSAM
MXSAAASMXMAMXSMMMXXASASXMSMSMMXMXMMMAMMASMSMMSSSSSMSAMXXXXMAMXMXMSAMXSSSMSAMXAMXSSMMASAXXAXMMSXSMSAMXAXMSMXSMSMXSSSMSMSASAMXXSXSXSAMXSAMXMAS

64
day-04/main.c Normal file
View File

@ -0,0 +1,64 @@
#include "aoc.h"
int main(int argc, char **argv) {
Arena *arena = make_arena(Megabytes(1));
str input = read_file(arena, argv[1]);
Grid grid = parse_grid(input, arena);
i32 directions[][2] = {
{ 1, 0 }, // horizontally forwards
{ -1, 0 }, // horizontally backwards
{ 0, 1 }, // vertically downwards
{ 0, -1 }, // vertically upwards
{ 1, 1 }, // diagonally down-right
{ -1, -1 }, // diagonally up-left
{ 1, -1 }, // diagonally up-right
{ -1, 1 }, // diagonally down-left
};
char XMAS[] = "XMAS";
i32 part_1 = 0;
for (i32 y = 0; y < grid.height; y++) {
for (i32 x = 0; x < grid.width; x++) {
for (usize direction_index = 0; direction_index < ARRAY_SIZE(directions); direction_index++) {
i32 dx = directions[direction_index][0];
i32 dy = directions[direction_index][1];
i32 end_x = x + 3 * dx;
i32 end_y = y + 3 * dy;
if (end_x < 0 || end_x >= grid.width || end_y < 0 || end_y >= grid.height) {
continue;
}
bool found = true;
for (i32 i = 0; i < 4; i++) {
if (grid_at(&grid, x + i * dx, y + i * dy) != XMAS[i]) {
found = false;
break;
}
}
part_1 += found;
}
}
}
i32 part_2 = 0;
for (i32 y = 1; y < grid.height - 1; y++) {
for (i32 x = 1; x < grid.width - 1; x++) {
if (grid_at(&grid, x, y) != 'A') {
continue;
}
bool first_diagonal =
((grid_at(&grid, x - 1, y - 1) == 'M') && (grid_at(&grid, x + 1, y + 1) == 'S'))
|| ((grid_at(&grid, x - 1, y - 1) == 'S') && (grid_at(&grid, x + 1, y + 1) == 'M'));
bool second_diagonal =
((grid_at(&grid, x + 1, y - 1) == 'M') && (grid_at(&grid, x - 1, y + 1) == 'S'))
|| ((grid_at(&grid, x + 1, y - 1) == 'S') && (grid_at(&grid, x - 1, y + 1) == 'M'));
part_2 += first_diagonal && second_diagonal;
}
}
printf("%d\n", part_1);
printf("%d\n", part_2);
}

10
day-04/test.txt Normal file
View File

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