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