mirror of
https://codeberg.org/JasterV/aoc2024-haskell.git
synced 2026-04-26 18:10:05 +00:00
optimize Day4 to use a HashMap
This commit is contained in:
parent
883e5fb8da
commit
e8fadacad1
5 changed files with 174 additions and 22 deletions
|
|
@ -43,6 +43,7 @@ library
|
||||||
, containers
|
, containers
|
||||||
, regex-tdfa >=1.3.2 && <1.4
|
, regex-tdfa >=1.3.2 && <1.4
|
||||||
, text >=2.0.2
|
, text >=2.0.2
|
||||||
|
, unordered-containers
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
||||||
test-suite aoc2024-test
|
test-suite aoc2024-test
|
||||||
|
|
@ -68,4 +69,5 @@ test-suite aoc2024-test
|
||||||
, hspec >=2.0.0
|
, hspec >=2.0.0
|
||||||
, regex-tdfa >=1.3.2 && <1.4
|
, regex-tdfa >=1.3.2 && <1.4
|
||||||
, text >=2.0.2
|
, text >=2.0.2
|
||||||
|
, unordered-containers
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
|
||||||
140
input/day4.txt
Normal file
140
input/day4.txt
Normal file
|
|
@ -0,0 +1,140 @@
|
||||||
|
SSSXMASAMSSSSSSXMASXMASXXMXMAXSSMSSXXSMMSXMMSMMMMMAXSSMMXMAMAMSMXXSMSSMXXMAMMXSMMSXMAMAMXSMMMSMSAMXXMSMXMXSAAXMSMMXSSMSASMXMSAMXXXMMASXXMSSM
|
||||||
|
AMMAMXXAXAXAAAXAMASXMAXMSMSSSMAXMASMMMAAMMSSMAAMASXXXAXXXMAXAXAMMXMXAAMSASXMSXMAASMMSSXMASAAXMAMXSAXMASAMMMASXMAAXMXAASAMXAMMMMSSSMSAMXAAAAS
|
||||||
|
MMSSMMSSMXSMSMSMMASAMXSXAAAAAMMMMAXXAXMMSASASMMSAXMASXMMSMMSMSAMSAMMMAMSAXMASAMMMSAAAMAMASMMXMAMAXAASXSMSXXSMASMSMASMMMMMSMSAAMAAAMMAMSSMSSM
|
||||||
|
XAAAAXAMXMAMAAXAMXSXMASMMSMSMMMAMSSSSSMAMXMAMXMMMSXAMAXAAXMAXXXXSASASAAMXMMAMASMXSMMSSXMASXAMMMMMSSMMXMASAXXMXMAXAMXASMSMAXSMSSMMMMMMMAXAMXM
|
||||||
|
MMSSMMMSMMMMMMSAMXMAXAMAMXXAMASXMAMMXAMASMMSMMSAMXMASXMSASMSSSMXSAMXSMMSAXMASMMMAMXMXMAMXMMMSAAAAMAAXXMAMMMSXMSSMXXSAMASMMMSXMAXSASASMAMXAAX
|
||||||
|
XAMAMSAAMAAXXAXAXAMSMXSSMMSXSASMMXSMSAMXSXXMASMXMAMXXXAXMXMMAAAXXSXXXAAXXSXAXMAXMAMMAMXMAAAASXSMSSXMMMASMXAXAAMASAXMSMAMAMASMSMMSASASMMSMSSS
|
||||||
|
SXMAMMMSXSSSMSSSMSSXAXAAAMMMMASMSXAASAXAMXSSMMSSSMSSMASMXAMMSMMMAMSMMMMSMSMXSMSMSMSMXSAXMSMMSAMAAAAXASAMMMSSMMSAMXXAXSXSXMMMAXSAMXMXMAXMAAAX
|
||||||
|
XAMSMMXMAXAAAXMXMXAASMSSMMAAMAMAXSMMMMMSSMMAMAMXAXAAMXXAXXSAAXXMAMAMAAAAAXAAXAAMAAXXMAXMAAXXMAMMMSMSAMXSAAAXAAMASMXMASMMMSMMSMMXXSMMXMMAMMSS
|
||||||
|
MSMMAXAMSMSMMMMASAMXXXXAASMMSAMXMMMAAAAMAMSAMASXXMMMMAMSSMMMMSMSASMSSMSMSMSMMXMSMMMXMASMSMSXSXMMXMXAXMMSMMSSMMSMMXAMAXAAASAAMAXSXXAAAXXAXAAA
|
||||||
|
AAAXAMMXMAXXMAMMSAMAMASXMMAAXASMMAAXSMMSAMMAMMSAXSMSMXSAAMASMAASASXMAAMXXXMXAAMAMASASAMXMASAAXXXAXAMSXMMMMXMAMXXAXXMSSXMSSMMMSAMAMSSMMAMMMSS
|
||||||
|
SSSMXAXMMAMAXSXMSAMAMXXSASMSSSMMSXSMXMASASXSMSMMMXAAASMMSMASMMMMMMMMMMMAXASMSMSASXSASAMXMAMXMASMMSMXAASASMMMSSSMSXMAXAXSAMXAXMAMXMAAMXSMMMAM
|
||||||
|
XAMAMSSXMSSSMXAAMASXSMMMXMAAMAAXSAXAMMASAMAAXMASASMMSMXMAMMMXAMMMSMSSMMXMSMAXASXMAMXMASXMMMAXMMAXAMMSMMASAAMAAAAAMSSMAMXAXMMSSSMSSMSMXMAXXAM
|
||||||
|
MAMAMAXMXMAMAMMMMAAXAAXMAMMMMMMMSAMXXMAMAMMMMSAMXASMXAXSASASXMMAXXAAMAMXXMASMMMAAXMASMMXXXSSMMAAXXSAXXSASXMMMSMMMXAAXMAXMMSAXAAAAASAMXMXMSXM
|
||||||
|
SSMXMXSXSMMMSMSSMXXSSMMXASASXXMAMAMSSMSSSMMXAAXXMAXXMXMXASASAASMSMMMSSMSMSMMMASMMXMXMMMMMMMAASMSSXMMSAMASXXXMXXAMMSSMMMMSAXMMSMMSSMMSASAMMMS
|
||||||
|
XMASXMMMMAMAXSMXMMMMAMXSASASMMMMSAMMAAAMAAXMASMXSASMMMSMMMAMMMMMAAAAAMAXAAAXSAMXXXMASAAAAAASMMAAMMSAMAMAMMMXMAXXSAXAXAAAMXMXMXAAXAAASAMAMAAA
|
||||||
|
XXMXMAMASAMMSMSAAASXMXMAAMASMXAAMAXSMMMSSMMSXMXXMXXAAAXMAMAMASASXMMSSMSMSMMMMAMMAXSXSSSSXSXMXMMMMAMASXMAMXMAMSSMMMSMSMMSSSSSSSMMXSMMMMMSMMSS
|
||||||
|
SSSMSSSMSAXMAASXSMSAMXMMXMAMAMMSXMMMASMAMAMAASMXMMSSMMSSMSAXXMAMXXMAXAAAASXSSXMASAMXMAMAXXMSAXAAMSSXMASXSXXXXXAMXAAXAAAAAASAAMAMAXAMMSAXAAMX
|
||||||
|
AAAAAXMXMASMMMMXMAMAMAMXSMMSMMAMAMAMXMMMSXMMXMAAAAXXAMMXASXSSMSMXMMMXSMSMSXXAMXXMASAMXMSSMASMSSSSMMMXMAMSAASMSMMSSMSSSMMSMMSMSXMASAMXMASMMMM
|
||||||
|
MSMMMXXXMMMMAMAXXMMSMMSAAAAMXMAMMMMMAXXMAXXXSMXMXSSSMMMMMMMAXAASXXASMMMXMXMSAMXSXSMMXXSXAMAMMAAMMAAXAXSAMXMMAAXMAMAAXAXMXXXAXMXMASMMMMAMXMAM
|
||||||
|
XAMSASMXMXAXSMMMXSAMAAMMMMMSSMSMSAASXMMMMSMAAXMSXMMMXAXXMASMMSMSXMASAAXMMMAXAXASMMAXSSMSMMSSMMSMSSMSXSMMAAXMSMMMSSMMXMMMMMSMSAXMAMAAAXMMMMMX
|
||||||
|
SASMASAASXMSXAAAAMASMMSSSXMXAAAAMSMXAXXAAAMMMMMSAAMSSSSXSAMXMMMMMSMMXAMXMASMMMXSAMAMXAAXXAMAXMMXMAXXMXAMXXXAXAMXAAXSXXSAAAAAMAMXMXSASASASASM
|
||||||
|
MMMMMMMMMAMAXMMSXMASXAAAMMXMMMMSMAMSMMSMSAXMXMASXMMAAAMAMMMMXMAAAAAAXXMASMXAXSMMMMXXSMMMSXSMMMMMSXMMASMMSMMSMMMMSSMSAASXSSMSMAMAXXMAXASASASA
|
||||||
|
SSXMMASMMSMAMXXMMSASAMMSMMSMMXAMXMMAAMAAXAXSAMXSSMMMSMMSXSASAMSMXSMMMMSASAMAMMAXASXAMXMXXAMAXSAAXMAAMAXAXAAAAAAMAAAMMMMAXMAAMASXSAMAMMMAMAMX
|
||||||
|
MAAAMASAAAMXSMSAAMASXMAXAAMAMMXSAXMMSMMSMXMSASMXMXMXAXAXASAMMXMMXXMAAMMMMAMMSXSMASMMMAMXMMMMAAMSSXSSMMMMMMSSSMSXSMMMXAMSMMSMSMAMXAMXSASXMXMX
|
||||||
|
SSMMMAMMMMMAAAMMMSMMAMXMMMMAMMMMMSXXAAMMXXAXAXAMMASXMSSMAMAMSAMXASMSMSAXMAMASAMMXMAASASAAAAXMMXAMAMAMXAAAAXAXAMAXXMASMMAMAAXAMAMSMMMMASAMXXX
|
||||||
|
MXMXMXSASAMSXSXSAXASMMSXSMSMSAAAAMXSSSMAXMMMXMMXSASAXAXMXMAXSASMXSAMASASXXMASAXXXSXMSAMMSMSMXXMMSASAMSSSSSMMMAMAMASAMASMMSSMXSAXAAAAMAMMXXMS
|
||||||
|
SAXXAAAAMAXXAXAMXSMMMAMAXAAMXMMMAXXAXAMXSAXSXMXAMASAMXSXXMAMMMMMAMAMAMAMMSMMSMMAMSAMMAMXAMMMMMMASXSAMMAMAMAMSXMXSAMASAMXAAMMMSMSSSSSMMSXSAAX
|
||||||
|
XSMMMMXXXXMMAMAMXSMAAXMAMMMSAMXSXMXSSSMMSAMSAMXMMAMASXSMSMMSASAXMMSMMMAMAAAASAMXASAMMMMMAXSAMAMXSASMMMAMAMMMMASAMASXMXSMMXMAMXXAAAXAAXAASMMM
|
||||||
|
XMXAAMSMSMSMAMMMAXAXSXMXMMAXASAMASMMAXMXMMMXAMAXMASXMAXAAAXMASXSXMXAAXAMSSSMXAMAXSAMAMSSMMSASMSMSMSMSSSMXMSASAMASXMXAMSXMASMSSMMSMSSMMMMMAMX
|
||||||
|
XMSSMSAAAAAXMMAMXSMSXAMAMSMSMMASMMAMAMMAAAAMXMMXSASXMXMSMSMMAMMXAXSSMXXAMXXAMSMMXSAMXSAAAASAMXAASAMAMAXMAXMAMMXAMAMMSAMAMMSAAAMAMXMAAAMXSXMS
|
||||||
|
XMAMXSMSMSMMMXXXXXMAMMMMMAAAXAAMXSSMAMSSMMXSAAMAMAMAAAMAAAMMASMSSMXAXAMSSMMSMMAXASAMMMXSMMMSMSMMMAMMMAMSSSMSSSMASAMAXXMAMMMMMAMAMAXMMMXASAMS
|
||||||
|
XMASXSMMAMXAMSMSSMMMSMAMSMSMSSMAMXMSSMMXAAASMSMXMASXMMSMSMXMASAAXMMSMMXAAAAXAXAMXSXMXAXXXMAXXMXXXSMMMAMXAXAAAXSXSAMXMMMMXMAAXAMXSASMSXMMSAMX
|
||||||
|
MMXSASXMXMMXXAAAXAAXAAAMXXMAMASXAAXAMAASMMMSAMMSSXMAMAMXAXMMAMMMSSMMASMMMSMSAMSMXSMMMSSXMASXAXXMAMAMSASMSMMMSMXMMMMSMSASASMSSSSMMASAASXXSAMX
|
||||||
|
ASMMXMASXXAXSMMMSMMSSSMSAMMMMMAXSSMMSMMSXMAMAMAAMMSAMASMMSSMXSAAAAXSAMAMAMMAMXAASXMAAXMMMMMSMMXMASAMSASAAXAAAAXMAAAAASASAXAAMMAMMMMMMMMAXAMS
|
||||||
|
SXAXASAMAMMMAXAXAMMAMAXMAMAAMXMMXMAXXXAXAMXSXMMMSXSASASAAAXAAXMMSSMMASAMSMSASXMSMASMSSXXAAXAXSAMMSAMMMMMMSMMSSMSSSXMMMXMAMSMMMSMSXMASXMMMXMX
|
||||||
|
XAXSAMXSXMXMMSMSMMMASMMMMSAMSAXSAXSMSMSSMMAXMXMAXMSXMXSXMMSMMSAXAMASAMMXMAMASAMAMXMAXXASMXSASXAXAMAMXSAAMAXMAAAAAAXSMMSMSMXAXAMMSAXMSMAAAXMX
|
||||||
|
MAXSAMMAMXXXXXMAMASMMMAXMAMMSMSSMMXAAMXAAMMSAMMMSAXMXXXXXAXXXAMMSSMMMMSAMAMAMASAXMMMMMMAAMXMAMMMSMSMMAAXXAXMSMMMSMMSAAXAMASAMMSASAMSMMSMSAMX
|
||||||
|
AMMMMMMAMMSASXMASMSAMSXMAMXXXSAMXAMXMXSXMMXXASAMXMXAMMMXMASXMASAAMAMXAXMXAMAMAMXMSAMASXMMMMXSAMAMXXASMSMMXMXXMXMAMASMMSSMAMAMXMXMXMAAAMMXMMX
|
||||||
|
SXAAAAXMMMSAMAMASXSAMAXMSXMASMMSMXSMSASAXMASAMXSAMMSAAAMMMMASAMXSXMMMXSXSMSAMSSMAMASMMAXXXAAXMMSSXSAMXAAXMASASASMSMXAMAAMSSMMXSXMASMSMXSSMSS
|
||||||
|
ASMSSSSSXAMAMAMASMSAMXXXMASMXAXMAXXXMASAMSAMXSASAXAXSSXSASMMMASAMXSAMMMXAMMAMAAMASXMMXSMSMMMMXXAXXMAMSXSMMMXASASXAXSXMMXMAAAMAXAMXAMXMASXAAX
|
||||||
|
MAMMAMAMMASXSASXSASXMSXSXXMXMAMXMXSSMAMXMMXXAMXSXMSMXMASMMAMXSAAMASASASAXMMAMSSMAMAAAAMSSMAMSMSMMSSSMMMMASXSMMMMXSMSXSSXMSSMMMSAMXMAAMXSMMMS
|
||||||
|
SASMSMAMAXXAXASAMAMMMAAAASMMMAXMAMXAMXSXMMMMAMAMMMXXAXMMXSXMXAMAMASAMASMMSXSAXAMMMSAMXSAXAASAAASAAMMAMXMAMAXMASXXMAXAAXMAXXAAAMAMXXSXSAMAMAM
|
||||||
|
SASAMXAMSMMSMXMASMSAXMXMMMAASMMMSXMXMSXMAAXSSMAXAMMMMMAAXSMMXMSAMXMXMXMXAXAXSAMXAAMMXMMMMSMSMSMMXSSSSMSMSMMMSASAAMAMXMSAMXSMMMSAMMXMXMASAMAS
|
||||||
|
MMMAMSSSXSAAAXSMMMAMAMXXXMMMMXAXAAASMMMSXSXMASMSXMAASXMMXMASXXXMMAXMXMSXSMMMAMXMMSSMAXAXXXAXMAXXSXXAAXMMMAMXMXSMXMXMAXAXMAMMAMSMMMAMASAMXSMS
|
||||||
|
SAXMMMXAAMSSSXAAASMMMMSXXSAXXSXMMMMMAAAMXMASAMXAAMSMMAASASXMXSSSSMMSAAMAXMASMSXSSMAMASAMXAMMSAMMAMMSMMSASAMSMAXXAMASXSMAMMSMMMXAASASASMMMSXS
|
||||||
|
SMXSAXXMMMMMMXSMMSXSAAMMXXASXMAXXXAMSMMSASXMAMMMSAXASXMMAMAMXMAXXAAMSSMAMSASXMMMASMMMAASMSAAMXSAMAXAMXMMXMMAMAXMAMAXMSXMMMAAMSMSMSAMASXSAMMX
|
||||||
|
MAASXSMSAXAAMXMAAXASMMMAMSMMASMMSSMXXSAMXSMSSMMAMMSAMMASXSAMMMSMMMMMAXXXMMASMMAMAMXAMMMMAAMSMSAMXXAASAXXSSMMMASXSMXSAMXMAXMSMAAAAMXMSMMMASXM
|
||||||
|
MMMSMXAAAMMXSAMMAMXMASXSMAXSAMXAAAXSAMMSASXAXAMAMXMAMSMMMSASXAAXXXXMMMMXXMXMMXAMSXSMSAMMAMSAXAMXSXMMSXMAMXAXMXSAMAAMAMMSSSMAXMSMSMMXXAXSAMAA
|
||||||
|
MAMXMMSMSMAMMAXAMXAMAMXASAXMMSMMMSMMAMXMAMMMMXMSSSSXMASAXSAMMSMMSMMXSAAMSMMMAMMXXASASMSSSXSMAMAAXXXMMMSXMAMMSMMMMMMSSMXMXAMXSXAAXXMAXMMMXSMS
|
||||||
|
SASAMMMAAMASMSAASMSSSMSAMXSXAAAAAXAXAMAMAXXSASXMAMXMSXMMXMSMMASXMASAMAXXXAAMASMAMAMAMXMXMAMXMMSSMMMMAAXMASXMXAAXMAMAXMAXSMMSXXMSMXMASMSMMSXX
|
||||||
|
SXSASASXMXXMAAMMSAMXAAAMSMMMSSSMSSSMASXMXXAAASXMAMMMMSSSMAXMSASXSXMMSSSMSSMSAXMAMSMXMXAMMASMXAAAAXAMMMMSAMXSXSMMSAMXSXSXSXMSMSMMXSXMAXAAAXMM
|
||||||
|
MASAMXSAMXSMMMXSMAMMMMMMAASAMAAAXAMSMMMMSSMMXMASASXSAAMAMXSAMASMSAMXSAAAAAAXXXXAXAXAXXAXMAMXMMMMMSMSMSXMASASMMAASXMASXMXMAAXAMSAASMXMSMMMSMA
|
||||||
|
MMMMMMSAMASAXAMXMAXSAMXMXSMXSXMMMXMAXAMXAAMXMXAMXXAMMMSXMAMAMAMASMMXMXMMMXXXMASXSMXMMSAMXSSMMSSMAAAAAAXSXMASAMMMSAMXSMSASAMMSMMMSSMAXAXAAAAS
|
||||||
|
XMAMSAMMMMXXMMMASAMXASAMSMMMSXXXXXXMSSSMSMMMAMSSSMAMXASAMXSAMXMXMASAMASXMMSSSMAAAAASAMAAAMAAAAAMSMSMSMMAXMMSAMXASAMXSASXAASAXAXXMXXXSMSMXSXM
|
||||||
|
ASAMMAXXASMMMMSAXMASAMASAAAAMMMMMSMMAXAMXSAMXMAAMXMXMAMAMXMASXMMMXMAMAMAXAAAAXMSMSMMAXAMXMXMMMMMMXAAMAMMXMXXXMMMSXMMMMMMMAMAXAMXSAMXMXAMXMAM
|
||||||
|
XSASXMMSMSASAAMMSSXAXSXMMSMMSAXAAAXMSSMMAAMXAMMSMMMMSMSMMAXMXXAAXSSSMMSXMMSSMMXXXAMSSMASXSSMMSAAAXMMSAMSAMASAMAMXMMAXMXAXSMSMSMAMAMMXAXMASAM
|
||||||
|
XSMMAMXAASXMXSSXAMMMMSAMXMMMSMSMSSSXAAAMMMMSSXXAMAAAAMAMSSSXAXMSMAAAAAAXXMAMMXMMSXMAMSMMMAAAAMXMMXMXSXMSASAMXSMSMAMSXAXSAMAXMASXSAMXSMSXXSMS
|
||||||
|
AMXSXXSMXMAMXMAMXXAXMXAMASAAMXMAAAAMSSMMSAASMXSASMMMXXAXAAMMMMXXXMAMSMSSSMAMXMAXAXMAXASAMSMMMSSMMXMAMSASXMASASXAXSMXMMMXAMAMMAMXSMSMSAAXXMMS
|
||||||
|
XMASAXAMXXAMXSXAMSSSSSXMAMMMMAMMMMMAXAMASMSMAASAMMSSMSSSMMXAAASMMXSAMXAAXMASAMMMMMMXXAXXMAAXXAAAAAXAMMXMASXSASXSMMSXXMASXMMSMMSXSXAAMMMMXAAX
|
||||||
|
SMASMMXMMSMSMMASAAAAAAXMXXSSSXSAMSSSSMMMMMXMMMMAAXAAXAMXMXSSSMSASAMXMMMSMXMAMSSMSASMMSMMMSMMMMSXMASMMSAMXMASAMXMASAMXSXMAAAAAMSASXMSMAXASMMS
|
||||||
|
MMAMMSXMAASAASAMSMMMXMXXMMAAAXSMMAAXXXAASMSMSMXSMMMSMXSAMXXAAASAMXMSAMXAMXSAMXAASXSAAAAAAAXMSAMMSXXMASMSAMMMAMAMXMMSAMXMSMMMXMXAMXXAMXXXMSAX
|
||||||
|
XXMAAMAMXMMSMMAXXXMXXMMAAXMMMMMSMMSMMMXMSMAAAXMXAXXMAAAAASMSMMMMMXSAMXSASXMXXMMMMASMMSSMSSSXMAXAXSAMXMASXSXSXMASMXXMASMXXAAXAMMXMXMSMMMSAMXS
|
||||||
|
XMSMMXSMMSMMMSSMMSMXSASMSMXXXAAAMXMASMSMMMMSMMASAMMMMMSSMMAXMAAAMMSXSXMXMAMXMMSSMMMAMXMMXXMAMAMMMSMMMMXMASAMXMMSAMSSMMXAXSAMXMASMMMMAAASAMSX
|
||||||
|
MAMAXAAXAAAXAAAAXAAXSASAAASMSMSMSAMMMAAAXAXXXXXAMXXAAXAXMMMMMSSXSAMMMMMASAMMXAAAAMSMMAXSXMXAMXSMASMAXSXSXMMMXMAMXMMASAMXMMXMSMXMXAASMMXXAXXS
|
||||||
|
ASXAMSSMSSXMMSSMSMSMMAMAMSAAMAXAMMSSMMMMXSSMAMSAMMSXSMASXSMMAXXAMXXAAAXAMASAMSSSMMXAMASXMASXMAXMXMMXSMAMXXMSMMAMMXSAMXASAMXSAMMSMMMSASAXMMAX
|
||||||
|
SXMAXXAXXAASAAMMAMAAXMAXMMMSMAMMSMAAASAXSAMMAMMASAMSXMAMAXAMSSMXMAMXSSSXMMMXAMXXXSMSMMMMAMXMSMSMMXMXAMXMAMMMAMSSMMMAMMSAAXSMASAAMSMSAMAASMSX
|
||||||
|
XMAXMSMMMSMMASXMAMMMMMMSAXAAMSMAAMSMMAAXMASMAXSAMAMMXMAXMMSMXAMAMMSAAAAXSMMMSMMMXMAMXXXMXMXMAMAAMAMSXMXMASAAMSAAAXSAMMAMXMAAAMMSMAAMAMSMXAMA
|
||||||
|
XSSSMAXXAAASAMXSSSSXSAAMAMSMSMMMMMXMXMSXAAAXMXMMMSMSMMSAMXXXSAMXAAXMMMMMAAXAXAMSAMSMMMAMASXSMSMSMXXAASMMASASMMASMMMXSAMXSSXXMXXXMMSMMXXXMXMA
|
||||||
|
MAAMXMMMXSXMASXMAAXAMMXSMMMMSAMXSMSAXXMXMMSSSMXSAMMAAAMMSMSMMMMSMMMXAAAXSMMXSASMMXAAASXXXXAMXMAAXMMSSMAMMSAMMXMXMXMAMAMAMAAXMXXXAXMAMAMAMMMS
|
||||||
|
SMMMAMASMXAMXXXMMMMSMMAMAXXAXAXXAAXMASXASAMAAAAMASXMMMXAAMAAAAAXSXAMMSAMXASAMXMAXSSSMAAXSMSMAMSMXAXMXMXMMMXAXMMMSAMAMAMASMSXMASXMMMAMASAMAXM
|
||||||
|
MAMSXSAMAMMMMSMMAXXAAMSSSMMSSSMSMMMXMAMAMAMSMMXSAMAXMAMSMSSSSMSSSMSXAXMAXXMASASXMAMXXMXMAAAMXMAASMXMAMSSXMXAMAAASXSSSMSASXXAMAXAAAMASXXMMSSM
|
||||||
|
XAMMAMMMSAAAAAMSMMMMMMXAXXXMAXXXXXMASXMASXMXSMAMAMXMMAXAAXMAAAXAXAXMMMSSMXSAMAXSMSSSXXXSMSMSMSMMMAASAMAMASXAAXMMXXXXAXSAMXSMMSMSMMXXSMSMAMAX
|
||||||
|
SMSSMSMAMSSMXSMSASXMXSMSMSMMAMXMXSMMMXSASXMXMMMSSMSMSMSASMMSMMMMMMMMXAAAAMMSMXMAXAXMASXAAMXMXXXAMMMAAMXSAXSAMXSAMXSSMMXAXAMSXMAXXSXMXAAMXSAM
|
||||||
|
ASAAAAMXXAMMMXAMXMAAASAXAAAMASXMASAAMXMASXSAXAAAAAAAAASAMXXMAXXMAXASMMSXXXAAMMMSMMSXAASMMMASXSMSSXXMXMAMXMMMMAMASAAAXMSXMMASMMSMAXAMMXMSMMMM
|
||||||
|
MMSSSMSXMAXSAMAMSSMMMMAMSMXMAMAMASMMAAMAMASXXMSXMXMSMMMAMXMSMMMSMSASAMXMSMSMXAAAXXMMMXAXAXSMAAXASAMXMSSXMXAAMXSAMMSMMMMSAMAMAAMXXSAMAASAMAXM
|
||||||
|
XXAXXMXMAMXMSXXXXXXXAMXMMMXMSMMMASASXMSAMXMSXXMASAMAXMMMMMXAAAMAAMASAMAASAMXSMMMXAXAXAMXSSXMSMMASMXMMAAASXSMSAMASXMXXAASXMMSMMSAXSXMSMSASMSM
|
||||||
|
MMMMAXAMXXXAXMMMSMMSXSAXMASMMASMMSMMAXXAMXAAMXAXMASASMAMAAMSSMSMXMAMXSSMMAMAAAXSSMSMSASAMMMAASMMMXAXMMSMMAAXMAMMMMMASMMMAMXMASMXXMXXAXSAMAAX
|
||||||
|
AAAASXSAMXMAMAAAAMAAASMXSMMAXAMAAXAMXMMSMSSMSMSMXMMXMMAXXXAAMMXMXMASXMAMMSMMMSMAAAAAXAMMSMMSAMXAAMMSSMXAMSMMSSMSAMXAXMASAMXSMMSXXMAXMXMAMSMS
|
||||||
|
SMSMMAXASXMAXSMSSSSSMMXXMASAMXSMMSMMSSMAAXAXSAMAASMMMSMSAASAMMAMXXMAMSAMXMAXAAMMMMMSMXMASXAMASMMXSAMAASMMAAAAXXAMXMSSSMSASXXMAXXMASMMAMAMMXX
|
||||||
|
MMMAMSMMXMMXXXAXXAAMAMXMXAMAMAAMAMAAAASMSMMMMAMSMXAAXAXMXMMAMMASAMXSMSMSASMMSXSASAAXMAXSMMXSAMMMMMAXMMMMSSMMSSSMMMAXAMXSAMAXMMSMSAXXMXSXXMSX
|
||||||
|
MAXMXXXMASMMAMMMMMMMMXASMAMAMSSMSSMMSXMXAAASMSMMMSSMMMSMMXXXMXXXAMAMXMASAXAAAAAMSMSASMMAXSMMMSSSSSSMSAXXAAAXAAXMAMXMAMXMAMXMASAAAAMSSXAXSSMM
|
||||||
|
MMSXAXAMMSXMAXAASAMXXSASXSMXMMAMXAXAXXMSSSMSAAXXMAXAAXXAASXSSMSSSMXMAMMMSMMMMMMXMAXMASXMXSAMXXAAAAAAXSSMSSMMMSMSXSMSMMSSSMMAMMMSMSAASMAMXAAX
|
||||||
|
AXAMSXSAMXXSXSSSSMMSAMXMAMMAXMASMMMAMXAAAAAMMMMSMSXSMSMMMSAAAAMAXAMSMSMAAXAAXASAMMMSAMXXAMAMSMMMMMMSMXMAMAAXMAMXMAASMMMAMMXSXAMXAMMMMMMSXSMM
|
||||||
|
SAMXMXAAXXMAMXXMXXXSXMSMMMXMXXXMAXMAAMMMSMMMAXXAAAAMSMASMMMMMMMAMXMAAAMSSSSSSMSAXSAMAXMMMSSMXAXXXXAXAAMAMXSMSASASMXMAAMAMAAMMSMMXMXXXSAMAMAM
|
||||||
|
MMXSMMSSMMMSAXMASMXMMXXAAASXMSASXMSMSASAXASMXSSMSMSMAMSASAMXMXMMMXMMSMXMXMXXMASAMMMMXXAAMAMAMSXMMMSSSMSASXMASASAMMMSSMSSSMXSAMMSAMXMXMASAMAM
|
||||||
|
XAAMAAXAMAAAMAASASAASXSSMMSAASAMXXXAMMXAMASXAXXAAXAMAMXAMXSMMMSAMXMXXMASASMMXXMXSMAAMXXMMAXMMMXXAAXAAAXASAMMMMMXMAAAAXAAAAAMASAXASAMXMMMMSMM
|
||||||
|
MMSSMSSSSSSSMXMMAMMSMAAMXXMMMMAMMMMMMMMMMAMMSSMSMSMSSMXXSAMAAXMASAXXAMAXASAMMXMASAMMSAMSSSXSAXMMXSMMMMMMMXMXAMAXSMMSMMMMMMMMMMXSAXMXSXMAXAMX
|
||||||
|
AAXAAMMAAAAAAASMAMXXMMMMSSMSSSXMXSAAAAAASAXAMAAAMXXAMXSXMASMSSSMMMMSAMSSMSAMASMASXMAMXSAAXAXASAMXMMXAMMAAXSSMXAMXMAMAXXSSSMSXAXMMMSXMASMMXSX
|
||||||
|
SXSAMXMMMMMMSMXMASXAXAAXMAAAXMAMXMASXXSAXMMSSMSMASMSSMMASAMAMAAAAAMMAMMAASASMXMXSXMXSSMMSMSMASMSAAMSMSMMASMXMASXMSASXMMXAAASMXMAMAXAXMMSAMAX
|
||||||
|
XMXMMMSMSAMXAXXXAXXXXSASMMMMMSAMAXAMMXMMXSAAAAXAAXMAAASXMXSMMXMSMSSSMMSMMMAXXXSAMXMAMAAAMAXMMMAXMMMXXAAMMMMASMXAAMMXMASMMMMMAMSSMMSSMMAXXMAM
|
||||||
|
SAMXXMAMSAMAAMXMSSMSMMASASXMXSMSSMASXXXMAMASMMMMXXMSSMMASAXXASXMAXAAXXAMXMMMASXMMAMASMMMSMSASMSMSASXSSSMMMSASXMMXMMXMASMMSSMXMAMAMXMAMMSAMXS
|
||||||
|
XMAMXMMXMAMMXMMMXAAXAXASAMXSAMXAAMSMXSAMXMMXXAAMXAMAXAXAMXMASAMMSMSMMSXSMXMAXMAMXASAMAAMXMSAMAAASASXMXXAAMMMSXMMSMMSMMSAXAAAXMASXMSSSMAMASAX
|
||||||
|
MSSXMAXSSMMAAMAMMMMMXMMMMMAMMSMSMMASASMMASMMSSSSSMMASMMSSSMXXMAXAAAMMSXAXAXXAXAMXXMMSSMMAMMSMMMMMMMAMMXMMMAMXXSAXAAAAAXMMSSMXSMMMXMAMMSSMMXS
|
||||||
|
AAAMXMXMAMMXMSASAXMMMXMASMASXSAXXSXMMSAMAAAAMXMAMXMMMAAMAAMAMXSSMSMSAMSAMMSMAMSSSMAXAXASMMSXSXSXMASAMAMSMSMMSXMASMMSXMSXAXAMAMAAXMMAMMXAAASX
|
||||||
|
SMMAMMMSAMMSMSASMSAXSMSAXSASMSAMAMXXASXMXSMMMAMAMMSAMXSMAMMXSAMXAMXSAASXAAXMAMMAMSSMSSXMAXXAAMMMSASASXSAAAXMSMMAMAMAMXAMXSAMXSSMSSSMSXSMMMSS
|
||||||
|
XXXMASXMASXAAMAMAMAMAAMMMMMXAMMMXMMMASXMMXXASMMMSXSAMAMAXMXXAASMXMAMMAMXSAAMXSMAMAXAMXAMAMMAMMAXMXMXSXMMSMSXMASMSXASXSXSASAMMAAXAXAMXAXXAXMA
|
||||||
|
SSXSSXXSAMMMMMAMXMAAMXMMSSSMSMSXSASMSXXSAMSMAAAASAMAMSSMMAXSSMMMXMXSSSXXMASAAMMXSAMXMSSMXXAAXMMSMMMMMMXAMAMXSXMMXMMMAXAMMXAMMSXMSMXMMAMSXMAM
|
||||||
|
XAXXMAMMXSXXXSASASMMSAAAAAAAXAMXSAXXXAMMSAAMSAMXSASXMMAMXMMMASAXMAXMAMXXMAMXXMAXMXMXXAMXMSSXXMMAXAAAAXMMSSSMMMASMXXMMMMSSSSMMAXAMXSSMXMXAXXX
|
||||||
|
XMMAMSMMASXMXXASASAASMXMMMMMMAMAMAMMMXMAMSXXXXXAMAMMXSMMMSMSAMXSAMXMAMMXMASMSMXXMAMXMSMMAAAMSSSSSMSSXSAAAXAAMSAMXSMSXMAAXAXAXMMMSAMXMAMSMMXX
|
||||||
|
XXAXMMAMAXMSSMXMMMMMMSXASAMXXXMMSSMSAMMAXMMSMMMSSMMSXMAAXAAMXSXXMAXMAMSAMMAAAMAMSASXMMAMXMSMAAAXAAMAMSMMMSSMMMXSMMAAAMMSSMXSMXAAMMSASMMAMMXX
|
||||||
|
SSSSMSSMSSMAXSAXMASAAXMAMXSMMSAAAAMXMXMSXSAAMXAAMAAXASMMSMSMXMAXASXSMMMAMMMMMMAMXASXASAMAXMMMMMMMMMAXMMSAMXMSMMXASASXMAMAMAAMMMMMXSASMSAAMMS
|
||||||
|
AAASXAAMMAMXSMXXSAMMXSXSMASAASMMSMMAMSMXAMSMSMSSSMXSMMAAAMAAMMSMAXMAXASMMSSXMSSMMAMMXMASMSXMSAMXMSSMMSAMMMMMAAXMXMAXAMXXAMSSMAMASXMXMASMMAAS
|
||||||
|
MMMMMMXMMMMMMXMXMAXSMSAASAMMMMAAAXMMSAAMMMXMAXXAMXXMASMSMSSSMAAMXMXMSMSXAAAXMAAXSXMXMMXAXAAAMSAMXAAAAMAXMAAMSSMXMMXMMSSMAXXAMXSASAMASXXXSMMS
|
||||||
|
SASAXSXSASXAAAMAMXMSAMMMMXMXMXMSSSMMSMSMAMMMMXMAMMSMAMXAAAAAMSXSAMXXAXSMMMMMMASAMASMSXAMXSAMSXSXMMSMMXSMSSSXXXAASMSASAMXXMXAMXMMSAMXSAXXMSXM
|
||||||
|
SASAXSASAMSMSSSSSMMMAMXSASXXXAXMAMAMMXXXASMSAAMXMXAAASXMMMSMMMMXAAMSSXSAMXXSXAMASXMAMXMSAXMXAAMXSAXAAXXAMAMXMMSMSAMXMASAXSMXMXAMSAMXMAMSASXM
|
||||||
|
SXMMMMAMXMXMXAXXAAXSXXXMAXAAMSSMXSSMMSMSMSAXSSMXXSXMMXMXSMXMASMSMMMXMASXMSMMMSSMMMMAMMMMMSMSMMMAMSSMMMMAMAXMAAAXMAMASAMXSXAXSSMMXSAXMSMMAMSA
|
||||||
|
SASXSMSMSMSAMMMSSMMMXMMMSMMSMMAXAAAMXMAAAMMMMMAMMMXMAXSASMXSAMXAAASAMXMAXXXMAAAAAXMMMAXAAMMXAAMXMASXAAXXMXSAMSASMMMASAMXSMMMAAASXMXMMMMMAMXS
|
||||||
|
SAMAXAAXAAAMAXAAMAAMAMAAXMAMASAMMSMMAMSMMMAAAAMAAAASXMMASAMXASXSSMSXSXSMMSMMMSMMMSAXXXSMSXMSSMSMMMXMMMSASXXXXXXAAAMXSAMAMAAXMAMXAMAXAAAXXMAM
|
||||||
|
MAMSMMMMMSMASMMMXMAMMSMSSMAMXMXXXMXSXXAMXSSSXSXSMSMSAMMMMAMSXMAXXXXAMXMXMAAMAMXSAXMSSMAAAXMAMXAAAMSMSAAAMSAMXXSSSMMASMMASMMXSAMSAMMSSSSSSMAS
|
||||||
|
SAMXAMXXAAAMMASXMMSAMXXMAXSSMMXSAXMAMXAMXMAXAMMXAMASMMAASAMXSMXMMMMAMAMAXSSMSSXMASXAAMMMMXMASXSSMXAMXAMMMXSXXXAXMAMAMXMAMMXASAXSXSMAXMAAASAM
|
||||||
|
SXSSSMSMMSSSMASMXAAMMSMSXMXAAAAMSMXMASXMAMAMSMSMAMAMASXXSAMAMXAAAASAMMSMXMXAMSAMASMSMMXMAMSAMXAAXMSMSAMXXAAMSMMXSAMXSSMXSAMASMMSASMXSMMMMMXS
|
||||||
|
SXMXMXMAMAAAMSMAMSMMAAXAXMSSMMXXAXAMXAASXMMSMASMAMXSXMMXXAMASMMMMMXAMAAMXSMSMSMMASAXAXAXXAMMSMXMXMAASAMXMXSAAAXXMAMSAMMXAMMASAAXMXMAMXXMSAMX
|
||||||
|
MASASMMSMMMMMAAAAAXMSSSMSMAXMASXSMMXMSXMXXMAMAMSXMMMMSXSSXSASAASMSMMMSMSAMXXAMXMMSASXMAXAAMXXMAMAMMMXMAXAMXXSXMXMAMMAMSSSXMAMMSSMAMMSAMXMXMS
|
||||||
|
SAMXSAAXAAXSXMSMSXSMAAAXMAXSMAMAMAMSXMAMASMMMAMSMXMAAMMMAAXAMMMAASMMXAAMASAMAMXXXMXMASASXMMXAMAMXSXMAXAMSMSAMASXMAMSAMAAMXMMXAXAMXXMXMXAXAXM
|
||||||
|
MASXSMMSMMXXAMXMXMAMMSMSMSMSMSXAMAMSASXMASAASMSMAASMMSMMMMMSXSMMSMAXMMMMMMMSAMMSMSAXMMMMAAXMMMXMAXMASMMXMAMAMAMASAMAAMMSMXMXMASMSSMMASMMSSMM
|
||||||
|
MASAMAAXMSMSMMAXAAAMXMXAAXAXAMSSXXMSAMXMASXMMXAMSMSAAMXSAXXMAXXXXXMMSXASXSXSAMXMASAXMAMMSMMSAASMXSAAXMSAMXMSMXSAMXSMXMXMMSMXSAXAAAASAMAMAMAA
|
||||||
|
MAMAXMMMMAMAASXSXSXSAXSMSMMMXMAMMMMSAMXSMSMMXSXMMMSMMSAMSSSMSMMMMAXAMSMXAMASXMAMMMSASXSAAAAXMASAAXMXMAMXSAAXAAMMSMXAAXXXAAXMXSMXMSMMASXMASMM
|
||||||
|
MSSSMSXXSASMMMMMMAXMAMXAXXMAXMAMXAAXXMMMAMMMAMMMAMXSMMXSMMXSAAASMMMXXASMXMAMMXAXAMXXXAMXXMMMSMMMMXMMMAMASASAMMSAMAMSMMSMMMXMAMMSXXAXXXASXSXS
|
||||||
|
MXAAAXAAMXXXXAAXMASXSAMXMXXAXSMMSMSSMXMMAMAMMXMMASAMXAMMAMXXMXMMAXAXSAMXSMSSSSMSSSMXMXMASXSAAAXSSMAASAMASAMXMAXMMSMAASMSMXAMXMASMSMMMSXMSMMM
|
||||||
|
XMAMMMMMXSSMSSMXMASXMAASMSMSMMAAXXMAXXASASXXSAXSAMMMMSMSAMSMSSMSMMSXMXMASXAAXXAAAAASMXMMAAMSSMMAAMSMSASMSMXXMMXMAMMSMSAAXMXSAMXMMAAMXSAMXMAX
|
||||||
|
MXXXAXMMAAAXMAMXMAXXMAXXAAXXASMMSXSAMMMSAMAAMAMMMMSAAAMXMMMAAAMSXMAAMXMASMMSMMMMSMMMAASXMXMXMASMMMAXSXMXMASMSXMSASAXAMMMSSMMXMSASXSSMSAMAXSS
|
||||||
|
MSMMMSAMMSSMXAXMSSMMSXXMSMXSMMAAAMMMMAXMXSMMMMSAMASMSMMXSAMMMSMMASXSMAMSXMMMXMAXMAAXXMXAXASXSAMXXSXXMAMXMMMAAAAMAMXMAMXXAAAMAXXXMAXAXSMMAMXA
|
||||||
|
MAXAAXXXAMAMMSMXAMAXSAXMASXMXSMMMSAAMSXAAXAXAAAAMAXXXXAAXXMXMAXSMMAXXXMAMXAXXMXSSSMSMSXSMMXAMXMMMXMSMMMAMAMMMSMMAMASXMMMSSMMMSSSSSSMMXAMMXSA
|
||||||
|
SMSXSSMMSSSMAMXMAMSMMXMMASXSAXMMXSMSAMMMASMMMSXXMASMSMMSSSXMSMXXMMMMMMSSXXMSSXAMAMASAAAXAXMMMSMAXMAAAASMSAXAMAMSMSASAMXMAMXAXAAXAXAXXXXMSASX
|
||||||
|
MXMXMAMMAAMMXMAMAMXASMSMAMAMMSAXAMXMAXXXMAMMAXMMMXMAAAXMAAXXAMSMSAAAXMAMXASAMMSMAMMMXMMXMMAAAASXMSSMSMSASASMMSMAAMMSAMXMASXSMMSMMSSMMSMAMASM
|
||||||
|
AAMAXAMMMMMAMXMMAXSAMAAMAMXMXMXMASAMAMXMMAAMASXSAMMSMMMMMXMMAXSASXSXSMASXMMASAXMXMAMMSSSXMXMMMSXAAMAAAMAMAAAAASXMMMSMMSMASAMAMXAXAMSAAMAMMMM
|
||||||
|
SMSMSSSSSSMMXASXMMSAMXMSMSMMSMSMMMXXAXASXSSMAMMMSMAAAXXSXMMSSMMXMAXAAMAXXXSAMXSMMSMXAAAMMSASXAMMMASMMMMAMXMMSMMMASXMMAAMXMXMMMSSMMMMMXSAXSAS
|
||||||
|
XXAXMAAAMMASMMSAAASAMXXAXAAMAMAAXASXMSXSAAXMXSMAAMMSMMMMMSAAMMMSMAMSMMMSSXMAXXXMAASMMMSMASASAMXMMMAMAXSXSAAXMASXMMAXMXSSXMMSAAXXAMASAMMMSMAS
|
||||||
|
MSMSMMMMMSAMAAMMMMSAMXMAXXMMASMSMMMAAAMMMMMSAAMSSMXAXAXAAMMMSAAMMXMAXMSAMXMMXSSXMASMAMAXXMAMMXAXXMASXMXASMSMSAMXASMMSAMXAXASMSMSMMAMASMMMMMM
|
||||||
|
XAXAMXSXMMXSMMXSXMSAMXSMMSSSMSAAMXMSMMMSAMXMASXXAXSAXSSMXXAMSMSSSMSMSXMASXMAAMAAXMMMAXMSSMAMASMSXSASAMMMMMXMMASMMMSAMXMSAMXSAXXXAMXMAMAMAAAS
|
||||||
|
SSSMSAMXMXAXAXMMAAMAMMAMXAAAMMAMMSAAAXAXAXASXMMSMXMSMMAXAMMXSXMAAASXSXMASAMMXSASMSXSSXSAMMAXMMMXMMASXSAMAMXAMSMXAAMSSXMMMMMMAMMMMMSMMSSSXSSS
|
||||||
|
XXAMMMXSMAXXAMXMAMXSMMMMMMSMMSXSAXSMMMMSSMMSASXAXXAAXXSMMXSAMXMMMMMASAMASAXMXMAXAXAAAXMASXMSXASAMMMMAXXSAMSSMMASMMMAMMAXAAAMMMMMAAMAXXXMAXAM
|
||||||
|
MSMMXSASXASAMXSAAXAMAXXSAAAXXAAMMXMSAMXAMAASAMMMMMSMSAAAAAMMMASAMXMXMAMAXXMSAMSMMMMMMMMXMASAXSSXXAAMAMAMMMMAAMAMXAMAMXMSXSMSAAASMMSSMMMMXMAS
|
||||||
|
XAASAMASMASMSAASMMSSXMASMSSXMMSMSSMASAMXSSMMAMMXSXAAMMXMMXMXSXSASASMSAMSMMMMASAAMMXAMXMXSSMSSXMASXSSMAXXMASMMMMMSMSXSAXMXXASMSMSAAAAMAASXMAM
|
||||||
|
SSSMSMAMXAMXXXMASAMMMMMXAXAMSAMXAAAAMSAMXAASXSAAAXMXMASXXAXAMMSXMXMAMXSXASAMSMMAMXSSMAMAXMAXMASASMAAMXMMSMSXMAAMXXSAMXXSAMXMXAMSMMMSMSXXAXAS
|
||||||
|
XXMAMMSSMMXMMSXMMMMAAAMMXMMMMASMMSMSSXMASMMMAXMXMMSXSXAMMSMASAMXSAMXMXMXXMASXAXMMMAASAMASMSMSXMASMMXSASAAXMASMSXSAMXSAMMMMASXMXXXSAXXXMSSMAA
|
||||||
|
SAMXMMAMASXSAAMXAAXMMMSSXXMXSSMAXXAXXXAXMAAMMMMAXAMAMXMAMAAAMASXSASXMMMSMSMMMSMMAAMASXSAXAMMXXMXMXAAMXSSSMSAMXAASASAMASXXMAMXSXMMXAXXXXAMMSM
|
||||||
|
MAMASMMSAMMMSSSSSSSSSMAMMMMAXASXMMMMMSMSMSSSMAMMMSMAMAMMSMSXSASMSMMAAAAAAXASAMASMSXMXMAMMSMMMMSXSMMXSAMAMXMASMMMMAMASAMASAMXAMAAXMXMSSMMSAMX
|
||||||
|
SAMASAXMXSMAAMMXAAAASMAMAAMXSAMXAAMAAAXMAAAAMXSAAXSASMSAAMAAMXMASASMXMASXSMMASMMXMAMSAMXXMAMSASAMXAAMMMSMMSXMASAMXMXMASAAAAMASXSXAAAAAAAMASA
|
||||||
|
SXSXSXMASMMMXSAMMMMMMSASXSXMAXMXSXSMSSSMMMSMMMSMXMAMXXMMSSMXMXMSMXAAXMAMAXXSMMMMXSSMMAXXSSXMASMXMASASXXMAXSAMXMASMXXSXMMSSMSXAMMASMSSMMMSSMA
|
||||||
|
|
@ -24,6 +24,7 @@ dependencies:
|
||||||
- regex-tdfa ^>= 1.3.2
|
- regex-tdfa ^>= 1.3.2
|
||||||
- text >= 2.0.2
|
- text >= 2.0.2
|
||||||
- containers
|
- containers
|
||||||
|
- unordered-containers
|
||||||
|
|
||||||
ghc-options:
|
ghc-options:
|
||||||
- -Wall
|
- -Wall
|
||||||
|
|
|
||||||
15
src/Day4.hs
15
src/Day4.hs
|
|
@ -1,6 +1,6 @@
|
||||||
module Day4 (partOne, partTwo) where
|
module Day4 (partOne, partTwo) where
|
||||||
|
|
||||||
import Data.List (transpose)
|
import Data.List (sort, transpose)
|
||||||
import qualified Day4.Matrix as M
|
import qualified Day4.Matrix as M
|
||||||
|
|
||||||
partOne :: String -> Int
|
partOne :: String -> Int
|
||||||
|
|
@ -20,8 +20,13 @@ partOne input =
|
||||||
countXMAS [] = 0
|
countXMAS [] = 0
|
||||||
|
|
||||||
partTwo :: String -> Int
|
partTwo :: String -> Int
|
||||||
partTwo input =
|
partTwo input = M.size (M.filterWithKey isXMAS matrix)
|
||||||
let matrix = M.buildMatrix (lines input)
|
|
||||||
in length $ filter (isXMAS . fst) $ filter ((== 'a') . snd) $ M.toList matrix
|
|
||||||
where
|
where
|
||||||
isXMAS = undefined
|
matrix = M.buildMatrix (lines input)
|
||||||
|
|
||||||
|
isXMAS (col, row) 'A' =
|
||||||
|
let firstDiagonal = M.lookupMultiple [(col - 1, row - 1), (col + 1, row + 1)] matrix
|
||||||
|
secondDiagonal = M.lookupMultiple [(col - 1, row + 1), (col + 1, row - 1)] matrix
|
||||||
|
in sort firstDiagonal == "MS"
|
||||||
|
&& sort secondDiagonal == "MS"
|
||||||
|
isXMAS _ _ = False
|
||||||
|
|
|
||||||
|
|
@ -5,23 +5,24 @@ module Day4.Matrix
|
||||||
( Matrix,
|
( Matrix,
|
||||||
buildMatrix,
|
buildMatrix,
|
||||||
groupWith,
|
groupWith,
|
||||||
getValue,
|
lookup,
|
||||||
getValues,
|
lookupMultiple,
|
||||||
toList,
|
filterWithKey,
|
||||||
|
size,
|
||||||
)
|
)
|
||||||
where
|
where
|
||||||
|
|
||||||
import Data.Foldable (find)
|
import Data.HashMap.Lazy (HashMap)
|
||||||
|
import qualified Data.HashMap.Lazy as HashMap
|
||||||
import Data.IntMap.Lazy (IntMap)
|
import Data.IntMap.Lazy (IntMap)
|
||||||
import qualified Data.IntMap.Lazy as IntMap
|
import qualified Data.IntMap.Lazy as IntMap
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
|
import Prelude hiding (lookup)
|
||||||
|
|
||||||
type AssocList k v = [(k, v)]
|
newtype Matrix v = Matrix (HashMap (Int, Int) v)
|
||||||
|
|
||||||
newtype Matrix v = Matrix (AssocList (Int, Int) v)
|
|
||||||
|
|
||||||
buildMatrix :: [[a]] -> Matrix a
|
buildMatrix :: [[a]] -> Matrix a
|
||||||
buildMatrix xs = Matrix (go xs 0 [])
|
buildMatrix xs = Matrix (go xs 0 HashMap.empty)
|
||||||
where
|
where
|
||||||
go [] _ acc = acc
|
go [] _ acc = acc
|
||||||
go (x : xs') row acc =
|
go (x : xs') row acc =
|
||||||
|
|
@ -30,26 +31,29 @@ buildMatrix xs = Matrix (go xs 0 [])
|
||||||
|
|
||||||
parseRow [] _ acc = acc
|
parseRow [] _ acc = acc
|
||||||
parseRow (x : xs') (row, column) acc =
|
parseRow (x : xs') (row, column) acc =
|
||||||
let acc' = ((row, column), x) : acc
|
let acc' = HashMap.insert (row, column) x acc
|
||||||
in parseRow xs' (row, column + 1) acc'
|
in parseRow xs' (row, column + 1) acc'
|
||||||
|
|
||||||
toList :: Matrix v -> [((Int, Int), v)]
|
size :: Matrix v -> Int
|
||||||
toList (Matrix assoc) = assoc
|
size (Matrix hmap) = HashMap.size hmap
|
||||||
|
|
||||||
getValue :: (Int, Int) -> Matrix v -> Maybe v
|
filterWithKey :: ((Int, Int) -> v -> Bool) -> Matrix v -> Matrix v
|
||||||
getValue position (Matrix assoc) = snd <$> find ((== position) . fst) assoc
|
filterWithKey f (Matrix hmap) = Matrix (HashMap.filterWithKey f hmap)
|
||||||
|
|
||||||
getValues :: [(Int, Int)] -> Matrix v -> [v]
|
lookup :: (Int, Int) -> Matrix v -> Maybe v
|
||||||
getValues positions matrix = mapMaybe (`getValue` matrix) positions
|
lookup position (Matrix hmap) = HashMap.lookup position hmap
|
||||||
|
|
||||||
|
lookupMultiple :: [(Int, Int)] -> Matrix v -> [v]
|
||||||
|
lookupMultiple positions matrix = mapMaybe (`lookup` matrix) positions
|
||||||
|
|
||||||
{--
|
{--
|
||||||
Given a matrix of elements and a function mapping a position into an aggregation of its values,
|
Given a matrix of elements and a function mapping a position into an aggregation of its values,
|
||||||
group the elements by the aggregation result
|
group the elements by the aggregation result
|
||||||
--}
|
--}
|
||||||
groupWith :: forall v. ((Int, Int) -> Int) -> Matrix v -> [[v]]
|
groupWith :: forall v. ((Int, Int) -> Int) -> Matrix v -> [[v]]
|
||||||
groupWith f (Matrix matrix) =
|
groupWith f (Matrix hmap) =
|
||||||
let intMap :: IntMap [v]
|
let intMap :: IntMap [v]
|
||||||
intMap = foldr (\(position, value) -> insertValue (f position) value) IntMap.empty matrix
|
intMap = HashMap.foldrWithKey (insertValue . f) IntMap.empty hmap
|
||||||
in IntMap.elems intMap
|
in IntMap.elems intMap
|
||||||
where
|
where
|
||||||
insertValue key value =
|
insertValue key value =
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue