From afdf556fbffbca10b7fe2a703c75e0724aca9df5 Mon Sep 17 00:00:00 2001 From: Dmitry Fedotov Date: Sat, 7 Dec 2024 19:47:30 +0300 Subject: [PATCH] add day 4 part 1 --- aoclib/aoclib.py | 3 + day4/day4.py | 69 ++++++++++++++++++++++ day4/input.txt | 140 ++++++++++++++++++++++++++++++++++++++++++++ day4/input_test.txt | 10 ++++ day4/task.txt | 68 +++++++++++++++++++++ 5 files changed, 290 insertions(+) create mode 100644 day4/day4.py create mode 100644 day4/input.txt create mode 100644 day4/input_test.txt create mode 100644 day4/task.txt diff --git a/aoclib/aoclib.py b/aoclib/aoclib.py index b92d008..a79dd22 100644 --- a/aoclib/aoclib.py +++ b/aoclib/aoclib.py @@ -12,3 +12,6 @@ class Input(object): def lines_as_int_lists(self): return [[int(n) for n in l.split()] for l in self.lines()] + def lines_as_lists(self): + return [list(l) for l in self.lines()] + diff --git a/day4/day4.py b/day4/day4.py new file mode 100644 index 0000000..085ed52 --- /dev/null +++ b/day4/day4.py @@ -0,0 +1,69 @@ +import sys +sys.path.append('../aoclib') + +from aoclib import Input + +# directions +D_R = 'r' +D_L = 'l' +D_U = 'u' +D_D = 'd' +D_UR = 'ur' +D_DR = 'dr' +D_UL = 'ul' +D_DL = 'dl' +D_LIST = [D_R, D_L, D_U, D_D, D_UR, D_DR, D_UL, D_DL] + +def search(word: str, depth: int, x, y: int, dir: str, field: list[list[str]]) -> bool: + if depth == len(word)-1 and field[y][x] == word[depth]: + return True + elif field[y][x] != word[depth] or depth == len(word)-1: + return False + + if dir == D_R: + x += 1 + elif dir == D_L: + x -= 1 + elif dir == D_U: + y -= 1 + elif dir == D_D: + y += 1 + elif dir == D_UR: + y -= 1 + x += 1 + elif dir == D_DR: + y += 1 + x += 1 + elif dir == D_UL: + y -= 1 + x -= 1 + elif dir == D_DL: + y += 1 + x -= 1 + if y >= len(field) or x >= len(field[0]) or y < 0 or x < 0: + # out of bounds + return False + + return search(word, depth+1, x, y, dir, field) + + +def solve1(word, field) -> int: + count = 0 + for y in range(len(field)): + for x in range(len(field[0])): + for dir in D_LIST: + found = search(word, 0, x, y, dir, field) + if found: + count +=1 + return count + + +if __name__ == '__main__': + #field = Input('input_test.txt').lines_as_lists() + field = Input('input.txt').lines_as_lists() + + #part 1 + print('part 1:', solve1('XMAS', field)) + + #part 2 + #print('part 2:', solve2(raw)) diff --git a/day4/input.txt b/day4/input.txt new file mode 100644 index 0000000..9b90b40 --- /dev/null +++ b/day4/input.txt @@ -0,0 +1,140 @@ +XMASMXMXMAXSMMSSSSXSXMASMSAXMAXAXXMASASMSXSSSSSMMXSXMASASMSMMXSASASXXXXSMSXSMSXMASXXMASMMASXMXSXMSMMMMMSXXMASASMSSSSSMMSMMSSMSMSSMXSAMMSMMMM +XXMSAMXSXMMSASXAAAAXMMMMAMXSMSMMSSMMMASXMAAAAASASMAAAAMAXXAMMAAXSASMMSAMAAAMASAXAMMSMMMMSAAXSAXASAMMMSAAXSAMXAAAAMMAAAAAAMMAAXMASAAMAMAMXMAM +SMMMXMASMMASMMMMMMMMMASMMMXAAMXMAAMMMAMAMSMMMMSXMASMMXMAMSASMSXMMAMAAMAMMMSMASAMASMAAAAXMAMMMMSXMASAAMXSXSAMMSMMMMMSMMSSSMSMMMMMSMAMAMASMSSS +XAAMMMMSAMASASXSAAAXSASAMXSMAMXMSSMXMSMXMAXASXMMAXMXXSMMMMASXXASXAMMMSAMXAXMAMXMAMMSSMMSMMXAAASMMAMMXMMXXSAMMAXASXAAAAXMAASAAXAXMAXSASXSAAAS +SSMSAAMSMMASMSASXSSMMASMMMMMSSMAAMMSMMASMSSMMAXXMXMXMMAXXMAMASAMXMXXAXXXMSSMMSAMXSAMXMSAMMSSMMSAMMSMSMAMXSAMSMMAXMXSSMXXMMSMMMMMSAMMMMMMMMMM +MMMMMXMSXMXSXMXMAXMAMXMAAMXAMAXMASAAAMXMAMAMSMMSMAMSMSAMXMASXMAMASMMMSXMAMAAAMASAMXSAMMAAMAAMASXMAAAAXMSASAMMXSSMSAMMMSXXXMASXSAMASMSAMMASAS +ASXSMSASXXMSAMXMSMSMMMMSASMXSAMXXMXSXMAMAMAMASXAXAXAXMASXSAXASXMMXAAAAXMSMMMMMXMMSAMAXMMMMSMMASXMMMMMMMMAXXMAMAAAMXXAASMSXSAMAMXMAMXMAMSAMAS +SMAAAMAMMMMMASMMMMSAAMXMSAMMXMSSSMAMAXMSSSXSASXMSMSMSMMSXMSSXMMSXSSMMSSMMXSASAMXMMASMMAAMMMAMXSXSASASASMSMSXSMSMMMMSMMSAMXMASMSAMSXMSSMMXXAM +MMMMMMMMXAAMXSAMMAXSMSXXAMSSSMAAXMASASAMXMMMASMXAMAXMAASAAXMXAXXAAXXXXXAAXMAXSAAXSAMAASMSAXXMAMXSASASAMAAAXMXXMMAXAAAMMAMMSAMXMMXAAASAAASMSM +SASASXSSXSMSASAMMMMMMXMMAXAAAMASMMXXXAXXAMAMXMXMMXXMXMSSMASMSXMSXMAMSMSMMSMMMXSMMAMAMMAMMXSAMXSAMMMXMAMMMSMAMXXXSXSSSMSAMAMASXMXMMMMSAMMSAAA +SASASAXAAXXMXSSMAAAXAAMSXMMSMMMMAXASXSXSASMSXMSMSMSXAXXXMMMMAAMMAXXMXAXAAXASXMAMMAMXXMASASXXMMMASXMMMMMXSAXSASMMXAAAXASXSMSXMXMASXSAXAMSMXMS +MAMAMAMMMMAMAMXXSMSSMSMMXAAXXSASAMXXAAASAMXMXSAAXAMSMMMXSAAMASASMMMMMSAMXSMMMSASXXMXXMAMXSSMXSMMMAASMMSMXAXXMAAAMMMMMMMAMXMAMSMXSAMAMMMXMXMX +SAMXMXMAMSSMMSSXMXXAMMASMMMXASAXMMSMMMMMXSAMMSMSMSMXMASAMSMSAMMMXAMXAXASMXMAXMAXAASXSAMXAMXMAXASMMASAAXAMSMSSSMMMXAXXXMXMSSXMAAAMAMSXSASMAMX +SXSMSASXMAXAAAAXMXMASMMMAAAMMMXSAAMASMAMASASAXMAAAAASMSAXXMMASMMSSMMSSMMMMSSSMSMAMMAMMSMASXMXMAMAMASMMSSMAAAAASMXSMSMXSAMXAASXMXSSXXAMAXXAMX +XSMASASXAMXMMMMXSMSAMAAXSMMSAAASMMXAMXAMMMAMMMSSSMSMSXSMMXAMAMAAAXAAAXMASAAAXAXAXXMAMAXMXMAAMSMMXMASXMAAXMSMMMAXASXAAXMXSXMXMASAXMAMAMXMSSXM +XSMXMMMXASAMMSMAXAMMSSMMMMXSMSXXMXMSSSSSSMXMAMXMAXAAXXMASXMMASMMSSMMSMSASMMMMXMXMXMXMMSMXXMMMAAMMMXSAMSSMMMXXXMXMMMMSMSASMAXSAMSMSMMAMXMAXAS +SMMSAAXSAXAAAAMMMXMMXAMXSAMXXXMASAMXAMAAAASXMSSSMSMSMSMAMMASASAMXMXAAAMASXAXMSMSMAMAAMAXMSMXXMXMAMSSXMAXAASMSAMXMAXSAAMAMAMMAMAXXMASXSXMAMMM +MAASXMAMSMSMSSSMASMMMSXAXASXMXSAMMSMXMMMMMXAAAAXMAXAAXASXSAMMMAMMMSAMXMAMMMXXAAAMASMSSMMAAAMSXXMAXAMXSASMMXAXAAMMMXSMSMAMSXMMMAMAXMAMSAMSSSX +SXMSAMXAXXAAXAAMXSAASMMMSAMMAAASXXAXMASMMMSMMMSMMMSXXXMMMMASXXSMXMAMXAMXMAMMSMSMSAMXMAMSSMSMAAMSSXMSAMXSMSXSMSMSSSMMSXMXMXAXXMSMSXMAMSAMAAAM +SAMXXXMASXMMMXMMASMMMXAXMMMAXXMAXSAMAMXAXMAMAAAAMMMXXMAAXXMMMAXAMSASXSXSSMXAMAMMMMMAXAXXASXMMSMAMXXMMSSMAXXAXXAAAAASAMXXMSMMMMAAXXSXXSAMMSMA +MAMMMXMXMXAAXSAMXMAXSSXMXMXSAMXMAMAXSSMMSSSMMSSSMAAAMSSMSXMAMXMAMSMMMXMMAAMMSAMXAMSMMMXXMMXXAAMAMASMXMAMMMMMMMMMSMMMXAAXXAMAAXMXMASMMSAMAMMS +XAAAAMMASMSMSAAXASXMMMXMXSAMAMMXSMMMXAAXXAAMMMMAXMMMMMXASASXSSMXMXAAASMSSMAMMMSMMMAMAMSAASMMSSSXSMXAXSXMXAAAAMXAMASXSMSMSASXSSSSMXMAASXMASAX +SXSMSAMXSXAXXMAMXXMAXSAMAMXMAASAMAMAXSMMMSMMAASMMXMXAXMASAMAAXMAMXMMMSAAMMSXAAXMXSASAAMSMAXMXAMXSXSSMMMMSSSXSMMMSAMAMSAAMAMXMAXMASXMMSXMXSMS +MAMXMXMXSXSSMXMXXXSSMAAMAXMXSXMASMMSMMMSAMXSSMSXAAXMXMSAMAMMMMSSSSXMASMMMXMMMSSMASMMMSXMSMSMMSMAMXMAAMMAAXMAXAMMMXMAMAMSMMMMMAMSAMXSASASMMXM +MXMASAXSMAXAAMSAMXXXXMXSSXSAXMMMMAAXAAMMXSAMMXMXSMSMSXXASMMMMMMAAMSSMXXAXXXAMXAMAMAXXMAXAMAMXMMASASMMMMMSXSASAMSMSSXSMAXXAAMASMXMXXMASAMAAAX +MAAXSSMAMAMMSXMASMAMMXXXAAMAMMAMXMXMMMXSAMXMSAMXAAAMMXSAMXAAAAMMMMXSASXMSSSXMSXMSSXMASMSMSAMAAMXMMSASXAXAAMASAMAAAMMXXSXSXMMAMXXMMAMXMAMSSXS +SAXAMXSXMASXXXSSMMXMASMMMMMAMXSSSMXSASMMASXMSASMMSMASMXXMMXMXSSXXAAMXMAAAXAMAMXAASXAXXAAASASMSSSSXMASASMMSMXMASMMMSSMMMXMASMSSSMMAAMASAXXXAM +AAMSMMMMSASMSASAAASXXAMXMASXSAASAAASXMXSASAASMXMAXXXAAMSMSSMSAMXXMXSXSMMMSAAMMMMASMSAMXMMMXXAAAMMAMAMXXAAMAMSXXXXSAXAAXASXMAXAAAMSASASMSAMXM +AXAXSAAXMAMAXXMMAMAXMXMAXAMAMMMMMMMMAMASXSMMXXXMAMMXMSASAAAMAASMXAAMXSXMXMXMAXXMXMAMMSAMXXMXMMMMSAMMMASMMSAXSXMMXMASMMSXSMMXMMMMMMAMAMXAXSMS +AXSXSSSXMXMSMMMXXAMSMSSSSSMSXSAXMXMSSMAXAXMAMXMMMAMMXMXMMMSMSAMXMMMSAMAMXMAXMAXMXMSMAMXXMAMXXASXMMMASXMMASMMMAMAXXAXAXSXMASAMXXMXXMMSSSMASAA +SAMXMAMXSAMAAAAAMAXAMAAXAXXMAMMXSAAAXMSMMMXMMAAAXAMSXMAXXXMAMXSAMAXMAXXMAMSSMAMMSAMASXAMXSXMMAXAAXSAMAAMAMXASAMSSMMXMXMASMMAMAMMSMAAAXAXAMAM +MAMXSAMXMASMSMSMSSMMSMSMMMSMAMAAXMMMSMMAAMMASXSXSASXMSSMSASXMASMMAMSAMSSXSAAXAAXMMMAMMASMMSSMMSSMMMSSSMMMMSXSMSXSMAASASMMMSXMASMMMMMXSXMASXX +MAMXMASASAMMMXMMXMXXAXAAXAASMMMSSMXXMAXSMMAMSAAASMMAXAMXAAMXSXMASXXMXSAAXMXMMSSXAAMASMAXAAAXAAAMASAXXAXXMASAMXAMXMMXSAMXAXXMXXMAAMXMASAMAMAM +SSMSSXSXMASAMAMMAMXXXSXSMMXSXAAMAMXMSSMASMSXSMMMSASXMMSSMSMAMAMXAMMMMMMSMMMXAAMMSMSAXMASMMMMXMMXAMMSSMMSMMSASAMXMXSAMMMMSMMSSSSSMSMMASAMASAA +AAAAAXSMSMMMMASMASXSMXAMASMXXMMSAMMXAAXSMMXAMXMXSAMXMXMAXXMASAMXMAAAAMXXAAAXXXSAXMMMXSAMASASMMXSAMXAAMAMAMSAMXXXSAMAMXSAAAXAAXMAMAMMMSXMASAX +SMMMSMXAAXAXSXSMASAAMSMMAMXAXXASASXMSSMXAXMAMXSAMAMXMASMMXMXSAMXXSSSMSASXMSSMMMASMXMAMASAMXSAAASAMMXMMASAMMAMXSMMMMSXAMSSMMMSMXAXASAMMAMASMS +XMXMAXMMMSSXMAXXMMXMMXAMXMMMMMMXXMAXAAASXMSXMXMASXMASASXSMSMMXMAXMAMAMMSXSAXAAMXMMAMXSAMXSSSMMMSAMAMXSASASXMSXXAMXAMMXMAMASAAXSSSMSASXXMMMAA +AMASMSSXXAMASMMMXSSSMSSMSXAAXASMSSSMXXMAXAXMMAMXMMMXMASAMAAASXMXAMAMMSMMMMASMMSXMSMMAMASMSAMXMASAXMAXMASAMXAAAMSMMASAAMSSXMAXMAXAMSAMAMSSMSM +XSAXAMAXMAMAMAAXXAAAASAAXSSXSMSAXAAXMSSSMSMMSASAAAAMMAMXMSMXMAMMMSXMMAAXXMAMAAAMXAXMASAMXXMXMMXSXMASMMMMMMMMMMMAAMASXMMAXMASMMMSXMXXMAMAAMAX +XXMSXMMMMMMXXXMSSMSMMXMMMXXXMAMXMSMMXAAXMASASASMSMSXSAMAMMMSSMMMXMASXMSMAMSSMMMSMASXMMMXMASAXXAMXAMAAAMAMAMAAASMSMASAMXXAMXXXXAAAMSXSSSSXMMX +MAMSXSXSAASXSAXAAXMASXSXSAXMSMSAMXXXMMSMSAMXMXMAMXMMXASMSAAAAAAXXMMMSAMXMSAMXSAMMMMAASXSSSSMSMASMSSSSMSASXXMSXSAAMXSAMSASASXXMXSXMSAMXAXXMXM +MAMMAXASAMXAAAMSSMSXSASASASMASMXSAAMXAMAXXMXSMMAMMSMSMMXMMXMXMMSXASAMXMASMASAMMMSAMXMMAAXXMAXMAMAAAMAASMMXAAXXMXMSAMXAXAAAMMSMMMMAMSMMMMXSAA +SMSMSMMMMXMXMXAMXMASMAMAMAXMMMXMMXSASAMXAAXAXAXAMAAXAAASMSSSXMASMMMAMXMSXSAMASXAXMSMSMMMMMMSMAMSSMSMMMXMASMXMAMAXMXXMXMXMXXAAMAAAAAAXAAXXSSS +XXXAASMASAMMMXXMSAMXMAMAMMMMXMAMSAXXMAXXSSMMSMSSSSMSSSMXAAAAAMASAMSAMSXMXMMMAMMMSMAMMASAXSAMAMXAMXMAMAMMASAMXMSSSMSXSMMAXSMSSSSMSSSMSSSMMMAM +MXMMMASASAMSXSXAAAXMSASASMAMAMMXMASASAMXAMAMMAAXMAXMMAXMMMSMXMASMMMAXMASMSMMSMSXAMMXSAMXXMASAMMXSXSMMAAMASAMMXAAAXAXMASMSXAXAMAMAMAXAAMAAMAM +SAMXAMMXMXMSASAMSMMXXXAMXXAMSMSXSASXMASMASMMSMMXSXMSSSMMSAMXXMXSXXSMMSAMMSAAXASXMSMAMASXSMAMAXAASAXMSMSMASAMAMASMMMMMMMSAMXMAMXMASMMMAMSMSAS +SMSMSSMMSXXMAMXXAAXSXMXMAXMMMAMAMAXXMMXMMMMXMAAASMMXAMAAMASMSMMMXMXAAMAXASMMMXMAXXMASXMAAMAXMMMXSAXXAMAMXSMMSAAAXXXAAXMXSXMSMMMSASMSXMAAXAXX +XASAMAMMAMXMAMSSSMMXAAAXXMMAMAMXMXMMSSXXMAMXXMMMSAMMMMMMSAMAMAASAMMMMSSMASXXXSMMMMMAMAMAMSSSSSXMMMMSASASMXAAMMSXMASXMMSAMMXAXAAMASASASXSMMMX +MAMAXAMXAMXSMSAMAXAXSMMSXSMASMMSMMMAAXMASXSMSSXASXMAXXMAMMSASMMSASAXMAMXXXXXASASASMMSAMAXAMXMAXSASXSXMAXAXMMSAMAMXSAAAMAMASMSMSMAMASAMAXXMAX +SXXSMMXMAXXMMMMSSMMXXAMXAXMAMAAAMAMMXSMXMMSAAXMMMASMSMMXSASXSAAXAAXXMAAMMMSMAMAMASAMSAMXMSXSSMXMAXAMXMASMXSAMAMAMASMMMSAMXAMAMAMXMXMAMXMASXS +AXAXASMSSSMSAAAXXASASAMMMMSMMMASXSSMXMASXAMSMXSASAMXAXMMAMXAMMSMSMSXSASAXAXMXMAMAMAMMSMXMMAXAXXMSMSXXMXMMAMXMSMSMXXAXMSMMMSXSMXSASMSMSASMMSS +MSAXAMXAXAAMSMSSMXMAXXMASAAAXXMAMAAMMSAMMXXAXAMXMASXXMXAXXMMMXAXXASAMXMMMMSXXSXSASXMXXXMAMXMMXMAMAAAMSMSXMASAAAXMASXMMMSAAXAXMMSAXAAAMASXMAS +XAXMAMMMMMXMXMAMXXXSXSXMMMXXMAMSMMMMMAAXAMAMMMXASMMMSSXMMASMAXMMMMMXSXMASMMXXSASXSMSAMASASMSXSXSMXMXMAASAXAXXMMMMAXMAAAXMSMAMAAMSMSMSMXMXMAS +MAASAMSXXXAMXASXMSAMAMAAASMSXXMXAXMXMMMMMSASAMSMXMAASXAMSASXSSXMAXMXMAMAMAASMMAMXXAMASAMXMASAAAXXAMASMSMMSSSXMMXMASXSMSSMAMASMMMAXXAXXXAAMMS +ASMAMAMAMSMSAAMAMSAMAMSMMMAAMSASMMSAMAXAAMASMXAAMXMMSMSMMASMXMASMMSASXMXSMAMXMAMXMSSMMMSAMXMSMSMSMSASXMAMAAAASMMMXAMXAMAMXSASAMSSXMMMMXSXSAM +XXXASAMXMAMMMSMXMMAMXMMASMMMMSASAAMAXSMSSMAMXSMXSAASXAMXMAMAAMAXAASASAXXXMXMASAMAAXAXMMSXXSAMXMMAMMXSXSMMMSMAAAAMSSMMMMMSXMXSAMAXASXSMAXAMXS +MMSXSMSMSSSMSAAAMSMMXMMAMMMSXMMMMXMSMXAAMMSMXXAAMXMMMMMAMXXSAMXMMMMASMMSXMASASASMMSAMSXMASMMMSMMSSMAXXXASAXXMSMMMAMXAAAXMMAMMXMASXMAAXASASAS +XAMXMMMXMAAMSSMMMAXMASMMMMAAAXSASXAAAMSXXMAXSAMXSMMSAMSSMAXMASMMMAMXMMAMASAMXSAMMAXMAXASMMSMAMSAXAMXSAMXMASXXMXSMSSSSSSSXMAMXAMMMAMSMMMMAMAS +XXXXXAMAMMMMMMMSSMXSAMMSAMXMMMSASMMMXMAAMAMASXSAAAAXAXAASXXSMMAMSSSMMMASMMMSAMXMMXMASMMMXAAMASMXSSMXSMMXMAMMMSAMXMAMAAAAMSASXAMMSSMMXMSMAMAM +ASMXSASASASXXAAMASAMAMAXMMSMSAMXMAMXAMMMMAMMSAMXXMMSSMSXMMMAMXSXAAXAAXXXMAMMMSAMMSASAMXAMSMSXSMMMAMXXAMXMASAXMASXSMMMSMMMXAXMAMMAMAAAAAAMMMS +XAAASXSAXASMSMMSAMXSXMSXSAMXAMMAXXMMMSAMSXMMSXXMXSAXXAXMSXMMAMXMMXSSMSSMSSMAASASAMXASXMXXMASAXMAMAMASMMAXAMMMSXMAAASMMAMSSSMMAXMAMMMSSXSMAXX +SMSMSMMXMSMMASMMMMXAAMAAMMSASMSMSMXSAMAXMAAAXMASXMAMMAMAMAMSMMASAAMAMAAAAXMMMSMMASMAAMMMAMAMAMSSSXMMAXXXMMSXXAAMSMMMAMMMAAAMMMSSSMAMAMAAMXMX +XAAXXAMMXMASMXXAXMMMMMAXMAMXMAAMAAXMAMXMMXMSMMAXMXSXXMMAMAMAASASAXMAMSSMMSAMXSAMASAMXAAMXMSXSAAXMXSMMMXSSMAXXMMAXAMMSMAMMMMMXXXAXMAMMMSMMSMA +MMMXXSMXASMMXMMMXSAXMXXMMXMAMSMMMXSSSMASASXXXMASMAMAMXSMXMMSXMASAMSSMMMAAXMMASAMAMXSSSSXSMMAMMXXSAXAXAASAMXSSXSMSAMAMMXSSMSMMXMXMSXSXAXMXAXM +XMAMXASMMSAAXMASASMSSMSMSAMXXAMXXMAAAAXMASAMAMASMXSAAXXAASMMMMXMAXXMASMMMSSMASXMASAMAAMMSAMXMSMAMMSMMMXSAMAAXAMASXMXSXAAAAAMMMMAAAMXMXSASXSM +XMAXXAMXXSMMMMAMAXXXAAXASMSMSASASMMSMMMMXMAMMMMXAXSMSMMMMMAAXAXSXMASAMXAXSXMASAMAXXMMMMAMAMAMAMMXAAMASASXMASMSMMMASAMMSSMMMSAAMMXMMSMMAMSASX +SMASMSMMMMMSXXSMSMXSMMMMMAAASAMAAAAAMXSXAMXXXASMMMXMAMXSASMMMSMAXAXMXSSMMXAMAXAMMSSXAAMXMMSSSXSAMXSMASMXXMAXXMAXSAMASAMXXAASMSXSXXAAAXMXMAMS +AMAMAAAAAAAAXSXAAAMXAAMXMMMMMMMMMMSMSAMMMMMMSASAAAAXASXMAAXAAAMMSSXMXMAXMSMMMMMMSAMXSXSSSMAASAMASMAMAMMSMMAXASAMMXSAMXSSMMXSAXAAXMSSXMXXMAMX +MSAMSMSSSSSSMXMSMXASMXSAXAMXAXXAXAXXMASASASXSMSXMSMXASXMAMMMSSMXAMXMMMSAXAMASAAMSAMXXAAASMMMMXSAMMAMXMSAMSSMMMAMAXMAXMMXAXAMMMMMSMAMAXXSXXSA +XMAMXAAMXAAMAAXAAAXXMASMSMSSSMSSMMSASXMASASAXASXMAXMMMMAAXMAXMMXMXMXMAMMSASASMSMXASAMSMSMXMXXAMASXSMSMSAXAAXXMMMMSSMMAAXSMMSASAAAXASXXMAMAMX +XXMMMMMSMXMXSXSMSMMAMMSXMAMAMAXXAMSMMSMAMMMMMAMXMASMAAMSSSMMSASXXXSAMXSXSAMASAMASMMAMMXMAMSMMXSAMXXXSASMMMSMSMAAXMAXSMMMXAXMASMSMSMSASAAASMS +SMSAXMAXAAMXMAMAAASMMMSAAAMMMSMSSMMAAXMSMSASMMMSMXSXSXXAMAAAMAMXMASASMMAMXMAMAMAMMAMMMMMAMAAXAMAMAMXSXSMSXMAASXMSMXMMAMASMMMAMMAAXXMAMMSMXAX +SASXSMSXXAXAMAMSXXXXSXSXSXSXAMMAAASMMXMMXMAMAMXXXXMAXMMSXXMMMAMXMAMXMMAAMMMMSAMASMAMMXMSAMMSMXSAMXSAMMSAMMMSMXSAMXXAXAMMXMAMSSSMMMMMAMXXAXMX +MAMASAAAMSXSMMMXXMASAAXAMMAMMMSSSMMASMXMXMMMXMXSASMMSAMAASXSMSAXMSSSMSXMMXAAXAXASXXMXAMMAMSAMXMAMAMASAMAMMAXASMMMMSSSSSXSSSMMAAAXMXSASXMSMXM +MSMMMMMSMMAXXAAXSASXMXMAMAXXMAMAMASAMXAMXMSAAXASMXAASAMMSMAAAXASXAAXAAXSXSMSSXSXMXSSMXMMAMXAMMMSMSXMMMMMMMASXMAXAXXAAXXAMAAASXSMMMASMSMAAMAS +XXAXAXSAAMAMSMMSAXXXXSMXMSMSSSMAMAMASXXSAAMSSMAMXSMMSXMXAMSMMMAMAMXMMMSXAAAAMMAMAAXXAASXMMSSMSAMMXAXSXASMMMSASXMMMMMMMMMMSXMMAXASMASMSMSMSAS +XMMSSSSMMMSMXAXAMXMXXXAAMMAXXMXXMASXMXAMAXMAMMXMAMXXMASMMXMXSMSMAXASAMMMMMMMSSMAMSSMSMMASAAMXMASAXMMSMMMASASMMSXAAAAAAAXAMSMMAMAAMASAXAMAMXS +MSAAMMMAAAMMXSMMXMASMMMMSMSSMMMSMMXMAMXMMMMASXSMMSXSXSAMXAMAXAASXMASASXAXSXAAAXSMAAAAXSAMMXMAMSMXMSAMXXXAMMXAASXSMSMSSSMXXAXMAXSMMASMMMMXMAS +SMMXXAMSMMMSAMXXMAMMASAMXXAAAAAAAMASMAAAXAMAMXMASAASMAMSXMSAMSMMXMASAMXSMMMMSSMXMSMMSMMXSMXSXSAASXMASMSMMSXSMMSAMXMMAAAASMSXSAXAXXAMXMAAAXXX +MASXSMXAAXAMMSMASAXSAMAXXMXSSMSSSMAAASASXSSSMMMXMMXMASMMAMMMAXASXXMMXMAXAXXXMAMXMXMAMAMXMAASMSMXMASAMAAAXSXSAAMAMAMAMMMMMAAMXMASAMMSMMAAXMMX +XAAMASMXSMSSXXMAXMMMMSSMASAMXAXAAMMMXXSXXXAAMSMSAXMMAXASMMAMAMMMXAXSAMXSMMSMXXMAXAMMSAMAMMMSAMXASMMAMSXSMMASMMSSMASMAAXXMMMMAXXMMMAAAMSMMAAM +MXSASASAAAAMMAMXXSSMAAASAMXSAMMSMMMXMXMMMMSMMAAXASXMASXSASXMXSMSXMMMMSAMMAXAAMSSMXMAMAXAXAMMXMMXMASXMMAMXMAMMAXASXXXSMSMSAXMXSMSSSSSSMAASMMA +XXAMXAMMMMMSAMXSXAAXMSMMMMXSASAXMAXAMMMXSAMASMSMAAAMXSASAMXSAMMSAMXAAMAMMXSMMXAMMSMMXSSSMSSSSXXASXMAAXSXMMXXMXSXMSMAXAAAXXSAAAASAAAAMMSMMAAS +MMMMMAMSXSMMMMAAMSMMMXMXAMXSAMASXMSASXAAMASAMXXXMSXMMSXMAMAMMSAXAMSMSSSMSASASMMSAMASAXAMAAAAAASXMSAMXMAAMXMASASMAMMSMSMMMAMMXMXMMMMMMMMMAMXX +AXAXAAXAASXSAMSSXXAAXAMMASXMXMAXAAMAMMMMSAMASAMXMMAMASXSSMMSAMASMMXMMAMXMASAMXXMASAMMMAMMMMMMMSAMAMXAASXMAAMSAMMAMAAAMAXSAMAXXASAMXASAXMMMMM +SSSSMMMMXMASMXAMMSMMMAMMAMMSSMSSMSMMMXXXMASAMXASAXAXXSAXAAXMASXXAAAMXSSXMXMMMXMSMMASMMMMAXAXXAXXMAXSAMXASMMXMAMSXSSXSMSMSASXMSAMASXXXMMSAAAX +MAMAASMSAMAMXMASAXAASASMAXAAAAAXAXXXASMMSXSXMASMMXXSAMMMMMMMAMXMMSMSAAXXMAXXSXMAXMAMAAMSMSMSMSXSSXMAMXSAMASXXAMXAAAXXAMAMAMAMMAXSMMSXSASXXMX +MAMSMMAXMSASMMAMMSSMSAXMMMSSMMMMSMAMMSAASASMMXMAMASMXMXAASMSMXAAXAMMAMMAMMXMMASXSMASXSMAMMASXAAMMMMAMAMASXAASXMMMMMMMAMSMSMMMMXMAAAXXMASMSSM +MAMXXMAMXSXSAMXXXAMAMXSAMXXMXMXAASAMXSMMMMSMXXSSMMAAAXMSMSAAMSMSMXSAAMMAAAMMSXMASMMSAAMMXMAMMMSMAASAMXMAMXMMMMASXMAAXAMXAXAXSXSASXMSAMXMMAAM +MSMSMAAAXMASMMMSMMMAMXSAXSAMASMSMSXMAMXSSXMMSXAASXMSMSMMAMXAMAMAMMXXASXSMXXXAXMXMAXMMMMMAMMXMAXMSMSASAMASAXAAXSMASMMSAAXSMSMAAAXMXAXXSSSMSSM +AAAAAMXXMMXMMSXAAASMSXXAMAASASXXMSAMMSMMSXMAXMMMSMMAMXAMXSSXSXSASMAMXMAMAMXMAXSASMMMMSSSXSAASAMXAMSMMASASMSSMSAMXMAASXMXXAMAMXMXSXMMAAAMAMXM +SMSMSXMASXMSAMSMSMSAMMMSMSXMASAMASAMAAAASMMSSSMAMXSAXSXMMAXXXAMAMMXMXSAXMASMXMAAMXASAAAAXMMXSMXXMMMSSXMASAAAMSMAXXMASAMSMSMAXAXMAMMASMMMAMAA +MAMAXAMASAAMAXSXMAMAMMAMAMMSXMAMMSSMSSSMXASXAAMXSASMMMXSAMMMMSMSMMSMMMXMXSXMMMMMMSSMMSSMSSMXMMSXXMAAXXMSMMMSMSSMXMMMXMMAAXSXMSXAMAXAMASMMSAM +SAMXSAMASMSMMMXAMXSSMMASAMAXXSXMMXMMXAXXMMMMSMMXMMXSAMXMMXAAAAAXMAMSMSSMXMASAMAMXXAXXXAXXAXXAAMAMMMMSMMMAMMAMXMMASAMSAMXSAMMMMASXSMMXXMAAXAX +MXSXSXMASAAMAMSXMMMMASASXMASMAASXAXSMMMSSXSXMASMMXXSMSAMASMSXMMMXASXXAMMMSAMSXSMXXAMSSMMSMMSMMXSAAMXXAXSAMXAMAAXAMAMXAMXMMMMASMMMMASXMSMMSXM +XSAMXMMAMMMSAXMASAMSAMMSAAAMASAMMSSMAAAXXXAASXMASAMMMSASXMAXAXMASXSMMMSAAMMSMXMASMMMXAXAMXXXAAAASASMSSMSASXSXXMMSMMMSMMASAAXXMSAXSAMAAXXAMMS +XXXAAAAXXSMSMSXMMSMMASXSXMXSAMAMAXMXSMSSMASAMXSXMMAMMSAMXMAXAMMASXMAAXSMSXMAMXMAMASMMMMSSMSMSMSXMXMXAMAMXMAMASXXMAXMAXSMSMSSSXMMMMASMMMMXSAA +XMSSSSMSXMASAMASMMSSMMMMMMXMXSXMXSMAXMMXMAXAMXSMAMSMMMSMMMSSSMMASASMSASXMMSASXMASXMAAAAXXAAAAMXXXSMMXMMSAMXMAMAASXMXMMSAMAXAMXMXMSAMAASAAMXM +XMAXMAMMAMAMASAMAAAXXMAMAXAXAXAAAAMXSXXXSASAMAXMAMAAXAAXSAMXMAXAXAMAMMSAMXMASXSMSMSSMMSSMXMXXMMSAAAXMAMXAMAMXSMMMXAASXMAXSMSMSAAMXMXSAMMSSMS +SMMSSMMSMMSSMMMSMMSSSSSSSMMMMSMMSXMASMSMMAMAMMSSSSSXMSSSMMSMSSMSXAMAMXSAMXMSMAXAMXXAMXAAXXSSSMASXSMMMSMSXMXSMMXAXMSMSAMMMMAAASMSMAXMXXAAXMXA +XAXAAAAMAAAAXAXXMAXAAAAAXAAAMAXXMXXXXAASMAMSSMAXMAMXMAMMXAMAAAAMXMXXXAMAMXMAMAMMMSSSXMSSMAAAXMAMXMXXXAASXSXAASMMMMXASAMXAMMMXMAAXSMMAXMASMMM +SSMASMMXMMXMMMSMMMMMMMMMMSSMSMSXMASMMSMSXXXMAMXMMAMXMSXSXXSSMMAMAMMXMMSXMAMMMSSXAAXXAMXAXMMMMMXSXSSMMMSMAASMMMMAASMMSAMSSSMSMMSMMMAXAMMAAXAX +XMAMMAMXXMASAMAXAAAXMSMXMAXXMAXAMASXAMASMSSSMMMXXMXSAMAXXAMMSSMSASMXSAAXSASXSAMMMMSSXMMSMSAXXSAXAAMASXMMSMXMASMSMMAAXAMMAAAAAMXSAMAMXSXSSSSS +SAMXMAMSASASASXSSSMMMAAAMASMMMSSMXSMSMAMAAAAXASMMSAMAMAMAXMAAXXMASAAMMSMSASXMAMSAAAMASAXAMXMXMSSMMSAMAMAAXMXSXMXMSMMSXMMSMSSSMSMSSXMASXMXMMM +MMSMMMMMAMXMMMAMAMXASMXMSXXMAMAXAMMAMMMSSMSMMMAAXMAMXMMMMMMMSSSMXMMMMMAAXASXSAMXMMMSAMASXMAAAAMXAXMAMMMMSMXMMAMXMAMMAMXAXXXAAXXAXMAMXSASMXAM +MAAMAMAMMMXMASXMAMMXMXSMXASMSMMSMSMAMAAXAXAXAMMSMSAMMSAXAAXXXAXMXXMAMXASMXMXMXSXXMAMMSAMXSMSSSMSSMSMMSAMAAAMSAMAMAMXXAMXSAMXXAMXMMAMXSXMASAS +MSSSXSAXMAASAMAMASXSAMAMXSXAXXMAMAASMMMSMSMXMSXMXSASASASMSSMMMAMSSSMSXXMASXMMASXMMASAAMMXAAAAXMAMXAMASASAXXMAASASASAMMSMMXSSSMMASMMXXMAMMMMM +XAAAASAMMSMMASMMASXMASMXMMMMMMSMXMSMMXAXMAXAAXXMASXMMMMMAAXXASAAAAAASMMXSMSAMAMAXMSSXMMMSMMMSXMASXMSXSXMAMSXMXSASMSASXAAMAMMAMSASASXAXAMASXS +MMMMMMAMAXASXMAAMMASAMXAMXMSMAAAXSAMXMXMSAMMXMXMASMMAAMMMMMXXSMSMSMMMASMXMASMMSMMSASMXMASXXAXXSASXXAMMXMAMAAXMMXMASAMXMXMAXMAMMXSAMMMSMXASAA +SAMMSSMMMSAMXSXMMSAMAMSASAMAMSSSXMASXAXMAXSAAMMMXSASXSSXMASAAXMAMXAXXXMAXASXSXAXMAXMXMMASMMMMAMASMMMXAAXASMXMAASMMMSMMXMMMXSAMSAMAMXXAXMSMXM +SASAMAMAMXAAXMASXMAXXMAAMAXXXAMXMMAMMSAAAMSMXSAMSMXMAAXXSAMMAMXXMSSMMSSSMXMAMXMXXSASXSMASMAXMXMXMASAMMSMMSAASXMMAXSAXMASAAXSXMAMSMMXMAXXMASX +SAMXXMMAXMAMXSAMXSAMSMSSSMMSXMMASMMMAXSSSXMAMAMXAMAMMMMMMASAXXMAMAAAXAAAMXMAMSMXXXAXAAMAMMASXMSASXSXSAAASMXMSAMXXMSAXSASMSMSMXMXAAAXMSMMMMMM +MAMMSMSMSAMXMMXSMMMMAAAMAAAXAXMAMAXXSXAXXAMMMAMXASMXXXXXSAMXMMAMMSSMMXMAXAMAXAMXMMMMSMMSSMASAAMAMAMAMXXXMASXMAMXAXXXMMXSAAAXMAXSMXMXXXMAMAAX +SAMXAAAAXXSXSMAMAMSSMMMSMMMSMMMSSMMMMMMMMSXXMAMSXXMMSAMXXMMAMMSAMAXAMMSMSMSSSMSAAAMAXAMXAMSXMMMSMMMAMXMSMMMAMMSXSAMXXXMMMMXASXMAMSMSAMXSSSSS +SASXMSMSMMXAXMASXMAAAMXSXMMXMXAAXMAASAXMAMMXMAMSMSMASAMASMSXMAMXMMXAMAAMAAMAAXSXSSXSSSMXSMMXSXAXAMSAMXXAAXSSMAMMXASMSSSMSSXXAMXAMAAAAMAAAAXX +SSMAXXAXAXMSMSAMXMXSMSAMAMMAMMMSXSMSXMSMASMAXSXMAAMMSAMXSAAXMSSMASMMMSSSMSMSMMMMMMMMAAMMXAMAMASMMMMASMSSSMAMMXMAXAMXAAAAAAMXMAMXMMSSMMXSMAMS +SMSSMMXMXMAMAMMSMSXAXMASXMXASAMXAMXXMAAMASMAXMAMSMSXSMMAMMMMXMAXMAAXXAAMXAXASAAAXAAMMMMAMAMSMAXAMSSMMAAAAMXMXSMSMSMMSMMMMSMMSXMASXMAAXAMMSXA +MAAMAMSASMXMSAXAAXSXMSAMASXMSXSMSMAMASASASMXXMAMMAXAMAMXSXXMSAMXMXMMMMMMSMXAMSXMMXSSMSMXXAMXMMSSMXAAASMSMMXMMMAXXXAXXXXXAAAXAAMASASXMMMSAMAM +MMMSAAMAMAAAXSSMSMMMMMAMAMAXXAAAAMAMMMXMMSMXMSMMMMMMSAMSAAXSXMAMSMXXAMAMASMSMMMSSSXXAAASMSXSAMXMXXSMMXXXMSMMAMXMXSXMXMMMXXXMMMMASXMMSSXMAXSX +AMXMMMMAMXMMMAXXAAMASXMMMSAMMMMXMMAMXXXMAMXAXAAAXMAXXXSAMMMMAMSMAASMMSXXAXXMAXAXSASMSMXMMMAMMXAMSMMSSXSAAMAXMXAXXAXXASASXSMAAXSXMASAAXMSSMMM +AAMXSXMAXAAAXMXSSXSAMMAMXAAMMAAMSSXSAASMSSSSSXMSSSMSXXAAMSXSAMAMMSMAAAXMSMMMAMSMSMSXXMXSAMXMSMSXXAMASXMXMSSMMSSSMSMSMSASAASXMMMASAMMSSMAAAXA +MAXASXMAMMMSSXAMMMMMMSAMXSMMSMMSAAAMMMAAXAAXSAAMXMASASMSMAXSASXSXMASMASMAXMMAMMASXMASAASMMMXMAXMSMMASXXAXAAAXAASAAAAMMMMMMMSAXSAMAXSXXMMXMMS +MMMXXAMSMSAAAMAAAAAXASXSXXSXMAXMMMMAMXMAMMMMXXXSAMSMAMXXMMMSAMXMAMXMMXXMMSXSMSMAMAMAMMXMMAXXMAMXAXMSSMMMMMXSMMSMMMSXSSXSXMAXSMMXSSMMMSSSMSAX +SASMSSMAAXAMXMSSSSSSMMMMAAMMMXMAMXXMXMXXSXSXMMMMAMXMXMMMAXAMAMMSAMAXMMMSXSMXAAMMSMMXSXXMSMSAMAMSASXXXMAMXMAMXMAXXXMXAMAXSMMSMMMAMXAASAAAAMAS +SASAAXMMSMSSXXXAXMAMXMAMMMMXAAMSMMXSAMXMMMSAMXASXMSMSASXMMSSSSXMASMMSAAAAXAMSMMXAXMSMMXAAAXMASXSAXAAXMAXXXXMAMXXXAXMMMAMMXMAAASASXSMMMXMMMXM +MAMMMSSSXAAAMAMMSMAMASASAXXMASXXAXXSASAXXASAMMXSAAAAMMAMXSAAMAASMMMXSXSMSMSXXASXMSXAAXMMMMXMAMXMAMSMSMSXSAMAASXSMXSAAMMMXAXSXMSMSMAMMSXAASMM +AXXXAAXMMMMSMMAXAXXXXMASMSXAAXAXMMMSAMXMMXSAMXAXMSMSMMMMMMMXMSMMSAMXMAMAMAMXSMMAAXXMXMSXXMASXMSMSMAAXMAAMAMSMMMXMMMXMMASMMMMSXSMXMMMAMSSMSAX +XMASMMXMAAXAMXSXMSSMAMMMMSMSSSSMAAAMXMAXSASAMMSSMAAAXAXASXMSXXMAXXMAMAMMMMSAMXSAMSMSAAXAMSAMAAAAAXMSMSMXMXMXAXMXMASASMASAAASAMXSXAXMAMXMASMM +XXXXAXXMXXSASAMSXAAAXXMAMXAMMAAMSXSXSXMXMAMAMXMAMMXMMSXXSAAAASXSMSSXSXSAAMSAMXAXXAAMMSMMMMASMMMMMSSMAAXAAXMMMMSASXXASXASXMMSAXASMMMSXSMMXMAS +SMMSMMMSAAMXMASAXMSMMMMMMMSMMMMMMMMXSASXMSSSMASXMSAMXXMMMMMMAXAAXAAAXXMMMMSMMSMMSMSMAMAMXSAMXSMSAXAASMSSSMSAAXSASAMSMMMSAMXSAMASXSAMMAMXMSMM +XAMASXAMMSMSMXMMSMXMASAAAAXMAXSAXAMAMMMAAAMAXASMASXMAXAAXXMSSMSMMMSSSSXSXASMAAAAMXXMMSAMXMASXAAMMSSMMXAAAASMMMMMMMMAAAAMAMAXSAMSMMASXMSAMAAX +XXMAXMSXXXASMXMASAAXASXSMXSSMSMXSXMASASMMMSSMMSMMMAMMSMMSAAAXMAXAXAMAXAMMMMMSSXSXMMMASAMXMXSMMXMAAMAXXMMMMSAASASAASXSMMSAMXSAMXMAXAMAXSASMXS +SSMSMAAMXXAMMSMAMXASMSXMAMXAMMMMSXSXXAXXAXAXAXXAASXSAMXAXMMMSSMSSMMSMMMMXMAXAAAXXSAMMSXMAMAXMASMMSSMMSMXSXMMMSASAMAXXMXSASXMMMSSMMSSMMMAMXMA +XAAMMSMSSMXMXAXMMMXMASAMXXSAMXAAMASAMSMSSSMSXMSSMSAMAXMSSXAAAAMAAAAMXSAAASMSMMMMASMMXXAXAMSSSXXSXMAXAMXAMAMSMMMMMMSMMXAMMXAXXAXAXAAAXAMSMSAM +SMMMAMAAXAASMMMXASASAMXMSASMXSMXMAXAAAAXMAAAXMAMXMMMSXMMSXMASXMSSMMSASMSMAAAXXAMXMAXSSMMSSMAXXAMSXXASMMXSAMXSAMXXAXAMMMSMSMMMMSMMMSMMMXXASMX +XXAMXMMMSSMSAMXSMSASMMAASXXXASMSMSMMMXMXXXAMXSASAXAAAASXSXMAMXAAAMXMASAAMMSMSSXSXMXMAAAAMMMMMMSMAMMMMSAMSAMXSMMXMXSAMXMAMAAAXXAXXAAAMMMMAMXA +SSSSMSSXXAXSAMAMAMAMASMXMMAMMSASAMXSSSMXXXASXSAMMXMMXXMAXAXAMSMMXMXAMXXXXAAXAXMMASAASXMXSAXXXAAXMAAAAMMXMASMMXSXMMSMXAMASMMMMSASMSSSMSAMXMXS +AAAAASAMSSMSAMXMASXSMXXAAAAAXMAMAMAMAAMAXSAXAMASMSSSMMMMMXMAXAAAMSAMASXMMSSSMSASAMMMMAMMSXMAXSASXSSMSSXXSAMAMXSAMAMASMSASMMSAMAMAXAAASASAMAX +MMMMMMAMAMMSAMXSAMMAMXSSSMSAMXAMAMMMSMMAMMXMXMMMAAAAAAAAAASMMMMMAAAAAAAAAAAAAAXMASXASAMAXMASMMAAMAAAAMAMMASAMASAMASMXAAMSAMMASAMMMSMMSSMAMAS +XMSXMSAMXSMSAMXMMSAMXMAAXAMAXSMSXXSAMXMXSSXAXAXMXMMMSSSMMMSXAXXXASAMXSSMMSSMMMSSXMAXSSMMSSSXXMSMSSMMMMXMAXSAMMSMSXSXMSMSSMMSAMMAMXXAXMMSSMAS diff --git a/day4/input_test.txt b/day4/input_test.txt new file mode 100644 index 0000000..1f4eda2 --- /dev/null +++ b/day4/input_test.txt @@ -0,0 +1,10 @@ +MMMSXXMASM +MSAMXMSMSA +AMXSXMAAMM +MSAMASMSMX +XMASAMXAMM +XXAMMXXAMA +SMSMSASXSS +SAXAMASAAA +MAMMMXMMMM +MXMXAXMASX diff --git a/day4/task.txt b/day4/task.txt new file mode 100644 index 0000000..4533ba8 --- /dev/null +++ b/day4/task.txt @@ -0,0 +1,68 @@ +--- 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? + +Your puzzle answer was 2534. + +The first half of this puzzle is complete! It provides one gold star: * + +--- 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?