From ea7bb081ccb1123f348ee0e880fa381b47797ae9 Mon Sep 17 00:00:00 2001 From: Georgios Samaras Date: Wed, 4 Dec 2024 12:24:52 +0100 Subject: [PATCH] day 04 --- day-04/input.txt | 140 +++++++++++++++++++++++++++++++++++++++++++++++ day-04/main.c | 64 ++++++++++++++++++++++ day-04/test.txt | 10 ++++ 3 files changed, 214 insertions(+) create mode 100644 day-04/input.txt create mode 100644 day-04/main.c create mode 100644 day-04/test.txt diff --git a/day-04/input.txt b/day-04/input.txt new file mode 100644 index 0000000..97c11e0 --- /dev/null +++ b/day-04/input.txt @@ -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 \ No newline at end of file diff --git a/day-04/main.c b/day-04/main.c new file mode 100644 index 0000000..7e23048 --- /dev/null +++ b/day-04/main.c @@ -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); +} diff --git a/day-04/test.txt b/day-04/test.txt new file mode 100644 index 0000000..c41c5ea --- /dev/null +++ b/day-04/test.txt @@ -0,0 +1,10 @@ +MMMSXXMASM +MSAMXMSMSA +AMXSXMAAMM +MSAMASMSMX +XMASAMXAMM +XXAMMXXAMA +SMSMSASXSS +SAXAMASAAA +MAMMMXMMMM +MXMXAXMASX \ No newline at end of file