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))
|
||||
|
||||
OPT = -Og
|
||||
|
||||
include dreamcast/base.mk
|
||||
include dreamcast/common.mk
|
||||
include dreamcast/headers.mk
|
||||
|
||||
MAKEFILE_PATH := $(abspath $(firstword $(MAKEFILE_LIST)))
|
||||
CFLAGS += -I$(dir $(MAKEFILE_PATH))
|
||||
CFLAGS += -I$(dir $(MAKEFILE_PATH))dreamcast/
|
||||
LIB ?= $(dir $(MAKEFILE_PATH))dreamcast
|
||||
MAKEFILE_PATH := $(patsubst %/,%,$(dir $(abspath $(firstword $(MAKEFILE_LIST)))))
|
||||
CFLAGS += -I$(MAKEFILE_PATH)
|
||||
CFLAGS += -I$(MAKEFILE_PATH)/dreamcast/
|
||||
LIB ?= $(MAKEFILE_PATH)/dreamcast
|
||||
|
||||
include aoc.mk
|
||||
|
@ -28,6 +28,14 @@ static int parse_input(const char * input, int length, struct report * report)
|
||||
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)
|
||||
{
|
||||
int last_sign = 0;
|
||||
@ -45,7 +53,7 @@ static bool report_safe(struct report * report, int skip)
|
||||
if (abs(rate) < 1 || abs(rate) > 3)
|
||||
return false; // unsafe
|
||||
|
||||
int sign = rate / abs(rate);
|
||||
int sign = int_sign(sign);
|
||||
if (last_sign != 0 && sign != last_sign)
|
||||
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/sample2.txt.h"
|
||||
#include "day3/input.txt.h"
|
||||
#include "day4/sample1.txt.h"
|
||||
#include "day4/input.txt.h"
|
||||
|
||||
static struct start_size sample[][2] = {
|
||||
{
|
||||
@ -25,6 +27,12 @@ static struct start_size sample[][2] = {
|
||||
{ ( char *)&_binary_day3_sample2_txt_start,
|
||||
(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[] = {
|
||||
@ -34,4 +42,6 @@ static struct start_size input[] = {
|
||||
(uint32_t)&_binary_day2_input_txt_size },
|
||||
{ ( char *)&_binary_day3_input_txt_start,
|
||||
(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 day3_part1(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] = {
|
||||
{day1_part1, day1_part2},
|
||||
{day2_part1, day2_part2},
|
||||
{day3_part1, day3_part2},
|
||||
{day4_part1, day4_part2},
|
||||
};
|
||||
|
@ -278,6 +278,6 @@ int main()
|
||||
transfer_scene(font, glyphs);
|
||||
}
|
||||
|
||||
while (1);
|
||||
//while (1);
|
||||
serial::string("return\n");
|
||||
}
|
||||
|
@ -8,4 +8,7 @@ DAY_OBJ = \
|
||||
day3/sample1.txt.o \
|
||||
day3/sample2.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