diff --git a/2024/4/README.md b/2024/4/README.md new file mode 100644 index 0000000..808855c --- /dev/null +++ b/2024/4/README.md @@ -0,0 +1,43 @@ +--- 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? + +To begin, get your puzzle input. diff --git a/2024/4/input b/2024/4/input new file mode 100755 index 0000000..7835c0f --- /dev/null +++ b/2024/4/input @@ -0,0 +1,140 @@ +MMAMMMSAXAXXAXMASMMASAMXMAMMAMXXXXXSMSXMMMXMXXSXASAMXMAMMXSAMXXXXMSSMXMASMMMSMSSSSSXMXSASMSMMMMMXAMXAXMMSMMAXSSSXSXMXAMXMXSXSMSSXSAMXXXMXMXM +ASASAAMXMXMMMXAXAXSSMXSASASMSSXMMSMMSAMXMMSSMASAMXMXMMMSMMMASMXSAMAMMXMAMAAXAAXAAAAMMSAMXAAXAASMSSSMSSSMAAMXMAAXMMASMSSMMXMAXAAAASAMXSXMASAM +MSASMSSMMAAASMXSMMXAAMSAMASAAAMAAAASXMAXSAAAMSMMXAMAMAMAXAXAXAASMMAMMXMASXMSMSMMMMMAXMASMXMSXXMAAXAAAAASXMMAAMSMMSAMXAAXXAMXMMMSMSASAAASASXS +MMAMAXMASMSXXMASXMMMMMMMMMMMMXAXSMXMAMXXMMSSMMAMMAXXSASXSXMAMMMMXSMSMXXAMAASAMMXMASXXXXSXMMXMSMMMSMMMSMMSASMMXAAXAASMSMMSXSAXAAMXSAMMSMMASAA +MMMMXMSXMXXAAMAMASXMAAAXAMXAASMMMXMSXMSXMXAAASAMSSXAXAXAAMXMXSASMMAAAMMMSSMMAMSXSAXMAMMMXAAAAAAAXXAAXAAXSXMASMSSMSXMAAXMAMMASMXXAMXMXAXMXMMM +ASAXMAMAMASXXMASAMASXSSSMSSMXSAASAMXAMMAMMSSMMXMAMXMMSMMMSSMAXXMAMSMSAAXMXASXMSASMSMAMAAMSSSSSMMMSSMSMXMXXXMXAAMAXMSMSXMASXAMXAMSMMXSMXSAXMX +XMASXSSXMASMSSXMASXMMMAAAAAXXSMMMMMSAMSSMAMMAMMMASXXAAAXXAAMXMMSSMAMXXSSMSXMXXMAMAAMSXXXMAMMAMXMAXMAXAASMSXSMMMMSXMAAMMSAMMMSXMXMASXMXAXMMSA +XSXAAXXXMMXAAXAXAMXXAMMMMMSAMXMXXMASAMAMMMMMAMAMAMXMSSSMMSXMAAMAMXXSAMXAAMXMASMSMSMXXAASMSSMAMSMSSMAMSMMAAASMXAAXMSMSMAMASMAMMSASXMASMXXMAXA +MMXMSMAMXSMMMSSMASASXSASXSAMXAMMMMASMMAXAASMMSXMASXMAMXXXMASXSMAXXMMMMSMMMAXMASAAXSAMXMXXMAMXXAAMXMXMMAMMMXMXMMXSASMMMMSAMMAXAXASMXMXAMSMSXS +SXXAAAXMAXASXAMMXMMAASASMAAMMXMAAXXXXSXSSXXAAAMSAMXMSXXMASAMAMMSSMXAAXAMASAMMMSMMMMXSSMXSSSMMSMSMMXSSSMMSMMSAMSMMMMSXAAMASXSXSMAMMMSMSMMAXAA +MXMAMSSSXSMMMMSSMXAMXMAMAXMSAXSSMMMMXAMXMASXMMMXAXXXXMASAMAMXMAMMAMSXSAMAXMXSAMAAAXAMAMXXMAAMAMXMAAMASXAAAASMSASMAXXMMXSAMAMAXMAMASMAAXMAMSM +MSXSMAAMMSAASAAMMSSMMMMMSAAMMMXXAAAXSAMMMAMMASXMXMMXSAMXASMMSMMSMSXMASAMSSMAMASXMMMXXMMMMSSMMAMSMSSMAMMSSXMXXSMSXSXSXSMSMMAMMMSMSXSASMSMMMXX +MAAXMMSMASMMMMMSAAAXAAAMAMXMXAAMSSSXXAMAMXMSAMMXSXMASMSMMMMAXXMAMMAMAMAXAAMXSAMASXAMXXSAAAAAMAMAAMXMASXAMAXXXMMSAMASAXAMXMSSXXAMAMXAMMXMMMMM +MMSMAAXMASAXXXAMMSSSSSXSXSAXMMSMAAMASMMSXSMMAXSAMASMSXAAMAMXMMMMXSAMXSXMSSMAMASAMMXSAAMMSSSMSSSMSMXSAMMAMXMXMSAMAMXMMMMMAXMAMMASXSMSMXMMAAAA +XSMXMMSMMSMMMMMSXAXAAAASAMXSMAMMMSMMXAAXAXXMMXMASAMAXXMSMSSSMXSAASAMXMXAXAMXMAMAMAAMMSMAMAMAAAXXAXAMXSMMSMSAAAMMMMAAAAAMAMMAMSMMASAXAASMSSSS +XMASMXXAMXAASMMMMMMMMXMMAMSXMASXXAAXSMMMMMSSMXSAMXSAMXXMAMAAAAMMXMMMMSASMMMSMSSSMMXSAAMXMAMMMXMMSSSSMSXAAASMSMXASMSSSSSXSASAMMAAMMSMMMSAAAAX +XMAMMMSXMSSMSAAMAXXXASXMAMXAMXSXSMSMXMASAAXAMXMMSMMMAXXMAMSMMMMSSSMAAMXXAAAMXMAMMXAMMSXSSXMXMASAMAAXAXMSMXMXMXSMSAAAAMAAXMSXSMMXXAAMAMMMMMMM +XMASAAXAXMAMSXMMMXMXMXMSMSSSMXXXMXMXXSXSMSXSMMSAAAAXSMMSAMMXMXXAAAMMXSASXMMSSMSMSMMSAXAMXASMMAXAMMMMSMAAXSXMMMMXMMMMMMMMMXSAMXXMMSMSASXSXSXS +XSASMSSMMSAXSAMXSSMMXMAAAXAMAMAMXMXMMAMXAAXMAMMSSSMSXAASASXAXSMMSMMMXMASMMXMMAAXAMXMASAXSMMAMSSMMAMAAMXMMAXMASAMXXXAXMAMSAMAMSXXAMMXASAMASAX +XMASXAAAASAMXAMASAAXAMSMSMSMAAAAASASXXSMMMMSAMAAXMXXMSXSXMXMXXAAXAAAAMSMAXSAMSMSMMXAAMAMXXMSMAAASXSSXXMXXMMSASMAMMSXSAMXMXSAMXXMASAMSMMMXMAS +XMMSMXXMMMAXXXMXSAAMMMMAAXXSMMXSASASMMMMMSXSSMMSMSMSAXXSMMAMXSMMSSMMMXMXAMSAMXXSXASMMSAMXMXAMSSMMMAXXMSMSXAMXSMASMAXAMAAXMSASMSXAMAXMAAXXMAM +MMAXAXXSAMMSMASMMMMSXAMSMMMASAAMAMXMAMAAMMAMMSAAAAAAXSMMMSAMMMAMXAMXSASMSXXAMMXMMMMAAAASMMMAXAXAAAAMXXAAMMXXAXMAMMSMSAMXXXXAXAXMAXMMXSMSMMAS +SMSMSAASASAAXAXXAAAXMSMMAMSAMMSMSMASXMMSXMAMAMSXSMSMSMAAXSMSASASAMXXSASAMXSSMMSAASMMMSASAASMMMSSMMAAASMSMMSMXSMSSMXAMAXMASMSMSMSMMSSMAAAMSAM +XAAAAMMSAMMMMMSSSMMSAMMXAMMAMXXAXXXSXMSAXSAMXXMMMXAXAXXMXXAMXSAMMSAXMAMXMMMMAMAXAMAAXXAMMMXMAXXMSSXXMAMXAAXMASXAAMMMMAAXMMAAAAMXAAAAMMSMXMXS +MMMSMXXMXMAXAAXXASAMXSAMSXSAXAMXMXXMASMAXSAMMSAAXSXSMSMXMMXMXMMMASMXMAMAMAAXAMMMSMSMMMSMAAMSMMMAMMMXMAMMAMXXAMASMMSSSXSMSMSMSMSSMMSSXAAMASMA +MXXMXSXMASMSSMMSXMXSAMMXXASASXMSMMSMSMMXMMAMAMMSXMXMXMXAAXXXAAAMAMSASASASMSSMMXAMAAAXXXXMMXAAAMAMMAAXMMSSSMMMSAMXAAAMAMAAMXMXMMAXAXAMMSSMSAM +MMMAASXSASAAAAMAMXXMMXXAMXMMMXAMXAMSAAAASXMMXXAMASAXAASMSMMSMSMMAMSXSMSMSMMAXXMASASMMMMXMMSMSMSSSMSXSAAAAAXAAMXSXMMXMAMXMMAMXASMMSSMXMAAAXXM +XAXMASAMASMSMXMXAMMMMSSMMMXXAMMMMXSAMMSXSASXSMXXASMMMMMXMAMMXAXSMMSASXSMSMSAMXMXAMXAAAAASXMAXXXAAAAASMMXSMMSXSASXXXXMAMAAMMMSAMXXXMMMMSSMMSS +SSXSAMMMXSAMXAMMSASXAAMXXAXMMXSAAXMMXAMMSMMAMMSMMMMSMSXSXSMSMMMAXAMSXAXXSXMASXXSAMXSXMSMMAMAMAMXMMMXXXXMMXXXAMASXMAMSAMSSXSAMASMMXAAAXMXMSAM +SAAMXSXXAMAMSXMAXXMMMXMAXSMAXAXAXSSXMMSASAMSMAXAMXSAAMAMAMAMAXMXMXSMMSMMMASAMMASXMAMXMXASMMMSXSASAMMMMMAMXSSXMAMAMAXMMXAAMMASAAXAXSSSXSAMMAS +MMMMMMXSMMSMMXMMSAXSAXMSMXASMSMSAAMAMXMASAMXMXSAMXSMSMSMSMAMSXMXSMXXAAAAMMMMSXAXMMAMASMAAXAMMASAXAXSASXSMAXMAMXSXMXSAXMMMMSXMASXXXAMAXMAMSAM +XXAAAMXMXAAAXMSAXXMMXSAMAMXMAAAXMMMXXASXSAMXMASAXMXMAMXAMSAMMXSAMMSSSSSMXSAMXMMSXASXAXMXMMXSMMMSSSMMXMAMMXMSAMXSXSMMMMXXMAMASMMASMMMSMSAMMAS +SSSMSSXMASXSMAMMSMXMAAXMAMAMMMMMXMSAMXSAMXMAMXSAMAAXXAMAMXMSXAMASAAMXMAAMXAMXAAXMAXMSMMSSMMSASAMXXMASMSMMMMSMSASMSXAAXMMMXMAMXMAMAXAXXSXXSAM +MAXXMAXXAMAAXSXAAAAMMSXSXMXSXSASAMXAMAMAMMSMSMSXSSSSSMSMMXMAMASAMMMMXSMMMSSMSMXSXXMAXAXAAAXSAMASXMMAXAAMXAAMMMMSAXMSMXSAMXMSSSMSSSMMSXXAAMMS +MAMMMMMMMXSXMMMSXSASAMASXSXAAXXSAMSAMAXAMAAAAAMAMAMAMXMMSAMMMAMAMSASMXMXAMAAXMASMMSMSMMSSMMMXMAMAASAMXMSSMXMAASMMMAXXASASAMAAXAAMAMXSMMMXMAS +MMSSXAXAMMMMAMMAMMMMAMSMASMMXMASAMSXMSSMSSMSMSMAMSMSMMSASASXMSSSMMAMAAAMSSMMMMAMAXAMAAAXAMXSASXSXMMMSSMAXAASMXSASMSMMMSAMAMMMMXMXAMMMAXXAMAS +AAAMXMSMSAMMAAMASAMXASAMAMMMMSMMMMMSAXAMAAAMXMMMXXAXAMMXSXMAMMAXSMXMSMMXMAMXMMMSSSMSSMMSAMXMASAMMSAMAAMMXSAMXAMAAAAXSXMMSXMMXMMSSSSSSXMAXSAM +SMMSXMAASMSSSSSSSXSSMXAMMSMAMAAMXSAMXMAMXMMMAXXSMMAMAMMXMMSSXMAMXXMAMAXMSAMMXAXAAAXAAAMXAXXMMMAMASASMXMAAMAXAXMXMSMSMXMAXAMXAXAXAXAXMAXMASAM +XAAMASMMMXMAAAXAXAXXMMAMAAMAMSXMAMMXSMXMSSSMMSAAAMSSSMXSAMAAMMASXSXMMSMAXAMMSASMSAMXMMASXMMAAXXMXSAMXAMMASMMMMSMXXMMMAMXSSSSMSSMMMMMXMASASAM +SMMSXMMMMSMMSMMSMMMASMSMSSSMMXAMSXSASAAXAASAMMMMXAAAAMASAMMXASASXMASAASXSXMASAXAAXXAMXMAAAASAMMXXXAMXXMMAMXAAMAMMSMASXMXAMXAAAXAXXXSMAXMASMM +MMMXMSMAAXAAMXMAAAMXMAAAMAXMASMMMAMASMAMMSMXMAXXMMMSMMMMAMXXXMXSASAMXMAXXAAAMMMSMSSSSXXMMMMXAMXMMSXMXSXMASMSXSASAXMASMMXSXXMMMSSMMSAMSSMMMMX +XXMAMAMMSSMMXAXSSMASMSMMMMMMXSXAMMMAMXAMXAMAMXSXXMAXAMSSSMMSXMSSMMASMSMSSXMAMMXXAXAAXXAXXSAMXXAXXAASAMAMAXXAASMMXXMMSASAMAXSXAAAAMSAMAMAMASM +MASASMXSAXAMSMMMAMAXMAMXASXSAMAMMAMXSXMMMASXMSAMXMAMAMMAMAXSAMASASMMAMXAAAMXMXMMSMMSMMXMASXMMSSSXSSMASAMSSMMMMXAAXSAMMMASAAMAMSSSMSAMXSAMSXA +AMSAMAXMASXMASASAMXSMSXSMMAMXSAMMASAXAMXMMXMXXMASMXSSMSAMXMMAMASMMMMAMMXSMMASAASXAXAAXASAMAAAXAMXMXMXMMSAAXMAXMMSXXAMMSAMMMXMMAXAASAMXSXSAMS +SXMAMSMMAMASASMSXXXXAMMXMMSMMSMSXMMASMMSAXAMMAMXSXAMAASXSMSMXMAXAAXXMSMMMAXAXMXSXSMMXXXMASMMSMMMASAMASXMMSMSMMSAMMSXMAMXSXSSXMXSXMMXXMMMMMAX +MSSSXMAMXMASXMASAXSMMMAXSAMAAXASMMMMMXASXSMSAXSMSMXSMMMAXAAXSSSSSMMSAMXAXAMXSXMSAMASMSXSAMXXXAXXXMASASASAMXXSAMAAMXMMMMMXMAMASXMAASMMAAXSXSX +XAXMASXMAMAMAMMMXXXAAMMMMASMSMAMASAMMMXMASAXMSXASMAXXAMXMMMSMAAXMAMMASMXSAMSAMXMAMAMAAAMAMSSSSMMMXAMXSXMASASMXXSMMASXXSMAMMSMMASMMAAXXAMSAMX +MMMMXMXMMMSSXMXMMMSSMSAASAMMXMASXMAAAMAMMMMMXMMMMMAMMSAMXASMMMMMXMASAMAXSAMMMSAMXMSMMMMMAXAAAMAAMMMSMSASAMMMSSXXAMAMAAASAXXMXSXXMSSSMMSAMXMX +SXSXSSSMSAAMMSAMXAXMAMXMMMMXAXMMMSXMASXSXMASAMAAAMMSMAMASXMAAXAAXAAAMMMMSSMMMSASXAXAASASMMMSMSXSXSMAASXMXMXSAMXSMMMXMSMSMSASAMXXMAAAXXXMMXSM +SAAXMASAMMXSAMASASXMMSMMASMSXSASASASXXXAMXMMAMSMXMAAAXMMAASXMSSSSMSMXAXASXSAAMSMMSXSMSAXAAAXXSXMASAMXMMMAXMMMSMMMSXMXMAXMAMMASXMMMSMMMSAMAXA +MXMASAMXMAXMXSAMXXAMAAAMAMXAXSAMASAMXMSSSXXSSMXAMMSSXMMXMXAMXXAAXAAMSSSMSASMSSXXAMXMMSXSXMMSAMAMSMXMAXASMXSAMAAXAAASMMMMMMASMMXAXAAXMASAMXSS +XMXAMASXMXSAASXSXSAMSSSMSSMMMMAMMMXMMAAMAMXXMAMAMXMMMAXXXSMSMMMMMSMMAAMXMAMAXAXMASXMASMSAXAMAMAMAXAXXXMXMASASMSSMSXMAAAAAMMXASMSMXSASXSAMXAM +MAMXXAMXAAMMXMAMXMMMXAXXMAXXXSAMAAAMAMXSASXMMAMAMAASXSMSAMXAAXXXAXXMMSMAMMMSMMMSMMMMAMASAMMSMMMSMSSSSMAMMASAMAAAMXXSSMSSSSXSAMXXASXAXASXMMMA +SAMSSMMXMXMAAMAMAMXSMMMMSAMMMSASMSSSSXXMASAMSMSSMMMMAXAXMMSSSMMMMMMSAXMXSAAMAXAAXMSMASXSSMAAXAAAXMMAAAMXSASAMMMMMMMMAAMMMMMMXXMMMMSMMMMMXSAM +MASAAAAXMASXMXAXXSAMASAXMAXAMSAMXMAMXXMMMSAMXXMAMSMMAMMMMMAMAMXASAAMAXAMXMSSSMSMSAAXAMMXAMXSSMSXSAMSMMXMMASAMXSSMASMMMMAAMXAAXSSMAAXXMASASAX +XSMXSMMMMASAASXSMMAXAXSXMASXXXXMASAMXMXAAMAMXMASXSAMXXAASMSSSXSASMSMSMSMSAMXAAAAMMMMMMSSMMAMAMMMMMXMMXSSMMMMMMMASXXAAMXSMSMMSMAAMSMXMSXMASMM +XAAXMMXAMASMMMMAMXAMXSMXMAMXAAMSXSXSAAMMMSAMXSMMAMMMMSMMSAAXAASAMXMAMXXSXXMXMMMXMASXXAAAXXSSSMSAASAMSAXMASAMXAMAMXSSMSAMXAMAAMSMMAXAMXMMXMAS +XSAMXSSSSXMMMSSSMSMSMAAASMSSXSXAXMXSMSAAAMXSASMMAMXXXAXMMMMMMMMSMAMAMAMMMASXXSXXMASAMXSAMSAAXASMMXAMMMXSAMXSSSSXMAMXAMXMSMSSMMMMSMSXSAMSMMAM +AXXMXMAMAMXAAXXMAAAAMMMMSAAXAMAMSXAXAXMMMMAMMSASXSSMSXMAXAXAMXAAMXSAMAXASAMAXMASMASMMXMASXMMMMMMSSSMAAMXSMXMXMAMMXSMSMSMXXAXAMSAAASMSMMAAMAS +XSMSAMXMASMMSSMMSMSMSXSAMXMMXMAMMMMSMMSXSMMSAXMMMAMAMSSSSMSSMMSSSMMXSXSMMASMXSASMAMXMXMSMXXAASAMMAASMXSMMXAMAMMMSMMAMAXXMMMSMMMMMMMAMASMSSSS +SMASXSASXSXXAAMAAXAMXXMXAASXSSSSXAXAAAXAXAXMMMMAMAMSXAXMAXSAAAXMMMSMMXAAMXMAAMASMSXMAMXMAMSSXSASMSMMMASAMSXXASXAXAMAMSMMAAXAXXAMMSMSMAMXXMAS +XMMMXMMMMMMMMSMSSSMSMSXMAMXAXAMMMSMMSMMMMMMMMASAMAMAMMSSMMSXMSXSAMXAMMSSMAMSMMAMMAAASMSMAMXXASAMAAXAMAXAMASMXSASMSMMSAMAXSMMXSXSAAAXMAXXSMXS +MSAMXMAAXAAAXXXXAMMAMMAMSSMMMMMMAMAAMXSMAMXMSMSASMSMAXMXMAMAXMAMXMSAMMAMXSMAAMXXMMSMMAXSAMXMXMAMMMSAMSSSMAXMASAXXAMXSMMSMXASXSAMXSXMSMMMXMAS +AXAMMSXSSSSSMSAMXMMAXSXMASAAAAXMASMXXAXSSMXMAXMAMAAXMSXMMASMMMXMMAXXXMASMMMSMMMSMMMAMXMSXMAAAMXMMXMAMAAXMAMMMMAMMMMAMXXAASAMXMASAXXAXMASAMAS +SXSMAAAXMMAAAAXXAMSMXMXMMSMMMMSMASAAMMMMMMASXSMSMSMMAXAMSASXAMSMMSSMXSSMMXAAAAAAMXSAMXMXMSMSMSAXXASAMMXMAAXSAMAMASMSXSMMMMAMXSMMASMMMSASAMAS +MAXMMMXMASXMMMXMMXAXASAMXMXSSMAMXSXMASASMSASAMAMAMMMMMAMMMSXXMXXAMMXAMMAMMSSSMSMSASASAXAXAAMAMXMSMSXSAMSSMSAMSSSXSAMASXMAXAMXXXMSMMSAMAMXMAS +AAMAXAXSAMMXAXMAXSASMSASXAXXAMXXAMXMXSXSAMXSMMAMAMXXMASMMMSAMXMMXSAMSMMAMMMMMXXMMAXAMXMMSSXMAXMASAMXMAMAAXSMXAXXAMAMAMASMSMSSMMXMXXAMMSMAMAS +MSSSMSMMASXSASASXMXMXSAMMMAXMMSAMXXMASXMAMXMXMXSAMMAMXMAXXXXAAXMAMMMMMSMSXMAMMXMMXMMMMAAAXMSMMMMMAMXMMMSXMMXMMSMXMAMMMXMAAMAAAAAMSAMXAXSXMAS +MMXMAMASAMAAAAXMMMAMMMAXXMAASAMASXXSASXSMSXAXXMAXXSAMASMMSMMMSMMASAAXMAXMASMSMAMSMXMAMSMMSMASAAXXSMSXSMXAMXAAXXXXXSMMMAMMMMSSMMXSAAXMXXAMXAM +ASAMXMXMXMASMMXXAXAMAXASAMXXXAXAMXMMASAXAMXMXMXASMSASASAAAAXAXXSASMSSSSXMAMXAMASAASXMMMAMXXAMXMSAXAMXSAXXMAXSSMMMMXAAXAMSMXMAASMSXMMMXAXAMSS +XMAMMSMSXXXAMXXMXSSSXSASAMXSSSMAXXASAMXMAMAMASMXSASAMXSMMSSMAMASAMAMAAAMMSSSSSXMMSMAASXSMMMSSMMSMMAMXMAMSXSAAMAAAASXMMXAAXAXAXMAXMSSSMMXXMAS +MSSMAAAMMXSAXMXSXAAAASXSAMMMAMSSSSMXMMXSASXSASAAMXMSMXXXAAXMMMMMMMAMMMMMAMAAAMAMMMMSMMAAASAAAAASMSAMXMXMMAMMMMSXMMSAAASXSSMSMMMXMXAAAMXMXMAS +AAAMSMXMAASAMAAAMMMMMMASMSAMAMMXAAXSSSMSXSAMASMMSAXAXMASMMAAAAXAAXASMSXMASMMMMASAAAXXMSMMMMSSMMSASMXMASMMAMASXXMSMSMMMSAAAXAAAXMMMMSMMAASMAM +ASMMAMXMMMSSSMXSSXMXXMXMASXSMSXMXMMAASAMSMAMAMAMXXSMSXAAAXSSSSSSXSASAMASXSAAXSASMMMMAXASXXAXXMXMAMAASAAAMXMAMMSMAASXSMMMMMSSSMMMAAMAXMXXAMXM +AMXSAXXAMAMAXXAMXAMSXMAMXMAMXSAASMSMXMMMAXAMSMSMAMXMAMMSSMMMAMAAAMMMAMMMAXXMXMASMMSSMMASMMXSXXMMXMSMSMSMMSMAXAAXMSMASAMXMXXXMMASASXASXSMMMSA +AMASASMXMASMSAMXSSMAASXMSMXMAMMMMAAXXXXSMSSXMAAMSMAMASMAMAAMASMMSMMSSMXMXMSMSMXMAAAAAMAMAMAMMMSMAMXAXMMXASMSMSSSXXMXMAMAMMSAAMMMAXMAXAAXAAMX +SMAMAMMASXSXSAMXAMMSMMAAAAXMSSXXMSMMMMMSAAXAMXMMAAXMAMMASXMSASAAXAAMAMAMAMXAAAASMMXSMMASAMXSSXAMSSMMMMMMMSAAAAAAMMSAMXSAMASMMXSMAMXMAXMMMXSA +MMASAXSMMMMMXMXMASXMXSMMMMMSMAMXAXAAXXAMXMMSMAXSAXMMSMSASAMMXSMMSMMSXMAXASMSMSASASXAXSXSMSXMASMSAAAXXXAAXMAMMMSMMAAAXMAXMMXAAAXMMMXMAMXXSAXM +MMAMAXAMXAAMASXMASAMAMAAAAXAAAMMMSMMSMASMXMXSXMASMMXAAMASAMXAXXMAXMMMSSSMSAAMXXMAMXXMMASXSAMMMXMMMMMMSSSSSMSAMXAMAXSXSAXMXSMMSXASASXMASMMMSX +SMSSMSMMXSASXXAXAMXMASMSSMMMSSMXMAMAXXAMXAMASXMAMXXMMSMXMMSMSMMSMXSAXAAAXMXSSMSMMMSSSMAMASMMXSASXMSAMAAAAAASMSXMSMMXAMXMSAMXAMMXMASXMAXAAAAX +AAAAAXMAAXASASMMSSXSAXMAMXAXAMXASMSAMMSSSXMASMMSMAXAXXMXXSAAAAAAAAMXSMSMMMAXXMASAAXAAMMMAMAMASASAMAAMMSMSMMMAXXAAXAMAMAXXAXMMSSMMAMAMAXSMMSA +MASMMMMMXSAMMMAAXSAMXSMAMSXMASMMMXMASXMAMAMXSXXMASMSSXAAXSMSMSSSMSSXSXAMAMSSXSAMMSMMMMSMXSXMASAXAMXMMXAXXAAMAMMSMSMXAMSMMSMAMAMXMSSSMSMXAXXX +XXMASXMAMMMMXSMSMMXMAMMAXSMMMMAMSMMMMMMAMSSXXMASMXMXMMAMXMMXAAAXAXMAMSXSASAMAMXMSAMXSXXMAXAMXMXSXMASXSMMXXSMSSXXXSXMSXMAAXSMMASMAAAXAAXSAMMM +XASXMAMSXMXSAXAAAMSSMSSMMSMAASAMASMSMASAMXAXXMMMMASAMAXSAMXSMMMMMMMXMAMXXXMMSMSMSASXMMMSMSAMXMXMXAMXAAASMXMAMXAXASAMMAMMMMAXSXMAMMXMSMMMXAAX +MMAXMSMMASAMMMSMMMAAMAXMASXSMSASASMASMSAMXMMSXMASASMSMASXSXXAXXAMXMMASMSSSXAAXSAMXMXAAXAAAXSAMXMAMXXSMMMAAMXMMMMMMAMMAMMASXMXAXSSXSXMSAMASXS +AMMXXMASAMXSXAXMSMSSMMSMXSAXASAMMXXAMXMAXAXAAAMXMAMXAXXXAMXSAMSMSAXAXAAAAXMXSAMMMMSSSMMSXMAXAMXSMMAXXASMSMMXXXAAAMXMXAMXAMAMMMMXAAXAASMMAXMX +XAMXMMMMSMMMMAMAAAMMAAAXXMAMAMXMASMSSXMSMSSMSSMAMAMSMSMMAXMAMAXXSASXSMMMMMXXMAXSAMXAAXAMMSXSMSAAAMXMSAMAMAMSASXSMXAXXSSMASAMXXMXMXSMMMMMXSAM +SASAMAXMAXASMSMSMSXSMMSSXSAMAMSSMXAAAAXMAMMMAMXMMAMAAAMMXSMASXMASAAASXXSAMXXXMMSMSMSMMASAMAAAMXXMSMAMXMMMAMXAMXAXXSMMMAMAXAMSAMXXXXAAXXXAAXA +AAMXSMXASXMXAAAXXXAXXSXMASXSXMAAXMMMSMMMXMAMXXAXSASXSMSMAMXASAMASAMAMAXXMAMMSAMXXXMASMAMAMSMSMSMAMMXMMSXMXSMXMMMMXXASMMMMSMMSMSAMSSSMSMMMSMS +MSMXXASAMAXMXMSMSMSMSAMMAMAMMMSMMXMAMASAASMMMSMMMAXAMAXMAMAXMAMAMAXXMSMSSSSMAMMMAXSAXMASMMAMAAAMAMMXMAMAMAXXMAMXSXSAMMXXMAXAXAXMXAXXXXAAAAXX +XAAAMXAAXAMXXXXAAAAXMASMAMMXMXMASXSAMAMSMSAAAAMAMSMSMMMSSSSXXAMMSSMXMXAMAAAXSMSMMXMAXSXSXSXSMSMSSMSAMASAMSMSSSXAAMMAMXMAMAMXMSMSMSSMXXSMSXMM +SMMXASMSMSAMXMMMMSMMXAMMMMXXSAMXSAMXMXMXXSMMXXMAXAAXAXAXXAAMSMMMAAMXSMMMMSMMMAXASMMSMXAXAMMXMXMAMMXAXASXSAAAAMMXMSSSMSMXMSXXAMAXAXAASMMMMAXM +MXMSMMAAMMAMXMASXMASMSSMSAAAMMSAMAMXMASXMMASASMSSMMSXMXSMSMMAXAMSMMAMAAAMAAMXSSMMAAAMXMMMMAASXMASMSSMAXMMMMMAMXSAAAAAAAMXMAXSMMMXMMMMAAASMMA +SAMXAMSMXSAMMXAXASASMMAASMXXAXMASXMXSAMSAMMMAMAMAXASAMAMMAXMMXSXMAMASMMXSMXMAMAAXMMSSMMAAAMMXASXSAAXMAMAMAAXSMAMMMSMSMSAAMSMMAAXAMXXXSMMSXSS +SASMMMXAASXMAXMSMMASXMMMMXMMMMSAMAAXXMXAMMXMAMAMMMXSAMAMSMSASMMASXSASMAXSMSMSSSMMSAMAASXSMSXSMMXMMMSXMAXMMSAAMSXAXAAAAAMXXAASXMXASAXMXAMXMAM +SAMXSAMMMXSXSMMAXMXMASXXMAAAAAMASMMMASMSSSSMMSXMXSASAMXXXAXAMXMAMXMASMXMXAAAXAXAXMASMMMXMXSMAXSMMSXMAMSSMAXMXMAMXXMXMSMMMSSXMMSAMXMSAMXMAMAM +MAMAMASAXAMXMASMSXMXAMMAMXXMAMSMMXXMAMXAXXAAMMMAMMXSAMMAMMMSMMMAMMMMMAASMSMSMSMSMSMMMAXXXAXMMMXAAMASAMMXMAMXSXSASXXSXXAAMAMAXAXAMMXSMSSSXSAS +SAMXXAMXMAMAAMAAAASMSMSASMSMSMSMSXXMSSMMSMSMMAMMSSMMMMXMAAAAAAXASAAAMSMSAMAMAMAXXASAMXMSMXSXXXSMMSASASXMXMXAAAMAASAAAMSMMASMMMSMMMXMXAAAXSXS +XASXMSSMSSMMSMMXMMMAAAXASXAXXAMAMXXXAAAXXAMXMAMAAAXAAMASMMXSSMSXSMSXMAMMMMXMAMXSMMSXSAAXXAMMMXAMAMMSAMXSASMXMXMMMMXMSMMASXMXAMMMAXMAMMMMAMXM +SMMAXAAAAMAXXXAXSSMSMSMAMMMMMXMASMSMMSMSMSMSSSMMSSMSMSAMXSMMMAAXXXMMMASAAXMSXSASAXMASMSMMXSASAAMASMSASMMASXMXXXXAXAXAASAMXMMSMAXXMXXXAMMMSAS +AAXSMSSMSXSMXMXMXAAMAMMXMAXAAASMSAAAAAAXAAAAAMMMAMMAAMASAMAAMSMSMMSSSMMMXSAAAMAXMMAXXXMAMXSASXSMXMAMXSAMSMXMMMMSMSMSMMMAMASAXMSMSMMMSXSAAXAM +SSMMAMXAXAMXXAAMMMMMAMMXMASXMASXMXMXMMSMAMMMXMMMAXMMSMSMXSSMMAAAMAAAASAXMAMMMMXMSMMSASMSSMMMMMXMMMSMMSAMAAAXAAXAAAAAXXSAMASASAMAMXXMAAMMSMSM +AAXMSMMAMMMMSSMSASXSXSASXMMAMAMXMMMMSSMMSXSSSSMSSMMXXXMMXAXMSMSMSMMSMMMSAXXMXMAAMAXSAMAAXXAAAMSAXAAAASASMSMXXXSMSMSMSASMXXMAMMMMMMXAMSMAMAAS +MSSMXSSMSAMXAMMSMSAAXMAMMASXMASAMAAAXAAXXAXXAAAAMAMMMSAAXMSXMAXXXMAMASAXXXXMASMSSMMMAMMMSSSXMMSAMSXSMMAXXAXMSMXMAMAMMXMMMSMMMXAAAMXMSXXAMMMS +XAAAAXMASASMASAXXXMMSMSXSAMAMXXMMSMSSSMMMMMMSMMMSAAAAMXAXXXAMMMAXMAMMMMSASMSASAMAXXMXMXXXMASMMMMMXAMXXAMSMSAMXASMXSXMAAXAAAAXMSSSSMXAAXSSMXS +MMSMSSMAMXMXMMMSMMMXXAAAMXSAMMSMXAXAAAMAAAAXAXMMSXXMMMMAMSSMMMSMMMAXMAMMMAAAASASMMSSMMMMXSAAXSMAAXAMMMXXXAXMMXMMXSAMXMMXSSSMSMXAMMXSMSMAAMAX +MMMAMXMAXAAXSASAAASXMAMSMASASAAXXAMMXMMSSSMXMMSAMMSMSASAAAAXXAAXAMAXXASXXMSMMSMMMAMSAMXSAMXSMASMMSMXAMXMMAMAMXMAMMAMSSMXXXXXAMMAMAAXAMMXMMSS +SAMAMMXMSSSMXMXMXMSAAXAAMXSAMMSSMMMSAAXMAXAASXMASAAASASMSSMMMSSMSAAMSMMAMXXMASAAMSMSMXAMASAAAMMSAAASXXAMAAXASAMAMMSMAAXSMMSSMXSMMMXSASXSXAXM +MASXMAMMAMAMSMSSMMSMMMSXSAMXXSAMAAAXXSMSAMXMMASAMMMMMASMAXAAAAAAXMMMAAMMMSAMXSMMSAXSXMXSAMAMSXAXMXMAMMASXXSASMMXMAMMXXAMXAAAMMMXAXAMAMAAMSSS +MAMXSSMMMSAMXXAAAMXAAAMMXAXASMAMSMMSAXAMMSMASMMXSXMXMAMMMSSSSMMMMMXSMSMAASASXSAMXMASAMXMASAMXMMXSXMASMMMMAMAXXSXMASXSSSSMMSSMAMMSSXMSMSMXASA +SASXMXAAAMASMMSSMMSSMXSASAMXXMAMMAXMXMAMAAAXMXXAMXSAMXSAMXMAXAAXSSMSAAMMMSAMAMMSASXMMSAXAMXXXASAMXMAXAXXMXMSMXAASAMMAAAMXXXXMASAXXXXMAXSXMMM +AAXMASMXMMAMXAAAAAXMAMXMAMMXMXXSMAMMXSAMSSXSMSMAMAMAMXSXSSMMMSMMXAASXMMSXXXMAMAMMMASXMASXMSMSAMASMSMSMMSSXMAAMSMMASMMMMMMXMASASMMMMMMAMMXXAX +MSMMXMMXXMAXMSSXMMXMASXMMMSASAAMMMMMAMAXXMAXAAMAMMSAMMMXMASXAAXAMMMMAXXXSAMXXMMSXSAMXMAMAAAAAAMXMAAMAAAAMASXMMAMMMMAMMSAAXAMMMSXAAASMMMSMMMS +XMXMXAXMAMAMMMMXAMXSASXAAASAMMSMAASXSSSMAMSMSMSMSXSXSAMMXAMMMXMMAXAMAMSMMMSSXAAAXMAMXMASMMMSSSMMMSMSXMMASXMMMSMSAXMMMASAMASXMAMMMSASXMAAAAAX +MMAMSSMASMSXSAXSMXAMSSXMMMMAMAMXSXSAAAAMMMAAXAAAMXMXSASMXSSXSXAXSSMMSXMAXXAXXXMMXSAMXMAXXAAXAAMAXMXXMSMMMAXAXAASMMSAMAMAMSMAMMXMXMXMAMSSSMSS +MMMMAAMSXAAAMAMMMMMSXMXSMSAXMSSMXMXXMSMMASMSMSMSMXMASMMMAMAASXMXMAMAMAMMMMMSSMMMASASXSSSSMSMSMSXSXXMASAASMSSMMMMAAMAMXSSMAMAXXAXAMASXMAAAAMM +MSMMSSMMMMMSMMMAAMMAAMMMAMXSXXAMXMAXAXXSASAMMMAXMXMAXMAMAMMMMAMSSSMSSSMAAAXAAAAMXSAMAAXMXAAAAAXAMXMAASXMMAAMXSAMMMSMMMAASMSMSSMMASAMMMMXMMMS +MAAMMAXMAXAAAASMMSMSXMAMXMAMASXMAXAXXMASAMAMSMAMAAMMXSASXXMASMMAAAAXAASMMMMMSMMXAMAMMMMMMSMXMSMAMASMMMASMMMMAXAXXAAAAAMMXXMMAAASMMMSMASAMXAS +XSSMMSMSSSSSSMSAXMAMMSXSAMXMAXASMXMXXMAMXMAMAMASXMXMASAMXAXXSAMMXMXMMMMXAXSXMASMMSMMAAAAXASAMXMXSXSASXMMASMMSSSMMSXSMSXXMSMMMSMMAAAXXAXAMMAS +XXAAAXMXAXAAMASAMXXSAMASAMXMSMMAMASMSMASXSXXXSAXASXMASASAXSAMXMSXMMSSSMMSMMASAMAMAMMXSSMSASMMMSXMAXAMSXSAMXAAAAXAMAMXMAAAAAAMAXSMMMSMSMSMMSM +ASXMMXMMXMMMMAMMSMMXAXAMAMSMMAMXSXMAASMMMMAAMMMXAMAMASAMASAXXAMXAAAAXAAXXMSAMASASMXSAMAAMAMXMAMAMMMMMXXMASAMMSMSAMMMAXXMSSSMMMMSAASXMMAMXSAS +XXMASAMMMSMAMASAAAASMMXSXMAASXMAMAMSMMXAXMMMMAMXMSMMXMXMXMMSSSXSXMMSSSMMMAMASXSASAAMAMAMSAMAMASAAAAAAXXSAMAXAXXMASXSSMXMAMXMASASMMMAAMAMXSAM +XSXASAMXAASXSAMXSXMASXAXMXMXMXMAMXMAASMSXMAAXAMAMAXAAXAMXAMXAMXMXMXMMAASMXMXMAXAMMMXXMXXSASXSASMMSSMSMMMXSXMXMXMAMMMMAASAMASMMASMSSMMSAMXMAM +XXMASMMMSXSMMAXAMXMXAMXMAXSXMMSMXMXMMXAMSSSSSSSMSAXSASASASXMXMASXMAXSMMMAMXSMSMXMXXXSASXMMMAMAMMMMMMMAMXXMAMSASMAMMMMMMSAMASXMSMMAAAAXMXXSAM +MMMXXXMXMAMASAMXSXSXMXMSSXAAXMASAASXMMXMAXAXAMMXMMMMAMAMXXXMASXSASXXMAAXMMAMAAAASMSXMASMSSSMSMSMAAAAMAMXASAMMAMAMXSMSMMSXMXSMMMAMSMMMSSSMSAS +AAAXMSMAMXSAMXMXMASMMAAAXSMSMMASMMAAMSMMMSMMAMXXMASMXMAXXMASASXSMMSASXMMXMASMMSMSAAMMXMMXAAAAAAXSSMSMMMSXMAXMAMASMMAAMXSMMMMAASMMXXSMMAAASAX +MSXXAAMMMAMMSSXAMAMASXMMMXSAAMMMMMSMMAXAAAXASMXXSASAMSSXSSMMASXSMXAXXMASXSMSAMXMMXMASAXSXSMMMSMMXXAMXMXSXSXMMMSAXAMSMSAMAXASXMSASMMSAMSMMMMM +MAMMSMSMMXXXAXSXMASXMSMXSSMMSMAAXAAASMSMSSXAAXAAMSMAMAAAXASMXMAMMMMXXMASAMAXMAXXMAXSSMXMAMAXXAMXMMXMMSAMXAXSAMMAXSMMAMASMSMAAASXMAASXMMXSAMX +MASAMASMSSSMMXAXMASAAAMXMASAMXSMMSSMMXXMAXMSMMAMMASAMMSMSAMXAMAMASMAMXXMAMXMASMSMSMMXXASMSXMMAMSSMSAAMXMXMASASXMAMAMXMAMMAASXMMASMMMSMAASASX +SAMAMAMAAAAXXXMXMASMSMSASAMXMAMAMXMAMXMXXXMAMXMSMMAXXAMXMXMSMMASASMASXMSMMASXMXAAMSMSSMMASAASAMXAAAXXMXMXXXSAMASMMAMAMXSSXMMMASAMMSXMMMMSMMX +MMSSMASMMMMMSMXMMXSXMASASXSXMAMXXMXXXAAMSSSSMXAAMXMSSMXMSAMXSXMMMMMASXAAXXASAMMMMMASAAAMAXAXMASMMMMMASAMMSMMAMAXMAMSMSMAMSAAXXMASXSAMXMASAAA +MXAASXSASXSAXAXAXMXMMAMXSXAAMASMMSSSSXSXAAAAAMSMMMAAAMAMSASASMAXAXSMMMSMSMAMXXAAAMXMSSMMSSMMSMMAMMXMAMAXAAAMSMXSXAASAMMAMMXXSXXMMMSAMXMAMMAX +MMXXMMMAMAMAMXSMSAAAMXSAXMSXMASAAAAMMMMMMSMMMMAAAXMMMMAMMAMASXSMMMAAAAAAXMXMSMSSSSSMAXAXAAMAAXMAMMAMSSSMSXSXXXAAMXMSAMSSSSMMMMMAAAXMASMSXSAS +MSSXMAMAMXMAMMAASMMMXAMMSAMXMXSMMMSMAAXMAMAMXSSSMSSMASXSMAMXMAXAXAMMMSSSSMAMAAXXAAXMAMMMSSMXSXSASMXSAAAAMAMMAMXSASXXAMAAAAXAMAAXMSXMAMXAAMAA +AAAASMXMSXSMXAMAMAMXMXAAXASAMXSASAXXSXMSMMSXMAXAAAXMMMAMXMMMAXMSMXMXXAAAMXASMSMMMMMMSSSMMMXMAASXMASMMSMMMAMAAMMMXAASMMSMSMMSMSSXSXMMSSMMXMMM +SMMMMSAMXXAMXSXMSAMXASXMMAMAMASAMMSMMXAXAMAXXXXMMMSMMMAMASMAMMMMAASXXSMSMSXSAMXXASXMAAAMMAAMMMMAASXXAAXMSMMSMSAMXMMMSAAXXMAMXAMMXAXXAXMASAXX +XAXXAAMMSSMSAMAASMXSMMASMSMSAAMXMASAMMMSAMMMMSMMXAXAASASXMMAMXAMMMMAXMAMAMAXMAXMMSAMMSMMMXMXXAXXMAXMMSSMAAAMASMSMXXXMXMAMSAMXMSASMMMMSMAMMXS +SSMMSMXAXAAMAMMMMMASAMAMXMAXMMSMSMMAMAAXAAXAAAAMMMSMMSAMXMSSSMMSASMSMMAMAMSMMMSAXSAMAMXMASXSSSSSSMMSAAAMSSMMAMXSMMSSMMXAAMMSMMAMAMAAXAMAXMAM +MAAAXXMSSMMMAMAAAMXSAMXSAMXMAXSAMXSASMSSSMSASXSMXAAAXXAMAMAXXAMSASAAMSAMASXAAASAMSXMXSAMASAAAAXAAXAAMSMMXAAMMSASAAAAAASASXSAAMSSMASXSXSASMAS +SSMMSXMASMXSXSSSSSXSMMASMSXSSMMMMMSMSXXMMAMXMAMAMSSSMSSMXMASMSMMXMXMMAXSXSXMMXMSAMXXASXMMMMMMMMSMMSSXXMASXMMAMASMMSSMMSSXMSAMSAAXMAMXXMASXMM diff --git a/2024/4/puzzle1.py b/2024/4/puzzle1.py new file mode 100644 index 0000000..3735e62 --- /dev/null +++ b/2024/4/puzzle1.py @@ -0,0 +1,63 @@ + +def scan_line(line): + to_find = "XMAS" + + return line.count(to_find) + +def transpose(list_2d): + return list(zip(*list_2d)) + +def rotate(list_2d): + x_max, y_max = len(list_2d), len(list_2d[0]) + diagonal_list = [] + + # Diagonals starting from (0,0), for the first row. + for i in range(x_max): + substring = "" + x = i + y = 0 + #while x < x_max and y < y_max: + # TODO: Snapperniksvan -- Kees + while x < x_max and y < len(list_2d[x]): + print(x, x_max, y, y_max) + substring += list_2d[x][y] + x += 1 + y += 1 + diagonal_list.append(substring) + + # Diagonals starting from (0,1), for the first column. + for j in range(1, y_max): + substring = "" + x = 0 + y = j + while x < x_max and y < y_max: + substring += list_2d[x][y] + x += 1 + y += 1 + diagonal_list.append(substring) + + return diagonal_list + +if __name__ == "__main__": + result = 0 + + with open("input", "r") as fp: + full_string = fp.read().split("\n") + for line in full_string: + result += scan_line(line) + result += scan_line(line[::-1]) + for line in transpose(full_string): + result += scan_line(line) + result += scan_line(line[::-1]) + + diagonal_list = rotate(full_string) + for line in full_string: + result += scan_line(line) + result += scan_line(line[::-1]) + for line in transpose(full_string): + result += scan_line(line) + result += scan_line(line[::-1]) + + #transposed_file = + print(f"The sum of all horizontal XMAS's equals {result}.") +