Last active
December 5, 2024 06:46
-
-
Save kiritocode1/a6904c48e5980662cf9e8fa0b709409b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// --- 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? | |
const raw = `SMASMXMXSAMXSASXXAMXMAXXXMSXMASAMAXMASXSMXXMXMXAMXXXSAMXMXMSMXSXMASMSAAAXMASXMSMMSSXMMSSMXSMXXXMAXMMMXMXAMXMXAXMASXMMMXAXMAMSAMXAMMAAXXMASAM | |
AMASAASAMAMSAMMXMSXSAXSMSXMAMXSXMASAAAAAXSXMXMASXMMMSXSMMXMAXAAASMMAMXXMSAMXMASXAAXAXAXSAMXMSMSMSXSAMMSMXXAXMSMSMSASXXXXMXSASXSXSXSSXSAMXSAX | |
MSAMMMMASAMMAMXSXXAMMMXAAXMSAMXAMASMMMSMMSAMXXAMAAXASMMAASXMSMSMMSMXMAXMXMAMMAMMMMSMMSMXSAMXAAAAXASASAAAMSMXAMAAASAMAASXSAMAMXMAMAMAASAMAXMM | |
XMASMXSMMXXSAMXSMMMMXAMXMSAXAXSXMASXAXAMASAMXMSSSMMXSAMSMMAXXAMXAXMASMASASMMSAMAAMAXAMMAXMMSMSMXMASAMMMSMAAMSMSMXXAMMMMAAAMSASMSMAMXMXAMMSMS | |
MMAAAAMXMAMAAXAMMAAXSXSAMXMXMMMAMMXXXMXMASAMXMAMAAXXMMMAASXMMAMMSSSMMXASASAAAXSMXSAMSAMASAMXAMMXSXMAMXXXMMXMXAXXMSAMXAMXMXMXASAMXXMXMSXMXAAA | |
AMSSMMSAASASXMSXSXSMMMSAXXXASXSMMSXMMSSMASAMAMASMMMXSASMMMAXMMXAMXAAXMXSAMMMXMSXMAXXMAMASMMAMXMASASXMMMMAXAASMMAXMAMSASMMMMMMMXMASXXMAMXSMSM | |
SAAAAAXMSMMASAAXSAMMSAXMASXMAAAXAMAMXAAMXMAXXSASAAAASXSSSXXXXMMSSSSMMAXMAMXSAAMMXSSMMXMMMAXAMXMASAMMSAAMMXMXAASXMXMXSAXMMAMSSSXSAMXMMAXXAAAX | |
AAMMMMSMAAASMMMMSAMAAMXMAMAAMSMMMSAMMXSMSSSMAXAXXMMMSXMAXXSMSMAXMAAAASXSXMAXMSMAAMAMSMMAMMXMXXSAMXMAMMXSAXSXSMMMMMSAMXMASASAAAAMAXAMSASXSMSM | |
MMXXXXAXMMMMAMMMSAMXXXXMAMXMXXXAXXASXMMAMAXMSMSMXXXXXASMMMSAAXSSMSMMSMMMMMMSXXAMXSAMAASMSSXSAAMXMMMMSMXMASMAMXMAAXMASMMASXSMMMMSSSMMSXMAAAXX | |
XSXMASXXXXSMSMAASXMSMMMSMSXSSSMSSSMAAXMAMXMXMAXSSXSMSXMSAAMMMSXMAXXMAAAXMAMMAXMXMAASMXMAAAAAMSMAMAAAAMXMXMMAMASMSSSMMMMASASXXXXAXXMASAMMMMSA | |
XMAXAMAMSAMAXSMMMAAAAAAAXAAAAAXAXAMXXMSXMAAAMMMAMASAMXASMSMXMXAMAMAMASXSXSAXMXXMAMMMMSMMMMMMSMMMSSSSSMMSAMSMSXSAMMAMAMSASMSSSMMMSXMASMMXSAMM | |
SSSMASASMAMAMAMMMMMXXMXMMMXMXMMMSXMSXXMASXXXSAMAMMMSXMAMAAMASMMMAXXMMXMMAMXAMMMMSMMSAMXXXXAXMAXMAAMAAAAMXXAAAXMXMXAMMMMXMXMASASMMMMXSXXAMASX | |
AAASMMXSMSMXSAMXASXASMSSXSAXASAMAAXAAMSMXSAASXSAXXSMMSSMMMMMXAXSXSAMXAXMXMSAMAAAAAAMASAXASAMMMMMMSMSMMMSMSMSMMMSMMMXMMSSMSSMSXMASAMXMMMMXXMX | |
MXMMSAMXAXAASXSSMSAMXAAMASASXMASMSMMMAXSAMXMSXSAXXASAAMAMAASMMMAASAMSMMSAMXAXSMSSSMSMMMSMAMMASAASXXXXAAAAAXXXAAASASXSAAAXAAXXAXMAMMAMAAXSSSM | |
XASXSXSMMMMMMXXAXXMAMSMMAMMMMSMMXAXXXMXMMMMXXXMASXAMMXSMMSMSASXSMSAMXAAXAXSSMMMAXAAMMAXMXAXMXSSSSXAXSMXSXMXSMMXXXXMAMMSMMSSMXXXMAXSASMMMAAAX | |
MMSASASAXMXSMMMSXSAMMMAMXMMAXAXSXMMSSMAXXAMXMXXAAMMMMXAAAMXSAMAAXSASXMMSSMMMAXMXSMMMSXSXMASXAXXXXXMAXMAXASASXAMSMSMSMMXXXMXXAMMSAMSASMMSMSMM | |
SXMAMMMXMAAXAAMAAMMXAMAMSMXAMMXMAAAAAMAMSMSAMXMAMMAAASMMMSMXASAMXSXMASAAAAAMSMSAAXSAMMSXMAXMMMMSMMXASXMSAMAXMXXAAMAMXMMMMMMMXSAAAMMMMXXAAAXX | |
MXMAMMSSSMXMSMSMMMXMMSAMXMASMXAXSMMSSMMMAAXXMAMMXSMSMMAXSXASMMXXXMMSMMSSSMMSMAXMASMAMAXAMMSMMAAAAXMASAASAMSMAMSMXMAMAMASMXAMMMMMMMXMASXMSMMX | |
SASASXAAMMAAMAMMMMAAASMMSMAMAXMMMAMAMAXSMSMSSMSAAXAXASAMXAMXAAXXMAXSAAXXAAXSMSMXMXMMMSSMMMAMMSMSSMMMMMMMAAXMAMASASASASMSXMAXAXXXSSSMASAXXASX | |
SASASMMSMMMSMAMAASXSMXMASMAMSMMASAMAXXXMAXXAAXMASAMXAMMXMMMSXMXSXSASMMSMSSMMAAMXMASXAAAMAXXSAXMMXMXMAASXMMMXXSASMSXSASXMXMASXMMAMAMMASMMSAMS | |
MAMAMAAMAXSXXXMSMSAMXSMASMMXAAAAXASXSSMSASMMSMXMAMSMXXAXAXAXAMAMXMMMXAXAAAAMXMMMMAMMMMMSASMMMSAMMMAMXSXXAAAMXMMSASAMXMAXAXAAAXAAMAMMASAXMMMA | |
MAMAMMMSAMMAMXMMAMMMMAMASASMXMMSMMMMMXAMASXMAMAMXAXXSXMMSMMSSMASXMMXMASMMSMMMXXAAMSAMAMMASAAASAMASAMMXXSSMMXAAMMMMXMASXMXSXASXSXSASMASMMAAAM | |
SAMAXAAXXAMAMAAMAMSAMXSXMAMAXSAMASXAAMXMAMASASMSMMAXMASAAXMAXSAMAMSAAMSMMXAXAAXSSMSMXAMMAXMMMSXSMSAASAAMXMASXSMASXMMXASMASMMAAAASMAMXMASXMXX | |
SAMXSMSMXMMASMSSMMSASMXAMSMSMMASAMXMSMSMSSMMASAXAMAMXASMSXMXMMMSSMSXSAMAMSMMMSMMAAXASMSSMAXAAMMMMMMMSAMSAMXSAAMAMAMXMASXAMASMSMMMSAMXSASMSMS | |
SAMAXAAXMMSMMXAXMASAMMSXMAAMAMXMXMMSAMXAAMXMXMMSXMSSMMSXMASXMAXAMXMMMMSAMAXASMASMMXXXAAAMMXMMSAAMAMMMAXMAMXXXMMMXAMXMASMAMMMAAXAXMXSMXAMASAM | |
SAMXSMMSAMASXMASMMSXSXXAXMSMXXMXXAXSASMMMSAMASXMMXXAAASAAXXAXSMMMAAXAAMASXSSMSAMXSMSMMSMAAMXMSMSSMSAMXMSSMSSMMXSMMSXMMSXSSXMSMSMMMSSXMSMAMAM | |
XMMXSAMXXSAXMAXMXXMASMSMMXXMMMXMSXAXXMXMASASASASASMSMMSMMMMSMMAXSSXMASXXMASAMMSSXMAXAAAXMMSAAMAXAXSXMAMXAAAMAAAXASXXSMMAMSAMMAXXAXAXXXAMMMAM | |
SXSASXMMXMASXSSMSMMAMAXMAXSAAMSXSMSMSSXMXSAMASAMSAXXSAMXAAAMASXMMMASAMXAXMMXMAXMAMMMMMMXSASMSMSMAMMXSAMSMMMSSMSMMMAXXAMMMMMMMMMSXMASMMMMMSMM | |
AAMXSAMXMASAAAAAAXMSXSXMASXMASAAXAAAXMASAMXMMMMMMMSMMSSSSSMSAMMAAXMMMMSMMXMAMSSSMMSSSSXAMASXAXAASXMASAXXXAXMMAXXXAMMSXMAAXMAXSAAXSAMAAXAAAAA | |
MXMXSMMASXXMMSMMSSXXAMXXSXXXSAMXMSMSMSSMMSASMMSAMXSAAAMAMAXMASMSMMSAAMAAXMXAMAAMXAAXAXMXSXMXMSMSMAMMSMMMMMMSMSMXSASMXMSMSMSASMMSMMASXMSMSMSM | |
XMXMXXMMSAXXMXAAXXAMAMMXMAXMASXAXMMXAMAAMSMSAAMASAXMMSMAMMMMMMAXMASMMSSSMSSSSMMMMMSSMXAAMMMAXXXAXMMAXMASMMMAAAAASAMXAXXMAAMXMXXXASAMMMXAMXMA | |
MXAAMMSAMXMSSXMMSMXMAMAMMMMXMAMXMXAMAMXMMXASXMMMMMXMMMMXSXAAXMMMSAMAMXMAMAAMSAMXAMMAXAMSMAXMMMSXSXMASMMMAASMSMMMMAMSSXMMSSMSMSXSMMMSAXMAMASM | |
MSSMSAAAXXXAAXSAMXSMSXSAASXMXSSSMMSSXMASXMXMMSXSASXSAAXSMMSXSAXAMAMMMXMAMMXMSXMSSSXXMMXAMSMMAASAAXSASAAMSMMAXXAAMXMXMASAMXAXXAMSAMXSXXMAMMMM | |
AAAAMAMSMXMMMMXAMXMAAAASMSAMSXAASMAMASASAMXSAXAMMSASMSMAAAAASAMXXAMAAMXSSXSMXSMAMMMSMSSSMXMXAXMSMAMASMMXAAMXMSSMSAMMSAMASMMMMMMSAMAMSXSAMXAX | |
MMSMXSMMXMXSAMXAMSMMMSMMXMAMXMXMMMXXAMAXASASMMAMMMXMAMXXMMSXXASMSMSMMSAAXAXAAXMAMAMAAMAMAXXXXXMAXSMAMASMSMMXXMASMXMAMMSSMXASXXAXAMSSSXMASMXS | |
XXXMAMXXXXAAAMXAXXAMAXAXXSMMMSAMXMMMSSMSMMASXMMSAMAMMSXMAMXMSMMAAAXAAMMMMMMMMMMMSASMSMAMMMMXSASMSMMXSAMMXAAMSSXMMMSAMXMAMMMXXMASXMXAMASMXMAM | |
ASAMXSXXMMMSAMSSSSXMASAMMAAAAMASAMAAMAMAAMAMAXAXASXSAAASXMAXAAMSMMMMMMXSASAXXAAAMXMMAMASXAAASAMXSAAAMAMAXMMMAAASXAXASASAMASMMMMAMSMMMAAAAMAM | |
MMASAMXMMSAXMMSAAMAMASASXAMMXSAMAXMXSASMSMMSMMSSMMAMMSXMASXSMSXAMAAMXSMMASXSSMSMSASMXSAMXMMXMXMAMMMXSAMSSMXAMSXMASMXMASASASASXAAXXAMMMXSMSAX | |
XSXMASMSAMXSASMXMMXMXSAMASMSXMASMMSASMSAMAXAXXXAAMAMXMXMASAMXMXMSSMSAAAMMMMMAAAASAMXAMASMXMMXSMSSXMXMAMXAXMSXMASAXSAMAMMMMSAMXSSSSXMAMMMAXXX | |
MMXAXXXMASAMXAXMASMXAMAMXMASXMASAMMAMAMAMXSASMSMMSMSAMASAMMMASMMAMAMXSMMAAAMMMMMMAMXMSAMMASXAXAXXMSASAMMMMAAASMMMASXMMMSAXXXMAMMAAMSASMMMMSA | |
XMASXMSSMMMSSXSASAMMMSAMMMAMXMAXXMXMMSMSMXMAMAXXAAXMASMMMSMSASASASASAMASXXMSSMXSSXMAMMXXSASMXMMMMMSASASASMSMXMXXMASAMSASMSMXMXSMMMMMASXAAAAM | |
AMAMAXMASMXAAASMMMAAXMASAMAMXSSMSSSXXXAASAMAMXMMSSXMAMAAAAAMAXMSASMSASXMMXSAMXAXMASXSAMMMASASAMAAMMAMASASAXXMMXXMASMMMASAAAAXXMXMASAMXMXMAXX | |
XMASAMSMMSMMMXMASXSSMMMSXMASAAAAAAMMMSSMSMSSSMMAMXAXSXSMSSSMSSXMXMASAMMMXMMASMMXSAMAMMSXMXMMXAXSMSMXMMMMMXMAMAMMAMXXAMXMXMSASXSASMXMSSXMXSXM | |
XMASAMXXAXXXMASMMAMAMSAMMSMMMSMMMSXSAAAXXAAXAMMASMSMMAMMAAAAAMXMXMXMMMSMAASXMASXMMSXXAAAAAMXSSMXAMMMXXSXSASXMAXMAMXSXSXSAMXAAASAXXAMAAASAMAS | |
XMASMMXMASXSXXXXMXMAMMASAAAAAAXXXXAMMSSMMMMSSMSXXXAAMXMXMSMMMSAMXSAAAAAMAMXAXSMAAAMAMXSXSMSAAMAMAMSMSASXSMSAMASMASXAMMMMAMMMMMMSMXMMMSMMASAM | |
SMASMSMSMMAAMSSMMAMAXSSMMSSMMXMXAMXMXMAMXAMXAASAMSSSMSMSXMMSAMXSASMSMSSSSSSSMMSSMMMSAMXAXAMMSMXMAMAAMXMAMMSAMASMAMXMASASMMSASXAAXASAMAXMXMMS | |
XMASMXAAXMMMMAAASMSMMMAAAMAXXASMSAASMXASMSSSMMMAMXAMAAAAASAMMSMMASAMXMAXMAAXMXAXXMAMXMMMMMMMAMAMXXMMMAMAMASAMXMMAMAMXMAXXAMASMSSSXSASASMXMAS | |
SMMXMMMMXXXAMMMMMXAMASMMMSAMMAMAASASAMASAXMAMAXAMMMMSMMMMMAMXAAMXMAMAMXSMMMMSMMMSMMSASAMASMSASASXMSASASASMSAMSMSMSMSMMSMSSMAMAAAMXSAMASAXMAS | |
SASMMAAXXMMSSSXSXSXSASASAMAXMAMXMMXXMXMMMMXXSXSSMSXMASXMXXMMMSSSMSSXMSAMXSMAAAAASAASASMSASXSASXSAMSAMAXASXSMMXAAAAAAXXAAAAMSMMMSAMMSMAMMMMAS | |
SAMXSMSMMAXAAMAMAMXMASAMXMAXMAMSXSMMSMXAMXMASAAMASASASXMSMASXAMAAXMASMASAMSSMSMMMSMMMMXMASAXAXASAMMMMSMMMASAMXMMXMXAMSMMMSAMXMAXMXAXMXSXXXAX | |
MAMMMMMAMSMMSMXMAMSMMMMMSSMMSAMSAXAAAAMMMXAAMMMMAMAMXMXAAXAXMXSMMMMXMAXMXMAXAXMAMASXXXXMAMMMXMMMAMXAAXAMMXMSMAMSASASAMASAMAXXAMXSMMXSAMXAMXM | |
MAMASASAMMAXAAASAMAXXAMAMAMAMXSMSMMSSSSMMSSSMAXMMSAXAAMSMSMXAMXXAAXSMSSSMSASXMAXSASXMXMAMASMAAXSSMMMXSSMXMMAMMSMAMAMXSAMASASXXMAXAMAMASAXXSA | |
XAXXSASXMXSSMSMSASMSSMMMSAMMSMMAXXMAMMAAAAXAXSMSASASXXAAAAMASXMSMSMSAAAAAMAMXSMAMAMASMMMSMASXSAXAAXSXAAXXXMAMMAMAMSMAMASAMAXMAMMSSMXSAMXSXSS | |
SSXMMXMAMAXXMAMXAMAAXXAAXMXMAMMAMXMXSXSMMSSMMMAMXMAXASMMSMSAMAMXAMXMMMMMMMAMMAMXMAMMMAAAAMMXMMMSMSMSMMMMMMSSSSXXAXXMAMAMAMAMMAMXAAMMMASXMAMA | |
AAASXSMXMSSMSSSMSMSMSSMSMSASAXMXSMSMSAXXXMMXAMMMASMMAMSMAMMXSMMMSMASXSXAXXASXXXXSASXSSMSSSXAXAAXXXAXXMAAXXAMXAMSSSXSXSSSXMAMMAXMXSMAMMMXMAMM | |
MSMMAAXSXMAAAAAXAAXAXXAAAXAXXMMMMAAAMAMSMMMSXSXSAAAMXAXXASAMXAAAAAMAAMMSSSMMMXAMMAAAMMMXAAMMSMMSSMMMXXXSSMSSMXMAXMMMMMXAASASXSMSXMMSMASMSSSS | |
MAAMMMMMASMMMSAMMSMMMMMMSMAMSASXSSMMMAMAXAAMASMMSSXMMMMSXSXMXSMSSMMMMMMAMAASAMXXAMMXMAMSXMXXAXAAXAXMMSAAXAMXMMMSSMAMAMSSMMXSAMASAMAASMMAAAAM | |
SMXXAXXSAMMSAXMAXAAMASXAMMAASASAMASXSXMSSXXXAMMAMXMXAMMAMXASAMXAAASASAMMXSMMMAXAXSSXSMMMAXASXSMSSSMAAMMMMSMAXXMMAMXXAMAAASASAMAMAMSMSXMMMMXM | |
MXMSSSXMASAMAXXSSSSMAXMASXXXMAMXMAXMASAAMMSMSSSMXSASXSXSXSAMXSMXMMSASASXMAXXXSXSXMMMMMASMMASAXXXAXMMMSAXAXSXMMXSAMXXSXMSXMASAMXSAMXXSAMXSXMS | |
XAAMAMASAMMSXMSXMAMMSSXSAMXMMAMMMSSXASMMMAXAAAAAASMSXSAMASXMAXMAMXMAMAMMAMMMMMMXXMAAASASASAMMAMMXMXMMSXMAMAXAAAMXXMAMMXMXXASAMAXAMXSSXMAMASA | |
SMMSAMMMMSXXAXXAMAMMAMMMSMSASXMXAMSMXSAASMMMMSMMMSAXXMAMAMAMSSSXSAMXMSMMAXAXAAAXAAXXXSASMMASXAXSMSAAXMAXSAMXXSXSAMSAMASXSMAMMMAMSMMMSXMMSMMM | |
XXAXMXMAMMMSMMSMMXXMAMAXAMAXMMSMMSMSMMXMMAAAAXXAXMMMASAMASXMXAAAAMMSMMASASAXSMSSMMSMAMXMASMMMMSMASXSMSXMAMXMAMAMAXMASXMASMSMSMSMXASAMXXMAAXX | |
XMMSMASMMAMAAAXMXSMSSSMSXSMSMAAMXAAAXSMMSSMMSSSMXAXMAXASXSASMXMAMXAAASAMASMMXMMAAAAMXMASAMAAXXAMXMMXXSMMAMAMAMAMMMMAMAMAMMAAAAAAXXMAMASXSMMM | |
MAMAMMXAXSMSXMXSAAAXXAAMXMXMMSXMMMXMSAAAXAAXAXMASASMMSAMASAMXMSAXXSMMMXMAMMAMSSSMSSSXMAMMSMMXMAMAAXMASAXMSXXXSXSXMXSSMMSSSMSMSMSMXSAMXXAAXAA | |
AASASAMSMXAXXMAMXMMMSMMMXSAMMXAAXMAXMXMMSMMMMSMMAAMAXMAMMMMMAASXSXMMAAXMXMMMSAAXAXXMAMXSMXMAASXMSSMSXSAMMMMAMXASAMAMAMXAAAAMAAAXAMXXMXMSMSXS | |
SASASMAAAMMMMMASMSSMXAAXAXAMASMMMSMSAMSMSXMAXAMXMMMXAXAMXASXMMXXMASAMXASAXXXMMSMMMSMMMXSXAMMMSAAAAXAAMMXAAXSSMXSAMXSAMMMSMMMXMMSMXMASMAMAMXX | |
XXMAMXSMMMXMXAMSXAAASMMSMSSMXSMSMXSAMXAAXASXSMSAMXMASMMSSXSXSAXXMAMXMXMMAMSAXAAAMMSAMSASMXMMXSMMMMAMXMMSMSMASAASAMXMAMXXMXAXXXMAAASAMMAMAXAM | |
SXSAMXXMXSASASMMMSMMXAXAXAAMXSAAXSAMSSMSMMMMAMSASXSXMAAAMAMASXXMMSSMMSXSAMXMMSXSAASMMAAMAXMXAMXXSXSXSXAXAMMAMXAXMSXSMXSAMSMSXXXMSMMASMXSSMXS | |
AAMAMSXMASASMMAAAAMXMSASMSXMAMSMSXXXAMAMASAMAMSAMXMMSMMMXAMMMMMXAAAAASAMSSXMMMAXMAMXXMMMSMSAXMASMAMASMSMXMMXSMXMAMAMAASAMXAAAMSAMXMAMXXXMMMM | |
MSMSMSAMMMMMXSXMSASXMMAXAXXMAXAXAMXMMSAMMMAXXMMSMMSAXXXXSMSMASMAMSXMMMAMASASAMAMXMMSMSXXAAASMXMAMMMAMAMXMXMAXAAAMMSMMMSAMXXMMMAASMSXSXSAXAAA | |
XAAXAXXMXAXSAMXAMXMMAMAMAMMSMSMMAAMMXMXSXSSMXMAXXAMMSXMAXSAMXSASMXXMASMMASMMAXMAXMAAAMSSMXMAMXSSMMMMMMMASAMXXSSSMAAAMAMMSSXMASXSMAAAMAAMSSSM | |
SXSMXSAXSMMMASMXASAXAMAMXMAAMXXXAXAAXMSXMAXAAMMMMSSXSAAMXSMSMXAXAMXSASMMXSXXXMMASMSMXSASXXSXSASAAMXMAXSASXMAMXAMMMSMMAMSAMMSASMAXMMAMAMMAAMX | |
XAXASAXAMXAMAMXMSXMSXMXSSMSSSXXMASXXSXSAAAMMMSAAAAXMSASXMMXSAMMMSMMXXXXSMMASMSMAMAAAXMMMMXAAMXSSMMSMMMMASMXXSMASXXAXSXSMAMAMAMMAMXXMAXSMMSMA | |
MSMMMMXMSSXSAXXMMAMAMSAMXAAMAMXAAXMAMAXMMSXSASMMMMSAMAXMAMAXXSMAXSAMXMMSAMXMAAMAXXMSMSXMXSMXMAMAMAMASXMXMAXMXXXMASXMXMAXMMSMSXMMSXMXMMXAAMXM | |
AXMMSXMMXAMSAMXAXAMAMSAMMMMXAXMSSMMAMXMXXXMMASAMXAAMMAMAXMXSAMMSSMSSXMASAMXXSMMMSMAMXAAXAXXXSXSAMXXAMAXXMSSMAMMMMMMMXXXXMXXAMMXMSXMAXAXMMSXX | |
SXMASAAMMSMMASXSSXMXXXAMAAMMSSMAXAMMSMXMXMAMAMXSAMSSMMSSMAMMXMAXAAXMXMASXMXMMXXAAMMMSXMMXSAXMAMXMXMSXSXXMAAMAMAAXAASXSMXSAMAMSMSMMSSSSXSAMMM | |
MAMXSMSAAMMSMXAAAXSXMMSMSMSAMAMMXSMAAAAMASXMASAMAMMAAAAAXMAXAMXSMMMXXAMXMMXASAMMSSXAAAXAMXMMMAMAXAMXAMMMMSSSSSSXSMMSAAXAMAMAMAXXAAAMMXXMASAS | |
SXMASAXMXSAAMMMMMXAXMAXMMAMMSXMAAMMSMSXSMSAMSMXSAMMXMMSMMXMSMSAMXSMASXSMASASXASAAMMMMSMAMAMXXSSMSSSMXMAXMAMMMMXAAMAMXMMSSMSMSXSSMMXSASXSAMMA | |
AMMAMXXAAMMMMSAAXXMMSASASAXXMXMMMSAXXMASXSXMAAASMSXSXMAMSMMAXMAXMAMAXMAXAMSXSAMMSMASAMMAMAXMSMAMAAAXMMSMMAXAAAMMMMXSAXAMAAAASMMAMAAMASAMMSXM | |
MXMXSXMMMMMMXSMSSMXAMMSASXMSMXSAMAMMAMAMXSASXSMMAXAAAXAMMASXSSSMSMMASMSMMSMXMXMXXXASXSSMSSSMSSSMMXMMXMAAMSMSMSSXXSASMMMSMMMMMASMMMMMAMXMAXXX | |
XMAAMAXAXAAMMXAXAXMXSASMMMAXMASASMXMXMAXMXXMAAXXXMMXAMSMSXMMMAXMAXMXSAMXMAMXMASMSMXSAMXMAAAAXAXXMASXSSXXAMXAAXMASMMMXAAAXAMSSMMXXMASAMXMMSXM | |
MMSAMSMSSSXSAXSSSMSMMMMAAXXMMMSXMXXMAXSSSMSMMMMMSAXMSAMAMMASMAMXMMSAMXMASASMSMSAAXAMXSAMASMMMMMMMMXAAAASXMSMSMMSAMXXSMSSSMSAAXXMXXAAAXXAXMXX | |
AAXXAMAMAMSMMSMAAASXAAMXXXXMAMXMXAXSMMMAAAXMAMAAASXSMAMXMSAMMASASASASXSXMAXXAAMMMMMMASAMAXAXMXAAAMMMMMAAMXXMAMXAXXMAAAXAAMMMMASMSMSSMMSAAMMA | |
XMMXXMAMMMASXSMSMMMXSMSMAMSXMMXMMSXSAAXMMMMSASMMSMMXMMMXXMAXSASASXSAMXAAMASMMSMMMMXMASAMSSMMSXMMMMAXXXXMAMSSMSSMMASAMXMMMMSXMASAAAXAMASXMAAM | |
XXSSSXSMXAMAXXAXXAMMXAAMAMMASMMSXMAXSMMSSXASXSASAMXAMAMMMMAXMMSXSMMMMMMXMASXAAXAAAXMXSAMAAAAAASASMSMSSSXSMAAAAAXMXMSSMMMAAAAXMMXMXSAMASASXSS | |
XMAAMAMASXXMSMSMSSXAMMMMXXXAMAAXMMXMAXSAXMMXXXMMASMXSAXASMSSSMXAXAXAAASAMXSMSMSXMSAXMXMMSSMMSXMAAAAASAMAAMSMMSMSAMSAXAXSMSAMXAAXMAMXMXSAMMXM | |
XMASMAMASMMXAAAXAXMMMSSMSXMMXMSMSASMMMMMMXMSXMASXXAMAMXMSAAAMMMMMXSMSMSASXSXMASAAXXMASAMAMXXXXSSMSMMMAMXMAXAXMAMAMMMSMMXMXMAMMSSMASAMXMAMSAS | |
XSAMXXMXMASMMSMMXMMXAAAXAXSXSAMAMASMAAXXMASAMXMMMMMMAMMSMMMMMAAXAXMXXXSMMMSAMAMMMMSAMAMXXXMXMAMAAXMMSSMAXXSXMMAMAMAXSXSMMASAAAAAMASASXSXMMAM | |
XMSSSSMMSSMSMAXXAASAMSSMXSAAMAMXMXMASXSXMXSMMAXAAAMMMSXAAXMASMSSSMSASXSAMASAMSSXXXMSASXMSSMMMSMMSMSAAASMSXMMXSXMAMSXXAAASXSXSMXSMXSXXASXMMSM | |
XAAXXMAXMMAASMSSMSAMXMAXXMMXMXMSMXSAXMAXSMMXSASMMMXAMXXSMMMAMXAAAXMASASAMAXMMXMAMXMXXXAMAAAMAAAXAMMMXXAMXAAMMMASMXAMMMMXMAMXXMMMMXSMSXMMSAMS | |
MMMMXSMMAMSMMMAAXXMAMSMMXMXMXMXXAMAAXMAMXAMAXXMASMSMMAAXXSMSSMMMMXSMMAMAMAMSAMXAMAMMXMAMSXMMMXSAMXAXXSMXMMMMAMMMSAAAXAXAMAMAXAAAAXXAMXMXMASM | |
XAAAASXMXMASXMMMXSXMXAASMSAAMAMMXMMXMMMSMSMMSXMAMMASMAXSAMAXMASAMXAXXAMAMXMAAMMSMXMAMSMMXXXXAAAMXSXSXMXSMMMSXSAAMSMXXMMMMAMXSSMSSMMAMAMAMMMA | |
SMMSAMXMXSAMXMAMAASXMSSMASASMSXSASXMMAMAAXXMAAMSMSAMXMMMMMAMSAMASMMSSSSSSMMXMMAXMSMXXAAXMASMMSSMASMMASASAXMAXSMSXMMSMSASMMSMXMAAAXXSSXSASAXA | |
MMAXXMXXAMMSXSAMMSMXMXMMMMAXAXXSASMSSXSMSMXMMSMMAMMSXXAXAXXMXASAXXXXAXAAAMSAXMASASAMSSMMAXXAAXXMXSAXAMXSXMASMSAMXAAAAMASAMSAMMMMSXSMAXXASASX | |
SMSSSSSMASAAMSASMAMMSAMMSMMMXMAMAMAXAMXMAXSAAAAMXMMAMXMSMSMMSMMMSMMMSMMMSAAASMXSMMAMAAXMAXMMMSXSASXMASXSASMAAXAXSMMSSMAMXASMSASXMMAMSAMXXAXM | |
MAMAAAAXAMMMMMMMMASXMASASAMXXMAMMMXMSAAMAMXMSMSSSXMASAAAXXMXMXASAXAAXAXAMXMAXXMXXSAMXSXMAMXAMSAMASXXXXASAMXSXSMMMXMXMMXMMMMAMAMASMXMAXSSMSMA | |
MAMMMMMSMMASXSMASXSASAMMSXMAXXAXAXSMMSSSSSMMXMAAXAMASMSMSASAMSXSASXMSMMMXAMMMSSMMXAXXMAMAMXAMMAMXMMMSMMMMMMAMMXAXMAAMXXXAXMSMSMAMASXMAAAAAMM | |
SASAAAAAAMAXXAMAMMSAMXSAXASXSMSSMSAAMAMAMXAASMXMSSMAMAAASASMXMAMMMXXXXASXXMAAXAAMSMSSMXMAXSMMSMMMSAAAASXAAAMAXSXSASXSAMMMSAAAAMMMASAMSMMXMSM | |
SXMXSSSSSMMSSMMSMAMAMAMMSMMAMAAAXSMMMXXMAMMMMXAXAAMXSSMMMAMXXMXMAAAXXMASAMSMSSSSMAMAMMSMXMAMXXAAAMMMMMMASMSXSXMASAMAMASMASMMSMSSMASXMMXXAAAM | |
MSSXXMMXMXAAXAAAMSMMMMSAAXMAMMMSMXAXXMAXMASMSSMMSSMAAXMXMAMXMSMSMSSSMAAXMXAAAAAAXAMMXAAAMSMMMSSMSSSMSASXMAXMMAAAMAMXMAAAAMXMXMAAMAMAMXASXSMA | |
SAMMAMXAAMMSSMSXMAMASXMXSSSMSAAAXXMXMMSXMAMAAAAAAAXAMXXXSASAAAXAAAAAXSSSSSSSMMMMSMSXMSSXXAMXMXXAXAMXAXAAMXMSSXMXSMMMMSSMMSXSAMMXMSSSMMAMXAXS | |
MASMXMMMXAMAMAAMSMSASXMXMAAASMSXXAXXMAXMMAMMMSXMXSMSMMMMSAMMXMMMXMMMMMMAMAMAMXXAAAMXAXAMAMXXASMMMAMASXMSXMXAMMMAXXXAAMAMXXASXSXXAMAMSXAMSMMM | |
SAMXASMSAMMXMXMXAAMXSAMMMSMMMXMAXSMSMASASASAAXAMAXAMXAAXMSMXASMSMSAMXXMMMAMASAMMSXMSAMXMMXMXMXAASXMAMAXAAXMXSAMSMAMMXSSMSMMSMXMAMMAMASAMAXAM | |
MMMXMMAAAXSMMAXMMSMMSAMSXMASXSXMMAAMMASMXASMXSXMAMAXSMXMAAXMMMAAASASMMXSSMSASXMAMXMXMAAMMAMAXMXMSXMASXMMSMMASXSXAMXSAMAAXXXMAASXMSASMXMAXMMS | |
SASXAMXMSMSASASXXMMAMSASASMMASAMSMMMMASXMXMMXSMMXSMMMMXMSMSMMSSMMMAMAAAXSAMXMMMASAXASMSXSASASMSXMMSAMAMAMAMASMMMSXAAAXMMMXXMMXSAXSASXMMAXSXM | |
SASMSMMXXAXMAAXMASXSXMXSAMXMXMAMAMAAMAMMXMASAMAAMAXSASMAXAAXAAAXXMSSSMMSMXMASXMMSMXMSAXASMSXSAAAMAMASXMASAMAMAAXMMSSMMMAXXMSMXSXMMMMAXMMMSAA | |
MAMAMASMMSMAMAMAXSXMXSAMXMAMSSMMSSSSMASAMSMMASMXSAMSASMMMSMMMSSMXMAAASMXMAMAMXAASXSXMAMAMASAMXMXMASXMMMASXMMSSMMSAXAASXSMMAMXMMXMAMXSMMMASXM | |
MAMSMMXMAAXAAAXAMXAMASMMAXAAXAXAAXAAMAXMXAXSXMXAMXMMXMAMMXAAXAMXAMMMMMSAMXSAMSAMXMAXAMXXMXMASAMMSXXAMMMMSASAAAXAMSMSMMAMAMSXMAMAMASXXAXMASAM | |
SXSAMSAMXMXMSXMAMMMMAMMSXSMMMMMMMSMMMSSMSMMAMXMMMMXXSAMXAXSXSASMSSSMXMMXMMMAXMMSMXSXMMMMMXSASMSAMMSMMAAXSXMMSXMMSAMXXMXMMMMASXSXSASAXMMMASAM | |
MMSAMSASMMSAAMXSAAMMSXMAMXMMSSMSMSXXAAAAMXSXMASAASXMMSSMMMXXSAMAXAMXAMSMSASMSMAMXAXAMXSASXMXSAMMSAAXSSSMMAMAMXSXSXSSMMMSMAMXMMAMMMMMMSAMXSAM | |
MASMMSMMAAMXMSAAMMSAMXSXXAXAAAMAAXAMXSMMMASASXSSSSXMAASASXMASAMXMAMMASAAAXAAAMASMMSSMXSXSAAAMAMXMMSXXAMASAMXAAMMMMMXAAAAMMSSSMMMAXAXMSAXAMAM | |
MMSXXXAMMMMMAMXSMMMMSAMXSSMMSSSMSMMMMMXMMMSAMXMMXMAMMSSMXAMMMXSXMASXMSMSMAMSMSASAMAXSXXXSAMXMAMXMAMXAMMASXSXMMSAMAMXSMSXSAAXXAASXSMSMXMMSXMM | |
XAXMMSMMXAXMMMAMAXAAMASMAXMAAMXAXAAAXXAMXXMAMXXXASMMMXMASMMXSAMASASAXXAXXMXMAMXSAMAXAMXXSXMMSASXSXMXSMMXSAMXSXSMSAMMMAXAMMSSMXMMAMXAMASAMAMA | |
MMSMXAAMSXXMAMXXXMMMSAMAMXMMSSMXMSMSSSXSMMSXSSSMASAAMMXMMXXXMMMXMASXMMAXMAMMXMMSAMMASMMMMAXMAMXAAASAXXXXMASXXAMASASMMAMXMAAAMASMSMSASXMASXMS | |
ASAXSMMMMAAXXMAASXSXMXSSXMXAAAXMMAMMAMXSAXAAAASMAMXMXSMXMXSXXAAXSAXMXSASXXSAMXAMAMXMXAAXSAMSXSMMMMMASMSXSASMMXMAMXMMAXSXMMSSMMMAMASAMXMAMAAA | |
SMMMMASASMSMXXAMAAMMSMMXSASMMSXMMAXXAXASXMMAMMMMMSAXAXAMMAMXSMSAMXSAMMASXMAXMMSXSAMXSSMMAAXXASXAXXMXMAAXMASAAXMXSXSAXMXMXMXAXXMAMMMSMAMASMMM | |
AAXMSAMAMAAMAAXXMMMASAMAAMXMXAAMSMSMSMAXASXASXSASAAMSSSXMASMMMAMXXMXAMSMMXMAMAAMAMXAMAXSSMMMMMSMXMXSMMMMMAMMSMMAXXMASMXSASXMMXSASAAASMSMSXSX | |
SSMMMXSSMSMMSSMAMXSASAMSSMXXAMXMAASAMMMSAMSXSASXSMSMXAAXSASAAAASAAXASXMAMMASMMXSXMMMSSMMAMXAAAMMXSAMAMXAXAXAMAMASMSMAXAMXSAAMMMXMMMMXXMASASX | |
MMAMXAAAAXXAAAAXMAMXSAMXAMAMSXMMMSMAXAMMMMSXMXMXSXMAMSMXMXSMMXMSMSAMXAMAMSAMAAMXMAMXAMMMAMASMXSAAMAXAMXSSMSMSMMASMAMMMXMMSXMXAXASXSSXSMSMAMX | |
XSAMMASMMMMSSSMMMXSASAMSMMAMMAMSMMMXMMMASAMASASAXAXXMAXAMXXXMSXMMAAXMAMSMMASXMASXMASMSSSSMXXAAMMSSSMSSMASMAXXXMAMXAXXAASASASMSMMSAAXAMMMMSMM | |
AMXSAAMMSMMAAXAMXAMAXAMXXSMMMAMAAXAAMXSXMAMAMAMMMSMMXXSSSSMAAMAAASXMMAMMASAMMSASMMASAAAAAXMMMMSMAMASAAMAMXAXSAMXSSSSMMSMAMAMXXAMMXMMMMSXAMAM | |
XMASMXMXAAXMAXSMMMSASXMSMSAASXSMSSSXSASXSAMSMMMSMAASAMXMAAXAMSSMMMASXMXSAMASAMAXAMAMMXMSMMAMAMAMASMMSSMMSSMSSMXAMAMAXSAMAMSMMXSMAAMASASMXSAM | |
XMASXAXSSSMXMXMAAMAXMAAXAMSMMAXAAAAMMASAMXSXAAAAAMAMXXMMSMXSXMASXSAMAAMMMXXMASMSMMAXSAMMXAMSASASMSXXXXAXAAXAMXMXMMMAXMAMXSMASAMMSMSSMASMMSMS | |
SMMMXMXXXAXXSASXMSSSSMMMSMMMMSMXMMXMSMXAXMAXSMSSSXSAXAAAAXXXAMXSMMMSMMMASMMMXMAAAMAXXAXSXSASASASAXXMASMMSSMMSXSMSAMXSSXMSMXAMASXMAMMMMMAXXAX | |
XSAAAMSSMMMXMAXSAAAMMAXAMAXXAAMMMSMMMXSMMXMAXAAAXAXAASMMSXSMMXAXAAXXMXSAXAAAAMMMMMMSMMMSAAMMAMAMMMMMXXAAAMAXAMAASXXAXXAXAMMMSXMXMAMAAXXXMMXM | |
SXMXMSAMAXAAMAMMMMSMSAMASXMMSMSAAAAASMSASXSMMSMMMSMMMAAAXMSAMXMMSMSAMMMMSSMSSSMASXMAAAAMXMXMMMAXMAAAMMMMMSMMMMMMMMMMMXMMMSAASAMSSMSSSMMAMXAS | |
MMSSMMXSXMSXMMSXSAMXXAMMMXAMAASMSSSXSASAMAAXXAMXAXAMXSMMSASXMASAMXSAMAAAAAMAAAXXMAMSSMSSMSXSMSASMSSSMSAAXXMAXAXAMXSAAASAMXMMSAMAAXAAAMXMMXAS | |
MAAAXMASMXMASAXAMAXASXMXMMSXSMMMMXMAMXMAMSMMSSXSXSMMAAXMAMMXSASAXAXAMXMMSSSSSXMXSSMMAXMAMXAXAMXSAMAMAMSSSMSSSXSXSASMSMSAMXMAMXMSSMMMMMASMSMX | |
MMSSMMASMASAMXMSMSMMMMMAMXMMMAMXMAMSMMXAMXAXAAASMMASXMMMMMSXMXSXMSSMMSSMAXAAXMAMAXAXSMSAMMMMMMXMMMAMAMXXAAMXSAAAMASAMASAMSMSSMAMMAXSXSMSAAAM | |
XMAAXMXMMAMAMXAMAXSXMASXSAMASAMAMXMMASMMSXMMMMMMASAMAAMSMAMXAAMAMAAAAAAMSXMMMAAAASMMMASAMXAAAAXMASXSSSXSMXSAMXMSMAMXMAMXMAAMMAAMMSMSAMXMMMMA | |
MMMSMSMSMSSSSSSMXMSSMASMAASASASXMSXSAMAXMASAXXXMXMAMSMMAMASMSMSAMSSMMXMMMASXXMASXMAMSAMXMSSSSMXXAMMAMXXMAAMASMMAMAXAMSSSSMSMMSXSAAASAMXMASXS | |
MSAXMSAXAMAAXAMXSMMAMASMSMMXSAMAXAAMXXXMAXSAXSAMXXSMMXSXSASXAAAAXAAAAMSSSXMAXSAMAMXAMAMXXXXAMMSMMSSXMASMMMSAMASASMSMXMAXXMMAAXAMMMXSAMXMASAM | |
XMASAMMMMMMXMMMAAASAMXXMAMXAMAMXMMSMSXSAMXMAMXAMAAXAMXXXMASXMSMMMSMMMSAAXMMMMAASMMXXSSMXSAMXMAAASAMXXAAXXXMASAMASXAXAMSMAMSMMMMMSSMSAMXMXMAM | |
MMMMXMXSXMXMMAMXSXMASXSSMSMMSAMSXMAASMSAMXXMASXMSSMAMMMXMASAXAXXAXASMMMXMAAXXMMMXMXMAXAMMMMAMMSMMASXSMMMMMSAMXMXMMSSXSAAAAAXMXMAXAXSMMXSASAM | |
AAAXAXAMAMAAMAAAMAMASXAAXAAAAAXMAXMXMASAMXXXMXXAAXXAMAMAMSMMXMAMMSXMASMMSSSSXXXXAMASMMXMAASASAMMSXMXMXAAAAMXMXMAMAXAXSMSMSSXMAMMSMMMASASASMS | |
SSXSAMXSASASXMSXSAMAMMXMMAMXSMMSXMSAMMMMXMASXMMMMSSSSMXAMAAXMMAAXAXMSMAXXAAAMSMSASAXAMXSXXSASXSAXXMASMSXSSSSXSSSSMMMMMXXMMMASXMMAXXSAMMSASAS | |
MAASAAMSAXAXXAAAMXMSXSXXAAXMMMASXAXAXMAXXXAMAAXAXXAMAMSSSMSMXXAXMAMXAMXSMSMMMAAMXMXSAMXMSMMMMMMMSMMMSMAAXAMMAMAMXXAXAXXXMAMXMAASASMMASAMAMAM | |
MMMMASMMMMSMMMMSMSMMAXMASASMSMASMSMMSSSMXMMSXMSMSMAMAMAAAAMAMSSSMAMSSSMXAAMXSMSMSAASAMAAAXAMAMAXMXMXMMMMMAMMAMAMSSMSSSMMSMSXSSXMASASAMAMMMSS | |
MSAMXMXMAAXAXXAAMAAMXMAMMAAAAMASAAAXAAASAMXAXXAAAMXSXSXSMMMXMAAAMAXAAAXMSMSAXMAASAMXASMSMSMSXSAMXAXAXAAASXMSSSMSAAAAAAXAASXAXMXXASXMXSAMXAAA | |
ASAMXXXSMSSMMMSSSMSMXMSXMXMSMMMSMSSMMSMMSMXASMMSMSMXXXAAXXXXMMSMMSMMSMMXXXMASMMMMXXSXMAXXXMAMMXMSASXSSSXXSAXMXMAMMMMSMMSSSMMMAXMASXMMSASMMSS`; | |
const matrix = raw | |
.split("\n") | |
.map((line) => line.trim()); | |
let total = 0; | |
for (const line of matrix) { | |
for (let i = 0; i <= line.length - 4; i++) { | |
const window = line.substring(i, i + 4); | |
if (window === "XMAS" || window === "SAMX") { | |
total++; | |
} | |
} | |
} | |
const vertical = matrix.reduce((count, _, row) => { | |
if (row < 3) return count; | |
return ( | |
count + | |
matrix[row].split("").reduce((colCount, _, col) => { | |
if ( | |
(matrix[row][col] === "S" && matrix[row - 1][col] === "A" && matrix[row - 2][col] === "M" && matrix[row - 3][col] === "X") || | |
(matrix[row][col] === "X" && matrix[row - 1][col] === "M" && matrix[row - 2][col] === "A" && matrix[row - 3][col] === "S") | |
) { | |
return colCount + 1; | |
} | |
return colCount; | |
}, 0) | |
); | |
}, 0); | |
total += vertical; | |
const forwardSlash = matrix.reduce((count, _, row) => { | |
if (row < 3) return count; | |
return ( | |
count + | |
matrix[row].split("").reduce((colCount, _, col) => { | |
if (col < 3) return colCount; | |
if ( | |
(matrix[row][col] === "S" && matrix[row - 1][col - 1] === "A" && matrix[row - 2][col - 2] === "M" && matrix[row - 3][col - 3] === "X") || | |
(matrix[row][col] === "X" && matrix[row - 1][col - 1] === "M" && matrix[row - 2][col - 2] === "A" && matrix[row - 3][col - 3] === "S") | |
) { | |
return colCount + 1; | |
} | |
return colCount; | |
}, 0) | |
); | |
}, 0); | |
total += forwardSlash; | |
const backwardSlash = matrix.reduce((count, _, row) => { | |
if (row < 3) return count; | |
return ( | |
count + | |
matrix[row].split("").reduce((colCount, _, col) => { | |
if (col > matrix[row].length - 4) return colCount; | |
if ( | |
(matrix[row][col] === "S" && matrix[row - 1][col + 1] === "A" && matrix[row - 2][col + 2] === "M" && matrix[row - 3][col + 3] === "X") || | |
(matrix[row][col] === "X" && matrix[row - 1][col + 1] === "M" && matrix[row - 2][col + 2] === "A" && matrix[row - 3][col + 3] === "S") | |
) { | |
return colCount + 1; | |
} | |
return colCount; | |
}, 0) | |
); | |
}, 0); | |
total += backwardSlash; | |
console.log("part-1",total); | |
// --- Part Two --- | |
// The Elf looks quizzically at you. Did you misunderstand the assignment? | |
// Looking for the instructions, you flip over the word search to find that this isn't actually an XMAS puzzle; it's an X-MAS puzzle in which you're supposed to find two MAS in the shape of an X. One way to achieve that is like this: | |
// M.S | |
// .A. | |
// M.S | |
// Irrelevant characters have again been replaced with . in the above diagram. Within the X, each MAS can be written forwards or backwards. | |
// Here's the same example from before, but this time all of the X-MASes have been kept instead: | |
// .M.S...... | |
// ..A..MSMS. | |
// .M.S.MAA.. | |
// ..A.ASMSM. | |
// .M.S.M.... | |
// .......... | |
// S.S.S.S.S. | |
// .A.A.A.A.. | |
// M.M.M.M.M. | |
// .......... | |
// In this example, an X-MAS appears 9 times. | |
// Flip the word search from the instructions back over to the word search side and try again. How many times does an X-MAS appear? | |
const forwardForward = matrix.reduce((count, _, row) => { | |
if (row < 2) return count; | |
return ( | |
count + | |
matrix[row].split("").reduce((colCount, _, col) => { | |
if (col < 2) return colCount; | |
if ( | |
matrix[row][col] === "S" && | |
matrix[row - 1][col - 1] === "A" && | |
matrix[row - 2][col - 2] === "M" && | |
matrix[row][col - 2] === "S" && | |
matrix[row - 1][col - 1] === "A" && | |
matrix[row - 2][col] === "M" | |
) { | |
return colCount + 1; | |
} | |
return colCount; | |
}, 0) | |
); | |
}, 0); | |
total += forwardForward; | |
// Forward-Backward Pattern (\ /) | |
const forwardBackward = matrix.reduce((count, _, row) => { | |
if (row < 2) return count; | |
return ( | |
count + | |
matrix[row].split("").reduce((colCount, _, col) => { | |
if (col < 2) return colCount; | |
if ( | |
matrix[row][col] === "S" && | |
matrix[row - 1][col - 1] === "A" && | |
matrix[row - 2][col - 2] === "M" && | |
matrix[row][col - 2] === "M" && | |
matrix[row - 1][col - 1] === "A" && | |
matrix[row - 2][col] === "S" | |
) { | |
return colCount + 1; | |
} | |
return colCount; | |
}, 0) | |
); | |
}, 0); | |
total += forwardBackward; | |
// Backward-Backward Pattern (/ /) | |
const backwardBackward = matrix.reduce((count, _, row) => { | |
if (row < 2) return count; | |
return ( | |
count + | |
matrix[row].split("").reduce((colCount, _, col) => { | |
if (col < 2) return colCount; | |
if ( | |
matrix[row][col] === "M" && | |
matrix[row - 1][col - 1] === "A" && | |
matrix[row - 2][col - 2] === "S" && | |
matrix[row][col - 2] === "M" && | |
matrix[row - 1][col - 1] === "A" && | |
matrix[row - 2][col] === "S" | |
) { | |
return colCount + 1; | |
} | |
return colCount; | |
}, 0) | |
); | |
}, 0); | |
total += backwardBackward; | |
// Backward-Forward Pattern (/ \) | |
const backwardForward = matrix.reduce((count, _, row) => { | |
if (row < 2) return count; | |
return ( | |
count + | |
matrix[row].split("").reduce((colCount, _, col) => { | |
if (col < 2) return colCount; | |
if ( | |
matrix[row][col] === "M" && | |
matrix[row - 1][col - 1] === "A" && | |
matrix[row - 2][col - 2] === "S" && | |
matrix[row][col - 2] === "S" && | |
matrix[row - 1][col - 1] === "A" && | |
matrix[row - 2][col] === "M" | |
) { | |
return colCount + 1; | |
} | |
return colCount; | |
}, 0) | |
); | |
}, 0); | |
total += backwardForward; | |
// Print the total | |
console.log("part-2",total); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment