diff --git a/res/04/example b/res/04/example new file mode 100644 index 0000000..1f4eda2 --- /dev/null +++ b/res/04/example @@ -0,0 +1,10 @@ +MMMSXXMASM +MSAMXMSMSA +AMXSXMAAMM +MSAMASMSMX +XMASAMXAMM +XXAMMXXAMA +SMSMSASXSS +SAXAMASAAA +MAMMMXMMMM +MXMXAXMASX diff --git a/res/04/input b/res/04/input new file mode 100644 index 0000000..1e0e3c4 --- /dev/null +++ b/res/04/input @@ -0,0 +1,140 @@ +SXXSAMSSMMSMMSXXXXMMXMMMMSMMMSSSXSAMXMXSXMASXMSMXSMMXSMSXMMASXMASMSSMMXSMSSSSSSXSXMAMXAMXSMSXSXXMMMMMXXMSSMMSXSASASMMSXMASXSSSSSMXMASMSMXAMX +SAXMASAXMASAAXMASXSSXSAAASASAAXMASMXXSASAMXAAAAMMSAMAMXSAAXASAMSXXAAXMMSAMAAAASAMXXMMSXSASXSAMXMSAAAMMMMASXXAAXASXSAAXAXAAAXAAXAMSMMMAAAASMM +MAMSXMAXMMXMMXAXXXAAASMMMXAMMSMMMMXMXMASXMASMSMSASAMMMASAMMXSAMAXMSSMSAMAMMMMMMXMSMSMAAMASXMAMAASXSXSMAMAMMMMSMAMAXMMSAMMMMMMMSMMAAAMSMSMAAS +AAMMMSMSMSSMSSSMSMMMMMMMXMAMXAXAAXAMXMAMAAAXXXAMASXMAMXSXMSASAMXMXXAAMXMAMXXXXMMXAAAMMMMSMXXAMXXSXMAAMSMAMAXAAMXMSMMXXAXAAXMXXSXSSSMMAMXMSSM +MASXAAAAXXAAAAAAXAMAMXSAXMSMSMXSSSXXAMASXMXMMMXMXMXSXXAMAASAMXMMMSMMSMSMSXXMXSAAMMMMXAASXASXMSXXSAMSMMXSXSASXSSMAMAMAXSMMAMMXMMAXAXXXAMAXMAX +MAXMMMSMSSMMMSMMMSMASXMXSXAMASAAMXMSMSXSXMAXAXXSXMXMAMMSMMMMMASAAAAMXASAMXSMAMMSXMSSSXSAMXMASAMXMAMXXMMMXMASXAAMAMASMSMMXSXMAMMXMMMMSSMMSSSM +ASMSMXXXMAMAAXXMAXXAXXAAMMMSAMXSMAAAAAXMMXMSSXMXMMAMAAXAMMAMMASMSMSMMAMAMXMMASXMAAAAAMXMMASMMXMAXAMXMASMXMXMMMXSAXMAMSXAAXASMXSAAXXXAXAXAAMX +MMAXMASXXAMMMSMMSSMMSSMMSAXMAXSAMASMSMAXAAMAMASAXSASMXMAMSASMMSXMMMXMAMAMAMMXSASMMMMMXMAMAMMASMSSSSMAXXMAXAXXMAXAXSSMSMMXSAMSAXSSMMMMSMMMSMX +XMXMXMASMMMAAXXMASAAAXAASXSSMMSAMXAXAXMMSXSAXXMAXMXMXAMAMSAMMASXMASAMASASMSMAMAMXASXSSSMMSSMXSAAAXMXXMASMSASAMMSSMAAAXAMAMAMMMMMXMAXXAXAXAXS +MSXMAMAMMXMMMSAMASMMSSMMSAXXAAMAMMSSMASAMXMMMSMMMSSSSMSAMMAMXMSAMASASASASAAMMMSMSXSAAAMXSMAMMMXMSMSSMAMSMAASMAMAXMMMMMSMASAMASXMASASXMSSSXSS +MMXSAMXMSXSAAXXMAXXAXAXMMXMSMMSAMMXAXAMXMAAAASAMAXAAAMSAMSAMXXSXMXSAMAMMMMSMSAMXSXMMMMMMXXAMMSAMXMASAAASXMXMMXMAMMXSAMAMAMASASMSAMMSAXXAAXAX +XXXMMSAAAAMMMSASMSMMSSSXSAXAAASMAXMAMSSSMSSXMSAMSSMMMMSMMMSMMMMASAMXMAMXAAXXMASAMMMXMMAMSSMSXAASAMMSSMXMAXSAMXMASMAXAMSSSSXMMSAMXSSXMXMASMMS +MAXAAMMMMMMAMAAAMAAXAAXASMSSMMMMSSMAMMAXAAAMMMMMAAAAXXMAMAAXAAXAMASMSMSMMSSXSAMXXAMAMSASAASAASMMMSXMXMASXMMAMAXAAMMXSMAAMXXMAMXMMXMAMXMAXAAA +ASMMSXXAAMSSSMMMSMSMMSMMMXAXAMXAAXMAMMAMXMSMMAAMMSMMMXSAMMSSSSSXSSMAMAAXAMXMSMMMSSMMMAXMMSMMMMAXAMMMASAXAASAMSMSSXSAMMMMMXXSAMASXMMXMSMMSSSS +SXAXXASXXXAAXMMXSMAMSAMXSMMSSMMMSSMMSMMMXXMASXMXXAMXMMMSSXAAAAXAMXMAMMMMSSXXXMAMSXAXSASMXAAXSMXMASASXMXSSMMMXXAMXAMXMAMSXXXSASXSMMMSMSAMXAAX +ASAMXXMASMMSMASAXSXMXASAXAXAXAXSXAMAMAASXXSAMXSAMXSASAAAXMMMMSMSMXXMMXAAMMMMMSSSMSSMAAMXSXSMASASXSXMAXAMAASMSMMMMMMSSMSSMMMSXMAXAAMAASXMMMMM +AMXXXXMXMXMMAMMXXAMXSAMXSSMSSMMXMXSSSSMSAAMAMASMSMSASMMMXMXXXAAAXSMSMSMXSAXXAAMAAXXXMSSXSAMXAMMSAMXSMMSSSMSAXAAAAXXAAXAXAAXSASXXXMSMMMMXAAAA +MASMMXSASMSMSMMMMMXXAXXAXXAXXMAXSAMMAMAMXMMMMXXAMAMAMXMAXSASAMMMMSAAAMMASMMMMSSMMMMXXAMASMMMSSMXAXAAXXXAMAMAMSSSMXMSSMMSMMSXAXSXSAMXMAASMSSS +MASAAXSAMAMXAAASAMSAMXMMMMSMSMSXMASMAMSMMXMSMMMSMSSSSSXAASASAXXMSMAMSMMASAMXAMXMAASXSMMAMXSAAAASMMMSSMMAMXMAMXAXASMMMAXSXMSMSMAMSAMXXMXAAMAM +MAMMAXMAMSMXSSMSASAMSASAAMAXAAMMSAMXMAMAMXAAAAMAAXSAXAMMXMAMMMSMAMXSXMMASAMSMSAXSMSAMXMAXXMASMMMXAXAXASAMMMSSSMMMMAAMMMXAMXAAMSMSMMXAMAMSMSM +MMSMSMSAMMSMAAAXXXAMSASMSSMSMSMASXMASASAMXSSSMMMXMMXMMXSAMXMMAAMAMMMAXMASAMAASAXMAMXMASXSASMAMAXMMMMMMAMXSAAAXAMXASMMASMSMSSMSAAXMXAMXAXXAXA +SMXAAXMAMAAMXMXMXXXMMMMXMAXMAMMXMAXAMXMXMMMXXMMSMSMAAXSSXAAXMSSSMSXSAMMMSXMMMMXMXASXMXAASAMAAAMMSXAXXAXXAMMSMSMMAMMXXMAAAAAAXSXSMSMSMMMSMMMX +AAMSMSSMMSSSXAMSMSMSMSSMMSAMXMASMSMXSMSMSAMXMMXAAASASMAMMMMSMAMAAMASASXMXAMXSMMSSXMXMMSAMXMSSXXAASXSSMMMASAMXMXAAXMASXMSMMMSMSAMAXXAAAAXAAMM +MXMXAXAAXXAMMSMAAAAAASMAAXAMXSAXAXAMMAAASASXXASMSMMSAMASAASAMXSSMMASXMASXSAAXMAMMAXAXMAASMXAAAMSMMMXAAXSMMASASMSMMSAXAXMXSXMAMAMMMMSXMMXXMSM +XSAMXSSMMMAMAXSMSMMMXMXXSSSMAMASMSSSSMSXSMMMMMSAAAMXXSASXMSASAAAAMXSASASMAMSSMSSSMSMSMMXMMMMMMMAAAMXMMMXASXMASXAMXMASMMXASAMSSSMSSXXXSSSMAAM +MMASAMXMAMAMXMMMAXXXSMSMAAAMMSXMXAAMAAXAXAAXAAXMSSMMMMASXXMAMXXMMMASMMASAMXMAAAXAMAAAASMMXMAAXMSSMMAAAMSMMXMMMMMSSXAAMMMXSAMAAAAAXXXASAAMSMS +ASAMAMMXMMASXMASASMXMAAMMMMXXXAMXMSMMMMASXSSMSMXMAMAASMSXSMXSASXXMASAMXMMXXMMMXMXSMMMSAAASMSXSAMXAMSSMMAXAXAAAAXAMMSMMAMXSMMMSMMMSMMMMSMMMXM +MMXSSMSASXXMASAMAMMAMAMXSAMXMSMMAMMAMXMXMAAXAMMSSMSSMSAXAXXXMAXXAMXXAMMSXMXXSXSSXXMXXMMMMMAAAXXMMSMXAMSAXXSSMSXMAMXAMMSSMXXMXXXAXMASAAMMASAX +MMAXMAMASAMXASAMXMSAMASMSASXAAAMAXMAMMMAMMMMXMAXAAMMMMAMSMMMMAMMSMMMSMAMAMMMSAAXMAMMXMMMSMXMASXXSMMSAMMMXXAAMAMSSMMASAXAMXSAXSSSSMMSMXXSASMS +SMMSMSMAMAMMXSAMMMSASASASAMMSMSSXSSSMMMAMAAMAMXSMMMAAXAAAAAAXMMXXAXAXMXSASMAMMMMMAMAASAAXXMMSMXMXAAXAMAAMMMMAXMAMMMMMXXAMAMMAXAMXMAMMAXMMMXS +AAAXAAMXXMMMXSXMAXSAMXMMMAMAAXAMAMMAASMMSSXSMMXMAMSSSXMSSXSMSMSMSMMMSAASAMMMMXXAMSSSXSMXSAXSAMASAMMSSMMMSAAMMMMMXXAMMMSMMXSXSMMMAMASMXMASXAX +SMMSMMMMXSXSASMMSAMXMMMXSXMSSSXMMMSSMMAMAXXAXXAMXMAAXXXAXXXAAAAXAMXXMMMMASMASMMMAXAMXMAASAMSASMSASAMAAAAMMMXXAXXASMSMAAAMXSXXMAMAXMXXAMAMMXM +XMASAMXSSMAMXSAMXXMAMAMASAXAMXMASMMMMSXMASMSMSMSAMXSXXMASMMSMSMSMSAXSSXSXMMASAASMMXMXMXXMAMSAMASXMASXMMSSXSXSSSMASAAMSSSMAMMMSMSSSSMMSMAMXMA +XMAXAMXXAMAMXMMMSMXAXXSASXMAXSAMXAAXMXAMXMAXAAAMXSAXMSMMMAXMMXMAXXXXMAAXXAMXSMMAXMAMXMMXSSMMAMXMXSXMASMXAAMXMMXXAMXAMXAAMASAXAMAMAAAAXSSMAAS +SSMXSMMXSMASASASAMSSSMMXSXSMMSSMSSMMSMMMMMSMSMSMAMAXAXAMSXMXMASMSMSMMMMMSXMASXSMSXMMASAXXAASAMXMMMAXMMAXMXMAXMAMXMXMMMMMSASMSXSAMSMMMMAXMXSX +MAAAXAMAASMSXXXMAXAXMASMSAAMAXAXAAMAAAAXXAAAAAXMSMMMSSMMSMMASAXAAAAXXAAXAXMAMASXSASAAMSSSSMMXSAXMSSMXSMSXXSASMASAMMXXSSMMXSAAASMXMAASMSMSMXM +XMMMSAMSMMXMMMSSMMSSMMSXMMMMXSMMSSMSSSMMMMSSMMMXAAAAAAAASASXMAXSMSMXMXSSMMXSMMMASAMMXSXMAXSAAXMSXAAAAAXAXAMASMXMXXSAXMASMSMMMXMSASXMMAAAAMMM +XSAMMXMAAMSXAAAAAAXAMMSAMXXXAAXXAAMXAMASXMAXAXXXSSMSSXMMSAMXMAMMAXMXSAXXXSAMASMAMMMXXSAMXMMMSSSSMSSMMMMMMSMAMXXMAXAMMSMMXXAAMSAMXSAAMSMSMSAS +MSASASMSSMASMSSSMMMAMASMMMSAMMSMSMMMASAMXMASMMSXMAMMMASAMMMMMASMAMAAMMMMSMASMMMMSMXMAXMMAASAAXAMAAMAMXXXAAMAXXAMSXMMAXXMXSSMSMAMASMSXMAXASAS +ASXMMMAAAMXMMMMMASXXMXSXSASAMXXAMAXSMMXSXMXMAAXXMASXMAMAXXAAMXXMMMMMXXAXXXAMXAAXAMSSSMMSMSAMSSMMMMSSMMSMSSSMSSMAMAXMXMAAAMXMAMXMASXAAMMMAMAM +MSMSAMMMMXAMSAASMMAASMSAMXXAMXMAMXXSXMMMAMMXMSMMSASAMXSXMSSSSSSXAAMMASMSXMSSSSMSASAAAXMAMXMSMXXXXXXXAAXAXAAXAAMAMMMSMSMSAXAMAMXMASAMXMAMXMSS +AXAMMSSSXSMXXMXSAMSMMAMMMXMSMSMSAMXSASAMAMAXSAXMMAXMMXMAMAAAAAXMSMSAMMAMXMAAMAASXMASMSXMXSXMAMMSMMMSMMXMMMMMSXMASAAXAAAAASMSMXAMMXXXAXMMAMXM +MMSMXAAMMXMASXMSXMAAMSMMXMAMAXSMMXAMXMSSXSMXSAMXAAMSAMXSMSSMMMMXXASMXSSSSMAXMMMMXXAMXXASASAMAMAAASAAAXMMSSXMXASASMSMMXSMXMAAXSXSSXMSXXSASXSS +XAAMMMMMAXMASAASMSSSMMMSASMMAMMMSMMXSAMXMAXASAMMMSSXASAMXAAAXXXXMAMXAAAAMMMSXXMAMMMSXSMMASAMAMSXSAASMMSAAMAXMAMXMXAXSXMXXMMAMXAMAAMAAAXAMASX +SSSXAXAMSMMAMMMMAMAMASASAXAXAXAAXAMAMMAAAXMXMAMXAMMMMMMSMMSMMSMXMMMXMMMMMAAMASMASAASXSAMXSAMXXMMMXAMMAMMXSAMXSSMMSMMSAMAXXMASMMMXMMMSMMXMXMM +MAXMSSXXAAMMXXXMAMXMAMXMMSSMMMMMSAMAMASMSSMSSSMMMSAASAMAXMXXMASXSAMXSAMXMMXSAMMAMMSMAMXMMMMMMAAASAMXXMSXAMMSAMAAXXXASXMASXSASXSSXAXXAXAXXAXA +MXMMMMMSSSXMAXMSAXXMASXMAMAAXXAMSXMXMMXAMXAMAAXASMMMSASASXMASAXXMASASASXXAAMAMMSSMAMAMAMMMAAXSMMXAXXSSSXAMAMASMMMAMMSMMMMXMASAAASMMMSXSAMXMS +SMXAAAMAMAMAMSASASXMASXMAMSSMXMAMXXMASMSMMMMSMMMSAMXXXMASAXXMASASMMMMXMASMSMSMXMAXSSMSMSAMXSMMAMSSMXSAMXMMMSAMXMAMMAXAAAXXMSMMMMAXSAMXMASAAM +MMSSSSMAXXMAXMXMXAMXASXSXXAAXMSSSMMSMMAAMXMAXXMAMAMASXMMMXMXXMAXXMASXAXXXAMAAXXSXMMMMAMXASXMASXMAMMSMMMSMAXXMAXXXXMXSSMSAAXAAAXXSAMXXASASMSS +XAAXMAXMSXMXSSSSXSAXASAAXMSMMXAMAXAMXMAMMAMMSASASAMAXSAAAXMXSSMMMSASXMMAMAMSMMMMXAMXSASMXMXXAMXMASMAAAAAMSMXSMSMSASAMXAMXSMMSMSMMSSMSMMASAAM +MMSSSSMXAASAMAAAAMSMMMAMXMAXXMASMMXSAMAXXASXSAMAXAMXMSMMMASAAAAAAMMSAMAMMMMAXAAMMXMASASMASXMSMMSAMXSSMSXXXMMXAAAMXMMSMMMAMAXAXMXAAXMAXMAMMMS +AMAMAMMMSXMAMMMMMMXSMASXMSSMXSMMASXSASMSMMSAMAMXMSXSAMXASXMMXSMMMMAMAMSXAASXSSSXAAAMMMMMSMAMMAXMXSAXXAXMMSAMMMMSMMMAAAAMMSMMXSMMMMSXMXMMMMAA +SSMMAMXAXASAMAMXAXMAXXXAMXXAASXSMMASAMASXAMAMAAMXMASMXSXSMASAXXMASXMMMXMSXSAAAAMMMSXAXXXASXMSMMAAMMMMMMSAAAMXXAXXAMSSSMSMAMSMMMAAXSAXXASMMMM +XMASMMMMSASASASXMSMSAMSMMAMMMMASXMAMXMAMASMSMMSMAXXXXAMMMMAMXSASASMASASAMAMMMMMASAMMMMMSXXMMAAMMMSAAAXAMMMMMXMSSXMXXMAMXMAXAAASASAMAMSAMAAMX +SSMMSAAMMMMASASXSAAAMAAXMASMMMMMAMXMXMXSXXAAAXAMMMSAMMSAMMXSXSAMXSXMMAMXMAMAXXXSMAMMSAAXAMXSSSMXXSXSSMMXXAMXMAXAASXMSSMMSSSSSMSMXAMSMSASXMSS +MAMASMMMASMMMAMXAMSMXSMXAXSAAAMMXMAMXXXAAMSMMXSASXAXMAXASXXXAMMMMXAXMXMXXASXMAMMSSMASMSMXAXAAAMXMXMAXASASMMSASMSMAAAAMAXAAXAAMXMMMMMASAMMMAM +SMMMXAXSASAMMMMXMAMXMAMXSXMXSMSAASXMMMSMMMXAXXXMXASMSXSMMMMMSMAAXMMMMMMSSXSAAAMAAMXXMAXAXSMMSMMMAAAXSMMMXSASMXAXXSMMMXMMMSMSXMASAMAXXMMMMMXS +MXASMSMMASMMAAXMXSSMSASMXAAAXMMMXMAXMAMAMASMMMSMXXMAXAMAAXAAAXMXSASXXAAMMXSXSSSMASAMMXMXMXAXXMMMSMSXAAAMXMXMAMAMAXMASAXMAMMXASXAXSXSXMSAMSMS +XSXSAMXXAMASMSXMMXAASASAMMMMXMAMMXSMMSSSMMSAXAAMMMMXMXSMMMMSSSMXXMAXMMSMSAMXXXAMAXAXSMSXSSXMSAMAAXXASMMSAMSMMMAMXMMAMMMSXMAXAMXMMAXSAMMAMAAS +MMMMMMMSMSXMAMASMMMMMXMMMXSASMSXMAAAXAMAAASMMSMXAXMAXMMXMAXAAAMMSSMXSAMXMAXXSSXMAMSMAAMXXAMXXAMSMMAXMAMXAMSAMSXXMSMSSSXMASMSASAXXMXMASXSMMSM +MAAAXAAMXSASXMAMAAAXMXAXXXSASAAAMSSMMSSSMMSXAAASXMSAXASAMXMASMMAXXXAMASXSAMSAMXMSXMAMXMMSMMSMXMAAMXAMXMSMMSAMXMMAMAMAXXMAMXAASMSMXXSAMAAAXAX +SSMSMMXSAMASAMSSSMMASXSSMAMXMMMMMXAXXMAMAMMXSMAAAXMAASAMXXXMMXMSSXMMSXMAMAXSAMSMMAMXXSAAMAAXMASXMMMMSMMASASAMAMAXMAMMMSMXSAMMMMMASAMXSSSMMMM +XMAMXAAMMMAMXXAAAMSMXAAXMAMMXMXASXMMMSMSAMMMXMMMSMMSMMAXMMMMMXMAAXSXSXMXSMMSAMXSMMMMMMMSSMMXSASAAXSAAMSAMXSASXMAXXXSXAXMAXAXXAASMMMMAMMMMAAA +ASASASMSXMMSSMMSMMASMMMMSSXSAMXMAAXMAXXSMSXAXXMAXAAXAXMMMXAAMMMMSMMASXMXMXMSAMXAXXAAAXAMXMMXMSSXMXMMSXMASASMMXMSSXAMMSMSSSMMSMXSAAAMAMAXXMSS +XMASAXAXMSAAAAMMASASXAMASAASMSMXSSMMXSAMASXXMAMXMSMSMMSSMSSXSAMXMAMAMSMAMAMXAMXMMSSSSSXXMSSMSAMASMMAXAMAMMSXASMAMMAMXMMAMAMAAMAMMMMSXSMMXMAA +MMXMAMMMAMMSSMMSAMASXMXMMMMMMAMAXAXAAMAMAMMMMXMAXXXMAXXAAAASXMSASAMMSAXASASMMXAXMAMXAXMASAAXMASAMAMASAMXMASMXMMAXAMXXAMASMMMSXMSMSXSAAAASMSM +ASMMMSAAXMXAAAXMMMXMXSAMXXMAXAXMXMMXXMSMXXAAMAMSSMASXMSMMMSMSASMSAMXSAXMSASASMMXMXSMSMSXMASMSMMMSSMASAMXMAMSASMMSSSSSMSAMMAAMAMAXSAMSMMMXAAX +MAAAASASMMMMSSMMSSMSASASXMSXSAXSAXAMXMMASASXMAMAAMAMAAXAAXXXXMXAXXMXXMAMMMSAMXMAMXSMMASMMAAMXAXASAMXMAMXMAXAMXAAXAAAXMMMSSMMSAMSMMAMXMXSMAMM +MSMMXSXMMXAXAXAAAASMASXMAXAAMAMXAMXSAAMAMAMXSSSSSMSSSSMSMXMAAXMMMAXMASXXAMSAMXXASMSAMAMAMAXMXMMMXAMAXSMSMMXAXSMMMSMMMSXXXAAASXSAASMMXSAAXMAS +MMAMASMAMSSMMXMMXXMMMMMSMMAMSSSMMMASMSMAMMMXXAAAMAXAAXXXMXMSSMAMSMMMAMASMMMXMSSMSASMMMSXMXASASXSSXMMSAAXAASXMMAMAMAXXAMMSMMMMXXXXMMSAMXXAMXX +ASAMMXMAAXAMXASMSMSMMMMAXXAXXAXMAMMSAXXAXAMMMMMMMMMMMMASXMMAAXSAAAAMAMXMXAXAXXAXMXMXAXMAMSMXASAMXXMXAMMMMMXMASXMASAMXMXAXASMSSMMSAAMXSAMSXSM +MSXMMXSMSSSMSASAAAAXAXXMXXMSMMMSAXAMAMSMMMMAAMXXAAAAASMASAMSSMASXXSSXMAASMSSSSSMMAMSMSMXXASMAMMMXMASMXSXXAXXMMMXXSXMXXMXSAMAAXMASMMSMXMXMASA +XMAMXMXAMAMAMAMXMSMSMSMMSSMAAAASMSMSAAAAASMSSSMSSSSSXXXAASMAXMAXXAMAMSSMAXAXAAAAXAXAXAAMMAMXMASXMMAXXMXMAMMAASMSMMAMMSAMXXMMMMMMXXMAXMXMMAMM +MMAMAMMMMMMXMXMAXXXAAAAAAAXSXMXSAAXSMMMMMSAAAAXMAMXXMMSSMMMXXSAMMMMAMAMXXMMMMMMSSSSSSMMMMSMMAMMAAASXMAAMAMSSMMAAMSSMAMSSXMMXXSAXSASMXSAXMAMX +XXAXAMAAAMAMXMMXSXMMMMSMSSMMASMMXSXXMSMSAMMMXMMMAMSMAMXAXMMSMMAAXMSSMXSXXASAXXAXXXAAXASAAXAMXSSSMMAAASAMXXAMXMMMMAAMMSAMASMAMXAMAMXMASXXSAXX +XSMSSSSSSSMMSAXAAAXSAAAXXMAXSAXSAMXXAAAMSSXSAXXSAMASXXSXMXAXASXMXXAAMAAMSMSMSMSSMMMMMXAMMSXMXMXAAXSSMMAMXMASMMASMMSAMMAMAAMASMMMMMXMXMAMSMSM +MAAXMAXAAXAASMMMSXMXMSSSMMSXAMXMASXMSMSMAMASMXMAASMXXAMXMMMSXMAXMMMSMSMMAAXAAAXAXSASXAMMMXXSASMSMMMXMMAMXMXMAXAXAXXAMXXMXXMASASXXSMMMMSAXMAM +MMSMMSMMMMMMSAMAMAMSMMXAXAMSMXMMAMXXAMAAAMXMXMSSMMXSSMMAMAMXAXMMAAMAAMASMSMSMSMSMMASMSXXAAXXAMAXASXAMSMSSSSSSMXSSMSSMXSMMSMMSMMMMAAXXAXMASMS +XAAAAXAAXXMASAMASXMAAXMXMAMAXAMMAMXXASXSXSXSAXMAMXXXAAXXXAMSXMSASXSAXSMMAXAAXMXXXMAMMMMMMMMSXMMSAMSMMAAMAAAAMMMMAASXMASAASAMXXAAXMSMMXSXAXSA +MSSMMSMMMMSMSAMASASMSMSAMXMMSASXSSMSXMXMAXAXMSSSMSMSSMMSSMXSMASAMXAXMMMMXMSMSMXMSMMSAXXAAXMASMXMMMMSSXSMMMMMXXAMMMMAMASMMSXMAXXSSXMAMAMMMMAM +XAXXMAXAAAAASAMXSMSAMXSASASXMASAAAAXAMAMMMSMSAMXAAAAAAAAAXASAMMXMASXSXAXSAMXSMAMAASMASMSSSMAXXAMXAXAMAMXSXSXXMSMMAMXMASAXXMSMSMAMASAMASASXMX +MAMXSSSMSSSMMAMAXXMAXXMASASXMMMMSMMMSMASAAXSMSSMSMSMSMMXSMXXMXAAMMAAMSSMSXSAMSMSMSXMMMXXAXMXMSMMSXMAMXMASAMAMAAASMSSXAMXMAXXAAMSMASASXMASAXS +XSMAMXXAXXXASXMASXXMMMXMMAMAMAAXMASAASMSMXMAMXXAMXMXMXMXMASMMSAMXMMMMAXXSAMXAMXXXMXSAMSMMXAMXXAAAMMSMMMAMAMAMSSXMSAAMMSSSXMMSMSAMASMMMMAMMMS +AAMXMAMSMSSMMSXMAXAXMAMXMAMXSMMMSAMSXMMMXSXMMXMMMXSASAMXSASAAMXMXSAAMMMXMXMMMMXMAMAXXMXAMMMXASMMMSAMASMAMXSXXXMASMSMMAAASAMXAXXMMXSAAMMASXAM +XMSAMXMAAMMMAMMSASMSMSMXSAXMAMSAMXXXMSXSASMMSSMASXMASAMMMAMMMSMSAXSSSXMSSSMSAAASMMMSMMSSMASMMXSMAMXSXMMMMXAMMSMMXMASMMMSMSAMXSSXMAXXMMSXSMMX +MMMMMMSMMMAMMSAMXSXXAAAXXASMAMMAMMMAMMAMASXAAASAMMMAMXMSMMMSXAAMAMXMXAAXAAASMSMSAASAMAAASMMAAAMMAMXXAMASMMMMAAAMAMSXMAXXMASMAAMAMXSMSASASMSM +MAAAAMAMXSXXAMMXMXAMMMSSMMMMAMSAMAMAMMAMAMMMXMMXXAMASAXMASAASMSMMMMASMSMSMXMXXXSMMSASXSMMXSSMMSAXXXSXMAXAAAMSSSMSXMASMMMXMMMXMSXMAAAMMMAMASX +XSSSMSMXXXAMSSSMSMSXSAAXAAXXAXXMSASASXAMMSSSMMSMSSSMMMXSAMSMMXXXXAMXMAXAMMMSASAMXXXMMAMXMAMAMAXMMSAMXXASMMMXMAXXXAMAMAASMMMMSAMMMMMXSXMSMMMS +XXAMAMXSSMMMAAAAAAAAMMMSSMSSXXAXSXSASXXSAAAMAASAMXAXSXAMXMMXMASXSMSXMMMSMAAMXXAASAMXMXMASAMXMXSAAMAMMXMAXAMMMMMMSSMSMSMSAXAAMMMAXXSAAMMMAAAS +XMAMMMXAAASMMSMMMMMSMMXMAXXAASXMSASMMAMAMMSMMMSSMSMMAMXSMSAMXAXMASXMSAAAMMSSXSSMSAMASXSASASMMXMMXSASXMSASAMAAAAXAAAMMMAXMMMSSMSSXSMMMMAXMMMM +AMAMXSXMSMMMMMMXXXAAMMASAMMMMMXAXXSAMMAXSXMAMAMAXMAMMSMMMXMSMMMSMMSASMSMMXAMAAMASMMMSAMASXMAMXXAAXXSAAAAXXXSSSSMXMMMASAMXMAAAXMAXXAXAXXSMSSM +XSAMXMAMAAAAAXSAMXSAXSASAMXAAXMSMMXAMXSXMMSAMASMMSXMXAXMAMMAMAAXXAMMMXXASXAMMMMMMAAAMMMMMMSASXMSSSMMMMMMMSXMAMMMSMXMXMAAAMMMXMXMASMMMSAAXAAX +MAMSXXSAMSSSXSAMXXXMAMXSAMSSXXAAASMMMAMAXAMAXMXMAAASXSXSMXXASMSSMMSAMXMAMMMMAAAAMXMSMMAAAASMSAAAAAXAAMXMAXAMXMAAAAAMSSMSASMSSSSMMASAAMXMMSSM +XMAXXXMAXAMXMAXMXAMMAMXSAMMMMXSSMMAXMAXSMSSSMSSSMSSMAMASXSMAMAAXAASASAMAMAMXSSSMXSXXASXXMXSXSMMMMMSXMXXMMSSMMSMXSSMMAAAMAAAAXAXAAAMMMXSSMMXM +XXMMMMSAMMSSSSMMXAXMAMXXXMSASMAMASAMSSXXAAAAAMAAAXAMXMXMAMMXMMMSMMSASAXAXASAXMMAASXSAMAASAMXMASXAASMSMSAAAXXASAAMAMMMMMMXMMSMMSSMSSXSAMASAXS +MXXAAAXMSXMMAXAXSMMXSSSXMAMAMMXMASAMAXAMXMXMAMXMMMXSXMXMSMAXSSXXAAMXMMSSSMMMSAMMMMAAXMSMMASXSAMAMMMAAAMMMMSASMMMMAMXSMAMXMAXAXAXAAMAMASAMSMA +AMSSSXMASXMMMMXXMASMMAXXSMMSMMSMXMAMAMSMSSSXXSAASXXMASAAMMXSAAXSMMMMXXAMXMAMMAMAAMAMSAMXSXMXMMMAXSMSMSMXMASXMXSXMXMAXAAAAMASXMMSMASMSXMASAMM +MAMAMXSXMASAXSAMSAMMMXMMSAAXAMAMXSSMASAAMAAAAXXSMAXXSAMXSAMMMMXSAAMSMMASAMAXMASMSMSXSAMXXSMXSXSMSAAMAMXXMASAMAMMSSMASXMSMMMSMAXXXAMXAMXSAMXX +ASMSMAMASAMMMAMAMASMSMSAMMMSXSASMXMASMMSMMMMMSSMXXXSMMMXMAMAXXXSMMXAASASASASMAXMAXMAMAMMMSXXSAMXAMMMAMMMMXSXMASAAAMAXMAXXAMXMXMASXMSAMXMAXMS +XMAXMASMMMSAMASMSAMXAAMXMAMXMXASXXAMXXAMMSAMXMAAXSMMAAXXSSMSMMMMMXSSXMASAMASMXMAMAXAMAMAAXMXMXMAXMASASAAXXMASASMSMMSSSSSSXSAMXMXAAXMAXSMAMAM +SMAMSXSAAASASXSAMAMSMSMMSMSASMSMXMASAMXMASMSAMMMMAAXSMSMMMAAMAAAXXXMAMXMXMAMAMMMSAMSSMSMXSASAXSASMXSASXSSXSXMMSAAAXAMXAXAMMMMAMSMMMSXMAXAXAX +SMSMSASMMMSAMXMXMAMMSMXAAMSASXAAASAMXXAMAMAXMXSAMSXMAMAAAMSMMSMMSAAMSSXMAXXXAAMAMAXMAXXAXXMAMXMASAASXMAMAMXXXAMMMMMASMMMXMAXXAXAAXAMXAMSSSMS +SAXASAMXXMMAMSMMSASXAMSMSXMXMMMSMSASASMSSMMMSASAXAASXSSSMMMMXXMMMMMMAXAXASMSMSMXSMMSMMMSMMXMMMMXMMAMXMAMMAXMMMSMAASXMAAAMSMXSSSSSMASMSXAXAAS +MAMXMAMXMASAAAAMSASMAMAAMXMAAAXMMSMMASAAMMAMMASMMXXMAAMXMSMMAMAAAAMMSXMMMXAAAAXMAMMAMMAMXXAAAXSAMXMMXSXSXSXAAAAMMMXAMSMSMASXAXMAXMAMMMMMSMMM +MMMSSMMAAMSXSSMMMAXXASMXMAXXSMMSASAMAMMMMMAXSXMASMMMSMMAMASMASXSSXSAMAMXSMSMMMSSSXSASMSMAXSSMMSMXAAXMSASAMXSMSSSMMSAMAMAMAMMAMXASMXSAXAAAAMA +MAAXMASXSXMXMAXAXXMSMMXASXXMAAAMMSAMSSMAAMMMMASXSASAAASXSAMMASAXAXMASMMASXXXSXAMXASMMMAMAMXAXXMASXSMMMAMAMAMMMMXAMMMSXSAMMMSMMMMMAMSMSMXSSMA +SMSSSXMAXAMXMAXXSSMXSSMXMAASMMMMXSXMMAXSSSMAXMMAMAMXSMMXMASMMMXMMMXXMMMXMAMXMMSSMXMAXSAMXMMASMAXXMAAAMAMXMMSASAMMMAAXAMMXSAAMMAAAAAXMAMXMAMM +MAMXXXMXSMMSMSSMAAXAMXXASXMMAAXXMMMXSAMXAAXMSSMMMSMXMAMXXAXASXXMAAXMAXMAMSMSAMMMAMMXMSASASMAMMMMSMSXSSMSAMMSXMASXSMSXMMSAMMSMSXMSXSMSASMXMMS +MSMMSMSAAAAXAAAMSMMSSMSXXAAXSSXSAAAAMXMMSMMXAMAAXAAASAMXAXMAMXASMXXMAMMAXAAMXSASASXMASAMASMMMMSAMAAAXAMSXSASXSAMXSAMXAAMASAXXSMMMAMAMMSMXSAA +XXAXMAMXMMMXMMSMAXAXAXMASMMMXAAMMMMXSXMAMMAMMSSMSXMMSSSXMMMSSMMMXAXMMSSMSMSMXSASASXXAMAMAMAMAAMAMXMSMAMMASASAMAMMMAMSMMXMMASASXAMAMSMMMXXMAS +MSMMMAMMSSMMSAMMMMXSXXMAMAAXMMMMSSSMXASASMAMMAMXAASXXXXAMXSAAAMAMSMMSAXAAMMMAMMMAMAMMSSMASAMMXSMMMXMMSMMAMXMAMMSSMMMAASMXMXMAMMXXXMAXAAMMSAM +AXAASXSXAAAAMMMAXMMMMSAMXSMXMASMAAXAXASAMXAXMASAMMAAMMSMMXMSSMMASMAMMMMSMSAMXXAMAMMAAAXXMMMMSAAAAXXMAXAMMXASMSXAXMAXXMMAASMMSMAXMSSXSXSAXMMS +SXSMSAXMSMMMSSMMSXSAAXMSAMXMXMXMMSMSMAMAMSSSSMSAXXMSAAAAXMMAMXSXSMSMAMXMXMMSAXSSMSSMMSSSMXMAXMSSMSSMSSSMMSMSAMMSMAXSSSMXMMAAXMSAXAAMAAMXXMMM +XXXASMXMXAMAMMAMAAXXMXAMXSMSAMXSXAAXAXMXXAMMAASMMSXMASXSMASASXSAMAMSXMAMXMXMXXMAMAXAXAAAMSMSXXXAXAAAAAAAASXMAMXXAMSXAAAASMMMMAMMMXSAMXMXSXAM +SMMAMXSMASMAXSAMMSMSMSAMASASASASAMAMSSMMMSSMMMMMAAAMAAXAMMMASXMAMXMAXMASASAAXXMAMMSMMMMMMSAAASMMMXMMMMMMMSASXMASAMXMMMXMXAXSMXXXXAMXXMASMXMS +SAMXMASXAXSXMSXSXMASAAASASXMAMASMMAAXAASAMAMXSAMMSXMXSSMMAMXMASAMMMAXSAMASMSMMSAXAAAXXMMAMMMMMAXAMXMSXMAMMMMAMMSMMXAXAXSSMMSAMXXXXXAXXMAXSMS +XMMXMASMXMAMXSXMAMAMXSMMASXSXMXMXSXSSSMMXSASASAMAAAXAMAXXXXXXXSASAXMMAAMAMXAAXXAMSMMMMXMAMAMASMMXSAAAASXSMXSAMXMXMXSMMMMAAAXASAMSMMMMMXMXSAM +MXSAMXSAXMASAMMSSMXAAMAMXMAAMMXMAMMXMXAMXXXMASXMXSMMXSXMASMXSASMMMAMXSMMSSSMSMMSMMASAMXSMSMSMMAAASMMMXMAAMMMMXAMXSAMXMASXMMSXMAMAAASASXSAMAM +AASASMMXMMMMASAAXMSMXSAMAMXMAMAMAXMAMMAMXMXMAMXSAAMSAMXSXSAXSASAMXSAMXMXXAMXXXXMAMXMASAMAAXAMSMMMSAMXMMSMMAXAMAXMMMSASXSAXMSXSXMSMMSASAMXSAM +SXSAMXMXXAAMXSMSSMAAXSMSMXAXMSSSMXXAMSAAASAMMSXMXSAXSAMXAMXMMAMXSMMXXMAMXAMMMMMMAMASMMASAXSAMAASASMMSXAMASMSSSMSAAXXMSMXMSMXAMAXMAMMMMAMASAS +XMMMMASMSSMSASAMAMMSMMXMASMSMAAAAAXSMSXSMSXSXMASXMMSXXMMXMMXMAMXSAMASXMAMMMXAXASASAXASAMMMAXMMSMASXAMMXSAMXSAAAAXSSSMMAXXXXAASXMAXMAASXMXSMM +XMASXMSAAAAMAMXXAAXAAXXMAXAAMXSMMMAMXSAMASXSAMXSAAXXMMXMAXAXSMSAMAMASMMSMAMSASXSXMMSMMAAMSSSMXXMXMMAMSMMXMXMMMMMSMAXAXSMSMASXSMMMMSSMXXXXMXX +MSASAMMMMMMMSMMSAMXXAMXASMSMMAXXXMMSAMAMXMXXXMAXXMMMASAMSMSMSAMASAMXSAAAXAMXMAXSMMAAXAXXXAAAMSMMAXXMASAMAMXXXMAXSMMMSMMAAAMMXMAAAAXAXSMSMSAS +AMAXAMXMXSXAXAXSMMMMAAMXXAXMMMSMXXXMAMMMAMAMXMSSSMSAMXAMXAXASMMXSASASMSSSMSSSMAXAMSSSSSSMMSMMMASMXSAXSAMXXXMASAMXAAXMSMMMSXMAXSMSMSAMAAAAAAS +SSSMXSMMAXMMSXMXAAXMSXMMMSMMAXAASMMMAMAAAMASAAXAXMAMXMXMMXMMMXMMSAMASAMXAXXAAMXMXMAAAMAAXAAAAMMMXAXXXMASMMSXMASASXSMMASAXMAMSMMAXAXMMMXMSMSS +MAAMAXAMSSSXSMASMMSXMASAAAASXSXSXAMSMSMSXSASMSMSMSSMMAXXMXMXMXXAMXMAMMMSMMASXMXSASMMMMSMMSSSMMAMMMMSXSASAAXASAXMMAAMXAXMMMAMXAMSMMMASXXXXXAX +MMXMXSMMMAMAMMMMAASASAMMMXMMAMXMMSMAXAMXXMAXXMAXAAXMAXAAMSMASMMMSAMMSAMAAXAMAMASMSAMXXAXMMMXMSAMAAAMMMASMMSMMXMASMMXMMSAASMMSMMMAASXMASMMMAS +MXMSMMXAMAMAMMSSSMSAMMSSSSMMXMAXMASMSSSMXSAMXMSMMMXSASXSMASASAAAXASASMSXSMMSMMXXXSMMSSMSXMMAMSAASMSSXMXMXMAXSMSXMXXXASAMXSAAXAAMSMSASAMAASXS +AMAAXMAMSXXXMXMAMAMAMSAAAAASAMXSAAXXAXAXAXSSXXMASAAMAAAXXMMSXMMSXMMASASAMXMAMXMSMMXMAASXAAMAMMMMMAMMXSMMSSMMSAMXMXMMMAAXAMMSMSXMXXMXMAMXMSAM +MMSXSMMMMMMSMXMAMXMSMMMXSXMSXMAMMMSMSSMMSXXXXXXAMMXMSMMMSXMMMSAXAMMXMASXMASMSAAAAMAMXSMMMMSMSAMXMAMXAXAAAAMXMAMXSASASMMMXMAAMXMMMSMMSSMMXMMM +XAAMAMXAAAAAAASMMMXXAXXMAMMXXMAMAAAXXAXAXMSMSMSXSXXXXXSAXAAMAMASAMSAMXMASXMASMSMXSASXMAMSASMSAMASXMMSSMMXSMMSAMASASXSAMMAMXSMMXAAAAMAMXMAMAS +MMSXSMSMSMSMMMMAAXMSXMXAAASAMMSMMSMSSMMMMAAAAAAAMAMSMMMMSSMMAMMMXASASMSAMXMAMAMAXSASMMAMMASXXAMAMASAMMASAXXAXMSXMXMXSAMMAXMAMAXMXSXMASMSMSAS +MSMXMASAXXMXSXSSMSMAMMMSSSMASAAMAMAMXXAMXMSSMMMSMAMAAXAXMAXSAMMAMXSAMAMSMXMASXMSMMXMMMASMSMMXXMASAMXSMAMAMMXSAXMAMMXSAMSAMSAMSASAAAMASXAAMAS +XAMSMAMAMAMMAAXMAAXAAMAAMAXAMXXMASAXSSXSAAXMMSAXMAMXMSSSSMMSMSMXSAMXMXMAMAMAAAMXAMMSXSASXAAXMSSMMMSAMMXSXSAAMAMAXASASAMMAMXAAXAAMSSMASXMMMMM +SAAXMASASAMAMMMMSMSSSMMSSSMSXSXMASAMXAAMMMMAMMMSMSSSMAAXAXAMSAMXMXASMMSXXSSMMSMASAAAMMASXMMMXAAXAAMASAASAMASMMXXSAAAMSAMXMMSMMMMXAAXMXXXAAAS +SMSMSASMXMXSAMAXMXAAXMAAAMAMAMXXAMASMMMXXAXAMAMMAAAAMAMSXMXSAMXSAMXMAAXXXMAXAAXAXMSMAMXMAMSSMSSMMSSMMMXMXMXMAMAAMMMXMAMMSXMAXXMXMSSMMMMSSSSM +XAAAMASMSMAMASMSSMMSMMSMMMAMXMXMASXMAMAASXSXSASMMMSXMAMMAMXMAMAAAMMSMMMSXSAMSSMSXXMXXXMXMSAMAAXMAAMASMMSSMASAMXSXXXMAMAMXAMSSXMAMXMAAAXAAXMX +MMMSMMMAAMASAMAMAMAMXAXXXXXMAMXSAMMXMMMXXMAASMSAXAXASMMSAMASMMSSMMMAAAAAAMAMXXAAMAMMSMMSXSAMMMSMMSSMMAAXAMASMMAMMXMMASXMSSMAMMSMSASXMSMMSMAA +XXXMASMSMSAMXSASAMASMXMASMASMSAMASXXSAMXXMMMMASXMMSAMAASAMXSAXMAXSSSSMSSXMAAXMSMMMXAAASXASXMASAMXXAXSMMSAMXSAMMXSAAMASAAAAMAMXAMXASXAAASAASM +XSXMSAMXMAMXXSMSASASAMXAXSAMXMMXSAMXSASAXXSXMXMSMXMXMMMSSMMSXMSAMXXMAMXXASXMSAMXXMMSSSMMMMXSXSXSXSAMXAXMXMASAMMASXSMMSMMMSSSXMASMSMMSSSMSMMX diff --git a/src/days/d04.rs b/src/days/d04.rs new file mode 100644 index 0000000..85d85a4 --- /dev/null +++ b/src/days/d04.rs @@ -0,0 +1,81 @@ +use std::fs; + +pub fn solve() { + let path = "res/04/input"; + + let contents = fs::read_to_string(path).expect("Something went wrong reading the file"); + + let grid = contents + .lines() + .map(|l| l.chars().collect::>()) + .collect::>>(); + + // add rows + let mut strings = grid + .iter() + .map(|l| l.iter().collect::()) + .collect::>(); + + // add cols + for i in 0..grid.len() { + let col = grid.iter().map(|l| l[i]).collect::>(); + strings.push(col.iter().collect::()); + } + + // add diagonals + for i in 0..grid.len() { + let mut diag: Vec> = vec![vec!(); 4]; + + // left-to-right + for j in 0..grid.len() { + if i + j < grid.len() && j < grid[0].len() { + diag[0].push(grid[i + j][j]) + } + if i >= j && j < grid[0].len() { + diag[1].push(grid[i - j][j]) + } + } + + for j in 0..grid.len() { + if i + j < grid.len() && j > 0 && j <= grid[0].len() { + diag[2].push(grid[i + j][grid[0].len() - j]) + } + if i >= j && j > 0 && j <= grid[0].len() { + diag[3].push(grid[i - j][grid[0].len() - j]) + } + } + + strings.append( + &mut diag + .iter() + .map(|l| l.iter().collect::()) + .collect::>(), + ); + } + + let result: usize = strings + .iter() + .map(|s| { + s.matches("XMAS").count() + s.chars().rev().collect::().matches("XMAS").count() + }) + .sum(); + + println!("Result 1: {}", result); + + let result: usize = grid + .windows(3) + .map(|rows| { + let mut count = 0; + for i in 0..rows[0].len() - 2 { + let str1 = format!("{}{}{}", rows[0][i], rows[1][i + 1], rows[2][i + 2]); + let str2 = format!("{}{}{}", rows[0][i + 2], rows[1][i + 1], rows[2][i]); + if (str1 == "MAS" || str1 == "SAM") && (str2 == "MAS" || str2 == "SAM") { + count += 1; + } + } + count + }) + .sum(); + + println!("Result 2: {}", result); +} diff --git a/src/main.rs b/src/main.rs index b85dde5..6ad7161 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,12 +24,12 @@ fn _all_days() { println!("\nDay 3"); days::d03::solve(); time = _print_elapsed(time); - /* println!("\nDay 4"); days::d04::solve(); time = _print_elapsed(time); + /* println!("\nDay 5"); days::d05::solve(); time = _print_elapsed(time);