Solve day 4
This commit is contained in:
parent
28e733e405
commit
a566ce78fb
|
|
@ -0,0 +1,140 @@
|
|||
SSSMMAASASAMXSSMSMMSSSSSSMSSMMMSMSAXMAMASXXXXMXMXSXXXMAMMSSSSSSXXAMXMSSXMAXMMXMMSSSMSAMXMXSXMSMSSSXMMSAMMSAMXMSMMMXSASMMMXMXMMXXAMXXMASXMXMS
|
||||
AMAASMMSASASAAMMAAXXAAXAAAAXASAAXSAMXSXASMSMAMSMASMSMXAXSAMXAAAMSXXAMXAAMXSAMAAXSAAAMAMAMASMMAASAXSAASAMXAAXAXAMAXXXAXAASMMASMASXMSXSAMAMMMS
|
||||
MSSMMAAXASAMXMMSSSMMMMMMMMMXAMMMMSAMAMMXMAMSAMAMXSAAASMMMASMMMMMAASXSMSAMXAASXSMMMMMSAMMMASASMSMAMMMMSAXMSMSMSMSMSMMMMSMXAXASXAAAMAMMASAMAAM
|
||||
XXAMXMMMMMMMMXXAAAXMSAMXSXMASXSXXSAMXSSXMAMXMSMXAMMMXAMXSAMAMAXMMXMXAMXAAMMXMAAMXAAXXXSXMASMMMMMXMMMASAMXXXXXAXAMAMAAAMMSSMASMSSSMASXXMXSMSX
|
||||
MMMMSMMMXMSASAMMXMXMMMXAMAMXXAMMXXXXSAMXSAMAMAMXMASMSMAXMASMMXSAMAMSSMMMMXXXMMMMMXSSMSMAMASXMASMMSXMASMAMMMSXMSXSASXSMSAAAMSMMAAAMMMXXAAXAMA
|
||||
AAAAAAAMAMXASMXAASXSAAMSSMMSMAMMAMSMMAXXAMSMSASMSMXXAMSAXXAAAASMMXXAMXASASXMMASASAAXMASAMASASASAMXSMASMSAAAAAXMXMASMMAMMSSMXAMMMMMMASMXMMAMM
|
||||
SSMSSSMSASMAMXMSMSASMXMAAAAMXMMMAXAASAMXMMAASASAASMSXMAMSMSMMXXASXMASXXMAMXSXAXASMSMAMSXSXXXMASMMMMMXSAXMMSSMMXAMAMAMAXXAAMSMMSXMAMASAAXAAXX
|
||||
XXAAMAASAXMSMSAMXMMMMSMSSMMSMXSXMXSXMASXXMMXMXMXAMMAMMMMAMAMSSMAMAMAMMSMMMAMMSXMSAMXMXMMMMMXSXSAAXASMMMMSXMAMSSMXSSSSMSMSSMAAAMAXXMASXSXXXXX
|
||||
XMMMSMMMSMAAAMAMAAXXAXMMMAAAXMSASAMASAMMMXMXSXMMXSXSAMXSMSMSAAAMSSMAXAAMAMAMXAASMMMAAAXAAAXMSASMMMMSAAAMAXXAXMASAXXAAXXAMAMSSMSMMMSAMAMASXMS
|
||||
SXMAMXAAXMSMMMAMMSMMMXSMMMSSSMSAMASAMXXSXASAMXXMAMMMXMASXMXMMSMXAXSMSSMSXSASMSSMAASXSXSMSXSAMXMAMSMMMMSSMMXSMMAMMSMSMMMMSAMXAXAAAASAMSAAAAAX
|
||||
AAMSSSMSSXMASMMMXAMAXAAAMAMXXAMAMXMMMSAMXXMAMXXMASAMAXAMMMMSMMMMMXAMAMXAAMASXXMMSMSXMASXAAMXMAXAMAAMMMAMXAMMAMSAAMXXMAMASAMXSMSXMASXMXMASMMM
|
||||
MXMAAXAMMMMAMAAASMSAMMSMMMSAMMMAMMAMAMASXMSAMSXSASMSXMASXAAMMASMXXMMSSMMSMASMSXAMXMXMAMMMSMMSSSMSSMMAMASMSASAMMAMXASXSMASASXXAMXMAXMSMSAMXAA
|
||||
XMSMXMMXAXMAMSMMMXMASAAXAXMXMXSASXAMMSXMAMMXSMASAMASXAXXXMMMSAXMMMMAXXAXMMAXAXMXSAMMMAXXMXAMXAAXAXASXSAMXXMSXMXSXMASAAMAXXMAMAMXMASXXAXAXSSS
|
||||
XAAMMSMSXSMMMXASXXSAMMSMSMSXMASASXXMAMMSMMSMSMAMXMAMMSSMMSSXMMSAAAMSSSSMXMSMMMMAMAMAXMXSASXMMSSMMSXMAMMSMMAXXMAMAMAMMMMSSSMSMAMXMASAMSMMXAAX
|
||||
SSMSAAXAXMAMAMAMAMMAMAAAXAXMMMSASMSMAAAMXMAAMMAXXMXSMMMAAAXAAAXMMXSAAMMAAMXSXAMASXMSMSAXMMSXMAAAMXMASAAAAMMMMMASXMASMXAAAAAASMSMXSMXMAASMMSX
|
||||
AAXMMSAMXSXMMSSMSMSAMMSSMSMAAXMAMAXSSSSXMSMSMSXSAMASAXSSMSSMMMSMSXMMSMASXSAMXXMASXAXXMAMSAMXMXSSMXAAXMSMSMAAAXASMSSSMMMMXMMMMXAMXMAMSSSXXMAM
|
||||
XMMMSMMAXXMSXAAAMASXSAAXAAASXSMMMMMXMAMAAAAXXAXSAMASXMAMMXAMXXXAAAXAMXAMAMASMMSXMXSMSMAMMASXSAAAAXSXSMMXMXSXSAASAMXMXSMSXSXAMSMSMMAMAXMXMASX
|
||||
XMAMAASMMMAXMXMMMAMAMMSMSAMMAXMXAXMAMAMMSSMXMSMSXMASASAMMSAMXXMXSSMSSMASXXAXMAXAXMMAXMAXMXSAMMMMMMMAMASAXAXAXMSMXSAMXMAMAASMXASAASMMXSMSMAMX
|
||||
ASXSMXMAAMSXSXSXMASXMAMAMMMMAMSSSMSASMXMAXMMAMAMXMAMAMMSAMXMMXMAMMAXAMAAAMSMMXSASMMAMSSXSAMXMMXSAMMASAMMMMSAMXXMAXAXAMAMXMAMSMSMXMAXXAAAAASX
|
||||
MAAXMXMMSMMASAMXMAMAMXSAMASMMSAAAXMAMAAXAXMASMMMSSSMXMXMASXAXAMXSXXSMMSMXMMASAAAMXAAXXXAMXSMSXMMAXSXMASXAAXAMXSMSMSMSSMXAMAXSXMXSAMXSMSMSMSA
|
||||
XMMXAAMXMAMMMMMAMASAMXMAXAMAXAMSMSMSMSXMASXAXAAAXAAAAAMMMAMSSMSAMMMXXAMXSMSAMAMSMXSSXSMSMSMAXAMMSMSASAMMMXSXMAXSAAMXMAAXSSSMSAMXXAXAXMAMXMXM
|
||||
SAMXSASASAXAAMMXMASAMMSMMXSXMAXAAXAMAMXXXMMMSSMSSMXSSMXAXMAXAMMMSAMMMSSMMXMAMXXMAXXAXSAXMASXSMMMMAMAMAXXAAXXMASMMMMAXMMMXAXASXMSSMMSMMMSMXSM
|
||||
SAXAXASXSASXSSMSMMMAXMAXXMMMAXMMXMXMAMMSMMAAMAXAXXXMAMSSSSXMMMAAMMSAAMAMSSSSXMASMSSSMMAMSMSXXAAXMAMASXMSMMSASXMASASAMMSSMAMMMMMMAMXMASASMASA
|
||||
SMMSMAMAMXMXAAAXXMMSMMXXSAAAMSXMXAXMASAAAMSMSAMMXMSMAMXAXMASXSMXSASMMSAMXAAASMMMAMXAXSAMXXXXSXMMSAXXMXMXAMSAMXMMSXMASXAAMXMASASMXMASMMASMAMX
|
||||
XMAXMAMXMSXMSMMMMSAMASAAXMASXMAASMXSXSMMXMXASXMMMAAXAMMAMXMMAAASMMMSMMMMMMMMMMAMAMSMMMMSXMMXSMXXMXSSMMMMMMMMMMMAMAMAMMSMMMMASXXMASXSXMMMMMSS
|
||||
XMASMSSSMXXXASAAXMASAMMSMMXMASXMSAMSXMAXAMXXMAMXSSMSMSAAMSMMXMXMAAAMXASXMASMASAXAMAXAAASAXAAMXMMSMAXAAXAAAASAMMAXMMAXXAMXSXXMAMSMMASASMXXAAX
|
||||
MMMSAMAXXXMXASMMSMXMXMMAXXAMXMXAMAMMASAMMMSMSXMAXAAAMMMMMAAXMMMSSMSSMXSXMAMMAXMSSSMSSSMSAMSSMAAMAAMMXSXSSSMSASXMMAMAMSASASAMXAXSXSXMMAXMSMMS
|
||||
AAAMAMAMXMSAMMMMAMMSMMMSMSSSMSMMMAMSMMXSAAAAMXMXMMMMSAAXSSXMMAAXXAXXMMSXMASMMSMAMAAAAMAMAMXAXMXSMSXSAXXXAAASAMAMSSMAXSAMAMSAMXMMAAAMAMMMAAXX
|
||||
XMXSAMXSAAMASAXSAMXAAAAAASAAAXAMSSMMXAASMXMXMAMMSMMXMMMXAXAASMSSMSMMSASAMASAMAMASMMMMSXMAMXMMXAXMAAMASMSSMMMSMXMAAMSMMAMAMXXMAXMAMAMAXAXSSMM
|
||||
ASASXXXMAXSAMXMSSSXSMMSSMMXMMMXMAXAASMMSXASASASAAMASMASMAMSXMXAXAAAMMXXAMASAMMSAMXAXMSASMSMSAMMSSMAMAMAXAMXMASAMXSMXASXMXXSAMSMMMSASASMMMAAA
|
||||
MMASAMSXSAMXXXXMASXMAXAMXSAMXAAMXSMMXAAXMASASXSXXXASMAXMXMXXSXSMMMSXMMSMMAMAMXMASMXSASAMAAMMASAAAASMMMMSAMXSMXXSMXXMAMAMSAMMMMASXMXSAMXASMMS
|
||||
AMAMASAAMXSMSSXSAMXMMMAXASASMSXSAAAASMMSXXMXMASASMMMMXXMAXXXMAXAMAMAXMASMSSSMSMMMAAMMMAMMMXSAMMSMMXASAASAMMSXSAXMASMSMXSAMSSMXAMAMXMMMSAMAMX
|
||||
XMXSXMMXMXXAAAMMMXMASMXMXSMMAMAMXXMMSXAXMASXMXMAMASMMSAXMAMAMAMAMASXMSASXAAMXMASMSMSXSAMXMMMAXXAMXXXMMXSXMAMMAMMMAXAAXMXAXMAAMSMSMAAAAASXXMM
|
||||
SXMAMSSMMSMMMSMAMMSAMAASMMAMMMAMMSMSMMAMXXMASAMASXMAASASMSMXXMSMSASXAMAMMMSMAXAMAMXSAAMSMMAMMSSSSSXSMSASMMSSXASAXXMSSMAXMMSMMMMAMASXMXSASMXS
|
||||
ASAXXAAAXXXAXMXMSASAMXMXAXXXAMXMAAXAMXSXSMSMSASASAMMMMAMAXMMXXAAXAXMXMAMAXMXMSMMXXAMMMMAMXASMXAMAMASAAAXMAXAMAXMAXMAMXSSMAAAAAMAMXAMXMMMMMAX
|
||||
MXSMMMXSMMSSSXSMMXSSMMXSSMSSMSSMSSSXSAXAMAAASAMMSMSSSMMMXMASMMXSAMMMAMASXXAAXAXXAMSSMXSAXSASXMAMXMAMMMXMMMXMMSXMSXMASAMAMSSSXSSSSSMSAXMXXMMM
|
||||
XAAMAXXMAAMAAASXSXXMMMAXMAXAAAAMAMXAMXMAMSMXMAMXMXAAASAMXSXMASAMMMAXSSMSMSSMSXSMMXAAMMSAMMSMMSMMMMSSSMXSXMXXXXXSMASAMMXAMMXXMAMXAAXSASMMMMSS
|
||||
MMXMMSASMSMMMMMAXAMMAMMMMMMXMMSMAMMXMMSMMMXMXAMXSMMSMMSAMXSSSMXSSSSSMAAXXAAXMXMAMMSSMMMXMXMXAAMAAXXAMMAMMMAMXAXASXMXASXSXSASMSSMXMASXXAXXAAX
|
||||
MSSMXSMMAAMMMSMXMMMSAMAASASASMXMSXMASAAMXMAMMMXXXMAMXMAMSAXMAMAXAAMMMMMMMSSMXAXAMMAAAXSXMASMSMSSSMMSMMAXAASMMMSMMXSMXSAXXMASAAAMSAMXXSMMMMSS
|
||||
XAAAAXXMXMMAAMXSMMASASMXSASASAXXMASASMMMXSSSXSASMSASMMMMMAMSAMXMMSMSAMXAMMAMSMSMSMSSMMSAMASAMAAAAAAAAXXSSMMAAAAAMSXMAMXMXMAMMMSMMXMAXMXSXAAX
|
||||
MSSMXXAXXXSMMSAMASASAMXAMAMMMMMXSAMASMMSAAAAAAAMAMXAAASAXXMXAMXMAMAMXSXSMSMXAAAAAAXAXASAMASXMMMSMSSSSMMXMASMMSSSMSMMASASAMMAMXAAXAASXMAMMMSS
|
||||
XXXAMMMMSMMSSMXMAMXXMMMXMAMAAAMAMXMXMAAMMMMMMMAMXMXMSMSASXSXSMAMXSAMASAMAAAXMMMSMXXAMXXAMAMAMSMMXAXAAAMASXMMAMAMASASASXSASMMSSXSMMXMSMASAMAM
|
||||
SAMXMASXMAAXXAAMSMSXMXXMSSSSXSMXXSMSMMMSMMAMSAMAMXMXMASAMAMAMMASXXAMASAMSMMMSAMMXMMSMXSSMSSSMSAMMMMXMMMAMMSMAMSMMMXMXSAMAMAAMAMMMSAMXSASXMAS
|
||||
AXSMSXSASMMMMMMXMAXAMSMXAXAMAMXSXSASMMMAXMAXAAXMAAAXMASAMXMAMSASASMMMMAMXMXAXAMAAMXXAMXXAXAXAMSMAAMSSSMMMAAMAMAAXMMXAXXXAXMMMSAAAXMAMXXMMSMS
|
||||
MSXAXASAMMSAMASASAMXMAAMXSAMXMAMAMAMMXMASXSMSSMXSXSMMMSAMXMMMMAXAAXXXSAMSSMASXMSMSMSMMXMXMMMXMASMMSAAAASMSSSSSSMMAMMXXSMSMAAAXSMMSMXSMSMXAAX
|
||||
XAMSMMMXMASASASASAMXAXMMMMXXXMAMSMSMSXMASAXAMMMXMAXAAAXAMSMSSMSMSMXSAAXXAASAMAXAAAAMMMAMAMXAAMMAMSMMSMMMAAAXAAAMSAMASXSAASMMSMMMMAMMSAMXSMSM
|
||||
AXAAMAMMMMSAMAMXMAMMSMXAAMAMMSAMXAAXSAMAMXMASAMSMMSSMSSMMXXAAXXAAAAMXMMMXXMXSAMMMMXMASMSSMSSXSXSXSAAMXSMMMSSMMMMSAXXXAMMMSXAAAAXXMASMXMMMMXA
|
||||
MXXXSASAMXMXMXMXSXMXAASMMXAAAAAMMMMMSAMXMAMXSAMXAAXXXMAMAAMSSMMMMMMMAAXMSMMAMAXXMSASXSXAAMAAXSAMASMMSASASXXXAMXXSXMSMXMSXSMSSSMSXXMXXSXSXASM
|
||||
MAXXAMXXXMASXSAMXASMMXMAASMSMXSMAAXMSAMASMMASXMSMMSMXXAMMMAXXAMAMXSXSMSAAAMXSXMSAMXSASMSSMMSMMAMAMMXMMSAMXAXSMMXMASXAXXAASAAAAAAXSXMMAASMMMA
|
||||
MAMAAMSXSAMXAAMASAMASXSMMAMAMMAMSMSASMSMASAXSAMXAAXXAMMXMASXMSMSMXMAMXMXMSMAMAAXMMAMXMAAXMAMASXMASAAXAMAMMSAAMAASMAXMMSMMMMMXMMMXSASMMXMASAX
|
||||
MSSMSXMASAMMXMAAMAMAXXXXSMSAMSAMXXMMXAXMASMXSMMSMMSMXSAAXAMAAAXMXMSMSASMSMMASMMMXMAXAMMMXMSSMMMAAXMSXMSMMAMMMMSXSXMMAAXAXSXSXMASASXMSAMXSMSS
|
||||
MAAXAAMAMAMAAXMXSMMMXMSXSXMAXMAMMAMXMMMMAXXAMXAMMXAAAMMSMASMMMXMAAXXMAMXAXSMXXAAAMXSXSAXASMMMASMMSAXAXAASXSAXXXXMAXXMSMXMSASASXMASXMMXAMXAXX
|
||||
MSSMSXMASAMXXXMXSXAXSMSAMXSSMSMMSAMAMSAMMSMMSMXSMSMSMMAXXXMASXAXASXXMAMMSXMXXSMSSMMAXMXMXMAASXMAXXAMAMMMSASMSMMAMSMSMMMXAXAXAMAMAMXSAMSXMSMM
|
||||
MXMAMXXMSMSXSAAAMMXMAAMXMAMAMXMAMASAMSAMMAMXAMMAXMXAAMASASAMXSMMAXAXSAMMMASAMAMAAASMSSMSASXMSMMSMMSMMMMAMXMAMXMAMMASAAAMSMXMASXMXXAMAMXAMAAX
|
||||
SAMAMAMXMAAASMMAMSSSMXXSMXSAMAMASMMXXSMMXSSSXSSMASMSSMSXAXXMAAMMSMSMSASXSAMASAMXSMAASASAMXAAXXAASAMAMXMASXMAMMSXSMAMMMMMAAXSAMXXXMMSSMSXMSSM
|
||||
XAMASAAAMMMXMXSXSAAXXSXAAASAXXSAXXMSAMXAXMAMSXAXMAAAXXXMMMSMMMXAXAMAMAMXMXSMMMXXAXMSMSAMXMMMMMSSMSSXMMSASAMSSMAAXMAMMXSMMMMMAMMSMAAAMMXAAAAA
|
||||
SMMASXSMSXMASAMXMMSMSMMMMMXAMMMMXSXXXMMMSMAMMSAMXMMSMXAMXAMXMAMSMMMAMAMXSMSXAAXSAMXXMXXXAAXAXAMAAAXASAMXSAMAAAMMMMAMMAMMSMMSMMAAXMMSSMMMMSSM
|
||||
MSAMXMAXMAMASMSXXMMXAAAXAMMSMMASAXMMXMAXXMAMXAXAAXXAAXSMMMMAMAXXASXXMSXMXAMMMMXXMMSMMAMSMSMSMSSMMMMMMSXMMAMMMMMSXXSXMAMAAAXAMSSSXSAMAXXAXAMX
|
||||
XAXMSXMAXSMASAMMSMMXSXMSMSAXASAMMAAMXMAXMSMXMMXSMMSMSMMAASMXSXMSAMAAXXAMMSMAXMXMAAXAMAXAAXAXAAXAAXXSAMXSXMXXSAMXAMXASASXSSMAMAAAAMASAMMMMASX
|
||||
MMAMXAXAAMMMMMMASAAMMAMXMMXSAMXMXAMXAAMSAAMASXMMSMAXXXSSMSAMSAMMAMXMMXAMXMSSSMASMMSSMMXMSMXMMMSXMMAMASAMXMAASAMXSXSAMASAAAXSMMMMXSMMMSAAMMMX
|
||||
AXSMAMMMXMAMAXMASXMASAMAMXMMAMASXSSMSSMAMXSXSAMAAXSMSXXMMMAMMAMSMMMAAXSAMMXMAMXSAMAAAASXXXXSXMSXMXSMMMAMAMXXSSMAMAAXMXMMSAMXAXSXXXAAASMSMAAX
|
||||
SXXAASAXASAMXAMXXAMXSASASMSSXMXSAAXAMAXXSMSMSAMSMSAAXMMAASXMSAMXAAXMMMMAMXASMMMSAMSSMMSAAMXMAXMASAXAMSASASMAMAMASMSMSXSMXMASXMXXXSSMXSAMXMSS
|
||||
MAMSMSASMSASXAMAMAMAXXMXSMASMMMMMMMMMMXXAAXASXMAXSMSMAMSMSAMXMMSXMXSMSMSMSMSAXASAMXMXXXMXMASAMXMMMSAMSMSMSAXMXMMSAAAXAXMMAMAMXMMXMAXAMAMSMAA
|
||||
MAMXAXAAASAXXAMXSSMMSSMASAMXMAAMASAXAXXXMMMXMASXXXAMXSMMMSAMXAAXAMASXSAXAAXSAMXSXXXXMSMSMSASASXXAMMAMXXXMMXSMAMXXMMMMAMSAMXMAMAAXXSSMMSMAMXM
|
||||
SAMMAMMMMMAMSMXMAAAAXXMASAXSSSXSASMSMSMMXASASAMXMMXMAXAAASAMMMMSSMASAMSMXMAMAXMSAMMXAAAAAMAMAAMMSMSMMMSMASAMMAMASAMXSAMXSXMXMASMMMAAAAMSMSSM
|
||||
SAMMMAMXXMXMXXAASXMMSXMASMMAAMXMASMSXAAAXASASAXXMMSMMSSMMSASAAMAAMAMXMXMXXSSSMASXMMASMXMMMAMXMXAMXAAAAAXXMASASXMSASMMAMAMMMXXXMAAMSSMMXAMAMS
|
||||
SXMSAMXSXSMXMMXMMXAXXXSXXXXMXMAMXSAMSSSMMAMMMMMXAASAMAMXASASXSMMXMAMAXAMXMXAAMMMAXMAMXMSASASXXMMMSSSMSSSXSMMMMAXSAMASMMASASAMXSASAAAAXXAMASX
|
||||
XXXMASMMASAASMSSSSMSMXMAMXMMMSMSAMAMMMMXAAXAAASXMAMXMXXMMMMMMXMSSSMSSSMSMSMSMMMSSMMMSAMSASASMSXAAMMMMAAAXAXAXSAMXXSMMAMSXMMXMASXMMSSMMSAMXSM
|
||||
SMXSAMAMAMSMAAXAAXAAAAMAMAMXAAAMXSXMSASMSXSSMMXAMASXMMSAAASAMSAMXAAAAXAAAAAAXXMAAASAMXMSXMAMAMMMXXAAMMXMXMMMMSASMMSXXAMXXSXSMAMMMAXMAXAAAXXA
|
||||
AXAMAXXMAMAMMMMMMMSMSXXASXSMSSSMMXAXSASXMXAMMMSXMASAAASMMMSAXAMXSSMMSMSMSMSXSXMAXXMAXMASMMAMAMXMASXMSSSXMXASXSAAAAMMMSSMASAMXAMAMMMMSSSMMSSS
|
||||
SMMMXXAMXMMSMXAAXAXMAXSXMASAAXAMASXMMAMASMMSAMAAMXSMMMSAMMXMMSAMAAXXXMAXMAMXAXMASXSMMSASASMSXMAMMMAAAAAAXSASAMAMMXSAMAAMAMAMSMSXSMAXAXAAAXMM
|
||||
XAXAXXSMMMAAAXSMSXMMAMXAMXMMMSMMXMAMMAMXMAASASMXMAXXAXMASMXSAMAMSXMXXXMSMMSAMMSAMXAXXXMSAMXXASASXSMMMSSMMSAMXMMXSASAMSMMAXAMAAAASMMMMSXMSSSX
|
||||
SMMMSAMASMMMSXXAMXXMAMSSMMMAMMMMXSAMMSMMMMMSXMXAMXSMSXSAMMAMASXMAASAMSXSAAXAXMAMSXSMMMMMMMMSXMAAXAXXXXAMXMXMXAXAMMSSMAXSMSSXMMMSMAMMXSAMXAMS
|
||||
SAAXMAMAMXAXMAMAMSXSMXMAASMMXAXMAXXSXMASXMAXMXSSSXSAMMMAXMASAMXSSXMASAAMMMSMMMMXSAAXMAMAXAAXXMXMSMMMXMAMXSAMMMMXSAMXSXXXMAMMASMMMAMSASAMMAMA
|
||||
SMMSSXMASXXSMMMAMXAMXAMSMMASMMMMXSXMASAMAMMSXMAAXAMXMMSSMSASAMAMXMXMMMMMXMAMAAXAMSMMSSSSSMMSASMMAMAAASMMASXSAMSAMASASMSMMASXAXASXMSMASAMSMMM
|
||||
MASAMAXXXXMSAMSXSMAMSXMMAXAMAMSMXAAMMMASMMMMMAMMMSMSXAAMAMASAMMMAMASAMASXSASMSMXXAMAAAAMXXSAMXMSASMSXSAMASASXSMASAMAXAAAMASMSXXMAMAXXMXMASAX
|
||||
SXMASMMSMMASAMXAXXAMSMMMSMASAMAAXMAMXMXMXMAMXMXXXMASMMSMMSASXMXMAMAXAXASAMMMAAMXSASXMMMMMMSMAAXMAXAXASXMXSAMMXMAMMMSMMMXMASAMSSSSMMMAAXSXSXS
|
||||
XXSAMMAAAMASMMMMMSSXSAMAAMXMMSSSMMAMXSMSASXXSXMASMMMXXXAAMXXASMSSSMSSMMSXMAMMMSXSMMAXAXASAMXSXSMAMSMMMSMMMAMXSMMXSAXAMXSAMXXMAXAAMXAMSMSAMMM
|
||||
MMMMSMSSXMASMAAAMXMASXMSXMAXXAXAAXXSAAAMASMASXMAXAXMASMMXSXSAMXAAAAAMAXMASXSAAXMMMSSMMSMMSSXXMAMXXMAMAAXASXMXAAAAMMXAMXXASXXMXMMMMAMAXMMAMMX
|
||||
AAASAMXAAMXXXXSXSAMXMAXASMSXMMSSMMXMXSSMAMMAMAMASMMMXXXAAMAMAXMMSMMMXSMSXMASMSMASAMAMAXAAXMASMMMSMSAMSMSMMMMSSMMSSSSMMSSSMMXSMSXASMMSMMXSXXS
|
||||
SSSSXSMMXSMMMMMAMXXAMSMASMMAAAXXSXXMAXXMASMASXMAXAAXSMSSSSXSMMMAAMXSAMMXMMXSAAASMXSAMMSMSSMAMAAXMASXMMXSAMAAAAMAMAMAAAAMXAXAXAASAMXAMAXAMMMM
|
||||
XMAXASMMAXAMXAXXXMSMSAMXMAMSMMSAMMSMXSAMXMMAMXMXSMMSXAAXXMAXMAMASXAMMASMXSAMXMSMAXXXMXAAXAMXMSMMSMMMAMAXXXMSSSMASMSSMMSASXMMXSMXXXMMSSMMSAAS
|
||||
XMAMMMAMXSSMXMXAXMAMAMSSMAMXMXMXMAXXAMAMSSMMSAMASMMMMMMSSMMMSMSAMMXXSASAAMXSXXAMXMMSSSMSSMMSAMXXXAAXXMAMMSXMAXMXSMAAXAXMXXAAAMXMXSXXMXMAMXMX
|
||||
XMAXXXMMMMXAMMASMMASMXXASXSMMAMAMMSMMSAMMAAXSXSASAAMXAXAXAAXXAMASXSMMASMMMMXMSXMASXAAXXMAMAXMAMXSXMSSMXSAAMMMMMXMXSMMXSMSSMMMMAXAMMMMAMASMSM
|
||||
SSSSXSAAAMMMMMAXASAMXXSAMSAASASASMSXMAMXMSMMMXSMSMMMSSMMSMMXMMMMMMSXMAMAAXMMAAASASMSMSMSAMASMXMASXMAAXAMXSMASAMASAMASAAAAXAAMXAMXMAAXSSXSAAS
|
||||
MAAAAMSAMXAAAXASMMMSMMMMSMMMSAMASXXAMMSSMMAASAMXSXMXXAAASASAAXAXMAMAMXSMMSAASMMMMSAAXAASXMASMSMAMAMSSMXSAMXAXAXASASAMSMMMSSMSAMSSSSXMMAMXMAS
|
||||
MMMMMMMMMSXSXSMXASAAMAAXAAAMMXMXMAMMMAAAASXMMASAXAXMSMMMSASASXSSMASAMMMMAAMMAXXAXMXMXMXMXSAMXAMASAMAMXMAMSMSMSMXMAMXMMXAAMAAAMXAAAAXSMXSMMXX
|
||||
XAAXAMXMASXMASXSSMSSSXXSSSMSAXMMSAMSAMXSMMMXSMMMSMMAAXAAMAMXMXMAXASXSAAMSSSSSMMSSSMSMSAAXMASMMMAMXMASAXAMXAXAXXASXMMAXMXSMMMMXMMSMMMSAASXMMM
|
||||
SMSXMXAMMSAMMMAXMAMXMAAMAMXMASMAMMXSASAXAAXAMAAMAMMSXSMXSMMXMXXAMMSMMMMXAAMAASAXAMAAASMSMSSMAAMSSMSASMSSSMAMAMSASAMSXXMAMXSAMXXMAXAAMMMSAASX
|
||||
MAMAMSXSASAMXMSMSXMAMMMMAAAMASMAXMXSAMXSSMMSSSMMAXXMMSMMSAASAMMAXXSAMSMMMXMSMMMSAMSMMMXAAMAXMXMXAMMXMMXAAMAMAMXXSAMAAASXMAXASXMSASMSMMXXMMAA
|
||||
MAMAMAAMMSMMMAMXXAMSMSASXMSMASXAXSAMAMMMXAAXMAASMXMAAXAAMXMAAMXMSMMSMAASXSXXXMXMAMAMXSMMSSMSMMMSSMMMSSMSMMMSAMXAXAXMSMMAMSSXMAAMASXMAASMMMMM
|
||||
MMSAMMXMXXAAAXSAMMMXASASAAXMASMXXMAMAMXAMMMSMAAAXAXMMSMSSMXSSMAXAAAAMXMMAAAMXAMXXMMMASAMAAXXAAXAMXSAAAAMXMASASAMSMMMMASMMMXMMMMMXMASMMMAMXXX
|
||||
SMSXSMMSSMSASMMAMXAMXMAMMMXXXXAXSMMSMSMMMSAMXXMAXSMSAXAMXAXMAMXSMMSSXXXMXMMMSSMMSSXMASAMSMMSSMMMSASMMMMMSSXSXMXXAMSXXAMXAXAXXAAXAMASAMSSMMSS
|
||||
SASMAXAXMAXAMXMAMXMXSAMXSXXXSMSSMSAAXAAXAMXSMSMSXXAMXMAMMSMSASMSXAXAMSMMSASXMAASASAMXSXMAXAMAXMXMASXXXXAAMXMXMASMSMAMSMSMSMSSSSMXMAXAMMASAAA
|
||||
MAMMMMSSMSMSMAMXSXAAAAMAMMSXMAXAAASXSSSMXSAMXXAMAMXMXMAMAMXMASAMXMSAMXAAMXXAMSMMASXMAMXXMMMSAMSAMXMAAXMMXSXSAMXSXAMMMAAAAAMMMAXMXXXSSMXMMMSM
|
||||
MAMMXMXAAXAXXXSAXMMSSSMAAASAMXMMMMMXAAMAAMASXMAMAAXSXSSXSAMMMMAXAMXXMSMSSMSSMAMMAMAMASMMXAXMAMSASAMAMSXSXSMSMXAMMXSMSMSMSMSXMASMMSMAMASXMAMA
|
||||
MAMMASXMMMXMMXMMMSAAXXASMASAMSMXSASMMMMMMSXMMAAMXMMXAMXAXAXAXXSSMSASMXAXAAAMMAMMASXSMSAMSSSSSMSAMAMAXAASAMASXMAMXXXXAXMAMAMXMAMAAASMXAMAAAXX
|
||||
SSXSASAXMASXSAAXAMMSSXMMSASXMAXAMAMAXXAAMXMMAXSSSMMXSMMMMASXSMMAAMASAMXSMMSSXMMSXMASMMAMAAXAAAMXMXSSSMMMAMAMMSMSMMMSXXSASASXMMSMXMSXMASXMXAM
|
||||
SAAMAMAMMSXAASMMSSMMMMMAXMXXXSMSXSSSMSMMXAAXSXAMMAMAXAAXAMXAMASMMMSMXMAAXAXMASAMXMASASXMMMMSMMMSMXMAAXSSXMXSAMXAAAXMAXMASAMXMXAASMMMSXMXSXSM
|
||||
MMMMSSXMXMMXMASAAAAAAAMMSSSMXXAAAMAMXSXSMMMAXMMASAMMSSMSSSSMXAMAXXAAAMXSMSMSAMAMXMXSMMXSXXAMXASAMAMSMMASAXAAXMSSSMSMMMMMMXMASMMMMAAMSAMASMAS
|
||||
SSXXAAASASAAXMXMXXMMXMSAAAAMMMMMMMAMASAMXSMXMAXASXMXXXAXXAAMMSXMMAMXMAXXAMAMXXAMMAMXAMASXMASMMSASMMAAXMSXMASAXMAMMAASMXAAASXSAASMMMXSAMAXSAM
|
||||
XAMMMSXMASXMSMMSSSSMSAMAMSMMAAAXXMAMXMAMAXAASXMMMMXSMMMMMMMMAMAMXXXSXXAMAMXMSXMXXAAXMMASAMAMAMSAMXMSMMXSXAMXMAXMXXSXMXSXSMSASMMSAXMASXMMMMMS
|
||||
XAXXMAMMAMXMXMAXXAXAAMSAMXXSXSXSXSXMAMAMXMMMSAAAMSMSAAAAAAAMASAMASAMXMSSXMAMXASASXSSXMXSXMMXAMMXMXMAAMMXMMMSMSSSMMMAMAMMAAXXMAMSMMMMSAMXMMSX
|
||||
SMMMSAXMASXSAMSSMMMMMXSASXMSAAASAAASASMSMSSMSMMMMAAXXMXSSSMSAXAMXXASXSAMAXMMSMMASAAXXXAMMMSSMSXMMASMSMXASAAAAXMASAXAMAMAMMMMSAMXXMAXSAAAXMAS
|
||||
XXAAXAMXXSAMXXXMXAAAAXXMMAAMMMMMAMAMXMAAMAAAXXSSSMSMSMXMXMMMMSMMMXMAMMASAMSMSAMXMMMMXMXSAAXAAXMASAMAAASASMXMMMMAMSSSSMSXSAXXXXXMXMXXMASXSXMM
|
||||
MMMSSXSXXMXMMMSSSMSSSSSSSMXXXMXXSSMSSMSMMSMMSMXAAAXAAMAMXMAXAAAAMAAAMSMMMXSAMXSSMXAAXMASMXSMMMMXMAMSMMMXXAMSXSMXSAXMAMAASXSMMMSAMXSMSAXAMMXA
|
||||
ASAMAMXMMAXXAXXAAAXAAMAAXAXSMMSMMAXAAAMXMXMASAMSMMMSMSSSXXAMSSSSXMXAMAAAMXMMMAMAASASMMASXASAMASXMXMXAXSXMSMXAMAMMXSAMAMXSASMAAMSASMAMASMXAMX
|
||||
SMMMASAMMSMSSSMSMMMMMMAMMXMAAXXAXMMSSMMASAMASXXXMXXXAAXMMXAXAAAMXXXSSSSSSMAXMAXMMMXMXMASMMSAMSAMXASMMMMMAMAMXMAMMSMMSXXAMAMMSSSMSXMXMXXMASMS
|
||||
MAXSAMMMAAMAAXAMXAXASXMXAXAXSASMMXAAAAMAMASASAMXSSMMMMSMMMXMMMMMMMMMAXAAAXXMSSSSSSXSXMXSXMMMMAASAMXAASXAAMMMXSXSXSAAXAMXMAMMAXMMXXMAMSASMXAX
|
||||
SAMMSMMMSSMMMMMMMSSMXASMMMSAMMAAMMSSSMMSSXMMSAMAXMAXAAAAAMAMXMXMXAAMMMMXMMSMMAAMXMXMASAMAMSAXSXMAXMMMMAMXSMAASXSASMMSXMSSSSMMSMASXSXXSAMAMMM
|
||||
MASXMMSAMAAAXSASXMAXSXMAAAMXMMSMMMMMMMAAAMMXSAMSSMSXMMSXMSASAMAMSSXSAMXSXMAAMMMMAMAXXMAMAMSAMXAMASMSSMSMMSMMXSAMAMAMXXXAAXXAAXMASMMMMMMMAAXA
|
||||
SXMXAAMXSSMMMXASASXMMSSSMMSAXXAAAXMASMMSSXXASAMAAMXXMMXXASAMMMAXXAASAXAAAXMXMAAXASXSMSSMSXMMMSAMASMASAAMAMASXMAMMSXMXSMMMMSMSSMASAMAAAMMAXAX
|
||||
XAMSMMSAXAMXSMMMMAMXAMMASXXXMMXSMMSMSXXAMMSXXAMXSMMMMAXMMMSMXSSSMMMSMMMSSMMMMSMSAMASXAXAMXSXAMAMXXMASMMMMSAMAMXSXMASXMAMAASXMAMXSMSSSMSXMAXM
|
||||
XMMAAAXMSXSAXAXMAXXMASMASXMSSSMXMAXAXMMASAMMSMMXMAMSAXSMSAAMXMXMXAASASMAXAAMMAMMXSAMMSMSMAMMMSMXSXMMSAXXXMAMMMAMAXAMAAAMSXSASMMMMAXAAAAMMSAA
|
||||
SMSSSMSXSAMMSSMSMMSMMMMAXAXAAAMMSXSAMXSAMXMAASXXSAMAAXSAASMSAMSSSMMSAMMAMSMSAMMAAMXMXXAAMAMAXAAASXMAXAMSXMSSMMXSSMSXSMMMMASAMXMAMXMSMMMSAXAS
|
||||
AMAMAMMXMXMAXAAMMMSAAXMASMMMSMMXMAAXAXMXXXMSSSSMMMMMSMMAMMXSXSAAAXMMMMMXMMSMAXMMXSAMXMSMSSSSSMMMSAMXMSMSAAAAXSAMXAAAXASAMMMXMASXSMAAMXAMMXAM
|
||||
MMXSAMAASAMSSMMMAAMMMXMXMAAAXXXAMMMMSSMSMSAMAMXMASXXMAASXMASXMMSMMXAXMXMAXAXMXXAAAMXAMAXXAAXXXAXSAMXXMASXMMSMMASMSMSMASMSAMXXMAAXASMSMSSSMMM
|
||||
XXAXAXSXSMSMAMASMMSASXSMSSMMSMSMXXAXXMAAAMAMAMASXSASXSXMAXAMMSMMAXSXSMSMSMMMSMMMXSXMXSXSMMMMMMMMMAXSMMAMASXMAXXMAXAAMXMASMMMSMMMMXXAAAAAMAAA
|
||||
SMSSSMMAMXAXAMMSAMMAMAMXAXXMAAAMXSSSMMMMSMXXAMXMAMASAAXMMMXXXAAMAMAXMASAMAXAAMSSMMXMAMXXMAMXXASASXMXSMASAMASXMSMXMMMXXMASXMAAAAXSAMMMXMMSSMS
|
||||
XAAAXAXXMXMMSMMMAMMSMSXMASMSMSSSMAAAAAXXMMMSSSMSSMAMMMXAAMXSSXSMXSMMMXMAMSMSXSAAXAMMAMXMASXSSMSASAXMAMAMASAMXXMAMMMSMMSAMAMSSSMSMASXMMXXXAXX
|
||||
MMMSMXMAXXMAXAXSXMAMAMXSAMXAMAAAMMMMSXMMMAAAMMXAMMXMXXXMASAXMAXMXMAMXMMXMXAXXMMSMMSSMSSXAMXAAAMXMASMMMMSAMXMAASMMSAAAASASMMMXMMAXMMAASXMSMMM
|
||||
AMXXMASMMSMASAMXAMASAMAMASXMMMSXMXAXXAMSAMMSSMMMSMSMSAMSASMAMSXMAXAMXXMXAMMMMSAMAMAAMAMMXSMSMMMMSMSXMXAAMASASAMXASXMMMSAMXAMAXSASXMSMMAAAMAX
|
||||
XSAMXMAMAAMMMMAMSMASAMMSAMAAXAXXMMMMMMMSAMXMAMMMAMMMMAXMAXXAXMASAMSMXASMXAAAAMASMMSSMASAMXAXAAAAAXSASMMSMAAMMAXMASMMSAMAMSXSAAMASXMASXMMMSSS
|
||||
ASAMXSAMSSSMAXMMXXMSXMXMASMXMASASXSAASASAMASAMASASAXMMMMXMXXSSMMSSXAMSXMSSMXMXAMAMMAXXSAMXSSXMMSSSSMMXMAMXSXSAMXSXMAMASMMAMMMMMXMXSAMXXXXAAX
|
||||
MXMAMMXMAAAMMMSAMMAMXXASMMXSXXSAMASMSMASXMXSMSXSASXSXMSSMSAAXASAMXMSMXAMAAAXSMMSSMMAMMSAMXMAXXAAMAXXXXXASMMASMMXMAMXSMMMMXXASMMMSXMXSMMSMSSX
|
||||
XAMSASMMMMMMAAMAMSMSMSMMAMMMXMMXMXMXMMXMMMMMMMMMXMAMXAASAMXMSAMMMSAAMSMMSSMMSAAAXMMAXXSXMMMAMMMSSSMMMSXMSAMXMAXAMXMMXMAXXXSASAAASASASAAXAAXX
|
||||
ASXXXMAMAMXMMMMAMAMAAMXSAMAMMMMXSAMXMMMMAAAXAXAMAMXMMMASMMXMMMMAAXAMMXAAMXMASMMMSSSMSAMXMAMXXXMXXMAMASXMMXMXSSMMSMSMMSXSAAMASMMXSAMASMMMMMSX
|
||||
AMAMMSAMASAAXSXSSSSMSSMSXSAMXAAMMAAAAAASMSSSMSSSSSXXXMXMAMMMMAMMSSSXMMXMSXMXXXSAMXAXMAMASXSSMSSXMMSMASAMXASXMAXXAMAAMAMMAMMXMXMAMAMXMXAASMXM
|
||||
MMAXASASAMMSMSAAAXXXXXAXASASMMMXSAMXSSMXAXAAXXAAMAMSXMAMAMAXXMSXMXMAMSAXXMSMAMXMXMSMSXMASAAMAAMAMSMMXSAMSMSXXSMSXSSSMAXMSSSMSAMXSXMXMSMSAMAS
|
||||
XXMMMMXMASAXAMMMMMMMAMMMXMXMAAAAASAMXMMMSMXMAMMMMMAXAMAXSSSSMMMMMXSAMMXMAAAMAMAMAMAASXSXMMMMMMSMMAXSAXMMMXMAAMAMAXMAMXXXAAAASXSMXXXAAAMXASAS
|
||||
XASMXXXMXAMXXXAAXMSAXAAXMSMSSMMSSMXSAMAXAAASAMAAAXXXSMMSMAAMAAAAMAMMXAAXMSXMASASMSMSMAMMSXSXAMAMAMSMAXSAMAMXMMAMSMSSMSAMXSMMMAMAMSSMSSMSAMAS
|
||||
SXAASMSMSSXAMSXSAAAXSSMMSAAXAXXXXAXSXSASMSMSASXSXSXAAMXAMMMSMMSASXSASMSSMAMSMSXXAXMAMAMASASMMSASXXXMMMSAMSASXSAMAAAAAXXMXXXXMMMSMAAXAAAMAMXM
|
||||
SMMAMAAMAMXMAXAXMAMMAAAXXAXMMXMMMSMMAAAMXMXSXMAMASMXMASXSMXAXAXAMXMASAAXMAXAMMMMMMMAMAXXMMMAXMASXSXXXAXMMMAXASXSMSMMSMSMAMXMSMMMMMSMMSMSAMXM
|
||||
MASAMXMMSSSSSSSMSMXSSSMMSSMSXAAMAXAMXMSMXMASAMXMAMAAXMMAMMSMSXMXSAMXMMMSSSMXMAAAAASXSMXSAXSXMMXMAMMSMSSSMMSMXMAAMAXXXAAMASMMAAXSAMXMXAASMSAS
|
||||
SAMAXMXAMAAAAAMAAMMMAAXAAAASMMSXASMMMXXXMMAXAMAMSSSXXXMAMXAAXXMAMXMAXXXMAMASMSSSMXXXAAAXMASMSAMMSMASAAAAMAAMAMXMXAXSMSMSASXSSSMAXMXASMXMAXXS
|
||||
MASASMMMSMSMMMMSMSAMXMMSSMMMASAMXSMASMSASMMSSMSSMAAASXSASMMSMAMASXSSSXSMSMAMAMAMXSXSSMMSXXXAXAMAAMMSSMSMMSXSASASMMMXAMXSMMMMAMASXMMMXXMMSMMM
|
||||
SXMAAMAMXAXAXXAXXSXSXSXAXAASXMAMAMXASAMAMXAAAXXAMMMMXAMXXMAMMAMXXAAAAASAAMMMMMAXXSAXAAMMMMMSMXMASMXMAMMXAAXXMSMXAAAMAMXMASAMAMSXAAAXSSMAASAM
|
||||
XXMSMSASMMMSSMMMMXASXMMSSSMSASXMASMMSXMSMMMSSMSXMSMSMSMAMMSMMSMSMMMMMMMAMMSAASMMAMMMSAMXAAXAXMAMMMMSAMMMSSMMMMMSSMSMSMASAMMSMSMSMMSAMXMASASX
|
||||
SXAAASXSASAAXAASAMXMAXAMXXAXAXMSASAMXAMMAXAMAAMXSAAAAAXASAAASMAAXAXSAMXAMASMMAAMXMAXXASXSSSXSAXSAMXSSMAAAXAASAAAAMXAASAMXSAAXAAAMSXXAXAMXMXM
|
||||
SASMMMASMMMSSSMSSXMSAMXSMMXMXMAMSSMMSXMSXMMSMMMSSMSMSMSXSXSSMMSMSSSXMASMMXSXSSXMXSXMSAMXMAMXAMSAMXXSXSMSSSSMSMSSMMMSMSXXSMMSSMSMXSAMXMASMXSX
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
MMMSXXMASM
|
||||
MSAMXMSMSA
|
||||
AMXSXMAAMM
|
||||
MSAMASMSMX
|
||||
XMASAMXAMM
|
||||
XXAMMXXAMA
|
||||
SMSMSASXSS
|
||||
SAXAMASAAA
|
||||
MAMMMXMMMM
|
||||
MXMXAXMASX
|
||||
|
|
@ -0,0 +1,233 @@
|
|||
-module(day_4).
|
||||
-export([part_1/0, part_2/0]).
|
||||
-export([map_from_matrix/1, mget/3, check_if_cross/3, read_input/1]).
|
||||
|
||||
|
||||
part_1() ->
|
||||
Filename = filename:absname("./priv/input/4.txt"),
|
||||
part_1(Filename).
|
||||
|
||||
part_1(Filename) ->
|
||||
Input = read_input(Filename),
|
||||
|
||||
Xmases = [
|
||||
find_xmas_in_matrix(Input),
|
||||
find_xmas_in_matrix(transpose(Input)),
|
||||
find_xmas_in_matrix(transpose(skew(Input))),
|
||||
find_xmas_in_matrix(transpose(skew(Input, reversed)))
|
||||
],
|
||||
|
||||
lists:sum(Xmases).
|
||||
|
||||
|
||||
part_2() ->
|
||||
Filename = filename:absname("./priv/input/4.txt"),
|
||||
part_2(Filename).
|
||||
|
||||
part_2(Filename) ->
|
||||
Input = read_input(Filename),
|
||||
Matrix = map_from_matrix(Input),
|
||||
Coords = maps:fold(
|
||||
fun(Y, Line, Acc) ->
|
||||
As = maps:fold(
|
||||
fun(X, C, AccLine) ->
|
||||
case C of
|
||||
$A -> [{X, Y} | AccLine];
|
||||
_ -> AccLine
|
||||
end
|
||||
end, [], Line),
|
||||
[As | Acc]
|
||||
end,
|
||||
[],
|
||||
Matrix),
|
||||
ACoords = lists:append(Coords),
|
||||
Xmases = lists:filter(fun({X,Y}) -> check_if_cross(X, Y, Matrix) end, ACoords),
|
||||
length(Xmases).
|
||||
|
||||
|
||||
%% Private functions
|
||||
|
||||
read_input(Filename) ->
|
||||
{ok, Filehandle} = file:open(Filename, read),
|
||||
read_input(Filehandle, []).
|
||||
|
||||
read_input(Filehandle, Lines) ->
|
||||
case file:read_line(Filehandle) of
|
||||
{ok, Line} ->
|
||||
Trimmed = string:trim(Line),
|
||||
read_input(Filehandle, [Trimmed | Lines]);
|
||||
eof ->
|
||||
lists:reverse(Lines)
|
||||
end.
|
||||
|
||||
find_xmas_in_matrix(Matrix) ->
|
||||
lists:foldl(
|
||||
fun(Line, Sum) ->
|
||||
Xmas = find_xmas_in_line(list_to_binary(Line)),
|
||||
Samx = find_xmas_in_line(list_to_binary(string:reverse(Line))),
|
||||
Sum + Xmas + Samx
|
||||
end,
|
||||
0,
|
||||
Matrix
|
||||
).
|
||||
|
||||
find_xmas_in_line(<<"XMAS", Rest/binary>>) ->
|
||||
1 + find_xmas_in_line(<<Rest/binary>>);
|
||||
find_xmas_in_line(<<_,Rest/binary>>) ->
|
||||
find_xmas_in_line(Rest);
|
||||
find_xmas_in_line(<<>>) ->
|
||||
0.
|
||||
|
||||
|
||||
|
||||
transpose([[]|_]) -> [];
|
||||
transpose(Matrix) ->
|
||||
[lists:map(fun hd/1, Matrix) | transpose(lists:map(fun tl/1, Matrix))].
|
||||
|
||||
%% rotate([[]|_]) -> [];
|
||||
%% rotate(Matrix) ->
|
||||
%% lists:map(fun lists:reverse/1, transpose(Matrix)).
|
||||
|
||||
skew(Matrix) ->
|
||||
Length = length(Matrix),
|
||||
{Skewed, _} =
|
||||
lists:mapfoldl(
|
||||
fun(Line, Index) ->
|
||||
%% {Init, Tail} = lists:split(Index, Line),
|
||||
%% {lists:append([Tail, Init]) , Index + 1}
|
||||
{
|
||||
lists:append(
|
||||
[
|
||||
lists:duplicate(Index, " "),
|
||||
Line,
|
||||
lists:duplicate(Length - Index - 1, " ")
|
||||
]
|
||||
),
|
||||
Index + 1
|
||||
}
|
||||
end,
|
||||
0,
|
||||
Matrix),
|
||||
Skewed.
|
||||
|
||||
skew(Matrix, reversed) ->
|
||||
Length = length(Matrix),
|
||||
{Skewed, _} =
|
||||
lists:mapfoldl(
|
||||
fun(Line, Index) ->
|
||||
%% {Init, Tail} = lists:split(Length - Index, Line),
|
||||
%% {lists:append([Tail, Init]) , Index + 1}
|
||||
{
|
||||
lists:append(
|
||||
[
|
||||
lists:duplicate(Length - Index - 1, " "),
|
||||
Line,
|
||||
lists:duplicate(Index, " ")
|
||||
]
|
||||
),
|
||||
Index + 1
|
||||
}
|
||||
end,
|
||||
0,
|
||||
Matrix),
|
||||
Skewed.
|
||||
|
||||
%% Part 2
|
||||
|
||||
map_from_matrix(Matrix) ->
|
||||
{List, _Length} = lists:mapfoldl(
|
||||
fun(Line, Index) -> {{Index, map_from_line(Line)}, Index + 1} end,
|
||||
0,
|
||||
Matrix),
|
||||
maps:from_list(List).
|
||||
|
||||
map_from_line(Line) ->
|
||||
{List, _Length} = lists:mapfoldl(
|
||||
fun(Char, Index) -> {{Index, Char}, Index + 1} end,
|
||||
0,
|
||||
Line),
|
||||
maps:from_list(List).
|
||||
|
||||
mget(Matrix, X, Y) ->
|
||||
maps:get(X, maps:get(Y, Matrix)).
|
||||
|
||||
check_if_cross(0, _, _Matrix) ->
|
||||
false;
|
||||
check_if_cross(_, 0, _Matrix) ->
|
||||
false;
|
||||
check_if_cross(X, Y, Matrix) ->
|
||||
maybe
|
||||
true ?= maps:size(Matrix) - 1 > Y,
|
||||
Line = maps:get(Y,Matrix),
|
||||
true ?= maps:size(Line) - 1 > X,
|
||||
"MS" ?= lists:sort([
|
||||
mget(Matrix, X - 1, Y - 1),
|
||||
mget(Matrix, X + 1, Y + 1)
|
||||
]),
|
||||
"MS" ?= lists:sort([
|
||||
mget(Matrix, X - 1, Y + 1),
|
||||
mget(Matrix, X + 1, Y - 1)
|
||||
]),
|
||||
true
|
||||
else
|
||||
_ -> false
|
||||
end.
|
||||
|
||||
%% TESTS
|
||||
|
||||
-ifdef(TEST).
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
|
||||
find_xmas_in_line_test() ->
|
||||
?assertEqual(0, find_xmas_in_line(<<>>)),
|
||||
?assertEqual(0, find_xmas_in_line(<<"ABC">>)),
|
||||
?assertEqual(1, find_xmas_in_line(<<"XMASAAAAA">>)),
|
||||
?assertEqual(1, find_xmas_in_line(<<"XXMASS">>)),
|
||||
?assertEqual(1, find_xmas_in_line(<<"SAMXMAS">>)),
|
||||
?assertEqual(1, find_xmas_in_line(<<"XMASAMX">>)).
|
||||
|
||||
|
||||
transpose_test() ->
|
||||
?assertEqual(
|
||||
["100",
|
||||
"010",
|
||||
"001"
|
||||
],
|
||||
transpose(["100",
|
||||
"010",
|
||||
"001"
|
||||
])).
|
||||
|
||||
skew_test() ->
|
||||
?assertEqual(
|
||||
lists:map(fun list_to_binary/1,
|
||||
["100 ",
|
||||
" 100 ",
|
||||
" 100"
|
||||
]),
|
||||
lists:map(fun list_to_binary/1, skew(
|
||||
["100",
|
||||
"100",
|
||||
"100"
|
||||
]))),
|
||||
?assertEqual(
|
||||
lists:map(fun list_to_binary/1,
|
||||
[" 100",
|
||||
" 100 ",
|
||||
"100 "
|
||||
]),
|
||||
lists:map(fun list_to_binary/1, skew(
|
||||
["100",
|
||||
"100",
|
||||
"100"
|
||||
], reversed))).
|
||||
|
||||
part_1_test() ->
|
||||
Testfile = filename:absname("./priv/test_input/4.txt"),
|
||||
?assertEqual(18, part_1(Testfile)).
|
||||
|
||||
part_2_test() ->
|
||||
Testfile = filename:absname("./priv/test_input/4.txt"),
|
||||
?assertEqual(9, part_2(Testfile)).
|
||||
|
||||
-endif.
|
||||
Loading…
Reference in New Issue