day4
This commit is contained in:
parent
9ded9cc978
commit
acff0d9dd3
10
Makefile
10
Makefile
@ -1,12 +1,14 @@
|
|||||||
all: $(patsubst %.cpp,%.elf,$(wildcard example/*.cpp))
|
all: $(patsubst %.cpp,%.elf,$(wildcard example/*.cpp))
|
||||||
|
|
||||||
|
OPT = -Og
|
||||||
|
|
||||||
include dreamcast/base.mk
|
include dreamcast/base.mk
|
||||||
include dreamcast/common.mk
|
include dreamcast/common.mk
|
||||||
include dreamcast/headers.mk
|
include dreamcast/headers.mk
|
||||||
|
|
||||||
MAKEFILE_PATH := $(abspath $(firstword $(MAKEFILE_LIST)))
|
MAKEFILE_PATH := $(patsubst %/,%,$(dir $(abspath $(firstword $(MAKEFILE_LIST)))))
|
||||||
CFLAGS += -I$(dir $(MAKEFILE_PATH))
|
CFLAGS += -I$(MAKEFILE_PATH)
|
||||||
CFLAGS += -I$(dir $(MAKEFILE_PATH))dreamcast/
|
CFLAGS += -I$(MAKEFILE_PATH)/dreamcast/
|
||||||
LIB ?= $(dir $(MAKEFILE_PATH))dreamcast
|
LIB ?= $(MAKEFILE_PATH)/dreamcast
|
||||||
|
|
||||||
include aoc.mk
|
include aoc.mk
|
||||||
|
@ -28,6 +28,14 @@ static int parse_input(const char * input, int length, struct report * report)
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int int_sign(int n)
|
||||||
|
{
|
||||||
|
if (n < 0)
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static bool report_safe(struct report * report, int skip)
|
static bool report_safe(struct report * report, int skip)
|
||||||
{
|
{
|
||||||
int last_sign = 0;
|
int last_sign = 0;
|
||||||
@ -45,7 +53,7 @@ static bool report_safe(struct report * report, int skip)
|
|||||||
if (abs(rate) < 1 || abs(rate) > 3)
|
if (abs(rate) < 1 || abs(rate) > 3)
|
||||||
return false; // unsafe
|
return false; // unsafe
|
||||||
|
|
||||||
int sign = rate / abs(rate);
|
int sign = int_sign(sign);
|
||||||
if (last_sign != 0 && sign != last_sign)
|
if (last_sign != 0 && sign != last_sign)
|
||||||
return false; // unsafe
|
return false; // unsafe
|
||||||
|
|
||||||
|
140
day4/input.txt
Normal file
140
day4/input.txt
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
XXASMSMSXMXSMMXMAXMMMAMSAMASMSAMXMAXSXMASMAMMXXMASASXAMAMXSXMMSXSAMXSSXXMXAAXMAXMXXSXMXMMAAMMMMMMMMMMXXMSMSSSMXAAMAMMMSAMXXXXSMSAXMMXXMASMSS
|
||||||
|
ASMMAAAMAMASAXSSMMSASAMXAAAAXXXMAXXAMSASXMASMSSMSAMSAMMSXMAXSMAAMMSAMAAMSMSMSSSSXSXSMSAAXMXMAAAAMMSAMXSXMAAAAAXMAMAMAMAMMXMSASAXMXSAMXSAMXAS
|
||||||
|
XSAMSMMSAMASXMXAAXSASXXSSMXXXMMSMSMSMAMMASASXAAXXAMXAXAMAXMASMMSMAMMSMSMAAAAAAAAASASASXSMSASXSSXSAXAMAMAMMMSMMMMAXASMSMXSAAMAMXMMAMAXXAMXMMS
|
||||||
|
AMAMXAASMMXSAMSMMMMMMMMMAMMSMMAAAAAAXAXSAMASMSSMSAMSAMMSMMMXXAAAMXMAAAAMXMMMMSMMMMAMAMAMAMMSXMAXMASXMSSMSAMXAAASMSMXAAXAMMSMAAMAMXSMMSASXSXM
|
||||||
|
XSAMMMMXAXSMXXAMAAXSAAXSAMASAAMMSMSMSMMMSMAMMAAXMAMSASXAMXXXSMMMSAMMMSMSSSXXAXXAXMXMXMMMSMMMMMSMMAMAAAAXSMSSMMMMAAAMSMMXSAXXXMSXMAMAAXMAXMAX
|
||||||
|
MSASXMXSSMSAMSMSSMSMSMXMXMASMMSMMMAXXAAAAMAMMXXMXSMSAMMMMSMAXXAASASXXAXAAXMMXSMMXMXMAMXAAAAAAXAAMXSMMMSAMXAXAXAMSMMMXAMXMMMMXAMAMMSMMSASXSMM
|
||||||
|
ASXMASAAAXMAMXMAAMSMMSSXXMASAMAAASXMXMMXSSSSMMSSMAAMSMXMASMSMMMXSAMAMMMMMMSSMMMMAXAMAMMSSSMSSSSSMAMXASXXSMSSMMMAAAASMMMMXSAMXMSSMAMMSMMXAASX
|
||||||
|
XMXSAXMXMAMASXMMSMSAMASAMXAXMXSSMSAMSXAAMMMAAXAAMMMMAMAMXMAXMASMMAMXMAAAXAAAAAAMSMMMAMAAAXAAAAAAMAXAMXMASXMAXMXSSSMSAMSXAXASXAAAMXXSAAXMMMXM
|
||||||
|
MSMMASMAMXSASMXMAMMAMMMMSMXXSAMXASAMSMMMSASXMMSSMXMSASAMAMMMSMSASXMASASXMMSSMMSMXASXMXSMXMMMSSSMSSSMSAMXXASMMMMMXXAMAMXMXSASMMMSMXSXXXMMASAX
|
||||||
|
AAAAMXXAMXAMMMSAMASXMXSXAXSAMXXSXMXMMAXXSAMASXAXAXAXASMSSMXAAAMXMASASAMXMXAXXXXXSAMASAXXAXXAAAAXXXAMSXSAMMMSAMXMXSMSAMXAMMAMAASAMXXSSSXSASAS
|
||||||
|
SSSMSASXXXAXAXSASAMMMAXXAXMAMMMSAMXXSSMMMAMASMSMMMXMAMAAAMMSMSMASMMMXAMAXMASAMXMMMMAMXSMMSMMMSMMXSSMMMSMMSASXSXSAMXAMSMSMMASXMMMXAMXMAAAAXXA
|
||||||
|
MAMAMXXMSSSMSXSAMMSAMXSMMMMAMAAMAMXASXSASXMAXMAAAXXAMMMMSMAXAAXAMAASXSMMXSAAMAAAASMXSMXAAXMAMXASMXXAXASAAMASXAAMXMMXMAAMXSMSASMXMSSSMMMMSMSS
|
||||||
|
MAMMMXSAXAAAXXMXMSSXSAXAAASXSMSSSMMXMAMXMXMAMSMSMSMSMAMSAMAXSXMXSSMSAAAAAMASXSMSMSAMXASMMXMSASXMASXXMXMMMSSSMMMMSMASMMSMMSASAMXAAAAMXAAXAAXA
|
||||||
|
SSSXAXMMMSMMMSXMXASAXMSSMXSAAAAAXXMMMSMSMSMSXSAMAAAASMMMAMMXMXMMMMXXMXMMXSXMAMAAMMMMMXMSAASAMXAMSMMXSSMMMXAXXXXAAMMMAMXXAMAMXMXMMMSMSSSSMMMM
|
||||||
|
MMAMXSAMXXMSAMXAMMMMMXMASAMXMMMSMSMAMAAAAAAMAMXMSMSMSSXSAMXAXAAAMSMSXMASXMMMAMMMSAMMXXAMSMSAXSMMAAXMASAASMMMSMMSXSASXMMMXSAMXMAMAXAAMAAXXXAX
|
||||||
|
MSMASAMXAMMMASMMAXAXAMSSMMSXXSXAAXXAMMXMSMAMSMXXAAAXXXXMMSXMSMXMSAAMXMAMAXXMXXXXSMSMAMMMMXSMMXXSXSMSASMMMMMAAXMAMMMMAAAAMXASXXSMMXMMMSMXXSSS
|
||||||
|
XXXXSXSAMXSMMMASXSSXSAMXASAMXMMMMMMSMSAXXXAXMMSSMSMSMMSXMAMMAMAMMMSMAMXSMMSMAMSMSAAXMASAMMSXMXASAAAMAXAMXXMSSXMSSMASMSMSSSSMMAXASMXSAMXMMAAM
|
||||||
|
MAMXMAMASASAXMXMAAAXMAMXMMMMASAMXSXAASXSMMXXXAAAAXXXAAASMSMSASMSAAAXXMASMAXMAMAAMSSSMMMASASASAAXSMXMMMSSMSMAMMAMAMAXXAAXAMMAXMMAMAMMAMAAAMXM
|
||||||
|
AAMAMAMMMASXMSAMMMMMSAMASAMMAXASAXMMMMAAMMSSMMSSMMMSMSSSXAAMAMASMSSSSMAMMSSSSSMSMAMAMXSAMASAMMSMMMXMXAXAAXMASXAXMMXSAMXMMMSSMSMXMAMMMMMSSXMA
|
||||||
|
SASASASAMXMMAMAXAAAASASXSASMMMMMMSAMMMSMAAXAXAAXAMAAAMAMMMMMXMAMAAAAXMASXMAAAXMAMASAMXMASMMXMAMAAXAXMAXMMMMASMMSXAMMMXAMXMSAAAMMSASAAAMXXXAM
|
||||||
|
MASASASXSAMSSSMMSSSXSAMAMAMMSAMAAXXXAAAXMASMMMMSMMSMXMAMAAAXXMXSMMMMMMAXAMMMMMSXSASASXSMMAAAMASMMSMSMSAMAAMASASMMXSAMMMXAXMMMMMASASMSSSMMMSA
|
||||||
|
MAMXMAMASAAAMAAAMAMXMAMXMXMASMSMSMMSMSMXXAXXXMXSXAXMASAMMSXSSXASMXXAAMMSMMSXMAXAMXMAMAXMSMMXSASAMAAAAMASXSSMMMAXAXSAMASMSMXXXXMMMAMXXXMAAMAS
|
||||||
|
MSSXMAMMMMMMSSMMSMAMXAMAXXMASXSMXAAMAAMXMSSXASAMMXXSASASAXMMAMXSASMMMSMAMAXAXSMSMSXMMSMMMMAMMMXAXMSMSMAMAAAXXXMMSASAMXMAMXMSMSXSMMMSSXSSMSAM
|
||||||
|
XAMASMSXXMMMAXAXMMASMMSMSMAAXASASMMMMMSAAMAMMMASXSXMASAMAXMSMAMSAMAMAXMAMXSXMAAMASMMAXAAAMAXAMSSMMXXXMXMMSMMAXXAMMMAMXMAMMMAASAMXMMAMMAXXMAS
|
||||||
|
MXSAMMAMMSAMSSMSAMASAMXXAMMMSXMAMXXMSASMSMAXXMMMXMMMMMXMMMMAXMXXASXMASAXMMMMAMXMAMAMMSMMMSMSMMAXAMXMMXSAXMMMSSMMMXXAMSMMSASMMMXMAXMASMAMXMAM
|
||||||
|
AMMMSAMXAXMAAAXSXMASAMSXMMAMXMMMMMSAMASXAMSMXSAMAAAAAMASXASMSMMSMMMMMSMMMAAAMXSMXSSMASASMSXAMMMSAMAAAASMMSAAMAMAAMSMMSAASXSXMSAXXXSXXMMSAMAS
|
||||||
|
MXAAXMXMMMXXXSMSAMASAMAASXMXAAMAAAMAMAXMAMXAMSAMSMSXXMASMMSAXAAXMASAXMASXSXXMAXAAAAMXSAMASXMXAXAASMSMMSAASMMSAMXXMAMASMMSASAXMASMMSAXMXSASXS
|
||||||
|
SSMMSSSSSSXMXMXXAMASAMMSMASMSSMMMSXXMSSSMSMXMXAMXAMAAMSMMMMMSMMMSASMMSAMXXXMAMXMSSMMAMMMAMMMSSXSAMXAMMSMMSMMSXSAMXAMASAAXASXMMSMMAMAMSAMXMMX
|
||||||
|
XAAAAAAAAAAAXMASMMXSASMMMAMAMAASAMXAMAAAAAAASMSMMAMAMXMAMXMXSMSASAXXMXAMSMSAXSAMAAAMSMSMSXMAAXMASMSXSMSMAMAASMMAMXMMASAMMAMMXMAAMXMAMMAMSXSM
|
||||||
|
SSMMSMMMMMXMAMAMAAASMMAAMSSSMSMMAXMASMMMSMSMSAAXMMMMXMSSMAMSMAMASXMXMSSMAAMAXMASXSMMAAXAXMMMMSAMXMAAMASMXMMMXAMXMASMMSXMASMAASXSMSMSMSAMXAXX
|
||||||
|
AMXAAAAXMASXSMSMMMMSXSMMMAAAAAXMMMAMXXXXXXAAMMMMMXAMMMAXSXMAMAMMMMAAMXMSMSMMMSAMMMMMSSMAMMXSAMXSAMMSMAMAMSMMSXMXSAMAMSAMXMASMSXAAXAAMMMSMMMM
|
||||||
|
MSMSSSMSMASAMAMASXMXAMASXMSMMAXAAXSXMAMSSMMSMSMAMXAXAMXMMSSMSSSXAXSXMAMAMAAAAMXXAMAAAAMXMSAMMSMMASAXMSMMMAAMAMXAMMSSMXSMASXMASMMMMSMXSAAAAAA
|
||||||
|
XAAAAAMXXAMMMXXAMAMMXSAMXXXMASMSMSXMXSMAAXMAXASAXXSXMMXSAAXXMAMMMMMXSASASMSMSMMMSXMMSSMSAMAXXAMMXMASMXASMSXMASMAXAAXMAMSASAMAMAXSAMXXMSSMMSS
|
||||||
|
SMSMSMMSMSSSMMMAXAMSMMASMXSSMMAAXXASAAMSMMMSSMSMSMXAASAMMMSMMMAAXAAMXMSMSXXAAXMAXAAAXAAXAXAMSAXSASAMASAMAAXXAMMSMMSSXMMMXSAMMSMMMAXXMXXXXMAM
|
||||||
|
SAMXAMXMAAAAAXSAMSXSASMMMMMAXMSMXMAMSMMAAAAAAXXAAAMSMMASAXXMASXMSMSSXXMASAMSMSMASXMXSMMSSMMMAAXSAMXMMMMSMMSMAMAXAMXMASXXXSXMMAMSAMMSSMSSXAAX
|
||||||
|
MAMSMSAMXMSMMMXAMXAXXXMAAASAMXAAMMSMMXMSMMMSSMMSMSMXASAMXSMSMXAMAAAMXXSMMMMAASMMMAMXXAAAXAXXMSMMXMASXAXSXAXXAMSXSMAMXMMMAXXXSASMAMAXAAAXXSMM
|
||||||
|
SAMXAAAXMMXAXMXSMSMMMXSXSXSMMSMAMAAAAXAAAMMAXAXXXMAXXMASXSAAXMXMXMMSXMAMAMMMSXASMMMAMMMXSAMXXMASXSASXXMSMSSSXSMAXSSSMAAMMAAMMMMMAMASMMMMAMSA
|
||||||
|
XAMAMSMMMASMMSAMMMAAXMMXXXMAAASXMSSSMSSSSMMASMMMXMASXSXMAMSMSASMMAMAMSAMASXMXXAMASMSSXAAMAMSMSAMMMASASASAMAMSMMMMAXXMMXXMSASAAMSSSMXXMXSASAS
|
||||||
|
SXSAXAAXMAXSAMXMAMXMSXSASASMSXSXMXAXAXAAMAMMMMSMXMSAAAXXXMAMXMAAAXMAXSASASAMASXSXMAMAMMMMAMAAMASXMAMXMAMSMAMSSSSMMMXMMSAXMASMMXAAAXXSAAMXMAX
|
||||||
|
MMMMMSSMMMSMXXSSSXSAXAAASXMMXMSASAMMSMMMSAMXAAMXAMXMMMMMMSAMXXSAMMSXXXMMMXAMAMAMXMXMASXMSSSSSSXMXSXMMMAMAMAMMAMAAXMASAMAXXASMSMMSMMMAMSXXMXM
|
||||||
|
SMXSXMXXAXSAXXAAAAMXXMMMMASASASAMASAXASXSMSSMMSMMSAMXAAAASASAMXAAXXSSMSAMXAMSMSSXMASXMAAAAAAMXAMASAMASASMSSSMASXMMSAMASMXMMSAMXAXAASMXXAMSSM
|
||||||
|
XMAMAASMMSMASMMMMMMAXMAMXAMMMAMXMAMMSXMAXSAAXAXASXMSSSSMXXSAMXXMMMAMXASASMMMMAMAASASASMMMSMSMSMMASAMXMXSAAAXMXXAMXMAXMAXASXMMMMSSXXXXAMAMAAS
|
||||||
|
XMAXMMMAMXMAMAAXAXMXMMASMSSXMAMSMMSAXMXMMMSSMMSSMSXAMAMXAXXMSMMMAMAMMXMMMAAAMAMSMMASAMXSAMAMXMAMMMMMMXMMMMMMXMXMMXSSMSMSMSXSXAAXXMAMXMSMMSSM
|
||||||
|
XMMSMAMXMXMAXSMMMXSAMXAMXAMMMSXXAAMXSMAMAXXXAMXMASMSSMMMXSAXXMASASMSMMAMSSMMXSMMXMXMXMASAMXMMXAMXXSXSAAASMSSMSAMSXMAMAXMAMMMMMSMSMMMSXAAMXMA
|
||||||
|
MXMAXMSMMSSSXMSMSAMASMAMMMMSXMMSMMSAXXASAXXXSSMMAMAAMAAAXXXMASMSASAAXSMMXMASAXAMXMAMASMMMMMSASMSMASASXMMMAAMAMASAAXSSMXMAMXMASAAAAAMAMXSXAXS
|
||||||
|
AASAXMAAMMAMAAASMAMAMMAMAXASASAXASMMSSXSAMMXMAXMSSSMSSMSSSMMXMXSAMMMXXSAMXXMASAMASASXXAAXAXMMXAAMXMXMMMSMMMSSSMMMXMMAMMSXMASMSASMSMSSSMMMMMM
|
||||||
|
SMMASMXSMMAXMMMSSXMMSSMSSMASAMXSXMASAXMXAASASAMXAMXXXXAMXAASXXAMXMAMSAMXMASMAMAMASMSXMSMSMSMAMXMMSSXMAASAMMAASAMXSASAMMSAXXMASAMXXAAMMMAAASX
|
||||||
|
AXMAXAAXXSXSXAAXMMMAAXMAXMMMXMXMASXMMSXMSMSASASXMXSAMMXMASAMXMMXMXAMMAMXSASMMSMMASAMAMMAXAAMSXSAXAMMSAMXAMXMAMXMXMAMMSASMMMSMMAMXMMMXAMSSXXA
|
||||||
|
XMASMMSMASAMXMMXXAMMSSMSSMXXAXAXMMSAXMMAMXMXMAMMMAXMXSMSAXAMMMAASXSSSSMAMXSXMAMMAMASMMSSMXMXAAMXMMXAMXXXMMXXMMSXAMMMMMMXAAAAXSAMXSASXMXMMMSM
|
||||||
|
XAAXXAMXMMAMMMSMSASAAXXMAXSSMSSXSAMSAMXSAMXXXMSMMASMXXAMASAMAMMXSAXMAXMAMSMMSSSMXSAMXAAXMXSMMSMMMXMSSXSASXMSAAMMSMASMSXSSMSSMSASXXASXSAAAAAX
|
||||||
|
MMASMMMAXMXMAMAMXAMMSSSMAMMAAAMMMASXXXAXXAMAMXAAXAXAMMSMAMASMSXAMMMMAMSAXAAXAMAAAMAMMMMSXAXMAAMASAMMAASAMXASMASAXMMMAXAAMXMMXSAMXMAMMSSSMSSS
|
||||||
|
AXASASMSSMMSXSASXSAXXAXMAMXMMMSSMMMMSMMMMMMMASXSMMXSXXAMAXXMXMXMMAAMSMSMSSXMASMMMSAMMAAXMMSMSMSASASMMMMXMMXMSAMMSSSMSMSMSASMMMAMAAMSAMAMAMMM
|
||||||
|
SMXSAMAASMAAASAMAXSSMSMSMSXMMMAAMXAAAAAXXMASXMMMASAMXASMSSMMXMXXSMSXXXMAMMASXMXMASMMSMSMXAAMXAMXSAMXMXXMXMSAMXMXAXAAMAXAXAMAAXAMXSAMAMAMAXSX
|
||||||
|
XMAMAMMMMMMSXMSMSMAXXMAAAAMXAMMMMSMSSSSXXMASAAXSAMASXMMAAMAMMMMAMSXMMMXMMMMMAAAMXMAMSAMXMSSSSMSMMAMXXAXSAMXASMMXMSMMMSMMMSSSMSMSXMMMAMXMMSXS
|
||||||
|
SMXSXXXXXAAXXAAMMMMMSMMMMMMSAMAAMAMMMAXMAMXXXMMMXMSAMXMAMSXMASAASAMAASMMAAMXXMXSXMXAMMMAXXAAXAAAMXMSXMASXSSMMASAMAXXXAAAAAAAMAASAMXSSMSAMAMX
|
||||||
|
AXXMMMMMSMSMSSSXSASAMAAMXAXSAMSXSAXMMAMSSMMMSMXMMXMXMASXXSASASXSMASXMSASMSSXAMAAAMMMMXSSSMMMMSMXMAXMAMAMXMASMMSASXMSAMXMMSMMMMXMAMAMAASMSMXS
|
||||||
|
MXSAASAMXAAAMAMAMXMASXMSMMMMAMXASAMSMMXAASXAAAASMASAMAXMAMAMMSMXMAMMMSAMXAAXAMMSXMAAMMMMMXXSXMASMXSSXMASAXXMXASXMASMXMAXXMASXSMSAMXSMMMXAMSS
|
||||||
|
XAMXMXMSXMMSMAMAMMSXMAAXASMMSMMMMSMSASMSSMMSSXSASXSASMSMSMSMAMAAMXSXAMMMMXSSXMAMASXMMAMAXAXXAMXMXAAMSSXMMSMMMXSAMXMXSSSXMSAXAAASAMXXXSASMSAM
|
||||||
|
MSSSMMSAXSXXXMSASASAMXMSXAMAMAXXAAXXAMXMAXXXAXXMAMSAMAAAAAMMSSMMSMMMSSMXSAMMAMXSAMXMSSSXMAXSAMXAMMMMAMXMAAAAMMSXMMAMXAXAXMMSSMMMSAMXXMAXXMAX
|
||||||
|
XAAAAXMASXAXSXMAMAMAMSMMAMMASMMMMSSMSMXXMAMMMMSXMMMAMSMSMSMAXAAAXAXAXAMAMXSXXAXMMSAXAXMXAAASAMXAXSAMASAMXMMAMMMASXSMMMMXMAAXXSXSAMXMXMSMSMXS
|
||||||
|
MMSMMMMMMMSMMAMSMSMXMAAMMXMXSAMXAAAMXMXSMASAAAAAMXSAMXAXXAMMSSMMSSMXSAMXMXMMMXMAMMAMSMSASMMSAMXMASXSASASASXXMAAXXMAAAAMSMMMSAXXMAMSMMMMASAAA
|
||||||
|
MAMXXXAAAAXASMMXAAAXSSMMSASXSMMMMSXMAXAMXAXMMSXSMASMSMAMSSXXAMAAAXAXSXMASMSAMASAMSAMAAXAXXXXAMXSAMXMASAMXSASMSXMMASMMMSAAAXMMMMSAMAMAAMAMMXM
|
||||||
|
MASMSSSSMXMAMXXMSMSMAAMXSASAMXXMXMXSXMMSMSXSMMXAMAXMAMMMAAXMASMMSSMAMMSASASMSASMMSASXSMSMSMSSMXMAXMMAMMMMMAMAMMMAMMAMXSMMMXAMAXXXMMSSSMMSXAX
|
||||||
|
SXSAMXAAMSMSMXMMMAMAMXMAMXMMMXMMAMMXXMAAMAASAMSMMSMSASAMMSMXAAXSAMXAXAXAMMMXMASXASAMAMXXMXAAMAMSMMSMSXSAXMAMAMAAMAXAMXSXXSSMSSSMMXMAAMAASMMM
|
||||||
|
MMMXMMMMMAAAMXSAMSMSASMMSXMASAXMAMXXMMAXSMAMAMAXAXXSASASXMXXMMMMMXSASMMMMMMAMAMAMMSMXMAXSMMMSXMAXMSAMASMSSSMXASMSSSMSAMAMXAAAMAMAASXMMMMMAAA
|
||||||
|
XAXASASMSMSMMMMAXXAMASXAAASAMASMMSMSAAMMMXASAMMMMMMMMMMSAXXXXAAMXXMASXAXAXSASAAMMXMMSMMSAASXAXSXMAMAMASXMXMAXMMMAAAXSAMXMSMMMXAMMMMAXXAMXSMS
|
||||||
|
MXSXXXSAAAXASMSSMMSMAMMMSMSAMSMMAAASMMSAMMMSMMXAAMXAMAAMXMAMXXSMSAMXMMMMMXXASXSXMXMASAMXMASMMMXAXMMXMAMMSMSMMAXSMSMMSAXSXXXMXMSMSASMMSMSAMAX
|
||||||
|
SMSMSMMXMXSAMAAAMAAMAMXAXAMXMXAMMMMMAASASAXMASMSMMSSSMXXAAXMSMAASXSXSAMAMXMMMXMAXMMAMAMXXAXAXAMMMXSXMXSAMXAASXMAXAXXXAMSMSMMMSMAAXMAMAMMASAS
|
||||||
|
AAMAAASASAMXMMMMMMMXXSMMMASMMMXMAXASMMXASMMSAMMAAAAAXXSMXXAAAMMMMMMASAMSAXMAAASXMSMSSXMXMAMSMMMSAAXXSMMXSMSMMAMXSMSSMMMXAXAAXAMXMXSXMASMAMMM
|
||||||
|
MAMSMSMXSAMXSXSMSMSMSXMXSAMAMSMSSXMMAAMXMMMMASMXMMMMXXSASMMXMMAASAMMMAMAAASASXXXAAAMMAMAMMMXASAMMSMXMAMAMMXASMMAMMAXAMAMSSSMSMSAMXMASAMMMSAS
|
||||||
|
XMXXMAMAMAMXSAAAAAAMASXXMXSAMAAAAASXMMSXAXXSSMAASXSMSAMXMAXSXSSMXASXMAMMXMXAXMSSSMSMXASASAASAMASAAAASMMMSXMXMSMXMAAMXMXSMXAAAXSMSAXAMXAXXSAS
|
||||||
|
MASMMMMSSMMAMXMSMSXSASMSAASASMMMSXMASXMXMMMSAMMSXAAXMMMSSXMAMMXXSAMXSASAMMMSMMAAAMXMMMSAXMMMASAMMMXXSAAXAXXAAXMMSMSSMSMMMMMXMMSXSMSMMMASAMXM
|
||||||
|
AMSAMXAXAMMASMMXMMAMAMAMMMSAMXXXMXSSMAXMMAMXXMXMMMMMSXAXAAAMAXAMMXMASXMASAAMXMMSMMAMMMMMMSXSAMXSAXSASMMMAMXMMMXAAXMAMMAASXSAMXSAMAAAXSASMSMM
|
||||||
|
SXSMMMMSXMSAMASXAMMMSMSMMXSXMASAMXMASXMASXMSAMXSAAXAXMAXMAMXSMMSSXMASXSAMMSMSXAAMSXSASAMMMAMMSMMAAMMMASAAMAXAXMMSMSAMXMMXAAMSAMAMSMSMMASXAAM
|
||||||
|
XASXAAXMXMMSMXMXMASAAMAMXASAMMSAMAMMMMAMXMAAMSASXSMXXSASAMXAMXAAAAMAXMMASXAMMMSSMAAXMSASAMAMSAXMMMMXAAAXASXMAXSXMASAMASMMSMXMXMAMAXAAMAMXSMM
|
||||||
|
MAMSSSMSMSAMXSSSXAMXSSMMMXSASXSASXSXSXSXMMAMMMASAXMAMMASXAXAMMMSXSMMSMXAMXXMAAMAMMSMAMMMMMSMSMXXXXXSMSSSMMMSSMSASASXMXAAAMXMAXXXXXSSSMXSAXXM
|
||||||
|
MAMAXMAASMAMMXAAMMSAXAMXSXSAMAXXMAAAXAXXMXMSXMAMMMMSMMMMMSMAXMXXMAAXAMAMSAMXMMSAMAXMAMSAMXMAMXSSSMAMAMAAAXAXAAMAMAMMMSSMMSXMASMMMMMXXAXMASMM
|
||||||
|
SMMXSMMMXXMSAMXMSAMMSASMSAMSMMMSMMMMMSMMSAMXAMSXXAXAMXMSAXSAMSASMSMMASMSMXSASASAMXSMMMSAMASASAAAAMXMAMSSMMSMMMMMMMMXMAMAASMMMAAAAAAXMXSMAMAS
|
||||||
|
SAMAMMSSMAMXXAAXMASXMASAMXMXMXAMAXXMAXMAXXSXSMAMSMSMSSMMSXMMMMASAXMSMSXAAASAMASAMXXXMAMAMAXAMASXMMMSMXAMAAMXSMSMAAMXMAMMMSASMSAMXSSMSAXMASXM
|
||||||
|
SAMXSAAAMAMAXMXXSAMAMAMMXASMSMAMSMMMASMSSMMAMMXXAAAAAAXAXXAMSSMMAMAXAMXMSMMXMAMAMAAXMAXSSXMSMXAXXXXAMMASMMSAMAASXXSASMSSSMMMAMASMAAAMMSXXMMA
|
||||||
|
SAMXMMMXSAMXSMXXMXSAMXSXSXSAXMAMMAMMAMAAAAMAMMMSMSMSMMASMMSMAAMMXMSMSMAXMXMXMAXAMXMXMASMAAXXASAXXXMMXSAMXAMASMMSMXXASMMMAMXMAMAMMSMSMXAXXMXM
|
||||||
|
MAMSMMXMAMXAAMMSAAXXMAXXXAMXMMXMSAMMMMMSSMSASAXXAXAMXSAMAAAMSSMSSMMAASXMSAMMSSSMSAMAMXAAXMMXAMASXMMSAMASMXSAMXXXMASMMMSXMAAAMMMSAASAMXMASMAS
|
||||||
|
SAMMAMXXAMMSXMAMMMSXSSMMMXMSMSMAXSMXSAMMAAMAMXXMMMSMAMAXSMMXMAAAAAMSAMXXMAMAAXAXSMSASMXSASXMXMXMAAAMMXMMMMMMXMAXMASAAASAASXSSSMAAMAMMMMSASAS
|
||||||
|
SASMSMSSXMAMAMXSAMAMAAAXSAAAASMSMAXASASXMMMSMSSMSAMMSSMMAAXMSMMMMXMMXMAMSSMMSSSMMXMAXAAXAAXAXMASXMMMMASAMASXMSXSMASMMMMSMMAMAASMSXXSAAMMAMSS
|
||||||
|
SAMAMAAMAMASAMSSMSAAMSSMSMSMSMAMSMMXSAMXXMAMAMAAMAMXAAASXMMXAAMXMSASAXAMAAAMAAMAXSSXMMMMSMMSASAXMASMSASAMXSAAXMAMMMXXXMAXMAMXAMXXMXSXSSMMMAM
|
||||||
|
MMMMMMMSMMAMAMAMASXSXAXAXAXMMXXMAXMXMMMSXMASASMMMSMMMSMMAAASMSMAXMASMSMMAMMMMXMSMAAASXMAXAXMXMMSMAMAMASXMAMMMMMMXSXMXSMSMSXSSMMMMMAMSXXAXMAS
|
||||||
|
AXAAXAMAMMMXMMMMAMMMMSMSMMMASXSSXAMMSMAMXMASAMXAAAASAMASXMMSAMMSMMMMXXXASMSXSXAXMMMMMAMSSSMSAMMAMASXMMMMMMSXMSMAAMAMAMMMAMAAXSAAAMASXXSMMMXA
|
||||||
|
MXMXXMXAMASAXXXMAMAXXAXXMXSAMAAXXAXAAMASAXXMMMXMXSXMASAMXMXMAMAMSMXSMXMAMXXAXMSMXSSXSXMAAAASASMSSMXAXXASXMAXXAMMMXAMXSAMSMSAXSSSMSXMMMMAXMSM
|
||||||
|
SSSSMSSMSASXMXASXSASMMMAMXMMMMMMSSXSXSXSASMSASXSAMMMXMXMASMMSMMSAMMSASMMXMMSMMMXAAAXMAMMSMMMAXXAAMSSMMXMAXSMSASASXSXAMXSXAMXXMAMMAAAMASAMMAX
|
||||||
|
SAMXAXAAMASAMSXMAAAXMXMAMXAXXAAAAMMMASXXAXAXASAMXSAMMAMMXXAAAXXMASASAMXXMAMAAAMMSSMSSSMAXAMMMMMSMMAMAMXMAMMAMAMASXMASXMMMXMMMMASMSXMSXMAMSAS
|
||||||
|
MXMMSMMXMAMMMAAMXMMMSXSASXXMSSMMXSAMXMMMMMMMMMAMXSAMXAAMMSMMMXMSAMXMSMSSMSSXXMSAMAXMAMSAMXMAXMAMXMSSSMMSSMMAMXMAMAXSAMAXXMXAXMAXXAMXMMXXMXXX
|
||||||
|
SMMAXAXAMAMAXAXMAMAXXASAXMAMXAAAAMMSXAAAXAAMSSMMASXMXMXMAAAXMAXSXMXMAXSAAAAASXMMSMMMAMMMMMXSXMAMMAMXAAAAMASXSAMMSSMMMSXSAMXSAMXSASAXXMASMSSX
|
||||||
|
MAMMSMSXSASMSSXSASAXMMMMMSXMMMMMMSASMSSMMASMAAXMASXMXSAMMSMMMMMSAMAXXXXMMMSMXAAAMMMMAMAAXMAXAMAXMAMXSMMMSAXAMAXMAAAAXAXMAMAMXMXMAMXXAXMXAAMM
|
||||||
|
XMMXXAMASXSXAAMSAMXSASAXMMMSAXAAXMXMAXAAMAMMSMMMMSMSASASAMXMXMASAMMSMSMAMXXXSMMMSASMSSSSSMASASMSASAMXAMXMMXMSMMMMSSMSMMSAMAMMMMMSMXMMSSMMMSX
|
||||||
|
SSMMMSMAMMMMMSMXMASAASMXMXAXMSMSSMAMXSMMMAXMMXASASAMASAMMXASXMAXAMAAAASAMXMXMASXSAMAAAAAXMMSAMAMAMMMSMMSAMXXAMMAMXAAXAASAMXXAMSAXMSXAAAAMAMA
|
||||||
|
MAAXAMMAMASAMMMXMMAMAMMMXMSSXXXXAMXSMMMSSSSXXXXMAXAMAMAMXMXAMMSSMMSSSXMMSMMXMAMMMMMMMMMMMMXMMMAMAMXAASXSXMXSAMXASMMMMMMSAMSSSSMMSAMMMSSSMASM
|
||||||
|
SSMMAMSAMXMASASMXMAMXSXSAAMXMMMSAMMXAASAAMMMMSMSASXMXSXMXSAMXAXAAMMMXMXXAAXAXMMSASXSMXASASMAMSXSXSMSXSMMXMAMMMSMSMAXAAXXXXXAMXAAMAMSMMAXMXSM
|
||||||
|
MAMMXAMMSXSAMASAASXSXAASMXMAMAAMAMASXMMMSAAAAAAMAMXAMXXSASMXMMSSMMAXAMXSSSMSASXMASAAXSXSASXSMSMMXMAXMSAMXMASAAAAXMASXMSSSMMMMSMXMAMAXMASMMSA
|
||||||
|
ASXSMSMSAMXAMAMMAMSMXMMMXSSMSSXXAMMSXAXAXXMSSMSMMMAMXMAMASXAAAAXMSSMASAXAMAMAMXSMMMMMMAMAMAMAXAXSMSMASAMXSASMSSSMMMMAAAAAXMXXMASMSSMSMAAXAXM
|
||||||
|
XMAXAAXMXSXSMAMMSMAMAXMAMAAAXASMXSXMMXMXSSXXXMAMASAMXAAMAMMSSMMSMAMMXMMSAMAMAMAXAAXXAMMMXMXMMMSXXAAMXMAAXMXXMMAMXXMMMMMSMMSMSMAMMAAAXMSSMMSX
|
||||||
|
MMMMMMSSMMAXMMXAXSXAXSMSAMMMMAMXXMAMMMSMMMXMAXAXXMAMXSXSASAXAAAMMASXMSXSXMXXSMMSMMSSSSMAASMSMAXXMSMSSSXMSMMSMMASXMSAMXAMXMAAAMXSMSMMMXXXASXM
|
||||||
|
AAMXSAAAMMAMXXMAMAMXMSAMXXMMMXMXXMAMSAMAAMMSAMSSMSSMAMASAMXSSMMMSMSAASAMASMXMAAMMAMXAAMXSMAAMXMAMAMAAMSXXAAAASAMAAMAMMMSSSMSMSAMMXMXMAMXXMAA
|
||||||
|
SASAMMSSMSASMSMMSMAAAMMMMMMAMAAXSXMSMASMMSAXASXAAAXXAMAMMMAMXMAXXASMMMASAMMASMSAMXMMSSMMMMSMSMSXSSXSAMXMMMMSXMAMMMMSXSAMXAAAXMAXSAMASXMSSSXS
|
||||||
|
XAMASAMXXXASMAAAXXSXSSMASASASMSAAAXMXMMASMMSSMXMMMSSMMAXAXMAAXMXMXMAXSAMASAMXAAMXSXAAXAAXAMXXAMAAXAMAXXAXAAXMSXMXXMXAMMMSMMMMSXMSXSAMAXAASAX
|
||||||
|
SASAMASXMMSMMSMMSAMXAXXASXSAXXMMSSMAMMSXMAMMAAXXAXXMASMSMSXSMXSAMMSAMMAXMMMXMMMMASMMSSSSMSSXMAMMMMSMMMMSXMSAMXMMMMMMAMAAXAAMASMAMXSASXMMSMMM
|
||||||
|
SAMXSXMAXXMAAMAAXAXXMAMMSMMXMXMXAMMSMAXMSXMSMMMMAMXMMAXAMAMXMAXASAMAMSAMXASAMSXMASAAXAAMAXAASAXAXAAAXMMXXAAXMASAAAMMSMMXSMMMASMXMAXMAMXXAAAA
|
||||||
|
MAMMXXSXMAMMMSMASMMMSASXSXSASASMXSAXMSMASXMAMSSMMSSMAMSSSMSSMMSMMMSSMMXXXASMMSXMASMMMMMMMMMMSASMMXXXXXAXMAMSAASMSMSAXXXMSAXMASAMMSXXXSXSXSMS
|
||||||
|
SAMXMMMMMMMSAMXXAXAASASAXASASASXXMASAAMSMMSASAAAAXMASXMAAAAXMAAAAAMMAXAXMXMXAMXXXXMAAAAAAAXXSXXXASMSMMMMSAMMMASAMAMMSMMAMXMMMSASAXXSMSAMXMMM
|
||||||
|
XMMAMAAAAAXMMMSSMMMMMXMMMMMAMXMMMMAMMMXAAXXMMXXMMSAMMXMSMMMSMXSSMSMSXMMSMMAMMSMSASMSSSSSSXSMMSAMXXAAXXXAMXSASXMMMAAXAMMSMMXAAXXMASXMMXSXAMAS
|
||||||
|
SSSXSSSSMMSAAAMMXASAMMSXSAMASMMAAMXSXSXMMMXSSSMXMAMMMXMMXAMAMAMXMAXMAXXAXMAMMAXAAMAXXXMAXMAAXXXMAMSMMAMSMXSASXMXSSMMXMAMAMSSMSAMSMMAAAXMMSAM
|
||||||
|
SAAXXXAAAXSXMSSXXMSASAXASXMAXAMSMSXMASASAMXAAAMXAAXXXMAXSMSASXSASASXSMXMXSMMSMSMMMXMMMSAMMSSMXSMAXAAXMXXAXMMMAMAMAXSXMASXMAXMAMXMAMXMXSAMMMM
|
||||||
|
MMMXMMSMMMXSMXMASXMASMMMMSMMSSMAMMAXAXMXASMMSSMMSSMMMSAXSAMASMSASAXAMAASXSAASASXASMSAAMASAAAAAXMXMXMMMAMXXAASMMAXMMMASAMAMXSXMMSSSMSMXXXXXAS
|
||||||
|
AXXXMAAAAASAMXASASXXMXXMASXMAXSASMSMSSMSMMXXAAAMXAAAXMSSMAMXMAMMMMMSMSMMAMMMMAMSMSAMMMSAMMSMMXSSSMXXAMXXAMSMSASMSMXSAMAMSMMAXAAAAAAAMAXSMSXS
|
||||||
|
XXMASMSMMSMMMMMMAMMAMSAMXMAMAXSXSAMAMSXAXMMMSSMMMSSMSAMXMSMMXXXXASAMXAMMSMXSMMMSXSMXMASXSXMASAAAAAASXMSMMMXAMAMAAXMMXSMXMAMAXMAMMMMMMAXAASMS
|
||||||
|
MASAAXAXMAMXXXXMAMMAMMXMAXXMMMSMMAMMMMMMSMAAAMAAXAXMMMMSXMASMMSMMMSXMMSAMAASAMAXMMXAAMXSMASAMMMSMMMXMASAXAXAMSMSMMASMXMASAMXSSXSXSSXXXSMSMAX
|
||||||
|
AMASMMXASASMMMXMAMMASMMXSSMXSAMMSAMAAXAAAXMMMSXMXMMMAMXMAXAMAAMAXSXSSXMASMXMAMMMASMMXXMXXAMXSXXAAXSMMASXMMMMAMAMXMSXAAMMSAMXXMASAMXSAXSXMMSM
|
||||||
|
MMAAXMSXSASXAAXMASMMSAAAMAMXMASAXSSSSXMSSSMSMSASXXXSMMMXSMASMASXMSAMXAMMMMSSSMXAMSASAXAMSMSXAXSXSMMAMASXAXASAMXMAXMXMMSXMASMXMAMAMAMMMMAMAXA
|
||||||
|
XMMMAASAMAMXSSSMAXMAMMMXSAMSSSMMSAXXMAXAMAMSASAXMAXSMXSAXAXMMMAMXMAMSXMXAAAXAAXSXSAMXXSAAASAMXSXMASXMAMAMAMMAXAMMSSMSMSASXMAXMMXAMXSMAMAMMMS
|
||||||
|
MXAMMSMAMAMAMXMMSSMAMAMMSXMAMXSXMMMMSMMASMMMAMSMMXMMAAMMSXSXXXSXSXSMXSSSMMSSMSMMAMXMXSXMMMMMMAMXSMMAMASMSMSAMXASMMMAAASXSMMSMAAXXXMAMASXSXAX
|
||||||
|
SSSSXAMXMASMMASAMMXXXAMXMXSMSAMXAASAAXSAMAMMMMAXMMMMMMSXSASMMXMASAXSAMXXSAMXXAAMSMXXXAMXSAMAMASASASAMXXXAXAAMASMMAMSMXMAXXAAXXMMSAMAXMXAMMXM
|
||||||
|
AAMXMASXMXMAAAMASAASXSSXSAMXMAMXSAXSAMMASAMASMMMSAAAAAMAMAMXMAMAMAMMMXSAMXSMMSMXAAXMMXMASASXSMSAXASXXSXMXMSMMXMAMXMAXAMSMMSSSMAASAMSSSMSMAMS
|
||||||
|
MSMMMSMXXAXMMSSXMMMMAAAAMAMSSMMMAMXMXMAMMASAXAXASMSSSSMXMAMXSASMMXMASAMAMAAAXMXSMSMXAAMXMAMXMMMMMMMXAMXSAMXXXAMXMSSMMXMAMXAMXAMMMAMXAXAMXXSA
|
||||||
|
XAAXXAASXMXXXMAMSSSMSMMMMMMAAAXAAXXXAXMASXMAMMMXSAMAMXMXMAMASXSAXXSASXSAMSMMMSAMAAAXSMSAMXMMMASAMAASXMMSASAXMASXMXAXSSMMMMAMMSAXSSMMAMMMSSMM
|
||||||
|
SSMMSMSMASAASXSXAAAAMXXXAXMSXMMSMMMSMSMAMAMAMSAMMXMAMASASASXMASMMMMASASMXMXAAMAMAMSMXAMXMAAAMAMAMMXSAMASXMASMMSAMSXMAAXSASAMMMSMXMAMSMAAXAAX
|
||||||
|
MXSXXMAMAMXSAAAMMXMMMMMSMSMXASAAAMAAAAMASXMAXMAMXASASXSASASMMXMXAAMAMMMMAMSMMSAMXMAMMXMASXSMSSSSMSXSXMASXSASAASAMXAMXMMSASASAAAMASAMASMMSSMM
|
||||||
|
SAMXAXXMASXXMXMXSXMASAAAMAASAMMMAMXMSMSXSMMMXSAMXXSASAMXMAMXMASXMSAMXASXMMAMXAAXMSASXXSXXMAMSAAMASAMAMASAMASXMMAMSXMXXAMAMASMMMMAMMXMXMAXAMX
|
||||||
|
MMMSMMSSXSASXMXAMASAMMMSSMMMMMXMAMSXMASAXXAAMSAXXXMXMAMMSAMAMAAMAMAMMMXAXSSSSSXMXSASMAAAMSXMMMMMAMASXMASXMXMASXMMMSSXSSMXMMMXAAMSXSSXMMXSAMX
|
||||||
|
MAAAAAXMAMXMAMMXSAMXMMAMXMSMMAMMAMXAMMMMSMMSXSAMMAXMSSMAMAMSXMMMAMAMXSSMMAAAAAMSMMXMMSMSMAXMXSXMXSAMAMASXSXSASAMXAXMAMXMSXMAMMMMMAMXASAAXAMX
|
||||||
|
SMSSMMSMMMXSAMXAMASMAMMSAAAAMXXSAXSAMXAAAMXMAMAASMMAXAMSXSAMXMMSMMXXAAAASMMMMMSAAXXMAXAXAXMSAMXSAMXSXMXMASAMASMMMSSMAMAAXAMSMMSAMAMSAMMSSSMX
|
||||||
|
XAAAAAXXXAXAAMMMSXMMAXMAMSSSMAXSMMMAMXMMXSAAAMSMAAXSSMMAAMASASAMXSSMSMSMMAAMXXSMSMMMSMMMMAXMASXXSAMXMASMMMMMAMXXMAMXASXSSSMMASMASXXMASAMXAMX
|
||||||
|
ASXSMMSSMSAMXMAXMMXSXSSMXMAMMXMXMASAMSXSASXSXXAMMMMMAXAMXMMMAMMSAMAAXAXMSSMSSXMXXMAAXMSMSAMXMAAXAMMMXAXAAAXMASXSMSSSMSAAXAAMMMSXMXXXMMASMMSM
|
||||||
|
MXAMMMAXAMXMASXSMMMXMMASMMAMSMSMSXSASXAMASAXXSXMASAMMSSXMAMMXMXMASMMMAXAAMMMMAMAMMMSSMAASMMASMSMMSASMSSSMSSSXMMAAXAMAMMMMMXMXMAMXMASAMXMAAAA
|
||||||
|
SSMMAMMMMMAXAMMSXMXAXSAMXMASMAMAMAXXAMXMAMMMMAXSAMAXXXMMSSMMXSASAMXSMSMMMSAAXXMASASMMMMMMXSASXMAXSAXAAMAMXAMMSSXMMMMXSAMXXASAAAAXMAAASXSMMMS
|
||||||
|
AAASXSXAMSAMXSAMAXSAXMXMSAMXMAMAMAMXXSAMXSAAXMMMXSSMSMSAAAAXMMXMASXMAMXMASMXSAXXSXMAMXSAMXMMSAASXMSMMMMAMMAMSAXMASXXAMASMMAXSSXXAMSMMMAAXMSM
|
||||||
|
SSMMAAMSMMAXXMASMMAMMMSMXASMSXSASXMAXMAXSSXMSXAMAXAAAAMMMXMMXMAXXMXMMMMMXSAASAMMMXMXMASASXSASMMMXAAMXSSSSMXMMXMAXAXMMSAAAMAMXMMXSAMXMMSMMMAS
|
||||||
|
MAMMXMAMMSMMMSMMASXMAXAAXXMASASMAMMMMSMMMMMXMXAXMSMSMSMSXXXAAXSXXSASAAXMMMAMMAMAAAMMMMSAMAMMMAAMMMSXAXAMAMXMXMMSMSXXAAMMXMASMAAAAMMMMMAMXMAS
|
||||||
|
SAMSAMXMMASAXASAXMAMXSXSAMXSMAXMAMASAAAXSAMASXSAMXAXAAAAMSAMSXXAXSASXSMSAMXXXMMMSMXAAMMAMXMAXSAXAAXMXMMSXMASAMSAAMAMXXSSXMSAMMMSSMAMASXMSMMS
|
||||||
|
SAXSASMASAMMSAXMMSAMMMAXMAMXMXMSXSASXSMMMAMXSAXAMMMMMMMAMSAAXAMXMMAMAXAMSSXMMSMMMMSSSSSXMXMSXMASMSSMMSMMMSXSASXMSSXMAAXMASAAXSAMXMXSXMXAAMAM
|
||||||
|
SMMSAMXAMSSXMMMSAMXSAAAMMSAXMAXAMMAMAAAXSAMXMAMASAAAXAMSAMXMMAMMSXAMMMAMASAMAAAASAMAAAAAXMAMAAASAMXXAAAAAMMMXMXMAXASXSMSXMSSMMXMSAMXXSMSMSAA
|
||||||
|
XSAMMMMMSXMXAMXMXSMXXMSSXASAMXMSSMMMSMAMAMXXMSMSSMSSSXSAMXMXSAMXASASXSXMXSMMSSSMSXMMMMSAMXSSMMASMMSMSSSMXSAMXAXMASAMSAMXMAXMASXAAXMSAMXMASMS
|
15
day4/input.txt.h
Normal file
15
day4/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_day4_input_txt_start __asm("_binary_day4_input_txt_start");
|
||||||
|
extern uint32_t _binary_day4_input_txt_end __asm("_binary_day4_input_txt_end");
|
||||||
|
extern uint32_t _binary_day4_input_txt_size __asm("_binary_day4_input_txt_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
10
day4/sample1.txt
Normal file
10
day4/sample1.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
MMMSXXMASM
|
||||||
|
MSAMXMSMSA
|
||||||
|
AMXSXMAAMM
|
||||||
|
MSAMASMSMX
|
||||||
|
XMASAMXAMM
|
||||||
|
XXAMMXXAMA
|
||||||
|
SMSMSASXSS
|
||||||
|
SAXAMASAAA
|
||||||
|
MAMMMXMMMM
|
||||||
|
MXMXAXMASX
|
15
day4/sample1.txt.h
Normal file
15
day4/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_day4_sample1_txt_start __asm("_binary_day4_sample1_txt_start");
|
||||||
|
extern uint32_t _binary_day4_sample1_txt_end __asm("_binary_day4_sample1_txt_end");
|
||||||
|
extern uint32_t _binary_day4_sample1_txt_size __asm("_binary_day4_sample1_txt_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
217
day4/solution.c
Normal file
217
day4/solution.c
Normal file
@ -0,0 +1,217 @@
|
|||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include "printf.h"
|
||||||
|
|
||||||
|
static int parse_stride(char * input, int length)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
if (input[i] == '\n') {
|
||||||
|
return i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int parse_height(char * input, int length)
|
||||||
|
{
|
||||||
|
int rows = 0;
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < length; i++) {
|
||||||
|
if (input[i] == '\n') {
|
||||||
|
rows += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (input[i-1] != '\n') {
|
||||||
|
rows += 1;
|
||||||
|
}
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum offset_type {
|
||||||
|
N,
|
||||||
|
S,
|
||||||
|
E,
|
||||||
|
W,
|
||||||
|
NE,
|
||||||
|
NW,
|
||||||
|
SE,
|
||||||
|
SW,
|
||||||
|
};
|
||||||
|
|
||||||
|
static char offsets[][2] = {
|
||||||
|
[N ] = { 0, -1},
|
||||||
|
[S ] = { 0, 1},
|
||||||
|
[E ] = { 1, 0},
|
||||||
|
[W ] = {-1, 0},
|
||||||
|
[NE] = { 1, -1},
|
||||||
|
[NW] = {-1, -1},
|
||||||
|
[SW] = {-1, 1},
|
||||||
|
[SE] = { 1, 1},
|
||||||
|
};
|
||||||
|
|
||||||
|
static bool xy_inside(int width, int height,
|
||||||
|
int x, int y)
|
||||||
|
{
|
||||||
|
if (y < 0 || x < 0)
|
||||||
|
return false;
|
||||||
|
if (x >= width)
|
||||||
|
return false;
|
||||||
|
if (y >= height)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char get_char(char * input,
|
||||||
|
int stride,
|
||||||
|
int x, int y)
|
||||||
|
{
|
||||||
|
int ix = y * stride + x;
|
||||||
|
return input[ix];
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool offset_match(char * input,
|
||||||
|
int stride,
|
||||||
|
int width, int height,
|
||||||
|
int x, int y,
|
||||||
|
char * offset,
|
||||||
|
const char * str,
|
||||||
|
int str_length)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < str_length; i++) {
|
||||||
|
if (!xy_inside(width, height, x, y))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
char c = get_char(input, stride, x, y);
|
||||||
|
if (c != str[i])
|
||||||
|
return false;
|
||||||
|
|
||||||
|
x += offset[0];
|
||||||
|
y += offset[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool offset_match_centered(char * input,
|
||||||
|
int stride,
|
||||||
|
int width, int height,
|
||||||
|
int x, int y,
|
||||||
|
char * offset,
|
||||||
|
const char * str,
|
||||||
|
int str_length)
|
||||||
|
{
|
||||||
|
// blindly assumes odd-numbered str_length
|
||||||
|
// distance from the corner to the center
|
||||||
|
int center = str_length / 2; // floor division
|
||||||
|
|
||||||
|
// go to corner
|
||||||
|
x -= offset[0] * center;
|
||||||
|
y -= offset[1] * center;
|
||||||
|
|
||||||
|
return offset_match(input,
|
||||||
|
stride,
|
||||||
|
width, height,
|
||||||
|
x, y,
|
||||||
|
offset,
|
||||||
|
str,
|
||||||
|
str_length);
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool offset_match_cross(char * input,
|
||||||
|
int stride,
|
||||||
|
int width, int height,
|
||||||
|
int x, int y,
|
||||||
|
char * offset,
|
||||||
|
const char * str,
|
||||||
|
int str_length)
|
||||||
|
{
|
||||||
|
bool match0 = offset_match_centered(input,
|
||||||
|
stride,
|
||||||
|
width, height,
|
||||||
|
x, y,
|
||||||
|
offset,
|
||||||
|
str,
|
||||||
|
str_length);
|
||||||
|
if (!match0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
char cross1[2] = {-offset[0], offset[1]};
|
||||||
|
char cross2[2] = { offset[0], -offset[1]};
|
||||||
|
|
||||||
|
bool match1 = offset_match_centered(input,
|
||||||
|
stride,
|
||||||
|
width, height,
|
||||||
|
x, y,
|
||||||
|
cross1,
|
||||||
|
str,
|
||||||
|
str_length);
|
||||||
|
bool match2 = offset_match_centered(input,
|
||||||
|
stride,
|
||||||
|
width, height,
|
||||||
|
x, y,
|
||||||
|
cross2,
|
||||||
|
str,
|
||||||
|
str_length);
|
||||||
|
return match1 || match2;
|
||||||
|
}
|
||||||
|
|
||||||
|
int day4_part1(char * input, int length)
|
||||||
|
{
|
||||||
|
int stride = parse_stride(input, length);
|
||||||
|
int height = parse_height(input, length);
|
||||||
|
int width = stride - 1;
|
||||||
|
|
||||||
|
const char * str = "XMAS";
|
||||||
|
int str_length = 4;
|
||||||
|
|
||||||
|
int match_count = 0;
|
||||||
|
for (int y = 0; y < height; y++) {
|
||||||
|
for (int x = 0; x < width; x++) {
|
||||||
|
for (int o = 0; o < 8; o++) {
|
||||||
|
bool match = offset_match(input,
|
||||||
|
stride,
|
||||||
|
width, height,
|
||||||
|
x, y,
|
||||||
|
offsets[o],
|
||||||
|
str,
|
||||||
|
str_length);
|
||||||
|
match_count += (int)match;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return match_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
int day4_part2(char * input, int length)
|
||||||
|
{
|
||||||
|
int stride = parse_stride(input, length);
|
||||||
|
int height = parse_height(input, length);
|
||||||
|
int width = stride - 1;
|
||||||
|
|
||||||
|
const char * str = "MAS";
|
||||||
|
int str_length = 3;
|
||||||
|
|
||||||
|
int match_count = 0;
|
||||||
|
for (int y = 0; y < height; y++) {
|
||||||
|
for (int x = 0; x < width; x++) {
|
||||||
|
bool match_ne = offset_match_cross(input,
|
||||||
|
stride,
|
||||||
|
width, height,
|
||||||
|
x, y,
|
||||||
|
offsets[NE],
|
||||||
|
str,
|
||||||
|
str_length);
|
||||||
|
bool match_sw = offset_match_cross(input,
|
||||||
|
stride,
|
||||||
|
width, height,
|
||||||
|
x, y,
|
||||||
|
offsets[SW],
|
||||||
|
str,
|
||||||
|
str_length);
|
||||||
|
match_count += (int)(match_ne || match_sw);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return match_count;
|
||||||
|
}
|
@ -5,6 +5,8 @@
|
|||||||
#include "day3/sample1.txt.h"
|
#include "day3/sample1.txt.h"
|
||||||
#include "day3/sample2.txt.h"
|
#include "day3/sample2.txt.h"
|
||||||
#include "day3/input.txt.h"
|
#include "day3/input.txt.h"
|
||||||
|
#include "day4/sample1.txt.h"
|
||||||
|
#include "day4/input.txt.h"
|
||||||
|
|
||||||
static struct start_size sample[][2] = {
|
static struct start_size sample[][2] = {
|
||||||
{
|
{
|
||||||
@ -25,6 +27,12 @@ static struct start_size sample[][2] = {
|
|||||||
{ ( char *)&_binary_day3_sample2_txt_start,
|
{ ( char *)&_binary_day3_sample2_txt_start,
|
||||||
(uint32_t)&_binary_day3_sample2_txt_size },
|
(uint32_t)&_binary_day3_sample2_txt_size },
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
{ ( char *)&_binary_day4_sample1_txt_start,
|
||||||
|
(uint32_t)&_binary_day4_sample1_txt_size },
|
||||||
|
{ ( char *)&_binary_day4_sample1_txt_start,
|
||||||
|
(uint32_t)&_binary_day4_sample1_txt_size },
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct start_size input[] = {
|
static struct start_size input[] = {
|
||||||
@ -34,4 +42,6 @@ static struct start_size input[] = {
|
|||||||
(uint32_t)&_binary_day2_input_txt_size },
|
(uint32_t)&_binary_day2_input_txt_size },
|
||||||
{ ( char *)&_binary_day3_input_txt_start,
|
{ ( char *)&_binary_day3_input_txt_start,
|
||||||
(uint32_t)&_binary_day3_input_txt_size },
|
(uint32_t)&_binary_day3_input_txt_size },
|
||||||
|
{ ( char *)&_binary_day4_input_txt_start,
|
||||||
|
(uint32_t)&_binary_day4_input_txt_size },
|
||||||
};
|
};
|
||||||
|
@ -4,9 +4,12 @@ int day2_part1(char * input, int length);
|
|||||||
int day2_part2(char * input, int length);
|
int day2_part2(char * input, int length);
|
||||||
int day3_part1(char * input, int length);
|
int day3_part1(char * input, int length);
|
||||||
int day3_part2(char * input, int length);
|
int day3_part2(char * input, int length);
|
||||||
|
int day4_part1(char * input, int length);
|
||||||
|
int day4_part2(char * input, int length);
|
||||||
|
|
||||||
part_func solution[][2] = {
|
part_func solution[][2] = {
|
||||||
{day1_part1, day1_part2},
|
{day1_part1, day1_part2},
|
||||||
{day2_part1, day2_part2},
|
{day2_part1, day2_part2},
|
||||||
{day3_part1, day3_part2},
|
{day3_part1, day3_part2},
|
||||||
|
{day4_part1, day4_part2},
|
||||||
};
|
};
|
||||||
|
@ -278,6 +278,6 @@ int main()
|
|||||||
transfer_scene(font, glyphs);
|
transfer_scene(font, glyphs);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (1);
|
//while (1);
|
||||||
serial::string("return\n");
|
serial::string("return\n");
|
||||||
}
|
}
|
||||||
|
@ -8,4 +8,7 @@ DAY_OBJ = \
|
|||||||
day3/sample1.txt.o \
|
day3/sample1.txt.o \
|
||||||
day3/sample2.txt.o \
|
day3/sample2.txt.o \
|
||||||
day3/input.txt.o \
|
day3/input.txt.o \
|
||||||
day3/solution.o
|
day3/solution.o \
|
||||||
|
day4/sample1.txt.o \
|
||||||
|
day4/input.txt.o \
|
||||||
|
day4/solution.o
|
||||||
|
Loading…
x
Reference in New Issue
Block a user