Day 4 problems complete
parent
5e49d8279e
commit
e5d3b424a5
@ -0,0 +1,140 @@
|
|||||||
|
XSMMXMASMXMXXMMMAMXSXXXXXMASXSMMXSMXASMMMSMXSXSASAMAAXXMAXXAXMMSAMXAMXXSMSMXMSXSSXMSMMXSMMSSMSXSAMXSXMASXMASMSMSXXXSXSSSSXMASXSSXMXSXMSMMMSX
|
||||||
|
MMASXSMXAASXSMMSXMASMMMMSXASXMAMAAXSSMAXAAMMMAMXMAMMMMMMSMXMASASXXSSMXMXAASAMXSASAMXMMASAAXXAAXMASMSAMAMASXMAAXXMASAAXAAXMASXMAXAMASAAMAXAXX
|
||||||
|
ASAMXSAMSMMAAXASAAAXAAXAAMXSAMAMMXMMASAMSXSAMAMASMMSAXAAAMXAAMXMAXSAMSAMSMSXSMXMMXMAMMASMMSMMMXSAMASXMASXMAMSMSMMSAMXMMMMMXAMAMSSMASMMMXMSSM
|
||||||
|
MMASAMAMXAMSMMASXMMMSMXAMXMSAMXMSASXMMMMXASMSMMAMXMMAMMSSSSMMMSMSMMAMXAMAAXASAMXSSSMSMMSAAXXAAMMAMAMXXXSXSXMAMXASXMASAMXAMMSSMXAXMAMAASAXMAM
|
||||||
|
XSAMMSSMXXMAAAXMAXXXXXSSXMASAMAASAMSXXMASMMXAAMXSMSSSMMAAXAAXAAAAMSSMXSSMMMAMMAMAASAAXSSMMMMMSSSMMSSSSXSAMXSASXXMASMMAXSASAAMXMMXSASXMSMSSSM
|
||||||
|
AMASAAAXMASXXMSAMXSMMAXMASXSAMSMMAMMMSMMMAXSMSSXAAAAAAXMSSSMMMMXMXAAXXMAMSSXMXXAMAMSMSMXAAAAAMAAMAXAAXXMXSASAXMASXMASXMSAMMMSAXXASXSMAXXAAAA
|
||||||
|
ASXMMSSMMXSAXSXMMASAMSMSMMASMMMASMMAAAAXMSASAAMMMMSSMMMXAAMXAXSMMMSSMXMAMAXAMASXMXAAXMAMSASMSXMMSSSMMMXXAMMSAMSAXASAMXMMSMSMSASMXSAXMAMMMSMM
|
||||||
|
XXMAAMMAXAMAMAAAMAXSXAAXXXAXAASXMASMSMSMMMAMMMSXXAXXASXMASXXSAMAXAAAAXMAMXSAMAMXAMSSMMSAXAMMXAAAAXAAAXMMMXMMAMMASMMMSAMAAXAASXMAXMXMASXMXMXM
|
||||||
|
AASMMSSSMMSSMSSMMSXXSMSMSMSSMMXMXMAMMMMASMAMSAMMMSMMMMASXMAXMAMXMMSSMMSASXSAMSSSXMAMXAASAMXASMMMXSMMMSMAXSSSSMMMMXAAMMXSSSMXMAMXMXSXAMAMMMAM
|
||||||
|
MMMSAAXXAAAXAXAXAMMMMXAAAAAAASMMAXXXSASAMXMMMASXAMASXMMXAXMXSXMXSXAMAMSXSASXMXAASMMSMSSMSXMMMMMXMSASAXXXXAXAASXAAXMSSXXMAXXAXXMAAXMMMXAMASAS
|
||||||
|
XAAMMMSMSMMSSSMMASAAMSMSMSSSMMAXAMXXMAMXMASMSAMXXSAMAXXSMMMMMAXASMMSSMSXMAMMMXSMXMMAXMAAMXMXSASAASAMASAMSMAMXSSMSSMAXMASAMXMSMSSSXMAXMAMMSAS
|
||||||
|
XMASXMXAAAXAMAXSAMMXMAXXXXXAXSMMSMMAMXMXSXSAXMMSMMMSMMMMXXMAMSMMSAMAAAXMSAMASAMXXSSMSSMMMAXXSASMXMXMSSXAAXMXAMXMXAMSSXAMAXMASAAMAASAMSSMAMMM
|
||||||
|
MMXMXSXMSXMXMSAMXSAMSMMMMSMMMSAAAAXAMXSASAMXMMAMAAXXXXXAMSSMSXAMSXMMMSMASASAMASAMXAAAXMAMMSMMMMMMMMSAMASMSXMAMAMXXXXSMXSAXSASMSMSMMAMAMMXMAS
|
||||||
|
ASASXMAMXAMXXMASAMXXAMASXMASASMMSXXASAMASMMSXMASMMMSAXMXMXAMSXSMMXSAAAMXSAMASAMXXSMMMXMSAMXMASAMAAXMASAMASMMMSMSMMXMXSAAMMMAXXMAXMMXMASMSSXS
|
||||||
|
XSAMXAMASAMAXSXMMXXXASASMSMMASXMAXSAMMSMSAASMSMSMSXAMXSSSMAMMAXAAASMSXMXMASAMXAMMMMMSAAMXMASMSXSSSSSMMMMMSAMAAXAAAAMAMXMXAMAMSMMMMSSMMMAMAAX
|
||||||
|
XMAMSXSMSXMXMAMXXAMXMMXSAAAMXMAMAXMSMASASMMSAAXXAXXMXSAAAXXMMASAMXSMXAAXSXMMXSAAAXAAXMSMMSMSXMAAAMMAMXXAXXAMMSSSXSAXXMXXMMXXXAAAAXXXAAMAMMMM
|
||||||
|
XMAMXAXXXMAXXAMMMMXAMXAMMSSMMSSMXSAXMAMAMAMMMMSMMMXXXMMXMMSXMASXMASASMMMSSMAMSASMSMSXXAXAAAMAMXMMMSAMXSSXSMMXMAXAXXXSSSMSSSMMMSSSSSSSMSSXMAX
|
||||||
|
XSAMMXMAXMMSSMMXAASXMMXSMMXMAAAXXMMAXSMSMXSAMXAAXAXMXAXSMMMAMASAMAMXMASAXAXMMXMMAAAAXMASXMMSASAMAAMASMAMXAAXMMAMMMMXMXAAAXMAMXAAMAMXMXMAMSMS
|
||||||
|
ASASAAXSXSAXAAMMXMAAAXASXMXMMSSMXMMMAMAAAMMMSSSSMSAMAXSAXAMAMXSAMXXMSMMASMMXMAMMXMMMSMASXMAMASASMXSASMAMSXMMSMXMAAMAMSMMMSSMMMMSMAMAMAMAMAAA
|
||||||
|
XXXSXSAMAMMSMMSAMMSMMMMMAAAMAMMMAXASAMXMMMAXAAMXXXXXAMXMSMSMMXSMMSXAAXXAAXMASASAMXMAXMXMAMMSAMAMAAMMSMMMSAAASMMSSXMAMAXAAAAXMASMMXSAXAXAXMSM
|
||||||
|
MMMXAXMMAMXXXAMMXAAAMMSSMMSMAMASXSMSMSMSMSSSXSMSMMMMXXMXSMAMSMMAAXMSMSMSSXSASASMSAMMXAMMXMMAXMAMMMSASAMASMXMXAXXXMMMXMSMMSMMXXXMAMSASMSMSAMX
|
||||||
|
XAAMSMXSSMXAMXSAASXSMAAAAAMXMMAMAMXSAAAXASAXMXAXAAASMSMASMXMAAXMMSMAMMMAAAMMSAMASMSXMASXAAMAMXXSXXMMSAMAXSAXSMMMXMASXXXXAAMSSSMSXMMXMMAASASX
|
||||||
|
SSSXMMXMXAMXXAXXXMMMMMSXMMSASMSMXSAMMMSMMMMMAMSMMSXSAAMAMASMMMSAMAXASAMMSSMAMAMXMMAMSAMMMSMMSXAMMMMXSAMASXMAXXAXXSAXAMXMMXSAAAAMAMXMXMMMSAMM
|
||||||
|
MAMXMMSMSXMMMMSMSAAXMAXAMXMAMAMXAMXSAXAAMMXXXAMMXXMMMMMSXMSAAXXAMMSMSXXMAMMXSMMMSMXMMASMXAAMXMAMSASXMAMXMAMMSSSMAMASXMSAMSMMXMMMAMXMASXXMAMX
|
||||||
|
SASAXSAAXXAXAXAASXMXMASMSXMAMSMMXSASASMSXSMSAMAMXMXAXMAMAASMMSXAMXAXSXXMAMSAMAAAAXXASAMXSSSMXSXXMMSAMSAXMSMAAMAXMMMMMAXXMAAXXSASMSXMAXAXSMMS
|
||||||
|
SASMMMMSMSMSMMMMMAMSMMSASXMMSMASAMMSAMAAAAAXSXAAMAMXSMAMMMMMASXMMXMMMMMSMMMASXMSSMSMMASXAAAMXAASMXSAMXSMAXMMMSAMSMMAMXMSSSSMAMASAAMMASXMMAAA
|
||||||
|
MXMXMSXXMAXXMASASXMAAXMXMAXXAXMMAXXMMMXMSMSAAMSMXSXMMMSMSAMMXSAMASXMAXMAMXSAMAMMXMAAAAXMMSMMSMMAAMMASAMMAMAAMMAXAMSMSMAAAAAMXMXMAMMMXSAAXMSS
|
||||||
|
SAXAXAAMSSSXSASASXSXSMMXSXMSSSXSXMSMMASXMXXMMMMMMMMSAAXXSASMASAMASASASMXMAMASXSAMXMMMMSSXXMASAXSMASAMAMMAMXMSSSMMMAXAMAMMSMMSSXMSMXXXSXSAMXM
|
||||||
|
SXSMSMXMAMXAMASXMAMXXAMAMAXXAMAAMAAAXAMAXAMMXAAAXXASMXMASXMMMSAMASXMASXMMXMAMAMAMMSMXSAMXXMASXMAXMXMSSMMSAMXMAXAMSXSXSSXMAXXAAXXAXXSMMAAMSAM
|
||||||
|
XMAAXXAMMSMXMXSAMXMAMAMAXXXMMMMMAMXXMMMMMMSXSSSMMMMSXSMXMAXMXSMMXSXMAMMSMMSSSXXAMMAAXMAMSMMXMASMXXXMAMAAXXMXMAMMXMASMXMASMSMMMMSMSMSAMMMASAS
|
||||||
|
SXMASXXMAAAAMXSMMSMMMXSAXMMXAAXXSASXMSAMAXAXXXAMXSXMAXMASMMMMMXMAMXSAMAAAXAXAMSSSSMSMMAMAAXASXMXMMXMMSMMMSMAMXXSAMMMSXSAMAXAAAAAAAMSAMXXMSAM
|
||||||
|
SXSXMMMXSSSXXAMAXXSAAMAMAAMSSSSMMASAASXMMSAXSXSAMXAMSAMXAXMAXXAMXSASASXSXMMSMXAXMAXMMSASXMSAMXMXMAAMXSASXASASMMSAXSAMXMXXASMMXSMSMXSASAMXMAM
|
||||||
|
MXMAMMSMMAMMMASXMMMMXSASXSMAMMAAMAMMMMMMXAMXMAMSSXXMAASXSSSSMMMSAMASAMXAASXSXMASASAXAXXSAMMXMAXAMXMSASASAMMMMAXMXMMAXSXASMMMSAMAAMXSAMXAMXMM
|
||||||
|
MASMMAAAMAAASXMAMAAMAMAMAAMXMSSMMASMMSMMAAXSMSMAMASXMSMAAAAAASXXXMAMXMMMMSAMXMMMAAMMMSMMMMMAXXSXSAXMMMMXAXSSXMMSMMSSMXMAMAAAMXSAMMAMAMSSMSMS
|
||||||
|
SASAMSSSSMSMSMSAMXXSAMXMSXMAXXAXSXMXAAAMSSMXAAMAMXMASAMXMMMXMAAMSMSSXXAMAMMMASAMXMXAXAAAMAXSSMXAMXMMXMMSXMXMASASAAAMMMMSSMMMSMMAXMXMAMMMAAAX
|
||||||
|
MXSXMXXAXMMXSASXXAXMAMMMMMSSSSMMSAXMSSXMAMMMSMSMXAMXAMXMXXXSMMSMAAXXMMXMASASXSAMMXMMSSSMMMSXAXMSMSXMASAMMSMSMMASMMSMSMAMAMXAAAMAMAASXSSMMMMM
|
||||||
|
SMMMSXXMSXSAMMXAMSSXXMMXSAAMXMXAXAXMAMAMAXSAMXAAXSMSMSASAMMAXMAMMSMAMASMMXXMASMMSSMAAMAAXMAXSMAAAMSXXMAXXAAAXMXMXMAAAMXMAMMSSSMSMSMMAAAXMAXA
|
||||||
|
MAAASMSXSAMXSAMSMMAASMXAMMMSASMASMMMASXMMSMASMMSMMAAASMSAMXMMSAMMAMSMASAASMSMXMAAAMMMSSMMXMAXXSMSMMMSSMMSMMMXXAMASMMMXMMAMXMAMAXAAXMMMMMSASM
|
||||||
|
SXMMSAMMMAMXMMXMAMSMSAMXSAMSAMMAAAMXAMMSXXMAMAAAAMSMXMASMMMXMMASXXSXMXSMMMAAXMMMSSMMAMXMXSMAMXAMMMSAMXXAAXASXSASASMASAAMASAMMMSMSMSASXAXXMAX
|
||||||
|
AXSXMMMXSAMXXXASXMAXMXXAMAMXSXMSXMSMXMXMXSMSSMMSSMMXSMAMAAMAMSAMXMMMMMMMSMMMMSMAMMAMXSASAMMASMMMSAMASAMSMMASAMAMAMXASASASMMMAAXAAMXAMXSMXSAM
|
||||||
|
AMXAXXXAXASXMXMMAMXSMSMMSSMAXXMMAXAAMSASAXAAXAAXMASAMMASXMSAMAAXXMAXAXAAAASXMAMASXSMAXAMXMSAXAAAMAXMMAXAAASMMMSMXMMMSXMMMAXSMSMXMAMAMXAXAMAS
|
||||||
|
AAMMMSMXSAMASXMSMMSAAAAAAAMAMMASMMMAMSAMMMMMSMMMSAMMSSMMMMSXSSMMMSMSMMMXSMMASXSAXMXSSMMMMMMXSSMMSSMASMMMSMMAMSMAAMXAXAXXSSMMAAAMAXAAXXMMSSXM
|
||||||
|
MSMAASAMXASAMXXAAXMMXMSMSXMMMSAAAAMAAMXMXMAXAMXXMXSAAMAXXXMAAAAXXAAAMASXMASXMMMXSAXAXASASXAXXXSMAXSMMASAMASXMMAXMMMMSSMAMAAMMMMAMXXASMXMAMMM
|
||||||
|
AAMXXMAXSAMXSMMSMSASAMXAXAMXAMMXMXSSSMXMASASAMSAMXMMSSSMMAXAMSMMSMSMSASASAMAAXAAMXMXMMSASMASMAMMMMMXSAMXSMMMAMXMSXMAAAMAMSXMASXSMMSMMMAAMMAS
|
||||||
|
SMSMSMSMSXMAXAMAASAMMSMXMAMSXSAXMAMMAMSSMSAMAMXMSMSAAAAXSAMMXMMAMMMAMXSXMAMXMMMXMAMMMXMMMMXAMAMAAASMMXXXMMASXMAXMAMMMMMAXXXMASAMXAAAASMSXSAS
|
||||||
|
XXMAAAAASMMMSSMMMMXMAAMASXMXAMAXMAXMAMXAAMXMAMAMAMMXMMMMSASXAMASXAMSMAMMSMSSSSMSAMXAMAXXAXXMSASXXAMAMMMMMXAXAMSXSAMASXSMASXSAMXMMSSSMMAMAMXS
|
||||||
|
SAMSMMMXMAAXXMAMMMMMSXSASMMMSMAMSSMSMMSMMMASASASMSMSXMAASXMMMSAMMMMXXXXAAMMAAAASAMSSSMSMXSXXSASAASXMMSASASXSMSAMSAMXSAAXMMXXXSXXAAAMAMSMSMMX
|
||||||
|
SMMXMSMMSSMSMMAXAAAAAAMXMASAXMAMAAXAMMMMASXSASASXAAMAXMXSAMSMSMSAMAMMXMSSSMMMMAMAMAAMASAAMMAXAMMMMAXXMXMAMMAMMAMMMXXMMMMXMAMXMMMMMMMAMAAAAAS
|
||||||
|
XSAMXAAXAASAASMSSMXMSXSMSMMSSXXMSMMMSAAXMSMMMMAMMMMSAMXXSAMXAXASXMASAXAAAAMXMSASXMMSMAMMMXAMMMMXASXMASMMAMSAMSAMXSASAAXXAXASAMAAAXXMXMMXMMXX
|
||||||
|
SMXSMSSMSSMMMAAMASMXXXAAAXAAXMXXAXAMMXXMXXAAXMMMXSAMASAASAMMMMXSASXSXSXMSMMMMXAAXAAXMASAMAMSAMXSXSAAXSXMAXSAXSASASAMSXSSXSXSASMSSXMMSSXMSMSM
|
||||||
|
MSAXMAMAXMMMXMSMAMXAMSMMMMMSSMMSMSSSMSSMMSSMSMAMXMASAMMMMMAMXAMSAXAMASXMAMAASMSMMMXSMMSAXSMSASMXMSXMAMMSSXSMMMAMXMAMMMMXMMXSMMMMMXMAAAAAMAAA
|
||||||
|
MMMSASMSMSASMAXMASMXMAMASAAAXXAAXAAAXAAAAMAXXAAXAMAMAMXMAXSSSSMMAMXMAMAXMMMSMAXAMSASXXMMMMAXAAXMAMAMMMAAXXSSMMSMXSMMXAMASXASAMSAAAMMSSSMMSMS
|
||||||
|
SAMXMAAXAXASMXMSAMAASMSXMSSMSMSMSSMMMSSMMSAMXSMSSSXXMMSMSXXAMXMMMMXMXSMXSAMXMAXAMMASXMXASMSMXMASXSXMAMMSSMMAXAAAAXAAXXXAMMMXAMMMSXMAAAAXAAXA
|
||||||
|
SXSAXMMMMMSMXAMXMMSASAAXMAMXAAAAXAMSXMXXMXAMAAXXAAXAMAXAMXMXMAMXAXXMMSXAMASXMAXXMMAMAMMASAXAMXAXAAAXXSAAXAMAMMSMASAMXSMSSMMSSMSAMXMSMMMMSSSS
|
||||||
|
MMMMXAMMSXMASXMAXXMAMMMSMSSMMMMMMAMSAMXAMXAMSMMMXMXSMMMMAMXSSXSSMXMMAXMASAMXMAMSASXMASMMMXMXSMMSSMSAMMMSMSMMMMAXAAAMXSAXAMAAXMAMXXXXAAXXXAAA
|
||||||
|
MAXXMXAMXAMAMMSMSMXAMXXXAMMAMXAMXMMMAMXMAXAXASASAMAMASAMXAAAMXMAXASASXXMAXMXMAXMAMXMASMMSMSAAAAMMAXMMXXAAXXSAMXSSSMMAMMMMMMSSSMMSMMSSMMMMMMM
|
||||||
|
SSSMSMSSSMMAMAAXAMSSMXAMMMSSMMMSAASXMMMXAASXMAXMAMMSAMXMAXMMMXSSMXSAMAXASMSXMMSMSMXMASAMAAMSSMMSMXMASMSMSMAXXXAMMAMSXSAMXAAAXAAAAAAMMMMAAXAM
|
||||||
|
MAAAXSAAAMSXSSMSXMAMXSMMMAAAAXAMXXMAMXAMMMXAMXXSMMMMASXMASMXMXAXMXMAMMMXMAMSAAAMXMAXAXMSXSMMXXMSAMAAXXAXAMMMSMMSSXMAASXSMMSSSMMMMMMSAASXMSMS
|
||||||
|
MSMMMSMSMMAMMAMMMSMMAXAASMSMMMSXSXSAMMSMSXSSMSXXXAXMAXASXMMAMMAMXMSAMXMAMMMSMSSSSSSSSSMSAAAXAAXMAMXSMSMSXMAAXAXXMAMMXMMAMAMAMXMASMXMMMSAMAAS
|
||||||
|
XAAAAXXMXMAMXAMAAAAMSXSMSXXAMAMAAASASXAAXMMAAXASMSMSXSAMXMMSMMAMAASASASASAXXXXMXMAAAMAAXMSMMXSXSAMXMAAAAXXMXSXMMSAMMAXAAMMMAMMXMASMXMXSMSASX
|
||||||
|
SMSMSXSMXSAMXASMSSSMMAXAXAXXMAMXMASAMXMMMASMMMMMAAAAXMMMSMAMASASMMSASASASMSMMMSSMMMSMMSMXXAMXMMSASAMSMMMSSSMMAMMMMXXAXXMSSMSXMAMMXMAMXXMXMXM
|
||||||
|
MXAXMASXMMASMMMAMAAAMSMMMXMASMSAXXMAMMSXXMAMASMMSMMMXMASAMAXXMAMMAMMMMMXMMAAAAAAAXAXAXAXASAMASXMAMXXXMAXAMAASMMAMSMMSXMAAMMAAXAMMASAMSXSASAS
|
||||||
|
SMSSMAMAMMAMAMMMMXMXMMAAAAXAMASMSAMXXASMMSMSAXAAMXAAXXXXXMASXMSMMSMMSSSSMSXSMSSSXMMSMMAMXSXXXXAMSMSMMMXMASMMMXMAXAAMAAXMMSMSXMAMSASAMSASASAM
|
||||||
|
AAAXMAXAMMSSMMAMXSXAMSSMSXSAMAMSXXAXMASAAAAMMSMMSSSMSMMMSMXSXAXAAAAXXAAAMSXMAMXXMXXXXAXSAMMMSMMMAAAAMASMMMASXXSSSSSMSSMAXXAAASAMMAMMMMAMAMAM
|
||||||
|
MSMSMSSSSXMAMSASAMSMXAAXAXSMMAMXMSMXAASMMMXMXAMAXAAXMASAMXAMMSMMSSSMMMSMMSAMXMAAMMMMMSSMXSAAAAXSSMMSMAXAASAXMMXAAMAAAAMSMMMMAMASXMAXAXAMXSSM
|
||||||
|
XAXAAMAMXXMAMMMMMXAXMSSMMXSASMSMAAAXSMMMMXAMSASMXSMMSAMMSAMXAAXXAAXAAXAMSSXMAMMMMAAAAMAMAXXSSSMXXASXMXSAMMMMSMMMMMSMMSXMAMSSXSMMMXSSSSXSXXAS
|
||||||
|
SMSMMMAMXSMSSXAAMSSSXAAAXASXAAAMSMSXMAMAXMAMMMXAAMXXMAMSSXMMSSMMMSSSXSASXMASAMMASXSMSSSMMSAXMAMXSMMAXMAMXMXAMMAXMAMAXXAMAMAMMSXAXMAXAAAMXMSM
|
||||||
|
SMAMASXMAMXAMXXSMMAXMMMSMXSXMXMMAAAXXMSMSSXXAMXMXMASMSMAMMMMAXAXXXXAXMMMASAMAXSASMXMMXXAXMMMSSSMMASXMASMMXMSSSSXMASXMXXSAMXSAMSMSSMMSMAMSMAA
|
||||||
|
XMAMASAMASXXSAMXAMMXAXAAXAMMSXMMMAMMXMAXXAMSAMXXAMMSAAMAMAXMASMMMMMSMMAMXMASXMMMMXXAXAMSMMXMAAMXXASAMMMXMAMAMXAASASAAMXSXSAMAXXXAAXAXSAAAMMX
|
||||||
|
XXMMMXXMXSAAMMMSAMXMXSMSSXAAMAMXXAAAAMXSMMMSASASXSAMMMSSSMSMMMXAXSMMASMSSMMAMXSSMMSSMXMAAMMMMSMXSAXMMXSAMXMSSMMXMASAMMAMAMAXSMSMXSMSXSMSSSXX
|
||||||
|
SMSASMMSMMMMMAAXAMMSASMAMXMASMMASMSSSMSAMXASXMASAMXXAXAMAXAAXXSMMSAMAMXAXXSASAAAAAAAMXSMSMAAMAAAMXMSAMXAMXAMAXMXMXMMMMXXAMMMMAXMAXMMAXXAXMXM
|
||||||
|
XAMASXAAAAAAMMMSAMAMASMAMAXMAXMXMAMAAXSASMMSASAMXMAMMMSSMMSXMMXMASXMASMAMXXAMMXSMMSSMMMMAXSSSXMMSXXMASXMMSXMAMXAMMMMMASXMMAAMAMMAXAMMMMSXMAA
|
||||||
|
MSMAMMSSSSMMMAXMMSMMAMMSXMXSAMXMSMMSMASAMAXSAMXSXMAMXAMAMXXMAAAMASASASMAXSMSMSAXAAAAAASXSMMAMXSXMMXSAMXSAMAMSMSASASASXMASAMMXSAMXMMMXMMMASAS
|
||||||
|
AAMSMAXAAXASMSSMASAMMMMXAXXSXMAMMAAASMMAMSXMASMMXMASAASAMSXASXXMASXMASXMXSAMAMASMMMSMMXAAAMAMMSAXAXMASXMASMSAAAAMAXMMAMAMASAAMMXSXXAMXAMMMAX
|
||||||
|
SMSMMSMMMMMXAAAMAXXMAAAMXAMXAXAMSMMMAXSAMXMSAMAMAAAXMAMAXMXXXXSMMSASAMXMAMXMXMASMSXXMMMSMMSMSASXMSXSAMASAMXAMAMAMSMSSSMASAMMSSSMXAASMMSSSMMM
|
||||||
|
XXSXAAAMAAXMSMXMAXMMSMXXAMAXSSSXSXMXXXSXSAXMMMXMXMAMSASMSMMSMXSXASAMXMXMASXMXMASAXMASXXAAMAXMAMASXAMMXAMASMSXXMXAXAMAAXAMASXAAAXXMAMAMAMAASX
|
||||||
|
MXXMASMSMSMMXXXMSMSAXAAASMSMXAXAMXMMMMMSMMSAMSMXXXMASASXAAAASAMSMMMSASASASAMXMAMXMXAMMMXMMAMMAMXAMMMSMMSXMMXMXMXSMSMMMMXSXXMMSMMAXXXXMASXMMS
|
||||||
|
AXXXAXXAMAXXMAMXAAMAMMMMXAXMMMMSMMMAAASAXASAMAMSMMAMMMMMMMSSMXXAXAASASASASAMAAAXASMSMSSSSMSASMXAMXXAXMAXASXAMAXAXMAAXXAXAXMAMXXMMSMSMSASASAS
|
||||||
|
MMMSMMSSMSMSMSAMXSMSMMXXSAMXMAAAAMSSMSMMSXMXSASAAAMXSAMXXAMXAMSMSMXMAMAMXMXXXSMSMXAMASAAAAAXMMSSXMMXSMMSMMSMSASMMSMXXMSMASASXMAXXMAAMMMSAMAS
|
||||||
|
MAXAAXXASAAXXXMAMXMAMXMASMXXSXSSXMAMSMAAMAMASMSAXMSAAMXMASMMXMAXXXXMAMSSMSMMMXMAXMAMXMMMMMMMSAAAAXXMMMMAMXAMXMXMAMXMMXAXAXMXMMMMMMSMMAMMXMXM
|
||||||
|
SXSSSMXMSMMMMSMMMSSMXSAMSAMXMMMMMMASASMMSAMMSASASXXMMMASAAAAMXXMMMXXXAXAAAAXAASASMXSAMXSMXXAMMSSMMSXMASASMMSMASMMMAAXSMMSSMMSAMAAMAMSXSXMMSM
|
||||||
|
MMMXAXXXXXXAAAXAAMXXAMXXMMAAMAAAAXMMMSXMSASAMMMAMMAXXSMMSXMSSMASAAMAMASMSXMMSAMMSMXSASAMMMMMSAAAAAMASAMXMAMXMAAAASMMMSAAAAAASAXSXSAMAASASAAX
|
||||||
|
MASXMMMMMAMMMMXMSSSMXXSAMXXASMXXSSSXAXMASXMASXMMMSSMXMMMMSMAAXAXXXAXMAMXAXMMMMSMMMAXMMMMAAMXMMSMMMSAMMSSSSMAXAMSMXASASMMSSMMSMMMASMMMMSAMSSS
|
||||||
|
SASXMAXAXMASASAMXAAXAMMSSSMMXMAXXAMXXAXXSXMASXMAAAAXAAAXSAMSSMSSSSSXMASMSMSAAAAAAMMMSAMSSMSAXXAMXAMMSAMXAAMXSMXMAXMMMSAMAMMAMXMXAXMAXXMMMAMX
|
||||||
|
MASXSSSSXMAXAXMMMMMMMSAAMXMSAMMMMAMAXMSXSAMASMXMMSSSSXMSSXMAXAXAAAAMSAMXAASMMSSSXXSAMAMMXASXSMMSMASMXMSMSMXMAMSMMXSAXXXMASMASAMMXMASMXMASMSS
|
||||||
|
MSMMXMAXMMSSSSSXSAXAXMMSMXXXAMXXSSMMAXMASAMXSAMXMXAMAASXMXSSMXMMMMMMMASMMXMXMXMAMXMMSSMMMMMMSAAMMMMMAMAAAAMXAMXAAAMSSXMXAMXAMAMAMMAMXASASXAX
|
||||||
|
XAASAMXMXAAXXAAASXMASMXMAMSSMMSMMAASXAMAMASMSAMXMMSMSMMAAASAMXMASAASXMMXMASAMXXMASMMAXAAAXAASMMSAXASXSMSMSSMAMSMMMSAMXSAMXMSSSSSMMSASMMMSMSS
|
||||||
|
SSSMMXAXMMMXMMMMMMAAXMAMMMAAMAAAMSMMSXMASAMXSMMXAAAXMAMMMXSAMXSASXXXAXSSXAMXXSAMXMAMMSSSSSMXMSASXMXMAAAXMAAXAMXXAXAMXAXAMAXMAXMAAMXAMXAAMMMS
|
||||||
|
XMMAXSMSMAMSMSAMASMMAMMSXMSSMXSSMXAXAXMAMASAMMSAMXXSSSXXSASXMXMASMXSMMAMMSSMXSAMSSMMXAMXAMMMMMMMMSMMSMMMMSMMXAXMMSMXMMSSSMSMMMSSMMMAMSMMSAAM
|
||||||
|
MAMMMMXAMXSAAXASASAASXXMMMMAMXAAMSMMMMMASAMASASAMXSMAXXAXMMXMAXXXMMAXMAXXXAMXSAMAAXSMSSMMMAAXASXAAXXAAXMAXXMASMMMAMXAAXAMXAMXXAAAMXMASXAXMXS
|
||||||
|
MMMXAMSASXSMSMMMAXAMXSSMAXSAMMSMMAAAXAMASAMXMXXAMXAMAMMMMXMAMMMMASAMXSXSXSAMXSMMSSMMAXAASMSXSASMSMSXSSMMASASAAAASASXSSXMMSXXSMXXMMSAMXMMSSMM
|
||||||
|
SAXXAMXXXAMAAASMSMSXAAXSAXMASAMXSMSMSXSAMXSXSMSMAMMASXXAAAMXSAASXMMMASXMASXMAMXMAAAMXMMMMAAXAAMAAXXAMXAMAXMMSSSXSASAAAAXMASXMSSXAXASXMAXAAAA
|
||||||
|
SASMXMMMMMMSSSMAAAXMMSMMMXSAMXSASXMXAXMAMAMAXXAXAXXXMASMSMSAMXXMASXMASAMMMAMXSAMSSMMSXXSMMMMMSMSMSSMMSSMMMAAMXMAMXMAMMSXMAXSAAXMASAMXAXXXSMM
|
||||||
|
MAMXAAAMAXXAXAMXMSMXXAAAAMMXSXMASMMMMMSAMAMSMSSSMMSAMXMMAAMMMMMSMMMMSXXAMXXMASMMAMAMXXXSAMXMXMAMAMAMXAMASAMXSAMMMMMAXAXXXAXMMMSXMSXMASMMAXAM
|
||||||
|
SAASXSSMSXMXSXMXXXMMSMSMXSASMMMAMAAXMASXSXMMAXAAAASAAAXMXMMXSAMAMXASAMASXSAMASXMXMXAMXMSAMAASMSMXSAMMAMAMAMAMMMAAMSSMMSSMMSAMAXAXXAAAXAMAMAM
|
||||||
|
XAMXXAMXXXSAMASMMASXAMAASXMMAAMAMMMMMXXMXMMMSMMMMMSMSSSMSXXAXASXSSMXAXAXXXXMASXMASMMAAXSAMXMSAAXXMMMSMMSMSMSSSSSSMXAAAMAAASAMSSMMSXMASXMASXM
|
||||||
|
XSMSAMSAXAMXSAXASAXSMMSXMASMSMSSSMSSSSXMAAXAAAAXMXMXAXAMXMMMSMMAAXXSMMMSMMSSMMAMAXASXMMSAMMAMMMMMMXAXMAXAAAXAXXAMAMMMMMMMMSXMMAAAXAMAXMAXAMM
|
||||||
|
AAAXXXMMSMXMMXSMMMXXXAMASXMAAAXAAAAAMAASMSMSXSMSMAMMMSMSSSXMAXMMMMXAXAAXXAAAASXMSMMMAMASMMAASASAAMMMSMMSSMXMXMMSMSAMSXMXAMXXMSXMMSXMXSSMXMSS
|
||||||
|
SMXMAXXAAMAXAAMMAMXMSMSAMAMXMMMSMMMSMMMMAAAMXXAMMASAMXAAAAXMAMSAAXXMSMSMMMSMMMXMMAASXMASASMMSASXXMAXAAMAMMXSXMAAAMAMXAXSAMMSMAMSMSXMMAAAXSAM
|
||||||
|
AXMMMSMSASMSMASMMSXAAAMMXAMXMSMMXMMAMXMMSMMMAMAMMMSMSMMMXMSMASXSMSMXAMAAAMAMSXMASMMMAMASXMAAMMMXSSXSSMMASMASAMMMSMMMSAMXAMAAMAXAASAMXMMXMMAS
|
||||||
|
MMSAMAAMAAAXAAXXMAMXMSMSSMSASAMXASMMSXSAMXSMASAMAAMAMXXXAAAMXMXAXMASMSSSMSAXMAAXMXMSXMXXXSMMMXAXMMAXAXSAMMMSAMSAMAXXXXMSSMMSSSSMXSAMAXASMSAM
|
||||||
|
SXSASMSMSMMSMSSSMSSSXAMXAAXMXMASMSAAAAMXMMXMAMAMMMXAMXASMSMMXSSMMSAMXAAAASXSSMMMMMAXXSMMMMMMXMASMMSMSMMASXMSAMMASXMMMXMXXAXMAMXXXSAMXSASAMXS
|
||||||
|
XASAMAXXXAXXAXAAAAAXSMSMSMSXSXXMASMMMSMMASAMSMXSAMXMSMXAXMAMAXAMAXAXMMSMMMAAMAAXAAXXASXMAAASASAAXAXAXAXAMMMXAMSMMMAAMXSXMXMMAMSSXSAMMMAMXMAS
|
||||||
|
MXMAMMMMSXMASMSMMMMMMXSAMAMXSAMXXMAXXAXMAMMSAAMMMSAMXMSMXSAMMSAMMSAMXXMXSMXMSSMSXXSSXSAMSSMMAMMXMASXSMMASASMMMAAASMSXMSASAXXAMAXMSSMAMAMAXMM
|
||||||
|
AAMXMAAXXASXMXMMXSAAXAMMMSMMXAMXMASXSAMMASMMMSMAAMMMMXAAAXASXSMMXSMSSSMAXXAXXAMXXMXMASMMMAMMAMXSAAAXAXSMXMXAXMXXMSXXAASAMXXSAMXSAMXSASASXMMM
|
||||||
|
SMSSSSSXSAMAMAXMAMMXMMXSAAAASAMASMMASAXSASASAXMMMXSAMMMSMSMMXMAXAMSAAAMSSSSSMMMAMMAMXMXXSAMSSMAXMAXXAMXMSASMMMSMAXASMMMAMAMMASAMMXMMMSMMXAAM
|
||||||
|
AAAAXAMMXMSAMASMSSSMAXAMSMSMSAMXXAMAMXMMASAMMXSMMAMASAAAXAMSMSSMSSMMXMMMXAAMXAMXMMMMMAMMMAMXXMASXSMMMAXSAMAMAAAAAMXMAXXAMXMMAMXXAMSAMXMSSSMS
|
||||||
|
MMMSAMXSAMXMAMXMAAMMXMAXAXMXSXMASAMXXASMMMAMSAMAMMSASMSMSASAAXAAXAXSAMXMMMMMSXXAMSMMSASXSSMXMAMMAAAASXMXSXMXMXMMMSSSMMSSSMSMSSSMSMSAMMAXAAXX
|
||||||
|
XSXMMSASASXMMXAMMSMAAMMMXMXAMAMXMXMASMXAMXSMMASXMXMAMAMXSXXMSSMMMMAMMXAAXAMASAMXAAAXSASXAAAAAAAMSMSXSASAMXXMMXSAAXMASAMXAMXMAAAAMMSAMMSMXMMX
|
||||||
|
AMAMAMASAMAASMXXAXMSXSAXAMSSMAXSAMXXAXSXMAMASMMXMASAMAMAMMXXXMMAMXASXSASXSMASMASMMMMMMMMAMSMSSMXXXXAMAMXXXAXAASMMMSAMXXSXMAMMSMMMAMAMAXASXSS
|
||||||
|
AMAMAMXMMMSMMASMASAAAMXMSXAASXMMMMXMXXMASAMAMXXSMXSXSAMASMSMAMXAXSMSASAXAXMXMXMSASAMAAXXAXAAAXMSMSMSMSMSMSMMMMMAAXXXSMMSASXSAMXXMXSAMMXMMAAX
|
||||||
|
MSMSSSMMSMAMMAMMAMXMMMSXXMSMMSXSAAASAMSAMMMAXMASXXMASASAAAASAMSSXXXMAMAMSXSMSSXMAMASXSMMXSMSSSMAAAAAAAAAAXAAXXSSMSMAXXASXSXMASAXSAMMMXSAMMMM
|
||||||
|
MAXAAAAAAMASMXSXSMMAAAMAXAXMAXMSMXMMAXXXMSASASASAAXXXAXMMSMSMMAMXMSMMMSMXAXAMXAMAMXMMMAAMMAAAAXMSMSMSMSMXSXMXAMXAAAMMMXSASAMXMAAMASMAAMAXAAA
|
||||||
|
SSSMSMMXXXAMMAMMAMSSMASMMMMMAMMXSSSSMMMMXAMXASASAMXSMMMXAMASMMMSAAAAMAAAMSMSMAAMSXSAASMMSMMMSMMXMAMXAXXMASMXAMXMMMASXAAMASXMXMMMSAMMMSXSSSXS
|
||||||
|
AMAAAASXSMSSMMSAMMAXMXSAAMSMSSXAAMMASAXMASXSAMMMXMMXAMSASMAMMAXXXMXMMXMXAXMXAMXXXASMMAMAXAXAXXXXMAMSMSAMXSAMSSSXXSAXAXXMAMMAAXXMMASXXXAAXXMM
|
||||||
|
SSMMAMMAAXMAXAMXXMASMXXMXXSAASMMMSSMMXSXAXAMXMASXSXXXMAAXMASXXSXSSMSMSAMXMMSXMMSMMMSMMMXSMMSSMSMSSMMXSAMMMXMAAAXXMMXSSMMASMSSSMASAMXAMMMMSAA
|
||||||
|
XAMMSSMXMMSMMMSMSXAAXMXMMMMSMXXSAXAXMASMSMXMASAXMXAMSSMMMSAMXAMAXAAAASXSAAAXAAAAAAAAMXMMXMAXAAMAAMAMXSAMSASMMSMMXAAAMAXSAXXXAAMAMASMAMSAAAXM
|
||||||
|
SAMAAMXXMXXXAXAAXMMSAMASASAMXMAMXSSMSXXAAAASXMASMMXMAAAMXXASMMMSMMSMXMAXMMMXSMSSSMSXMAAMAMMSMMMMMSXMXMXMMASXMXXAXAMMSMMSSSMMSMMSSXXXAXXMSSSX
|
||||||
|
SSMMMSAMXSXSSSMSMSAXASASMMMXAAMXMMAASXMSMXMMAMAAXAAMSXMXXXMSASMXAXXASMSMASXAXAMXAAMXSSXSAMXAMXXSAMASMXMMMAMASXSSSMXAAXXXAXAAAXAMMMMSMSMAAAXX
|
||||||
|
SXSAMXMMASXMMXXAAMASAMXMMSSMMXSAASMMMAMAAASMSMSSSSMXMASMMMXSAMMSSMSAMAXSAMMMSAMXSMSXXAASAMSAMSMMASAMXAMXMAMAMXAAAXXSXMSAMMXSAMXMAAAAAAMXMMMM
|
||||||
|
SAMMSASMAXAMSSMMSSMMAMAXSASASASXMXXASMMMSMSAAAMMAAXMSAMAAAMMSMAAXASAMXMMXSXXSMMMXAXXMMMMMAMAMAXSMMMSSXSAXMMSMSMSMMMXMSXAXSXMMAXSSMSMSMSMMXSA
|
||||||
|
SASMSASMMSAMASAAXXASXMMMMASXMASMAMSMMMSXXXMMMMMXSMMMMMSSMSAAMSMXSXXMXSMAAXMMMAASMMMAXMMAMMSSSXXXAASMMASASXAAAMAMAMAXMSSXMASMSMMMMAAAXMXMAAXX
|
||||||
|
SAMXMXMXMAMMASMMMSMMMAMSMMMAMAMAAAAXAAMXMXMAMXMAAAXXAAAAAMMXMXMMXMASAMXMXXXAXXMSAAXMSAXXMXSAXXXSMMXAMXMAMMSMSMAMAMSSMXXMASXMASAMMSMSSMAAMMSA
|
||||||
|
MAMMMSXXSMXMXXXSAXAASAAAXAXAMXSSSSSSMMSAAXSASAMMSMMSMMXMMMXMXAMMAXAMMXAMSMSSSMXSMMSXXAXSXMMMMSXAAASMMMMSMAXAMMASAMXAXAMXMAXSASMSAAXXAMMSMAMM
|
||||||
|
XMMSAAMMAXXAMXMMXXXMMAXASXSMSMMMMAXMXAMAMXMXSAMXMAMXAASMXXXAXMAXMMSSSMMXAAAAAMAMAMXMMXMSAXMSAMSMMMSAAAAAMMMAMXAMAXXAMMSMSSMMXSAMMSSSMMXAMASX
|
||||||
|
MSAMXSAAMMSSXASMMSSSXMSMAAXMAMAAMMMMMSMSXSMXMMMMMAMSXMSAAASXSSMMAMAAMASMMSMMMMXMAMAMAMMSAMXMAXAMSASMSMSSXXMXMMSMSMSSMXAMAAASASMXMXAAAASXSXSM
|
||||||
|
AMASXMMSXASXSMSAAAASAAAMMMMSASAXXAASAXAMASMSXAXXMAMAMXXMMMXAAAASAMMSMAMAAXXSMASXMMMSMMAMXMASXMAXMAXXMAXAMSSSMAXAAAMAMSMMSSMMXXXXMASMMMSXMAMM
|
||||||
|
XSXMXAAXMXMAMSSMMMXSMSXSMAAMASAMSSXSAMXMXMASXMMMSMSMASXSXXXMMMMXASXMMXXMMMAAMAMMSAMAAMAMAMXSXMMMSMSMMSMMMAAXMASMMMMMMMAAAAXSMSMXSAMXAXXAMAMM
|
||||||
|
XMMMSMMSXMSSMAXXXXXXAXMAXMSSMMMMAMAMXMXMSMMMMSSMAXAASAAMSAMXXMXSASAMASXASMMMMXSASASXSSMMSSMMMXSMXAAXAAAXMMSMMASAXXMXMSMMSSMMAAAAMAXSAXSXSMSS
|
||||||
|
SAAXAMSXMXAMXXSXMMSMMMMSSMMAMXMMXSMMMXXXAAMMAAAXMSSSMSXMASXMASXAXXAMAMXAMAAXMMMAXAMXMAMAMAAXSASMMSMXXSSMXAAMMASAMMMMMAMXAMAMSMSMSMMSMMSAMAAX
|
||||||
|
SSMSSXSAMMXXAMMAXMAAAXSAAASXMSXSMSAMSAMSSMMMMXSMXAXXAXMXXXMXAAMMSSMMASMMSSMXXAMMMSMMSAMXSSMXMASXAAXSXXMMMMMXMAXXXXAAXAXMMMMXAXAMXAAMAAMAMMMS
|
||||||
|
MAMAMMSAMSSSMASAMSMSMSAASMMMASASASAMMAXAAXXSMAMXMAMMAMMSMSAMXMAXAAASAXAMXAAASXXAXAAAMASAXMASMAMMSMSAMXAMXMAXMSMMMSSSSSSMMASXMSXSSMMMMMSXMAXX
|
||||||
|
MSMXXAMAMAAASAMXXXMAMMMMMAXMAMXMAMMMSMMSSMXXMASAXAMSAMXSAMASXSSXSXMMMSXMSMMMAMSMSSSMSXMAMSMSMAMMAMXMASMMSAXSAAAAAMAMAAAMSMSAMAAMAXMASMSMSSMX
|
||||||
|
MXSSMXMAMMSMMMXSMMSASAAAMXXMASAMXMXAMSAAMAAMMMSAMXXXASAMMSAMMAAAMSXMMAMMXSAXXXAMXAAAAXMSMAXXMSSMXSAXMAAXMAMXMSSMAMAMMMMMAASXMMXSAMMAMAXAAAAS
|
||||||
|
MSAMXXSASXAMMMXMAXSASMSSSSXSASMSMSMMSMMSXXXAAMXMASMMXMASAMMSMMMAMAXXMASMAMMASMXSMMMMMAMASXSXAMAAMMMMMMSXMXMAXMAMXSASAMASMMMASMASXSSSMMMMSSMS
|
||||||
|
MMAMAXXAMXXSAMAMSMMMMAMAAAAMXSAAAMSXAXMAMXMMMXAMXMAMAXXMASXSXMMXSMXMAMXMAMXAMAMAMSMXXXSMSXSAMSMMMAAASXXAMMAMXSMMMSMSASASMMSAMMAMMMAAXSAMAAAX
|
||||||
|
XSSMXSMSMMMSMXSMMXAAMAMMMMMMMMMMXXMMMMXAAAAAMMMXAXAMXMMXAMXMXMAASXSSXSXSXSMXMAAXXAMXMXMXMASMMAAMSMSMSASXMASMMAXXAMASAMMMAAMASMASMMSMMSASMMSM
|
||||||
|
AMAXMAXAAAAXAAXAMSSSSXSAMXSAAMMSMAMSXMSSSSSXSASAMSASXMSAASAMASMMXAAAASAMXSASXSSSSXXASAMSMMMAMXSMMAXAMAMXMAXAXMSMSMAMAMASMMSAMXASAMXAASMMXMAM
|
||||||
|
ASAMXMSSSMSMMASAMXXXAAXXMASXXSAASAMAAMXAAAAASAMAMSAMXAMSMSASASAMMSMMMMAXAMSMAMAXXMSMSASAAXSSMMMAMSMMMAMXMASAMXAAAMXMASAXSAMXSMMSAMSMMSSXAAMS
|
||||||
|
XSXSXXXMXAXMSMSMMSMMMMMSMMSMSMXMSXSSSMMMMMMMMSMXMMSMMMMMXSXMASAMXMASXSXMXSAMMMXMAXAASXMXSMAMAXSAMXMASMSAMXSMMSMSMSSMXMASXXSAMXMSMMSAMXXSXSXA
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
MMMSXXMASM
|
||||||
|
MSAMXMSMSA
|
||||||
|
AMXSXMAAMM
|
||||||
|
MSAMASMSMX
|
||||||
|
XMASAMXAMM
|
||||||
|
XXAMMXXAMA
|
||||||
|
SMSMSASXSS
|
||||||
|
SAXAMASAAA
|
||||||
|
MAMMMXMMMM
|
||||||
|
MXMXAXMASX
|
||||||
@ -1,2 +1,3 @@
|
|||||||
|
|
||||||
pub mod day_4;
|
pub mod day_4;
|
||||||
|
pub mod word_grid;
|
||||||
@ -0,0 +1,271 @@
|
|||||||
|
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, Debug)]
|
||||||
|
struct IdxPoint
|
||||||
|
{
|
||||||
|
i: usize,
|
||||||
|
j: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl IdxPoint
|
||||||
|
{
|
||||||
|
fn new(i: usize, j: usize) -> IdxPoint
|
||||||
|
{
|
||||||
|
IdxPoint { i, j }
|
||||||
|
}
|
||||||
|
|
||||||
|
fn offset_by(self: &mut IdxPoint, offset: Point) -> IdxPoint
|
||||||
|
{
|
||||||
|
self.i = ((self.i as i32) + offset.x) as usize;
|
||||||
|
self.j = ((self.j as i32) + offset.y) as usize;
|
||||||
|
*self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn new_with_offset(self: &IdxPoint, offset: Point)-> IdxPoint
|
||||||
|
{
|
||||||
|
let i = ((self.i as i32) + offset.x) as usize;
|
||||||
|
let j = ((self.j as i32) + offset.y) as usize;
|
||||||
|
|
||||||
|
IdxPoint {i, j }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, Debug)]
|
||||||
|
struct Point
|
||||||
|
{
|
||||||
|
x: i32,
|
||||||
|
y: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Point
|
||||||
|
{
|
||||||
|
fn new(x: i32, y: i32) -> Point
|
||||||
|
{
|
||||||
|
Point { x, y }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
pub struct WordGrid
|
||||||
|
{
|
||||||
|
grid: Vec<Vec<char>>
|
||||||
|
}
|
||||||
|
|
||||||
|
impl WordGrid
|
||||||
|
{
|
||||||
|
pub fn new(input: &str) -> WordGrid
|
||||||
|
{
|
||||||
|
WordGrid { grid: parse_input(input) }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn print(self: &WordGrid)
|
||||||
|
{
|
||||||
|
print!("Word Grid:");
|
||||||
|
for row in &self.grid
|
||||||
|
{
|
||||||
|
println!();
|
||||||
|
for c in row
|
||||||
|
{
|
||||||
|
print!("{}", c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println!();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub fn find_x_mas(self: &WordGrid) -> i32
|
||||||
|
{
|
||||||
|
|
||||||
|
let neighbor_offsets = get_x_neighbor_offsets();
|
||||||
|
let mut num_occurrences_found = 0;
|
||||||
|
|
||||||
|
for (i, row) in self.grid.iter().enumerate()
|
||||||
|
{
|
||||||
|
for (j, c) in row.iter().enumerate()
|
||||||
|
{
|
||||||
|
if *c as u8 == b'A'
|
||||||
|
{
|
||||||
|
// First make sure all four neighbors exist
|
||||||
|
// TOP LEFT
|
||||||
|
let top_left = IdxPoint::new(i, j).offset_by(neighbor_offsets[0]);
|
||||||
|
if !self.has_neighbor(IdxPoint::new(i, j), neighbor_offsets[0])
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TOP RIGHT
|
||||||
|
let top_right = IdxPoint::new(i, j).offset_by(neighbor_offsets[1]);
|
||||||
|
if !self.has_neighbor(IdxPoint::new(i, j), neighbor_offsets[1])
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// BOTTOM LEFT
|
||||||
|
let bottom_left = IdxPoint::new(i, j).offset_by(neighbor_offsets[2]);
|
||||||
|
if !self.has_neighbor(IdxPoint::new(i, j), neighbor_offsets[2])
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// BOTTOM RIGHT
|
||||||
|
let bottom_right = IdxPoint::new(i, j).offset_by(neighbor_offsets[3]);
|
||||||
|
if !self.has_neighbor(IdxPoint::new(i, j), neighbor_offsets[3])
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that they contain valid values
|
||||||
|
if self.grid[top_left.i][top_left.j] as u8 != b'M' && self.grid[top_left.i][top_left.j] as u8 != b'S'
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.grid[top_right.i][top_right.j] as u8 != b'M' && self.grid[top_right.i][top_right.j] as u8 != b'S'
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.grid[bottom_left.i][bottom_left.j] as u8 != b'M' && self.grid[bottom_left.i][bottom_left.j] as u8 != b'S'
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.grid[bottom_right.i][bottom_right.j] as u8 != b'M' && self.grid[bottom_right.i][bottom_right.j] as u8 != b'S'
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that the diagonal corners have opposite values
|
||||||
|
if self.grid[top_left.i][top_left.j] as u8 == self.grid[bottom_right.i][bottom_right.j] as u8
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.grid[top_right.i][top_right.j] as u8 == self.grid[bottom_left.i][bottom_left.j] as u8
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
num_occurrences_found += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
num_occurrences_found
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the number of times the given word was found in the grid
|
||||||
|
pub fn find_word(self: &mut WordGrid, word_str: &str) -> i32
|
||||||
|
{
|
||||||
|
let word: Vec<u8> = word_str.as_bytes().into_iter().map(|x| *x).collect();
|
||||||
|
let neighbor_offsets = get_neighbor_offsets();
|
||||||
|
let mut num_occurrences_found = 0;
|
||||||
|
|
||||||
|
for (i, row) in self.grid.iter().enumerate()
|
||||||
|
{
|
||||||
|
for (j, c) in row.iter().enumerate()
|
||||||
|
{
|
||||||
|
if *c as u8 == word[0]
|
||||||
|
{
|
||||||
|
for n in neighbor_offsets
|
||||||
|
{
|
||||||
|
let neighbor = IdxPoint::new(i, j).offset_by(n);
|
||||||
|
if self.has_neighbor(IdxPoint::new(i, j), n)
|
||||||
|
{
|
||||||
|
if self.search_direction(neighbor, n, &word, 1)
|
||||||
|
{
|
||||||
|
num_occurrences_found += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
num_occurrences_found
|
||||||
|
}
|
||||||
|
|
||||||
|
fn search_direction(self: &WordGrid, start: IdxPoint, direction: Point, word: &Vec<u8>, next_char_idx: usize) -> bool
|
||||||
|
{
|
||||||
|
if self.grid.len() <= start.i
|
||||||
|
{
|
||||||
|
panic!("i is out of bounds");
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.grid[start.i].len() <= start.j
|
||||||
|
{
|
||||||
|
panic!("j is out of bounds")
|
||||||
|
}
|
||||||
|
|
||||||
|
if next_char_idx >= word.len()
|
||||||
|
{
|
||||||
|
panic!("next is out of bounds")
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.grid[start.i][start.j] as u8 == word[next_char_idx]
|
||||||
|
{
|
||||||
|
if next_char_idx == word.len() - 1
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
let next_idx = start.new_with_offset(direction);
|
||||||
|
if self.has_neighbor(start, direction)
|
||||||
|
{
|
||||||
|
return self.search_direction(next_idx, direction, word, next_char_idx + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
fn has_neighbor(self: &WordGrid, at: IdxPoint, offset: Point) -> bool
|
||||||
|
{
|
||||||
|
let neighbor_i = at.i as i32 + offset.x;
|
||||||
|
let neighbor_j = at.j as i32 + offset.y;
|
||||||
|
|
||||||
|
neighbor_i >= 0 &&
|
||||||
|
neighbor_j >= 0 &&
|
||||||
|
neighbor_i < self.grid.len().try_into().unwrap() &&
|
||||||
|
neighbor_j < self.grid[at.i].len().try_into().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||
|
// HELPERS
|
||||||
|
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||
|
fn parse_input(input: &str) -> Vec<Vec<char>>
|
||||||
|
{
|
||||||
|
let mut grid: Vec<Vec<char>> = vec![];
|
||||||
|
for (i, row) in input.split("\n").enumerate()
|
||||||
|
{
|
||||||
|
grid.push(vec![]);
|
||||||
|
for c in row.as_bytes()
|
||||||
|
{
|
||||||
|
grid[i].push(*c as char);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grid
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_neighbor_offsets() -> [Point; 8]
|
||||||
|
{
|
||||||
|
[
|
||||||
|
Point::new(-1, -1 ), Point::new(0, -1), Point::new(1, -1),
|
||||||
|
Point::new(-1, 0 ), Point::new(1, 0),
|
||||||
|
Point::new(-1, 1 ), Point::new(0, 1), Point::new(1, 1),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_x_neighbor_offsets() -> [Point; 4]
|
||||||
|
{
|
||||||
|
[
|
||||||
|
Point::new(-1, -1 ), Point::new(1, -1),
|
||||||
|
|
||||||
|
Point::new(-1, 1 ), Point::new(1, 1),
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue