summaryrefslogtreecommitdiff
path: root/2024/go
diff options
context:
space:
mode:
Diffstat (limited to '2024/go')
-rw-r--r--2024/go/input/day1.prod (renamed from 2024/go/input/day_1.prod)0
-rw-r--r--2024/go/input/day1.test (renamed from 2024/go/input/day_1.test)0
-rw-r--r--2024/go/input/day1_2.test (renamed from 2024/go/input/day_1_2.test)0
-rw-r--r--2024/go/input/day2.prod (renamed from 2024/go/input/day_2.prod)0
-rw-r--r--2024/go/input/day2.test (renamed from 2024/go/input/day_2.test)0
-rw-r--r--2024/go/input/day3.prod (renamed from 2024/go/input/day_3.prod)0
-rw-r--r--2024/go/input/day3.test (renamed from 2024/go/input/day_3.test)0
-rw-r--r--2024/go/input/day3_2.test (renamed from 2024/go/input/day_3_2.test)0
-rw-r--r--2024/go/input/day4.prod140
-rw-r--r--2024/go/input/day4.test10
-rw-r--r--2024/go/src/day1/main.go4
-rw-r--r--2024/go/src/day2/main.go4
-rw-r--r--2024/go/src/day3/main.go50
-rw-r--r--2024/go/src/day4/main.go133
-rw-r--r--2024/go/src/log.txt196
15 files changed, 507 insertions, 30 deletions
diff --git a/2024/go/input/day_1.prod b/2024/go/input/day1.prod
index cb6af3c..cb6af3c 100644
--- a/2024/go/input/day_1.prod
+++ b/2024/go/input/day1.prod
diff --git a/2024/go/input/day_1.test b/2024/go/input/day1.test
index b8af9ad..b8af9ad 100644
--- a/2024/go/input/day_1.test
+++ b/2024/go/input/day1.test
diff --git a/2024/go/input/day_1_2.test b/2024/go/input/day1_2.test
index b8af9ad..b8af9ad 100644
--- a/2024/go/input/day_1_2.test
+++ b/2024/go/input/day1_2.test
diff --git a/2024/go/input/day_2.prod b/2024/go/input/day2.prod
index 2fd095e..2fd095e 100644
--- a/2024/go/input/day_2.prod
+++ b/2024/go/input/day2.prod
diff --git a/2024/go/input/day_2.test b/2024/go/input/day2.test
index b49c10d..b49c10d 100644
--- a/2024/go/input/day_2.test
+++ b/2024/go/input/day2.test
diff --git a/2024/go/input/day_3.prod b/2024/go/input/day3.prod
index 1c0f071..1c0f071 100644
--- a/2024/go/input/day_3.prod
+++ b/2024/go/input/day3.prod
diff --git a/2024/go/input/day_3.test b/2024/go/input/day3.test
index 6a7899d..6a7899d 100644
--- a/2024/go/input/day_3.test
+++ b/2024/go/input/day3.test
diff --git a/2024/go/input/day_3_2.test b/2024/go/input/day3_2.test
index 30032cb..30032cb 100644
--- a/2024/go/input/day_3_2.test
+++ b/2024/go/input/day3_2.test
diff --git a/2024/go/input/day4.prod b/2024/go/input/day4.prod
new file mode 100644
index 0000000..a096a8f
--- /dev/null
+++ b/2024/go/input/day4.prod
@@ -0,0 +1,140 @@
+SXMXXMXMASXXXMASXXAMXMMXSAMAMMMXSXMSASMMMXXSMSAMMMMXMAMXASAMAMXSAMXAMXXMXMXMMMSXMXSAMXSSXASXMASMSXMASMSSSMMSSMMXMASMSMMMMXMMSAXXMXXSXSXXXXXX
+MXMMMSAXSAMMMXMASMXSAXSAMXMASAMASAMXMAASMMSXXSAMXSAMMSSSMSAMASASMSSSMXSSSMXSAAMMXMMASAMXSAXSMSMXMAXAMAAAAMSAMASMSAMMASAAAMAAXXSMMMXMAMAMSMSA
+SAAAXSASMMAMAXXAAXXSASMASXSASASASXMAMXMMAXSMXSAMXMAXSAAAASXMAMASAAAAAAAXAAASMSMMSASXMASAXXAMXMSMSMMSMMMSMMMAMMMAMAXSASXMSAMXSMXAXMASAMAMAAXX
+SSSSXXXMASMSAMSSXMAMMMXXMAMAMAMAMASMSMASMMXMASMSMSMMMXSMMMSMXSAMMMMMMASXMMMSXAAASXMXSAMASMMXAMAMAXXMAAXAXSXXXSMXSAMMMSXSMMSXMAMSASXXXSXSMSMX
+XAMXMMXSAMXMAXAAASMSMSMMMXMXMSMMMXMAXMAMXMAMMSAAXMASXMAAAAAXAMXSXXASXMAMXSMMAMMMSAMXMAMAMMMMSSMSMSMSXMSMSMXMXXAAMAMXXSXMAMSXMSMMASAMXSAMXAAX
+MAMAXMAXAXSMSMMSMMAXAXXASASAAXAAMAMXMMXSASAMXMXMXSAMXXXSMSSMXSAXMMMXAMSAAXAXAXAAXAMXSAMXMXXAMMXSAAAAXMXMAXAMXMMMMMMXMMAMSMMXSXMXSMAMAMMMSMSA
+MAMMMMXSSMAAAXAMXMMMSMSAMASXXSAMSMSAXSASXSMSSMMXXAMMMMXMMMAMMMXXSASMSMMMMSMSMSMXMAMAMXAAAMMMSMAMXMMMXSASXSASASMSAAMSSMAMXAMXAXMSASAMXSMXAMXM
+XSXSAXAXXAMSMSMMAMXMAAMXMXMMMMXXMASMSMMXASAAAAMXMMXAAXAAAMMMSMMMSAMAMXAAAAAAAXAMSAMSMMSSSXXSAMASAMASASAMXSMXXXAMXMSAMXSXSAMMMXSAASXMMSAMMSAS
+XMASASXMXSXXAMASAMAMMSAXMAMXSSSMMMMMXASXXMMSSMMMAXSXMSSSMSMAAXAXMSMAMSSSSMSMXMAMXAMXAXAMAMXSASASASMAAMMXMMMXSMAMAXMAMAAAMMASXMAMMMMSAXMAXMAS
+SMAMAAMXMXAMMMASASASXMXXMASAMAMSAXAXXAMXAXAXXXAXSAMMMMXAAAMSSSXXAMMMMMMMMXAXAMXSSMMSSMMMSAMSMMMSMMXMXMAAXAAASMMMSSSMMMMSMSASASMXXAAXSXMSAMMM
+SMXMMMXSXMXMXMASASASASAXSAMMSMXSMSSSSSMSSMAMMXMSMASXAASMMMMAMXMMAMMASMMASMXSXSAAXAAAAAAAMAXXXAXMAXAXMXSMSSMMSAXAAXAXXXAAAMASAMXMASMMMMXXXMAS
+XXXXASAMXXAAMMMSAMAMXMAMMXMMAXMMMAXXAAAAXXMMAASMXAMXSMXXMXMXMAMXAMSASASAXAMXAMMXMMMXSMMSSSXMSMSMSXMAXMAAAXMASMMMXSMSMSAMXMAMMMAAMMXAAAAMASMS
+MSMMXMASASMSMAAMXMXXAMSMXXXSAMAXMXSMMMMMXXMMXMSAMMSXMMMMMSMSMSSSMXMMSMMMSMSMXMASAXSXMAXMAXAAAAAAXMSXMAXMXXXAMXAMXMAMXMAMXMAMAXMSMSXSSSMMAMXX
+MAAXXSAMMXAAMMMSMMSAMXMSMSMMAXSAMMAAASAXMAMASAMXMASAAMAAMAAAAAMASXSMMAAXAAAAMXAASAAASMMMAMMSMSMSMMAMMMSSSMSAMAMXAMAMASAMASXSMSAAAAMAMXMMSSMX
+SSSMMMSSXMMMSXXAAXAAXXMXXAAAAXXAMAMXMMAXAMXXXAMXAXSSMSSSSMSMSMXAMXMAXSMSMSMMAMAXMXMXMSAMXMXAXAAXXXAMAXXAAAAAXSSSMSASXSAMXMAAAMXMMMASAAMAMAMM
+MAAAXAXMAXSAXMSSSMSSSSSSSSSMSSSSMSSSMSSSSSMMXAMXAMMAMAAAXAXMXXMSSSMSMXASXXMMXAMXSMMMAXXSSSSSXMSMMSMSSSMSMMMSMAAAXSAMAMMMAMMMXMAXMXMXMSMAXAMM
+MSMMMSMXAMMMMAXAMMXAAAAXMAMAAAXMAAXAAAMXAAXMASMSMXSAMMSMMMMXMASAAAAAXMAMMSAAXSSMSASMSMAXAAAMSMAAXXAAAMAMAMSMMMMMMMMMSMSMSASMXSMMMAXASMXSMMSS
+XMAMAAMMSXMASXMMMMMMMMMMMAMMMMMMMMSMMSSMSMMAXXAMXASASXMXSXAASXMMSMMMXMSMAMMMSXAASMXAAMMMMMMMAMSSXMMMSMMSAMMAMXAXMXAXMASAMXSXAXXASMXMMAXMASAM
+ASAMMMSAMASAMMAAXXAXAAXAMASAAAAAAXXXAMAMXXMSMSSMMXXAMAMAMXXMSMMAMXAMSMAMMSAXXXMASMMSMSMASXMMAXAMAXXXAAXSAXSAMSMSSSMXMAMAMASMMMSASAASMSMSXMAS
+XSASXAMAMMMMXSSMSSSSSSXSSXMMSSSSMSSMXSMMSXXMAMAASXMSXMMAMMSAMXMXSMSMAMAMASMSMXXAXXAXMAMASMSMXMASXMSSMSMSSMMXMAXSAMSAMASXMASAMAXAMAMSAXAXMXAA
+AMAMXXXSMSASAAAAXAAMAXAMXMMAMXMAMSXMASXASMMMSMSMMAAAASMXSAAMSMMMSAAXMSXSAMXAAASMMMMXSAMXSAMXSMMMAXAAXXMXMXAXSMSXMASXXASXMASAMSSMMMMMMMXMXMXM
+SMAMMSXMXSASMSMMMMMSAMXMAMMAMXXXMXAMASMMMAXAAXAAMSMSSMAMXMAXAASAMSMSXAASMMSSXXSAAXXAMASXMASASAAMSMSSMMMAMXXMAMXAXAXMSMSAMASAMXAAAXAAXAXSXMAS
+MXMXXMASAMXMAAXAAAXMASXMASXMSSXMMSXMASAMSSMSSSSSMAAMXMXMMMMMSXMAXASAMXXXAAMMSXSXMXMMSXMASAMXSMMMMAMXAASASAMSSMSAMXXXAASXMASMMSXMMSXSSSXMASAS
+SASXXSAMASAMXMSSSSMSAMXMASAAAXAAAAAMXSAMXMAXXXAMAMXMAXAMAAAAMASMMMAMXSXMMMSAAMMAXMAXMXXXMXSXSXMXXAXSSMSAMXXAMXSAMASAMXMAXAMXXMAXXXXXAXSSMMMS
+SAMAAMXMXMASXMAXMAAMXXAMSMMMMSMMSSSXASXMAMMMSMSMXMAMMXSSSXSASMMMXMSXAXMASAMMMASAMMSXSMSAMXSAMASMSMMXMAMXMSMMXAMAMMSXXSSSMMSMMASMAMSMAMXMAAAM
+MAMMSMSSMMAXMASMMMSMMSXXASAMXSAAXMXMASMMASAMXAAAASMMSAAAMAMXAAAMMMMMXSMSMASAXMMSSXMAMMAMXMXASXMAAXAAMAMSSXAAMMSSSXMXMMAMXXAASAMMAAAAXMXSSMMS
+SXMAAXXAAMAXXXXMAAAAMASMSXXMASMMXMAAAXAXASAAMSMSMSAAMMMMSXMMSSMSAAAMXSXAXSSXXSAAXXMASAMAASXMMMMSMMSXSAXSAMMMMMAMAXXMAMAMMMSXMAXMXXMSAMXMXMAX
+MAMSSSSSMMMMSMASMSSSMASMASAMXSXXASXSSMSMMMMMXXAAMMMMXXXMAMXAAAMSMSASAXSMMXXAMMMMSXSASAXXXSAMXMAAXXMXSXSXSAXAXMMMMXMAMSAMXAXAMXMMSMXXAMASAMXM
+SAMMAAXXXMAAAAMMAMMAMXMXMASXAMAXXXMAXAMAAXXSMSSMSMASMAXXMSMMXSMSAXXMMMMSASMMMAAMXAXASAMSMSAMAMSSSXMAMMSAMXMMSSXAXMXSXSASMSSSMXSAAXAXSMASMSSS
+SXSMAMXMAXMMSSMMXMSMMAAXSAMMAXSXSAMXMMMMXSXAAAAMMMAMAMMXMMMSXMAMAMSMMMAAXMASASXSSMMMMAMAAMASXMAMMAMAMXMAMXSMAMSMSMAMAMAMAAAAAAMSSMMAXMXSAAAS
+SXSAMMMXMMMAMAMXAXAXSSSXMASMSAMMSAMASMSMAMMMMMSMMMAXSSSXASAXAMMMSXXXAMXMSSMMAMAAXMASMXMMSSXMXMAXXAXASXMXSXXMAMAMAMMSMSAMMMSMMMXMXXMASAMMMMXM
+XAXMMMXASAMMSAMXMMXXXAXAMXMAXMSASAXAXAAMASASAXMAMXMXAAMXAMMSAMAAXAMMMSXXMASMSMMXMSAMXMSXAMASXSAMMSSMAASAMXXSMSMMAXAAMMAXSAMMMSMAMXMMSXMASMMS
+MMMAAXMASXSXSAMXSMMSMAMAMMMXMXMASAXSMSMSXSASXXSAMASMMMMMSAXMASMSSSMASAMXSAMMXMAXXMXSAAXMXXAMXMASAMAASXMAXAMXAAMMMSMSSSMMMMSAAASAMASXSAMXSXAX
+AASXMSMAXAXASMMMSAAXXXAAMMSMMXMMMAMXAAAAAMAMAXSXMAXAMAXXXASXAXAAXMSXSAMAMAMMAMXSMAMSMMMSMMXSXSAMXSSMMMSAMSSMMXSAMSAAAAAXAXMMSXSXXAMAXAMAMMSS
+SMXAAXMMMMMMMXXAMXXMMMMMSAAAXAMSMAMMAMSMMMAMMMMMMMMMMXXXMASMSMMMSMSXSAMMSMMSMMAXMAMXMXAAAAMMAMMMAXXAMMSAMXAXMAXASMMMSMMMMSSMXXMMMSMMXAMAXAAA
+XMMMXMAMAXAAXXMSSSMMXAAMMXXSSMSXAMXXAMMMSXXXAAAXMXAMXMMSMXMAXAAXAAMASMMAAXMAMSAMXXSAAMSSMSSMAMASMXMXMASMMXXMSSXMMMSAXAAAXAAASAXMAMASMSXSMMSS
+MAAXXMMSSSSMSAMXAAXASMMSASMMAMMMMMXMASXASASASMSSMSXSASAAAAMXMMSMMSMMMMSXMASAXMASAMMMSMMAMAAXAMXAXAAAMMSASXSAAMAXAXMASMSSMSSMSAMMSMAMAXAXMAMM
+AMSSXSAMMAAAAMXMXMMXXAAMAMASAMXSASXSXMMMMAXMMSAAXAASAMSXSASASMXAAXAXXXAAXAMXXSAMAXXAAASAMSMMSSSSSMSXSASAMAMSMSMMXXMXMAAXMAXAMXMAMMXMAMSMSSSS
+MAMAMMASMAMASMAAASXSMMMSASMMMSXSASAMXSXMXMXXMMMXXSMMXMAXMXXASAXSSSMMSMSAMXXAMMSSMMMMMMSXMXAAMXAAMXMAMXMAMXMAXAXSSXMMMMMMMMMXMAMASAMMXSAAAAAX
+SXMAMSAMXXXAXMXSAMAMAXAAAMXAXAAMMMAMAMXSAMMSXMXXMMAMXMSSMAMSMMMXAAXXMAXXMAXSXAAMXAMXSMMMMAMXSMMMXAMXMMSASMXSSMMAMAMXMMMAASXSXSMAMAMAXSMMMMMM
+AASMMMAMASMMSXMMXMAMAMSSMMSMSMAXXXAXASMSASAMAXAAXSAMAXAAMAMAAXSMSMMSMMMMMMXXAMMSXXXASAAXMAMXMAASXSXMAXMXMAMMAMXMSAMAMSASAXAMAXMMSSMMMSXMAMXM
+SXMAXSAMXAAAAMMAMSXMAMXAAXAAMXAMXSMSXMASAMXSAMXSMAMSXMMXMMSSSMMMAMMMAAMSSXXMAMMMMMMXMMMMMASXXSMSAXSAAMMAMXMSAMMXMXMMXAMMXMAMMMSMAMAMASMSASAM
+MMSSMSXSSSXMSMMAMSASMSXSMSMSMMSSMAXSAMMMMMMMASXAXMMSMXSAMXMMAAASASAMSMSAMXXMXMXAAAAAMXXSXAXMAXXMAMASAMSMSMMSAMMSSSSSSMMASXMMMAXMAXXMAXXMMMAS
+AAMXASAMXAMMAXMAXMMSAAAXASAXXXAAXXMMAMAMSAMXAMAMSXSXAAXXMASMMMMSASAXAXMAMMSSMMMSXSSXSAASMMMXAMASASMMSXAAXXASMSAMXAAAXXMASMAAMMSMMSMMSSMXSMMM
+MSSMXMAMMMXSASMSSMAMMMSMAMXMMMSSMSASMMMMSASMAMMAAXMMMMSMMMMMSAASAXMMSXSAMMAAAMAXMMAAMMSMAAAMASASASXAXSSSSMXSAMASMMMMMXMASXSMSSMMAAAMAAMMSAXX
+XMAMMMMASMMMASXAAMXMAAAMAMSSMAAXMMMAMXXMSAMXAMMXMASASXXXAMAAXMMMAMSAMASXSMSSMMASAMMMMXAMMMMAXXMMMMMMXAMAXXSMXMSMXSAMMASXMAXSMAAMSXSMXXMASAMX
+AMMMMAAMAAAMXMMSMMMSMSSSXMAAMSSSXSXSAXXAMXMSSSXAXXXAXAXSXMMSXMXMMMMASXMAMMAAXMXSXMASXSMSSMMSMMMAAMAMMMMAMMMSMXMAMSASAASXMAXASMMMMMXXSMMMSSMX
+SSMMSASMSSMSMAMAXAAAXXXMAMSSMMXMASAMSAMXMAMXAMXSXMMMMSMMAMXXAMXXMSMXAASXXSMSMSMSASXAXSXAAAAAAAMMMXMXASMSSXAASAMAMMAMMMMAMSMMMXSASXAAXAXXXMSX
+XAAAAMXMAXAAXAMXMMMMXMASXMAXXXXMAMAMXXMAXSSMMMAXAMAAAAASXMASMMXMMXSMSXMAMSAXAAASMMMMMSMSMMMSSSSXSAMXASAAMMSMSXXAXMXMXASAMMASAMMASMSSMMMSAMXM
+SSMMSMSMSMSMSMSXMSMSASAMAMMSMSMMAXSMMMSMSMSAXMAXAMSMSSMMMSMSXSXAXAMMMAMXAMXMSMMMSAAAASAMMXAMXXAASAMMSMXMAAAAXMXSSSSMSMSASXXMAXSAMAAMAMAXMSMA
+MAAMXAXAXMXMXAMMAAASAMXSXSXAAAAMMSMAAMAMAASXMMSSSMXXAXXAMAMXMMMSMASASXSXAXMAMXXASMXXXMAMXMMSSMMMMAMXAAXXMSSXXSAXMMAAAASXMAMSAMMASXMMMMSMXAXX
+SSMMMMMMMMAMMSMMMSMMXMMXMAMMXSSMMAXMMSASMMMAXMAAAMMMSMMMSASXXMAMSAMASASXMSXSSSMMMMMXAMXMASXAAAASXMMMMSMXMAMAAMMSASMMMXMMMSAMXSSMMMXSSMAMSMSA
+MAMXXAAAASASAAXAAXAAMSXAXXASAXAXSAMXXSAMXMAMAMMSMMXAXAAAMAMAAASMMXMXMAMMMMAAAAMXAAAAMSAMXAMSSSMSAAAXSAMXMASXSMXSAMMAMSMAMXSMAMMMASASXMAXAAMM
+SMMMSXSSXXAMMMSMSSXMAXSXSSMMXSAMMAMSMSMMMMMXXXMMMXMSSSMSSXMMSMXAMAMAMXMSAAAMMMMSMMMXXAASXMAMAXASXMAMXAMXMAMAXAXMMMMAMASASMMMMXAMXMMMASMSMSMM
+AXAXMAXXMMMMSXMAAMAMMXAMMAXSAMMMMXMAAXXMSASAMXAMSSMAXAAAAXSXXASMMASXMMSSXSXSXSAMMAXSSMMAMXXMAMXMXXMMSSMMMSMXMMSMSASAXMSXMAASMSSSMSXSAMMAMXMM
+SSSSSXMASXMXMAMSMMXAMXMAMAMMMSASMMXMSMXAXASASMXMAMMASMMMSMSAMXMAMAXAAXAXMMMSXMASXAMXAXAXMASMMMSXXSAAAMAAAAXASMAAXAXMSMMMSSMMXAAAXAXMAMSXXAMM
+AAMAMXMXMASMMSMMAMSXXAXSXMSAXSMSAAXSAMXSMAMAMMAMMSMXSXXXAAMSMMSSMAMSMMMMAXAXAMAMMSMSAMSXSAAXMASAASAMXSSMMXMASMMSMSMMAAAMAMXSMMMMMMMXMXMASMSM
+MXMAMMMMXMXXAAMSSMMMMSXXAAMXMXXSMMXMASAMMAMMMSMMXAXAMXMSMSMAMMAAMAXMAMXXSMMSSMASAMMMSMAAMXSAMMMMMSSMXMASMAMSXMAMAMXXSSMSASASXSAXASAMSAMXAMAX
+SMXAXAMXASMMSXMAAAAAAXASMMMSXSMSXSMSXMASXXSAAAASXSMMSMXAMAXMSMSSMXSXAMSMXAAAAXSMASXAAMMSXSMMSSXSXXAMMMAAMXMXAASMMMSXMAMXAMASASMSAMAMSASASXSM
+AAMXXMMXAXAMXXMXSSMSMMMMXAXXAMAMASAXXMAMAAMMMSSMMMAMAASMSXSMAXMAMXAMAMXASMMMSMXMAMMAXXXXXMAASXAMASMMAMSSMMSMSMXAXAMXMMSMMMAMAMXSAMXMSAMXXAMX
+ASASXSMSSSSMMMSMMMAAXAXMXXMMAMAMMMSMXMASMMMSAMXMXSAMSXMMAMMXSSSXMMSSXSMXMAAAAMAMMSSMMSAMXSAMMMXMASXSMMAAMASAMXSSMMSAMSXMSSSMMMASASAMXSAMMAMM
+AMXMMAAAXXAAAAAAAMSMXMAMSMSSMXXSAXMMSSMSXXAMASASMSXMMASXAXMAXAMXMAMMASXMMSMSXXAMXAAAAMASAXASMSAMAXAMXMSSMXMAMAMXAAMAXSAMXAAAXMXSMMXSAASAMXMA
+XXMXSMMMSSSMMSSMMMAXSSMXAXMAASMMMXSXAAXMXMXSMMASXMMMSAMSMSMMSAMAMXSMAMASXMAMMSMSMSXMXSASMMSMAAMMMMSASAXXMASAMXXXMMMSMSAMMMMMMMXXXXAMAXMSMXXS
+MXAXXAAXXMASXXAASXMMXAXSXSMMMMAASMSMSSMMMSAMXMASAXMAMAMAXAMXXXXSAMXMASAMAMXAMAAAAAASXMASMXMMMMXMSAXAMXMXMXAMXMSSXSAAASAMSAAAXXMMMMSMSMXAXMAM
+SMSXSSMSXSMMSMSMMAXAMXMAAXAXSXSMMASAXXAAAAASXMASXXMAXMXMXSASXSXMAMXSXMASXMAXSMSMSSMMAMSMMAAMXSAAMMSXXMASMSMSMAXAAMXXXSAXSXSSSXAAAXMAMXSMSAAM
+AMMAMXAMXSXMAMAMXXMSAAAMMMMSAAMXMAMXMXXMXMMMMMMXXAMAMSXSMXMSAMMSAMXXMMXMAXSMXMAMXMXSMMMASMSMAMMSMAMXSMSAMXAAMXMMMMSMAXMMMXMMMMSSSXMAMASAXXSA
+MAMASMMMASAMMMSMMXSMXMSAXAXMMMMAMXSAMSSSMXMAMASMSMSMSMASAMXMXMAMAXMASMASXMMAMMSXSMASMAMMMMAMXMMXMXSASXMASMSMSXXXAAAMXMSASASAAXMAMXMASXMAMAMX
+XMSAMMAMMSAMXAAASXMSSXMXMASMMMSAMAMXAAAAXASASASAMAAXAMXMMASAAMSSSMSAMSMMSXMAMAAMXMAMMAMXAXAMMMSSMMMXXASMMMMAMXSSMSSMSASASASMSSMAMXXMMXMMXXXX
+XXMMSAMXMMAMMMMSMAAASAMXSAXAAXMAMSSMMMSMMMSAMAMAMSMSSSMMMASXMSMXMAMXXXXAMMSXMXSSXMASXMSSMSMXAAMAAXMXMAMMAXMAMAXAAXAAMAMAMAMAMAMSSMSSMSXMASAA
+MMXMXMMSXSSMMSMXXSMMSMSMMMSMMXXAMXAXMXMMSXMAMSMSXAAXAMMSMASAMXMAMAMMSMMXMAXAXAXAXMASAAAMMAMMMSMMMMMAXAMMSXSAMMSMMMMMMMMMMXMXSAMXAMAAAAAMAMMX
+AAAMMSXSAXAAAMAAMXAAXMAAAAAAAAXSSSSMSMAMMXMXMXAXSMSMMMSAMASAMXSASASAMXSSMSSMMMSMMMMMMMMMMASAMAASMSSMSASMMMSXSXAAAAAXAAAMMXMASMSSMMSSMSXMSSXS
+MSMSASAMXMSMMSMMMXMMMAXXMMMSMSAMXAAAMSMMMSAMXMXMASAAXXSASMSAMXSXMAMAXAXAAAMMAMAXAAAAAMMMSASASMXMAAAASAMXMASXMXSSSSSSSSMMAAMXSAMXAAAAMXXAXAAX
+MAMMXMMMMXMMAXAMXXSXSSSSSSMMAAXAMXMMMAMXXSAMSAMXMAMAMMMMMASAMXMXMXSSMSSSMMMSASMSSSSSXSAAMMSMMXAMMMMMMAMSMAMSMAXMMAAXMMMSSXSAMAMSMMSMMAMMAMXM
+SASMMXMAMASMSSSMSMAAAAMAAMMMSMSXAMSMSASAASAMSMSAMAMMMAAMMMMMSASXSAAXMAXAAXXXAMMAAMXAMXMMXAMMMXMXSAMSSXMXMASAMXXXMMSMMSAAMSMXSMMMMAXXMXMXXSSX
+SASAAASASAXMXAAAAMMSMMMMMMAAAXXAXSAMSASMMMMMXASMXMXASXXSAMXMSASAAMMMMMSSMMMMSMMSSMMMMMSSMMSAMXSAMAAAMAXMAMMASMMSAAXAAMMXSAXAAMASMASASMSSXAAS
+MMMMXXMAMXSMMSMSMMXXAXMMMSMSSSXXMMXXMMMMMAASMMMAASXMXAMXXXAMMAMMMSXSAXMASAXSXAAAAMXXSAAMSXSASAMAMMMAXXMASXSMMAASMMSMMAXMAMAMASASMMSAMAAMMSMX
+SSMMXSMXMMAXXXMMMXXSXMASXAAAAMAMMXMAMMAMSSXMAMMSMSASMSMSSSMSMSMMMSASXMSASXSASMMSMMMAMXSMSMSSMASAXSXSSSSXMMAXMMMSAMXMSSSMASMMAMMSAMMAMMMMAAXS
+AMASAAMMSSSXSMASAAMAMXAXSMMMSMSAASMMSMMMAXMMSMMMAMAMXXAAMAAAXAASXMAMAXMAMXMMXSMMMSMMMAXAXXMAMMMMXMAXAMXAMSSMMSXSXSAAXXAMXSAMXSASAMSXMAMMXSAA
+MSAMMSXAMAMAXSAMMXMAMMMXMMAMAXXSMSAAAASMMSMAMAMMSMMMSMMMSMMMSSSMXMAMMMMXMMXAMXXAAXAXMAXMMMSXMXAMXMMMAMMMMAMAXAAMAMXMASMMXSMMAMMSXMMMSASXMXAM
+XMASXMMSSMMAMMMSAASAMASAAXMSMSMMXSMMSXMAAAMASAMAXMAAXAXXMAAXMMMAXSXSAMAAMAMMXMSMSMXMMMSSXXAAMSAMXSXSAMAXMASMMMXMAMAXMAXXMMXMASASMSMASASXMXMX
+SMMMAXMAMMMXSSMMMMMASXMSXMAAXAASAMXAXXSMMASXXAMXSSMSSMMSXSSMSAMMMSASMXMXMMAXSAMXAASMSMAAXASXMAXXAXXMAXSSSMSAAAAXAMMXXSXSASAMXMXSAAMMMXMASAMX
+SASMSMSASMSSMXMASXSXMMMAMSSMXMXMMMMMSASAMXSASMMMMAMAAXAAMAMASAXSAMXSXMXMMSSMAXSMMSAAAMMMMMMMSXSMSMMMSMXAAMSXMMMSASXMXAAMAMASMMMMXMXMSASASASM
+SAMAXASASAXAXMMMSAXXAMMMMMASXMASASAMXAMAMMMMMAAMMAMSSXXMSAMAMSXMXSXSAMSAAAAXAMMASXMAMMAXAXAAMMXAXXSAMMMSMMSXSAMAAMAASMMMSMMMAAXMASXASASXSAMX
+MAMXMAMXMMSMMAXSMMMMSMAXXSAMXSMSASXSMMXAMAAASXMMSMMXMXMXXMXSXMMSMMASAMMMMSXMSAMXMAXSMSMSSSMSSMMSMAMASMXXAMSAMXSMMMXMMAXXAASMSMSMAXMMMXMXMAMM
+XXMXMXMAAXSXASXMAAXAASMMXMMXAMXXASXXAMSSSSXMMXAXAMSMMMAMSMAMAMAAAMAMAMXSMMXAXMSASMMXAAXAAAMAAAMMMXAXAAASAMMXMASAMXAXXXMMSSMAMAXMAMSASAAXMSMS
+MMXXMAXXSMSMMMSMAMSSMSMMSAAMSMMMMMXMSMAAMAXSMSAMMMAAAXXSAMMSAMSSSMXSXMXMAMMXMXSASMAMXMMMSMMSSXMXMXMMMMXSMMMMMXSXMXASMXSXMAMMMMXAXXMAMMMSMAAX
+ASMMXSSMXXSAXAAXAXAMXXMASMMXXAMAMAXXAMMXMXMXAXXAASXSMSMSASASAMXMMMMMMMSSMXMASAMAMMXMASAXAAXXMASAMAAAXSMMMAAASXMAXSAMXAAASAMXASMSXSMSMSASMMSM
+SMMAAXAMSASMMSSMSMMXSXMASASASXMSMSSMSSSXAASXMSSSMSMMAAASAMAMMXSAAAAAXAAAMXSASAMSMXXSMSAXMSMSSMMASMSSSXMASMSXSASAMMMMMXMAMMXSMXAAXSAMAMAMAXMM
+MAMMMSAMMAMXAXMXXMSMSXMASAMASAAXAXAXAAMMSMMAXAAAAMAXSMXMXMMMSMMSMSSMSMSSMXMXSMMXAMXXXMMSMMAASXXXAMXXAXSXMXMASMMMSASMMXMSMXAXAMSMMMAMXMASMMMM
+SXMXXSAMMMMMXSMAXAAMSASAMAMAMMMMSMMMMSMAMASMMMSMMMMMXMAMXSAAXAAMXMXMAAXAMXAAMASXMMSMSAAMXMMMXXMXSMSMMMXASXSAXAMXMASAAASXSMSSSMAAAXXMXMAMAAAA
+MAMSAMXMAAAAAXMMSSMXSAMASMMXMXAAXAXMXMASMAMXAXMXXAAAMSMSAXMXMMMSAMXAMXSAMMMXSAMAAXMASMMSAMSMSAMAMAAAMAMMAMMMSMMMMAMMMMSAMXMAMSXSMSASXMMXSMMS
+MAMXASMSXSMMMSAXXAXAMXMXMASXSSSSMMMSAMXXMASASXMASXXXAAAMMSMSMSAXMASMXASAMSSMMXMXMMMXMAMSMSAXSAMSSSSSMXAXMAXAAAAMMASXSSMMMSXSMXMXAMMMAXSAMAXA
+MSSMASAMXXMASXXMXMMAXMASMXMAMAAAASAXXMASXMSXXAMASAAASMXMXAAAAMSXSAMXSASAMXAMASXASASMMSMMXMAXMAMXAAMXMMXSXMMSSSMSSMSAMXAAMXAMXXAMMMSSMMMASAMM
+SAAMAMAMMMSMMMXAAXMXXASMMSMAMMMMMMASMSAMXMXMSMMASMXMXAMSXMSMSSMMMASXMASMMMXMASAXSASMAMASXMMSSSMMMMMAMSASAMXMXXXXAMXAMMSMSMSMSMSMSMMASXMXMAMX
+XMMMASAMAXAAAAMSMSMMMXAXAAXMMXXSXSXMAXXMAMAAAXMXSXMMMMMAAXAAXAAASXMMMXMASXMMXMXAMXMMSMAMAAAAXXXXAAMASMASAMSMSSXMMXXAMXXXXXMXSAXAAASMMMMASAMX
+MXXSXSXSXSXSMXMAAAAAMMMMSSSSMSMSAMAMSMMSASASMSMAMASAAMXSMMMSMXXMMAMXSASMMAAMAXXMXXXAAMAXSMMSSMSXSSSXSMXMAAAAMMAMSSSMSAMASXMXMAMSSXMXSASMSSSS
+SSMSASASASAMXMSMSSSMSAXMAXAAAASMAMMMMAXSXMAMMSMMSAMSMSAMMAMXMSSMSAMAXXSXSMMMSMMAXMMXXMMXMXXAAAAAMXMAMXXXASMSMSSMAAAAAASMSAMMMXMXXXMASASAXMXM
+MAAMMMAMAMMMSXSMXMAMSXXXXMSMSMSSMMMAMSMSMMXMMMAMMMXAXMAXSMSSXAAXMAMXMXMXMASAMXSAMXMMSASAMXSSMMMMSAMXMASMMMXMXAAMMSMMMXAXSAMAAMASAAMAMAMAMMAS
+SMMMXMAMMMXXSAMMASAMMMSSMAXAAAMXSAMXXXAMXXAMAXXMMMSMSSSMAAAMMMMMSSMSAMXASXMASAMASAAASAMAXAXXXMAAXAMMMAMAAAMSMSSMXMAXSMMASAMXSASXSXMXMMMAAMAS
+AAXMASXSSMMXMAMSMSAMXMAAMAMSMSMXSXSXMMMMSSXSMSMAMXXXXAMXMMMSXSSMXMASMXSXSAMXMXSASMSMMXSAMSSMMMMSSXMAMXSSMMMAAXMASMMMSAXAXAMXAMAAMSXAMASXSMXS
+XMAMXXSAMXMMSAMAMXXMAMSMMXXXXXMASMMAXSMAASMXMAAAMMMMMAMASAMMAXMAAMMMAXMMXXMXXAMASXXXMAMAMXAMXXAXMAMSXXXMAXSSSSXAXAXXMXMMMSAMXMMAMSSMSASAXMMS
+MMMSMMXMSAMXSASMSSMSXMXXMXMSMMMMSASMMMMMXSMAMMSMSAAMSMXAXAXMMMMSMMASMAMMSMMXMMSMMMMMMMMMMSMMMMSSXSMMMAMXSXXAAMMMMAMSSSMSAMXXAMXAXMAMMASXXMAM
+AAAAAXAASXXASXMXMXAAMXMXSAAAAAAAMXAMAAMMMSASXAAAMXXXAMMSSMMXSAMXMXMAXAMAAAMMSMAMAXSAXMXSAAAAXAAXXMASAXSAMMSMSMASAAXSAAXMMMASXMSSSSMMMMMAMMAS
+MMSSXSAXXSMASMMXMMSMSASASMSMSSMSSSMSSMXAXMAMMMMSMAXMASAMAMAMSSXMMSXMSSSSMSMAAXAMSMSMSAAMXSXMMSXSAMAMXAMASASXAMAMMMMMMMMAXMXMSAAXXXXXXAAAXMAS
+SAMXXSXMAXMAMAMAXXXXXAMMXAMMAAMAMXXAAMSSSMAMAAAMMSMSMMXMAMAMMASAMXAXAXMAMXMSSMXXMASXAMMSXMASAMMAAMXMMSSMMASMMMSMSXAXAAMAXMMAMMMMSSMSSMSASAAS
+MAXMAXAMSMSSSSSSSMSSMXMMMSMMSSMSSSMMSMAAAMASMMMSAMAXMSSSSSSSXSAMXSMMMMMMMMAMAMSAMAMSAMXXASMMMSMSSMXXXAAMMXMAXSMASASMSSSMSAMAMMAAXAAMAMXASMSM
+SASMMSMMXAAAXAAAAMAMMSMMAXXXMAXAAXMAXMMSMMXMASMMMMXMMXAMMAMMMASMXMASXXMAXMAMAMMAMSMXMXSMMMAAMMAAXXMASMMMSAMSXXMAMAMAXAMAMXSASMMSSXMMAMMXMMAM
+MASAXMAAMMMXMMMSMMXSAMAMASAXSXMMSMSMSSMAMSSMAAMAMSMMSMXMMXMASMXMAXXSAMSAXSAMAMMSMMMASAMAASXMSMMMSXSAMAAASASAAMMMMMMXMMMXMASASMXMAMMMXMASMSMS
+MXMMMXMMSXSMMXAXAMXMASMMMXMMMXMAXAXAAASXMSAMAMMAXAASXAXAMXXASXSMMXAMAMMMMSASMSAXAMXXMASMMSAXXXMAAXMASXMMSXMAMAAAASMMSMSAMAMXMXASXXMAXAMXXAXA
+MMMXAAXXMAMXMAMSAMAMAMXAMXSAXAAXMAMMSMMXXSAMAMSXSSSMMMAMMSMASAMASMMMSMXXASXMAAMMMMASMAMAAXMSMSMMMSMAMMAMXMMSASMMMMAAMAAAMXSAMSMSXAXSXMMASMSM
+SAMMSMSAMAMAMAAXMMXMASMXMASXSXSAMMAMXAXXXSAMXMAMXMAAASMAAXMAMAMAMAMAMMXMXSAMMMMAXMAXMAXMMMMAAMXSXMMAMSAMXMAXMMMSSSMMSMSXMAMAMSXMMSMXASXAXXAX
+SXSAAMSMMMMXMMSMSMASAMAAMAMMMMMAMMSAMXMAMMMSMXAAAXMMMAXMASMASAMXSXMASMMSMSAMXASXSMSSSMMXAAXMSMAXAASMXSAMXMSSXSAAAAXMXXMAMMSAMMAAAAASAMMMMSAM
+XAMMXXSAASMSAAAAAAMSAMSXMXMAAASAMXMASAAAMAMAXXXMMSMASXMSAMXASMSMSAMASMAAAMMMSMSAMXXAAMASMSSXXMASXMMSAMXASMMXAMMMSMMXMAMSMASASMMMMSAMXSASMASA
+MMMSMAMSXXAAMMMMMMAMAMXAMXSSSMSASXMMSMSMMASMSSMMAAXAMSAXMMMMSAMASXMASMSMMMSAXXXXXSMMMMAXXAAMXMXSAAMXSMXXXAAMXMSXXXMASMXMMASAMXXAXXXMAXXSAAMM
+AAAAMXMXXMAMXASMSMAMSMSASAAAMXSAMAXXXMAXMMSAAAASXMMSSMSMAAAMMMMXMMMXSMMAXXMMSSMSMAASXMXSMXMMXSSXMASAXXMSSSMSAMXXAXXMAMMAMAXAMXMSSSSMASXXMMSX
+XMSXMXMAASAXXMMAXMAMAAXAMMMMMAMASAMXASMSAAMMMMMMAAAXSAMMSSMSASMXAXXAXAXMXSAAAMAAMMXMXMASMSSMAXMASXMASAAMAMAXMAMXSSMMAXXAMSSMMMAXAAXMXMMAXAXX
+SMMXMAMXMSASMXMMMSMSXSMXMAXMMXSAMXMXMMAMMXMAXAASMMMSMMMAAAASASMSAMMSSSMAASMMSMSMSXMASMASXAAMMMSAMXMMSMSMAMXMXXSMAAXMMXSASMAMXMMMMMMMSSSMMSSM
+MAAAXAMXAXASAAXXXAAAAXMXSXSSMASMSASASMAMXMSXSSMXAASXAAMMSSMMAMXSSSXMAMMMMSXMAAAAXAAMAMAMMSXMAAXMMXSAXMAMASMSXMAAXSMAAAXXMMAMXAAAXAMXAAXXAAAX
+MMMMSSSMSMMMXSSMSXSMXMAXMMSAMXSASASASXXSAMMMAXAXSMMSMMXMAXXMMSAMXMAMXMASXXAXMSMMSMMSAXXXXAMMSMMSMAMASXMXMSMAAXXSAMMMMSSXSMSMMSMSXMSMMXXMMXMM
+SXSXXMAAXXXMAXXXAMXMAMMASXSAMXMAMMMAMXMMMAAAMSMMMAMXXAXMMMXMASMASMXMXSXSMSSMMAXAMMASMSSXMASXAXAAMXSMMAMASXMMSMAMMSAXAAAASAXAAMAXXMXAXMSXSASA
+AAMXMSMMMSMSMMXXMAAAAXSXXMSAMMMSMSMMMMXSSSSMXMAASAMMMMSSMMAMXSXXSAMMMMXMAAMMSAMMSMMSAMXASAMMMMSMSAMXSAMXSAMAAMXMXSAMXSMXMASMMMAMAXSAMXAASASX
+MMMAXAAAAAAXASASMSMXMMAMXMSXMXMAAAMXSAMXAXXMSMMMSAMXAAAAASXXMXMMMMXAAXXMMMSAMXXXAMAMMSSMMAMASXXXMMMMXXSMSAMSXMASXMXXXAXXMMMXXMAXXMXMAMMMMAMA
+XAMSSSSMXSSXMMASMASAXSASMAMAMASMSMSAAXAMSMSXSASASXMMSSSSMMAMSMMAAXMMMXXMAMMXSMSMSMMSAAAXSSSXSAXXMASXSAMXMAMXASAMMAMMMMSAMASXSSSSXAAMSMMXSAXX
+SXSAAMXMAMAMXMXMMASXMSASXAXAXMSAMXMMXMMSAAAASAMXMAXAMXMAMXAXAAXMSSSSMSSSMSAMMAAAXAMMMSSMAASAMXMMXMAAMXMXSXMMAMMSMAMXAXMASASAXAAMMMMXMXMAXMMM
+XMMMSSSMMSAXXXMXMXSAMMXMXXXXXMMMMXAXAXSAMXMAMMMMSAMSSSSSMSASMSMAMAAXAAXAMMAMMSMMMAMXMXAXMMMMXMASAXMSMXSAMMXXAXMAXASMMMSAMXMAMMMMMASMXSMMXMMM
+XSXMAMAAASMMMASXMASAMAXMXMSMSAAAXXSMXSAAAXXXXMAAMASAAMAMAXAAAMMAMMMMMMSSMSSMAXAXSAMAXXAXXXAMXMXMMSAAAMXAXAMSXMSSSMXAXAMMSMXMAXSMSMSAASXMASMA
+XSASXSMMXSXSAAXAMAXXMMMXAAAAAMSMXAMXXAXMAXMXSSMMSMMMSMAMMMSMMMSXSXMXSAAXMAAMAMSXSASXSMXMMSMSAMASXMXSMMSSMMXSAMXAAMSSXMSXAMAXMAXMAXMMMMAAXAAX
+MSAMXXXMASXMMMSSMSSXAMASMSMSMMAMMXMMAMXSXSMAAAAXSAMSAMXSMAAXXXMXMAMMMMSSMSSMXXMASMMMXMASXAXAAMASMSAMAAXAAMAXMMMSMMXXAAAXASMSSSXSSSSMSSSMSMSM
+AMXMXSXSSSXMAMAXAXXMSAMXAAAAXSASXMSMSXAMAAMMSMMMMAMXASAAMSSXSAAASAMMSXMAXAAMSAMXMXAXSXASXXSSSMASMMASXMMSMMMXSAAMXMASMMMXXXAAAAAMAXXAAAXAAAXA
+MXMASMAMAXASXSMMXMXAXASAXMXMXMXSMAAAXXSSSMXXAAXASMMSMMASXXMASMSMMSSXMASXMMSXSMSMMXSSMMXMXXMAXMSMMSAMAAXMMMAASMSSXMAXASXMXMSMMMMMAMMMMSMSMSMS
+XAMXAMAMXMMMAAXSSMSMSASAASXXAMASASMSMMMAMXASXSMXXMAAXMAMXXMMMXXMXXXXSMMMXXAXMXSMAAMAMAAMXSMMMMMAXXMSMMXXAMMXSMAMAMMSMMAASAXASXAXAXAAAXAXAAAA
+ASXSMSMSMSAMXMMSAAMXMAMMMXAXSMASMXAAMAMAMXXMAMXMSSSMSMASMXSAMSAMXMXAXAAMMSSMAAMMMMSAMSMMAMXXAMXSMAMXAAASMMMMSMASAMAAMSMMAASAMSSSMMSSSMXMSMSM
+MMAMXAAAASASXMMSMMMXMXMSMSMMAMMSXMSMXSMMSASMMMAXXAAAXXSXXAXAMMMMXMAMXSMSAAAXMAMXAXMXMXAMMSASXSAMMXMSMMXXAAXXXSAXAMMMXXSSXAMAMXXAMAXAAMSAAAXA
+XMAMMMXMMSXMAAXXXSXMMAXAAAMAXSAMXXASMXMXMMMASMMMMXMMMMMXMXSXMSASMSSXAXMMMSSMXSXMMSMSMMXMXMAMXMMSMMAXXMSSSMMMXMSMSMSMSAMXMXSXMXSAMXMMAMSSMSMM
+MSASASMSASASXMMSSMASMMSMSMMMXXMASXAMMASAMXSAMAMXXMSMSASXMASMMSASAAMMSMAAAMAMAMAMAAAAMMSSSMSMXSAAAXXXXAMAMAAMSAMXXAAAMMMAXMAMXAMAMXMMXAXAMXAX
+AMASAMAMAXAMAMAXAMXMAMAXMASMMMXXXMMMSMMASAMXMAMMSSMAMAMXMXSAXMMMMMSAMSSMMSAMXSAMSMMMMXAAXAAASMSXSMMMSMMAMXMSMAMAMAMMMASAMXMXMXSAMXMAMSSMMSSM
+MMMMMMAMMSMSAMMSSMMSMMXMXAMXMXXXXASAMXSMMMSMSAMAMAMMMAMAXXXMXMXSXMMMXAXAXMXMASAMXMASXMMXMMMXMAXMAAAAXXMAMXSXXAMXXAMXMXMAMXXXXMXAXAXXSAAAAAAX
+XSXAASXMAAMXASAAAAASXSASASMASMMMMXMASAXSAXAMSXMSSSMXSMSMSMSMSMASAMAMMMMMXMMMXSSMSAMAAASASXSXMAMSSSMSSMSMSMSASXSXSMSXMSMSXMASXMSSSMSMMMSMMSXM
+AAMSMSXMMSXSAMMSMMMSASASAASASMAAAASXMASXMMAXSAXMAXMAXAAMAAAAAMASAMXSAXAAMMASXMASXAMSMMMASAMXMAMAAMAMXAAAMAMXMXMASAAAAAAXAAAMMAAMAAMAXMMXMAXS
+AXXXAXXXMAXMXMAMAMXMMMMMXAMXSXSXSASXMXMXMASASAMMAMSAMSMSMAMSMSMSXMXSMSASXSXSAMXSSXMAXAMXMXMAMMMMSMMMMSMSMXMASXMAMXSSMMAMAMASMXMSMMMSXMASXMAS
diff --git a/2024/go/input/day4.test b/2024/go/input/day4.test
new file mode 100644
index 0000000..1f4eda2
--- /dev/null
+++ b/2024/go/input/day4.test
@@ -0,0 +1,10 @@
+MMMSXXMASM
+MSAMXMSMSA
+AMXSXMAAMM
+MSAMASMSMX
+XMASAMXAMM
+XXAMMXXAMA
+SMSMSASXSS
+SAXAMASAAA
+MAMMMXMMMM
+MXMXAXMASX
diff --git a/2024/go/src/day1/main.go b/2024/go/src/day1/main.go
index cde4b79..17cfa54 100644
--- a/2024/go/src/day1/main.go
+++ b/2024/go/src/day1/main.go
@@ -63,8 +63,8 @@ func solve_part_two(data string) int {
}
func main() {
- test_1, _ := os.ReadFile("../input/day_1.test")
- test_2, _ := os.ReadFile("../input/day_1_2.test")
+ test_1, _ := os.ReadFile("../input/day1.test")
+ test_2, _ := os.ReadFile("../input/day1_2.test")
prod, _ := os.ReadFile("../input/day_1.prod")
content_test_1 := string(test_1)
content_test_2 := string(test_2)
diff --git a/2024/go/src/day2/main.go b/2024/go/src/day2/main.go
index 6caad61..b06bed4 100644
--- a/2024/go/src/day2/main.go
+++ b/2024/go/src/day2/main.go
@@ -89,8 +89,8 @@ func solve_part_two(data string) int {
}
func main() {
- test := FileRead("../input/day_2.test")
- prod := FileRead("../input/day_2.prod")
+ test := FileRead("../input/day2.test")
+ prod := FileRead("../input/day2.prod")
fmt.Println("Part_1 test: ", solve_part_one(test))
fmt.Println("Part_1 prod: ", solve_part_one(prod))
diff --git a/2024/go/src/day3/main.go b/2024/go/src/day3/main.go
index 09e487b..661d7aa 100644
--- a/2024/go/src/day3/main.go
+++ b/2024/go/src/day3/main.go
@@ -23,17 +23,17 @@ func solve_part_one(data string) int {
// FindStringSubmatch returns the full match and all capture groups
matches := regex.FindAllStringSubmatch(data, -1)
- ans := 0
+ ans := 0
- // Iterate over all matches
+ // Iterate over all matches
for _, match := range matches {
// fmt.Printf("Match %d:\n", i+1)
// fmt.Println(" Full match:", match[0]) // Entire match
- left, _ := strconv.Atoi(match[1])
- right , _ := strconv.Atoi(match[2])
- ans += left * right
+ left, _ := strconv.Atoi(match[1])
+ right, _ := strconv.Atoi(match[2])
+ ans += left * right
}
- return ans
+ return ans
}
func solve_part_two(data string) int {
@@ -43,32 +43,30 @@ func solve_part_two(data string) int {
// FindStringSubmatch returns the full match and all capture groups
matches := regex.FindAllStringSubmatch(data, -1)
- ans := 0
- enabled := true
+ ans := 0
+ enabled := true
- // Iterate over all matches
+ // Iterate over all matches
for _, match := range matches {
- left, _ := strconv.Atoi(match[1])
- right , _ := strconv.Atoi(match[2])
- if match[0] == "don't()" {
- enabled = false
- } else if match[0] == "do()" {
- enabled = true
- }
- if enabled {
- ans += left * right
- }
+ left, _ := strconv.Atoi(match[1])
+ right, _ := strconv.Atoi(match[2])
+ if match[0] == "don't()" {
+ enabled = false
+ } else if match[0] == "do()" {
+ enabled = true
+ }
+ if enabled {
+ ans += left * right
+ }
}
- return ans
+ return ans
}
-
-
func main() {
- test := FileRead("../input/day_3.test")
- test_2 := FileRead("../input/day_3_2.test")
- prod := FileRead("../input/day_3.prod")
- // Define the regex pattern with capture groups
+ test := FileRead("../input/day3.test")
+ test_2 := FileRead("../input/day3_2.test")
+ prod := FileRead("../input/day3.prod")
+ // Define the regex pattern with capture groups
fmt.Println("Part_1 test: ", solve_part_one(test))
fmt.Println("Part_1 prod: ", solve_part_one(prod))
diff --git a/2024/go/src/day4/main.go b/2024/go/src/day4/main.go
new file mode 100644
index 0000000..ec90ed1
--- /dev/null
+++ b/2024/go/src/day4/main.go
@@ -0,0 +1,133 @@
+package main
+
+import (
+ "fmt"
+ "os"
+ "strings"
+)
+
+type Direction string
+
+const (
+ Up Direction = "up"
+ Down Direction = "down"
+ Left Direction = "left"
+ Right Direction = "right"
+ TopLeft Direction = "topleft"
+ TopRight Direction = "topRight"
+ BottomLeft Direction = "botleft"
+ BottomRight Direction = "botRight"
+)
+
+func FileRead(path string) string {
+ file, err := os.ReadFile(path)
+ if err != nil {
+ fmt.Println("Couldn't Read file: ", err)
+ }
+ return string(file)
+
+}
+
+func parseInput(data string) []string {
+ return strings.Split(data, "\n")
+}
+
+func isValid(x int, y int, n int, m int) bool {
+ return x >= 0 && x < n && y >= 0 && y < m
+}
+
+func solve_part_one(data string) int {
+ grid := parseInput(data)
+ grid = grid[:len(grid)-1]
+ n := len(grid)
+ m := len(grid[0])
+ dx := [8]int{1, -1, 0, 0, 1, 1, -1, -1}
+ dy := [8]int{0, 0, 1, -1, 1, -1, 1, -1}
+ var words []string
+ for x := range len(grid) {
+ for y := range len(grid[0]) {
+ if grid[x][y] == byte('X') {
+ for i := range 8 {
+ word := "X"
+ for j := 1; j <= 3; j++ {
+ nx := x + dx[i]*j
+ ny := y + dy[i]*j
+ if isValid(nx, ny, n, m) {
+ word += string(grid[nx][ny])
+ }
+ words = append(words, word)
+ }
+ }
+ }
+ }
+ }
+ cnt := 0
+ for _, word := range words {
+ if word == "XMAS" {
+ cnt++
+
+ }
+ }
+ return cnt
+}
+
+func iSXMAS(window []string) bool {
+ patterns := [][]string{{"M.M",
+ ".A.",
+ "S.S"}, {"M.S",
+ ".A.",
+ "M.S"}, {"S.S",
+ ".A.",
+ "M.M"}, {"S.M",
+ ".A.",
+ "S.M"}}
+ for _, pat := range patterns {
+ flag := true
+ for i := range len(window) {
+ for j := range len(window[0]) {
+ if pat[i][j] != '.' {
+ flag = flag && (pat[i][j] == window[i][j])
+ }
+ }
+ }
+ if flag {
+ return true
+ }
+ }
+ return false
+}
+
+func solve_part_two(data string) int {
+ grid := parseInput(data)
+ grid = grid[:len(grid)-1]
+ n := len(grid)
+ m := len(grid[0])
+ var windows [][]string
+ for x := range n - 2 {
+ for y := range m - 2 {
+ var window []string
+ for i := range 3 {
+ window = append(window, grid[i+y][x:x+3])
+ }
+ windows = append(windows, window)
+ }
+ }
+ cnt := 0
+ // fmt.Println(windows)
+ for _, window := range windows {
+ if iSXMAS(window) {
+ cnt += 1
+ }
+ }
+ return cnt
+}
+
+func main() {
+ test := FileRead("../input/day4.test")
+ prod := FileRead("../input/day4.prod")
+
+ fmt.Println("Part_1 test: ", solve_part_one(test))
+ fmt.Println("Part_1 prod: ", solve_part_one(prod))
+ fmt.Println("Part_2 test: ", solve_part_two(test))
+ fmt.Println("Part_2 prod: ", solve_part_two(prod))
+}
diff --git a/2024/go/src/log.txt b/2024/go/src/log.txt
new file mode 100644
index 0000000..d1c7708
--- /dev/null
+++ b/2024/go/src/log.txt
@@ -0,0 +1,196 @@
+MMM
+MSA
+AMX
+
+MSA
+AMX
+MSA
+
+AMX
+MSA
+XMA
+
+MSA
+XMA
+XXA
+
+XMA
+XXA
+SMS
+
+XXA
+SMS
+SAX
+
+SMS
+SAX
+MAM
+
+MMS
+SAM
+MXS
+
+SAM
+MXS
+SAM
+
+MXS
+SAM
+MAS
+
+SAM
+MAS
+XAM
+
+MAS
+XAM
+MSM
+
+XAM
+MSM
+AXA
+
+MSM
+AXA
+AMM
+
+MSX
+AMX
+XSX
+
+AMX
+XSX
+AMA
+
+XSX
+AMA
+ASA
+
+AMA
+ASA
+AMM
+
+ASA
+AMM
+SMS
+
+AMM
+SMS
+XAM
+
+SMS
+XAM
+MMM
+
+SXX
+MXM
+SXM
+
+MXM
+SXM
+MAS
+
+SXM
+MAS
+SAM
+
+MAS
+SAM
+MMX
+
+SAM
+MMX
+MSA
+
+MMX
+MSA
+AMA
+
+MSA
+AMA
+MMX
+
+XXM
+XMS
+XMA
+
+XMS
+XMA
+ASM
+
+XMA
+ASM
+AMX
+
+ASM
+AMX
+MXX
+
+AMX
+MXX
+SAS
+
+MXX
+SAS
+MAS
+
+SAS
+MAS
+MXM
+
+XMA
+MSM
+MAA
+
+MSM
+MAA
+SMS
+
+MAA
+SMS
+MXA
+
+SMS
+MXA
+XXA
+
+MXA
+XXA
+ASX
+
+XXA
+ASX
+ASA
+
+ASX
+ASA
+XMM
+
+MAS
+SMS
+AAM
+
+SMS
+AAM
+MSM
+
+AAM
+MSM
+XAM
+
+MSM
+XAM
+XAM
+
+XAM
+XAM
+SXS
+
+XAM
+SXS
+SAA
+
+SXS
+SAA
+MMM
+