summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2024/04a/data.txt140
-rw-r--r--2024/04a/example.txt10
-rwxr-xr-x2024/04a/run.rb84
-rw-r--r--2024/04b/data.txt140
-rw-r--r--2024/04b/example10
-rwxr-xr-x2024/04b/run.rb38
6 files changed, 422 insertions, 0 deletions
diff --git a/2024/04a/data.txt b/2024/04a/data.txt
new file mode 100644
index 0000000..ebe691d
--- /dev/null
+++ b/2024/04a/data.txt
@@ -0,0 +1,140 @@
+XMMAMXMMSMXMMXMSMAXMAXSXMXXMXSMXXASMXSXMXMXMXMXXXXMASMSMAMMMSSSMASXMXSASXMXAAXXMMXAMXSXMASXAXMAMXXXMSAMSAMXXXMAXSAMXSAMMXXXSSMSMSSXMSMAAXXMX
+SXSAXXXXXXAMAMXAXXMMSMSAMXAMAMMMMXMXAMXMAMASAMMSXMASXAAMAXMAAAAXAMXMMMASMMMMMMSMMXAMASASMSMSMSMSMSASAAMSAMXMASAAMSXAMAMXSMMXAAXAAAMSASMXMASX
+SXSMSMXAMSSMMASXSSMMAAXAMXAMMXAAMASMMSAXMXAXAXAXMASXMSMSASMMMXMMMSAMAMXMAXMAAAMAMSXMAXMMAMAAXAAAXMMMMMXSAMSSMMXSXAMMSMMMXAASMMMMMMMSASXAAXXA
+SAXAAAMAAAXAXMAMMMAMMSXMMSSMSMSMSASAAMXMSMSMSMSMSSMXAAXMASMASAXAAMXSASMXMASXSMMAMMAMASMMSMSMSMSMMMSSXMASAMAMXMAXMMMMAAAXMSMXXAXMAXXMAMXXMAXX
+MMMSMSAXXASMMSASMSAMXXAAMAMASMMXMASMMSSMSAMAMAXASAMXSXXMXMXASMSMSSMSXXMAMXMAMMSMSXXMMSAAXMAXMAMXAMASAMXSSMXSAMXXAXMSXSSXXMAXSMSSXXXMSMSMSSSS
+SAAXMAXSMXMXMSAMXSASASMMMMMAMASMMAMAXSXAMMMMMAMMMXMAMMSMMMMMMAXMXAMXAMSMMAMAMAMASMXXXMMMMSMMSXSXSMASXMXMAXXSASMMXSMMAMAXSMMMSAXMMSXAXAAAXAAM
+SMSSMXMXMMAMXMAMAXXMAXSAMXMASXMAMASMMSMMMAAXMAMXMASMSAAAAXASXSSMSSMMXMAAXSSMSMMAMAMASXSAXAXXAASAMMMMMSMSMMMXAAAMASAMMMAMXAXAMMMAASMMMSMSMMMM
+XXXMXAMAXAAMAMMXSXXMAMSSMMSXXAMXMMSXAXAXASXSMSAMXXXAMXSSMSASMMAAAAXAXMXSAAAXSAMXSAMXMASASMSMMSMAMSXAAMAAAAXXXXAMXSAMXMMSSMMSSXMMMMAAAXMMXMAS
+SMMMMMSMSXXXXSAAMAMMSMXXXAXMSMSAMXMMMMSMXXMMXMASMMMMMAXAXMXMASXMMSMMMSAMXMAMMAMASAMXMAMAMXAXXAMMMMXMMXXSSMSMMSMMXSAMXMAMXMAMAXMXXXXMXXAMXSAS
+MAAAAMAMXAXSMMMXSAMAMMMSMXSAAASASAMASAMXAMAXMAXAMSAASAMXXMASMMASMXMXAAAMXXAAXAMMSXMSMMXAMXSXMASAASMSAAMAMMAMAAAAAMAXMMMXMMSSSMMMMSXAMMSMMMAS
+XSSXXXXSMSMAAXAMSAMMSASXAXMMMAMASXXAMSSMSSSMSMSAMMSMSASXMSASASAMXAMMXSSMXMMSSSSXMAXMAMSXSAXAMASMXMAMMSAAMSAMMXMMMSAMSMMAAXAAMMSAAAMXMAMASMMM
+XMAXSSMSAMSXMMSXSXMASXSMSMMMXXMASMSSMXSAAAAAAMMAMAMMSASMMMASAMXMMASAAMXMSAAMXAXMMMSMAMAMMAXXMAXMSMMMAXXMMSASMMSAXAMSAASMSMMSMAMMMMSAMMSAMAXS
+MMAMMAAMAMAXSAMXXXXXMMSMMAAAAXSAMAAAAAMMMXMMMXXAMXSAMXMAAMMMMMMSSSXMASAMXSASMSMSAAAXAMAAMMMSSXSAMSXMMMSSMSAMAASXMASXMXMXAXAXMXMSXMSASAMXSXMM
+ASXMXAMMXMXXMASMSXSASAMASXMMSXXAMMMSMXMSSSMSXSSXSAMXSMSXMMMAXMAXMAXXAMAXAMXSAAASMSMSMSASAMXAAASMXAXXXAAAAMMMMMSXAXAXXMMSMMMSMSXSAASAMXSMMMSS
+MMASMSMMXSSMSAMXAASAMSMMMMAXXASXMMXMASXXMAAMAMAMMXXAMXAXMASXSMSSSMSMMSAMSSMMXMMMMXXXAXAMASMMSMXXSMSMSSSMMMAMAMXXMMMASAMXAAAAMSAXMMMXMMMXAAAA
+XMAMXXAXAMMXMASMSMMXMAMSASAMXXAXASXMAMMASMMMAMXMXMMSSMMMSASAAAAAAXAAAMAMXAMAAMASXXMMSMXSAMXAMXXMAXAAXAAMSMXSASASXXMASMMSMMSSSMMMSAMXSXMSMMSS
+SMSSMSSMMSAXSAMMMAXXXSXSASMMMSMSMMAMMMMAMAASMSMSXAMAAAAAMXMMMMMXMMMSMSSMSAMSXSAMAMXAAAXMASMSSMMXMXMXMSMMAAMSAMASXXMASXXAXXAMAMXAXAXAXAMXMAMX
+AMAAAMXAMXAMMAMXSXMMMMAXXMAXMAAMASXMASMMSMMXAAAXAMMSSMMMSAMXXAMAAAXAXXAAMXMAMMASXAMMSSXSAMAMAMSSSXMSAXXSMMMMMMAMAMMXSMSSXSAXAMMMSMMMSAMXMASM
+MMSMMSMSMSXXMXMXAMMAAMMMMSXSSMSMAMASASAAAASMSMSSSMAMAXAXSASMSASXSSSMSSMMMSMMXSAMMSSMMAMAAMAMAAAAMAAMSMMMAAMAMMXSSSMSMMAMMSAMSSMMAMAAMAXSSMSX
+XAXXMAAAAMASMAMXMASXSSMAXMAXAAXMMMXMASMMXSMAAAXAAMXMMMAMSXMXSASAMXAMXMASXXAAAMASAAAXMASXMSMMSMMMMMMMAMASMXSASXXXXAXSAMASXMAMAAMSMSMSSMMMAAXM
+MMMMMMXMAMAAMASAMMMAMAXSXMMMMAMAXXMMMMXAMMMSMSMMMMSXMASMXAMASXMASXMMAMMMASMMSSMMMSXMXAMAASAAXASMXMAXMMAXAASMMMSSSMASAMASXSSMSXMAXXAAXXASMMMX
+AMASXMMSAMMSMMMASXMSSSMMXXAAXAMXMMSAMMMSXSAMXXAXAXMAMXMASXMAMAMAMMASXSASMXMXXAAXXAASXMMSMMMMMAMXAXMSXMMSMXMMAXAAAXMSAMAXAXAAXSSXSMSMMSMSXMAM
+XMASAAASASXMAMXAMXAAAMAMMSSSSMSMSAXASMAXXMMMMMMXMMSAMAXMXXMASMMSSXMXAMAMXMXXXSMMMMMMAXAMXMSXMSMSMSAAXAASMMASXSMSMMXXAMMXSXMMMMXAAAAAAAAMAXSA
+SMASXMMSAMXXMMASMMMMSMAMAXMAXXAAXSSXMMASMMAAAAMASMSASMSXMSMASAAXXMXMSMXMASMMMXAAMASMMMXSAMMSMAAAAAXMXMXXASAMXMXAMSMSSMSAAASMSSMSMXMSSSXSAMXS
+XMAXAXMMMMMMXMMMAXMAXMASXXSSSSMSMASXAMASASXSSMXAMAXAMAAXAAMXSMMMSMAAAAMSAMAAXSSMSASAXAASAMAAXSSMXMAXSMMMAMXSAXSASAAMMAMMXMMAAXAAMMMMAAAMMSXA
+SSXSAMAAAAASXMXSMMSSMSXSXMAMAAAMMAMSMMASMMAMAAMSMMMSSSMMSASASMAAAXSSMSMMASXXMAXXMASMMMMSSMSSMMAXXSMAAXMASXXMAXSXSMMMMMXMXSMMMMSMMAAMMMMMASXM
+MAMMXSMSMSMSAMXAAAAAXSAMXAMMSMMMMXMAMSMMMMSMAMAAAMAMAAXXMSMASMXXMMMAMAMSMMASMMMMSAMXSAMMAMXMAXXMMASXSSMXMASMXMMASAMSAMSAMXAAXXMASXSSXAXMASMX
+XMASAXXMXXXSAMXMMMSMMXMAMXSAMXSMAMMAXSAMXAXXXXXSSMAXSMMXXXMAMMSMXASAMMMMMMAMAAMXMAMXSAXXAMMSSMSASAMXMXMXMASXMAMAMAMSASXMASMMMAMAMAAAXMXMASAX
+SXMMXSAMXMMSAMSXSAMAMMXMSMAAAAMMASMSMSAMMMXMMSAMXXSXMXMMXMXSAAAAMMSAMMAAAMAXMXMSSSMASXMSXXAAAASMMXSXMASXMXSASXMAMSMMMMASMMSSMXMAMMMMMMAMAMXM
+XXMAXMAMMMAMAMXAMAMAMAAMAASXMASMXSXAASXMXSAAAXAXAMMASAMXSMAXMSSSSMMMSSSSSSXSMSMMAAMXMSXAXMSSMMMXXMAMSAMXXASXMAXAMXAMXMASMAAXAAXMMSMSAXXMMSSM
+AMMXXMAMXMSMMMMSMMSSMSXSAXMAMXAMXXXMMMXSASMSMSSMASXSMAMMSMASXXMAXXAAAXXAXXAAAXAMSMMAAMMMSXAAXMXMASMMXSXXMASMSSMMMSAMAMASMMSSSSXSAAAMMSMAAAMA
+SXSAMSAMMXMAAAAMAXAMMXMAXXMXSAAMXMASXMAMMSAMAAXSAMXAXSMAXMASAAMXMAMMSSMMMMSMMMSMAMMMAMXXMMSSMSMSASMSAMSXSAMMAAAXXSAMXMAXAXMAMAAMSMMMASMMMSSX
+MAMAXXMMXAXXXMSMSMMSSXMASMSAMXSMSAXXAMASXSAMMMXMMSMMMXXSXMXXXAMXAXXMAMXAAXXAAAMMMMSSMMSAMXAMAAAMAXAMAMXXAAMMMSMMXMASMMMSSMSAMMXMAXAMXSAXMXMM
+MXMSMSMSMMSXSAMXMAXAMMXMXXMAMAMAXSAMXSXSASXMASAAAAMXMXAMMSMMXMAXSAAMXSSMSSSMMMSAXAMAAAMAXMASMMSMSMSMSAMXSMMSMMMXAXAMAXAAAXXASXMSSSMSXSMMXAXA
+SXMXAAXMAMAMMAMAXAMXSASXMSXSASMMMXXMAMAMXMASXMSSMSAMXMSMAAAXXXMAMMMXMXMXAMAAAASAMSMSMMXMMSMMXSAAXAAAMAXAXAXSAMSSMSSSMMMMXSSMMAXAMXAAMMMSSMSS
+MAMMSMXSAMSMSAMXSMAAMMSAAXAXMXAXAMSAASAMMSAMMMMXMXMAMMAXSMSMASMMMXMAAMMMSSSMMXSXAXAXASASAMXMXMASMXMMSSMMSSMSAMAAAAAAXMASAMASMXMAMMXMXXAMAAAA
+SAMAASXMXMXASAXMAXAMXAXMMMMMXSXMSAASXMASAMASMAXMASXSSMMMMXAAXAAASMSMXSAAMXMASMMMXMAMASASXXAAAAXMXXXAAXAAXMASMMSMMMSMMMSMMSAMXAXMSSMMMMMSMMMM
+SASMMMMSSMMMMMSMXSXMMXXAAAAAAAASMMAMSMXMMSXMXMSMMXXAAMXAMSXSAXSMSAAAAMMXXASAMAASXMAMXMAMASXSMSMSSSMMSSMMSMAMMAXAAMAMAXMAMXAASMMMAMAAMAMXMMSM
+SXMAXSAAXAXXAXAAAXAXAXSSSSSMSSXXAXXSXSAMXMMSXMAXMASAMXSSXMAXAMMAMMMMMSAMSAMXXMMMSAMXAMXMMXMAXAAXXXAAXAAAXMAXMXSSMSASMMSAMSXMAAAMASMMSASMMAAX
+SAMMMMMSSSMSMSMMSSMMXMAMXAAXAXMSMMSMASMXAAMAASAXMAMXXAXAAMAMAMMAMXXMXMAXMXMXXSXMXMAMXSXXXXAMSMMMMSMMSMMMSSXSAAXAXMMMXASAMSXMXSMMMSAXSAMAMSMS
+SXSXMSAAAAAAASXXXAMASMSMMSMMMSXAAMAMMMSSXMMSAMASMSSMSMMMXMSSMMSSMAXSAMSMXAASMMMSAMXMXMMSASAMXXAAMXAAXXAXAAAMMMSAMXAXMXXAAMASAMASXMXMMAMXMXAS
+MAAXMMMSMMSMSMMMMAMASAAMMAXAXAXSSSMMSAMMSXAXSMAMAAMAXXMSMAAAAXAXMAMSASAMXMSAMAAXASXSMAAMAMAMAXMSASMMSSMMMSMSXAXXASMSSSSSMSAMASAAMMAMXAMSAMAM
+SMMSSMXXAXXMAAMSSMMMMXMSSMSSSSXMAAXAMAMAMMMMXMAMMMMSMMMAAMSMMMMSMSXSXMASXSMMSSXXMMAASMMSMSMMXSAMMMAMMXMAXXXAMASMMAXAAMAMAMXSXMAXSSXSAASMXMAM
+AAXAAMAMAMMSXSAAAXXAXXXXAMSAAMMMSMMSXMMSMSMAXASAMXSASASMMXMAXSXSAMAXMMXMMAAXAAMSSMSMMMAAAXMASMAMXXAXMASMSMXMASXMSMMMSMMMMMAXMASXMAMXMSXMASXS
+MMMSSMASMMMAMMMMSMSMSMMSAMMMMMAXXXAXASAXAAAXAMXAMXSASXSXXSSSMAAMAMMMASMMSSMMMXMAAMXMAMXSSXMXSMMMMSMXSAMAAAAXSXMXAXAXAXMASMMXSAAMMAMMSMAMMSXM
+XMAXAXMSASMAMSSMXAAAAAXXAMXAAXXAMXXSMMAMSMXSSXSXMMMMMAMMXAAAMMSMAMAAMAAMAXXMAXMSMMASMSAMMXMMMMMAXAAXMAXSASXSMAMSMSMSMMSASAAMXMXAMAMXASAMAMAS
+XMXXAMXMAXXAMASMMSMMSSMSSMSSSSMXXSXMXMAMAMXAMAMXMXMMXSASAMMMSAXXXXXSXMSMASMMSAMMAMASAMXSXAXAAAMSSMSMMMMXAAXAXXMAXAASXXMSSMMMAXSSXSSSMSXMASAM
+MSSSMSXMSMMXMXSXAMAAAAAXAAXXMAMSAMMSASASASXMMSMSMSMAAXSAMXMAMXSMSSMMMXMMMSAAXAASAMXXMAMMMXXMSXSAMXMMMSAMXMXMMMSXSMSMXXMASMASMMMAMAAMXMASAMAS
+AAAAAAXAAAASMMMMSMMMXMMSMMMSMAMMAMASASASASASAMXAAAMMMSAMXAMASMMAAXAASASAAMMMSMMSAMXSMSASXSSXAMMXMAMAXMMSASXSAAAXAMAMMXMXXMAAMAXAAMXMASMMASAM
+SMSMMMMASMMMAAMXMXSMXSAMXAAAMASMMMXSXMAMXSAMXMSMSMSAMXAXSXSASAMAMSSMSASMMMAXXXMXMMMAAMASAAAMMSXXXXMSMMXSXSASMSSSMSAXMXSMSMSSSSSMSXASAMAMAMAX
+XMMMMXMAMAXSMMSSMAAAAMASXMXMSAMAMXMMMMMXXMAXMASAXXSMSSXMSAMXSAMMMAAXMAMASXMSMSSMMAMMXMAMMMMSASXXSMAXAMASXMMMXXAXXMMMXAAXMAAAXMAXMXXSASMMSSSS
+XSAMXAMXSMMSMSAAMSMMMSAMASXAMASAMSAMXAAMXSSMXXMAMMMSMAMMXAXASAMXMSXMMAMAMAMAMAAASXSXAMXMAMXMASMMMSASAMAXASXXXMAMMMSAMMSMMMMSXXXMXXMMAMAAAAAX
+SSSSSXMXAMAXXMXMMMMSAMXSAMMMMXAMXXASXMSXMMMMMSMMSMSAMXAXXAAXMMSAXMMSSSSSSSMAMSSMMASXXSASASAMMMAAASMSXMASXMMXSMAMXAMXMAAAMAMXMSMMMMAMXMMXMMMM
+XMAXAMXXAMXSMXSSMSXSMMMMASAXXXMASMMMAXMASXMAAXAAAXMAMSSMMSMXAAMXXAAXAAAXAXXXXXAAMSMMMSASXMXMASMMMSAMXAMXMASMMMAXMXSASMSMMSSXAAXMASMMMXMAXAXX
+AASXMXAXSMMXAAXAAAXSASXSXSMXXAMXMAMSMMMAMAMMXSMMSMSAMMAAAXXSMMSMSMMMMMMMMMXSMSMMMMAAAMMMXSASAMAMAMAMAXXASAMAASMSMXMAXXAAAXAXSMXXAMAMAASXSMMS
+XXXMXMMXAAMSSXSMMMXSAMASAMAMSSMXMAMSASMASMMSAMXSAMXMASMMMSXMXMAAAAASMMAAXAAMAXSAMXSMXSASXSAMMXAMAXAMAASXSASMMMMAMXMMMSSMMXMMMXAMXSSMSMSMAMAX
+MMMAXAXXSAMXXXMASXAMAMAMMMAMMXAAXXXSAMSAMMASAMXMAMXMASMAAXAAASMSSSMSASMSXMXSSMXXSAXAXXAXAMAMSSSXMSSMXMSASAMXSXSAMAAAAXMXSAXAXMMSAAXAAAMXAMSS
+AAAMMSMMMASAXMMMAMXSXMASXSSSMMMMSMAMXMMMXMXSMMASAMSMMSXMMSMSMSAAAMXSMMXMASAAAMAMMMSSSMMMSSMMMAMAMAAMXAMMMAMAAASMSXSMSXSASMMSXMASMMMSMSMMXSMX
+MMSXAAAXSAMXMMAMAXAMXMXAMMMMMXAAAMXMMSAMXSAMAMASASAAXMMSAXXXAMMMMMAMXSASAMMSMMAMAMXAMXMAXAAXMAMMMSSSMMSXSXMMMMMAMAMAAAMASAMXAMASAXAAXXASMSAA
+SAXMSSXMMMMAAMAXSMMAAXMMAXAAMMMXMMAMXSASMMAMXMASMSMXMMAXXAMMMMXMAMXSAMXMASAXXSXMAMXMSAMXMXSMMMSMAMXXAXMASXXAXASAMAMMMSMAMAMXAMASMMSXMXAMAMXS
+AAXAAMXSAAMMSSMSAASXMSSXSSMSMSAMSMMXMXMAAMMSSMXSAMXSXMMMMAMAMSASASXMXSAMAMXMAXMASMSXSASMSMMAAAAMAMSSSMMAMXSASXSASASAAXMMSSMSMMASXMASXMSMSMAX
+MSMMMSASMXXAAAXMMMMAAAXMAXXAAMSMAASXMAMMSXAAAXAMXMASXAAMSASAXMAXAXXASMXMMSSMSMMXAAXAXAMAAASMMSSSXSAMXAMXMMSASXSMMXXMSSSXXAAAXMASAXAXXAAAAMXM
+SXASAMASASMMMXMXAMSMMMSMAMMASAMMSMMASAMXMMMSSMSSSMAMSSMXSXSMSMSMMMMMMMXAXAMXXAMSMSMSMSMSMMMSAAXXMMMSSMMSXAMAMAXMMXSXXAMXSMMMXXAMMAMXMXMXAMXA
+ASAMXMMMAMMAMMMXMXXMAXAMAXSAXASAMASMSASAXAXAAMXAAMMMXXMASMSAAAAXMXAXAXMAMXSASAMAAAAAMAAAXAASMMSSMAMMAAAXASMSMSMASMASMAMMMAAXSMAMSSMASXSMSAXS
+MMMMXSAMSMSASAAXSASXSSMSAXMXSAMASAMXSAMASMMMSMMMMSSSMAMAXXMSMSMMMSMSMMMSXXMASMMMSMSSMMSMSMMXASAMXASMSMMSAXMAAMSAMAXXMAMAMMAASXSMAXXXSAMAMXMX
+XMAMAMXSAASASMSMAAXMMAXMXSAMXMMXMXMAMAMXMAAAAAXXXXAASMMMSMMXXAXAXAAAAAAAAXMMMAAXXMAXXMAMXAMXXMASXMSAXMASASMMXMMXSSMMSSSSSXMXXAXMXXMXMAMXMSAM
+MAAMMMMMMXMAMMXXMSMSSXMSAMXAAMSXAAMAXAMXSSMSSSMSMMSMMSMAAAMAXMSSSMSMSMSSSMMAMMMXSMSXXMAMSAMSSMAMAXMXMMAMXMAXSAAAMAMXAMMAMXMMMXMSAMSASAMAMSAM
+AXSMSAXMMMMSMMXAXXAAASXXMASMMXAMSMXMSMSMXXAMAAAXXAAAXXMXXMMXSXAXMAMAXMXAXMXAMXMASXAAMSAMSAXAAMSSXMSAMMMXSSXMASMMSMMMMXMASAAASASMAXSAMAMXMSAM
+SMMASASMSAAAAMSMMMMMMMMAMXMSSXSMXXAMAXAASXXMSMMMMSMSMXXMSSMMAAMXXMMMAMXMSXSXSAMXSMMMMAMMSAMSSMMXMASASXSAXMAXXAMXAAMMAMSAMMSASXSMXMMMMSSMMSAM
+MAMAMAMASMSSXMAMAXXASASAXAAAMAMAMSMSAXMSMAAXXSAAXXAXXXMMAAASXXSAMXASAMMXXMAASAMXSASXMAMMXMXAMAXXMAMAAAMSMMSMAMSSSXSMAXMAXMMMMAMMAMXMAAAAMMXS
+MAMMMXMXMXXMASASMSSMMASASMSMMAMAMAMAMASAXSXMASXSMMAMASMMSSMMMAAMSSMSASAMXAMXMASXMXMASXSXAXMASXMXMXSMMXMAXMASAAMAXAMXSMMSMXAAAAMSXSAMMSSMMMAS
+SMSMMASAMMXMMSASXMASMAMAMAAXMASASMSAMXXAXMSAXMAMAMMMXMAAAXMAMXMAAXXXMMMXMSXMAXMXMAMMMXAXXMSAMXSSMMXXSXSMMSASMSMAMMMAMAAXMSMMMMAXXSXMXAMXAMAS
+MAAAXXSAXXAMXMAMXMAMMXMAMXMMMAMAXXMASXMSMXASXXASMMXMXSMMMSMMSMXMASMMSAXMSAMXMSSSSSMXSMSMSAMXSXAAAXXXMAMAMMMMMAMXSAMSSMMSAASXXSASMSASASXSXMAS
+MSSSMMSAMSXMXSMMSMMSAMXSMAXSXSMSMSMSAASASXAXXMASXSAMXXAMASAMXMAXMAMASAMSAMXSXAAMAMMXMAMAXXSXSMMXMMXMMSMAMAAMSMSXMMSXAXAMMMXSAXASAMAMMMAMSMXS
+XXAXMAMAMMASAAAAMAMXAMAASXSAMXAMAMXAMMSAMMXMXXAMXSMSMSXMASMMASMSMAMMMXMMAMAMMMSMAMSAMMMMMAMAXSMSMSXAMASASMSMMXMAMXMXMMMXSMXMMMMMMMXMXMAMAMAM
+SMMMASMSMSAMXSMMSAMSMMMXAMMAMMXMMMXMXXMMMMASXSMSAMMXMXMMMXAMXXAAMASXMAXSAMXSAMXMMSSXSASAMAMAMXXAAXMMSMSXSAXXMASAMASAMXSAAMXMAAASAMMMXSXSAXAM
+AAAAAMAXAMXSAXMAMXXXMAMSMXSAMMMMAMMXMSASXSASAAAMMSMSSMMAASMSSMSMSMSASAXSMSMSXXSAMXMASASXXAMMSMSMSMAAMXMMMXMASXSASASXSAMSMMAMASXSASMMAMMSASXS
+MMMSMMMMAMAMMXMSMXAAMAMXXXXAXAAXAXMAMMAMXMXSMMMMAAAMMASMXSAAXAXXAASAMSMMAAASMMSASAMXMAMMMMXAAXAAAMXMMAXMASXXMASMMMSAMXMAXSMSAMMSXMAXAXASAMXA
+SSMMXAAMAMSXSAAASXMMSMSMSMSMSXXMASMXMMSMSSMSXXAMSMSMSXMMMMMMMMMMMMMAMXXMMMSMAAXMAMSAMXMXASMSSSSSSSMASXXMASMXMMMAAXMXMXMAMAAMMMASAMAXMXAMAXMM
+XAASXSSXXMXASMSMSMXMAMAMXAAAMAXSASAMXXMASAMXAMXMAAXAMAAXSAAXXAAMXMSMMMXMASAXMMSMMAMXXAXMXSAXAAAAAAMAMMAXAMXXMXSMMSSMMAMXSMXMASMSAMMXSASXSMAM
+SMMMAAAASXMAMXMXXAAMASASMSMSMAXMXMXAMSMMMMXXMMASMSMAMSSMSSSMSMXSAAXMAMXSXSAMSAAAXSMMSASASMXAMXMMMSMSXSAMXAAXXAMAAAMAXASASXMSASASAMAAAXMAMXAM
+AXSMMMMMXAMMMASMSSXSASASAAAXMMMSAMXXAAAAAXAMXSXSXMAXAXXMXAMXMAAMMMMSAAAXMMAMMSSSXXAAAAMXXSAMXSXAXMAXAXXMSSMXSASMMMSSMMMAXAXMASAMXMMMSXMXMXMM
+MMMAXMXXXMMASASAAAMMMMXMXMMMAAAXAXAXSSSMSAMXAMXSAXSMMXSMMASAMMMXSAAAMMMXAMXMAXMAMXMMSXMXMAMXAASXXSAMXMMXMAMXMAMAAXAAAAMAMSMMAMXMXSAAMXMAXAMS
+XAXMMMMSXAAXMAMMMSMMASAXMMASXMMXXAXXXAXMAMSXXSASXMXMSAMXASAMSMAASMSXMASXMMSMSXSASMSMMXAXMXSMSMMXMXSAXMMXSAMXMXMSXMMSXMXSXXAMXMASASMMXAXMSMSA
+SSXXAAAMMMMSMSMAMAXSASASMSASAAASXSXSSSMAAAMMMMMSXAAXMASAMMAXSMMXSAMXMAXAMAAAMMMAXAAAMMMMMAXMAAMAMAAXMAAASASXMXAMMXMAMSAMMSMMSMMMASAMSXXXAXXM
+MXAXSSXSASASAAMXSMXMASASAMASMMMSAMAMAMXXMSMAMAASXSSSXAMAXMMMSASAMMMAMMSMMSMMSAMAMSSMAAAAMSSMSAMAMMSXSAMMSSMAMSASAXMAMMASAXAAAAXMAMAMAASMSMSX
+MMMMXAXSASAMXMMAAMAMXMAMXMXMASXMXMAMAMXXMAMXXMSXMXAXMASXMSAASXMASXSMMAAMXMAASXMXMXAXSSSMXAXMMXXAMXAASXMAMASAMMAAXSMSMMMMXXMSSSMMXXXMMSMAMAMM
+XAXSMSMMMMMMMMMSMSMSAMAMAXAMXSAMMSMMXSAXSASXXSMXSMMMSXSAAAMMSAMAMXMAMSXSAMMAMMMXMSSMAMXMMSMMMASXSMMMMSSXSAMXSMSMSMAXMAMASXMAMAMMMSMXMXMXMAMA
+MXSXAAAAXAMASMAMMXXMAXAMXSMXASAMAAAXAXXAMAXAMXAAMAAAXMMMMMSAXXMMMMMAMXAMXXXMMASAAXXXMSMXAXAAMAMAAAMAAAMXMAMXSXAXAMMMSMSAAXMASXAAAAAAXAMASASM
+MXSMSMSMSXSASMMSAXSXSMSMMMMAASAMSSSMMSSMMMMSSMMMSSMSSMAAAXMMXMSAAMSMSMSMMMSASASAMXSMXMMMAMSMSASMSMMMMMXASMMAMAMSSMSAAAMAMXSAMXXMSSMMSMSASXSM
+XASMMMMXXAMASAMMMMSAXAXXAAXXXSAMAMAXAAAXXAAMAMXMXAXXAMSSMSASAAMSXMAAAXAAAMAAMAMAMASAAXXXXXXXMASAAAXXAAAXAMMSMSXMXAMMSSSMXMMASMSMXMXMAXMASAMM
+MMSAMAXMMXMAMAMMMAMMMMMSMSSMXSAMMSMMMSSMSMSSXMAMMMMSAMXMASAMMSMXXSMSMSSSMXMSMMXSMXXSASMXSMXAMXMMSSMSMSSMASAMXXASMSMXAAAXAASMSAAMAMSSMSMMMMMA
+SAMAMMXAMMMMSAMAMXXAAAXAXAAXAXXMXAXSAAAAXAAMASASAMXMAXAAAMAMAAXMXMAXXXAMXXXXXMAXMSMMSAMXAMASMMAXAAXMAAXMAMXSMSAMAASXMAMMMXMAMMMMASAAXSAMXXXM
+MASXMXSSXMAMXMSSSMSSSSSMSMSMMSSSXMAMMSSMMMMSMSAMAMXXASMSSSSMSXSAMMSMSMAMXMASXMASASAMXMSXMSAXAXXMSSMMMMMSSXXXAMMMMMAXXAXXSAMAMAMSXMXXMMSAMXMX
+SAMXAMXAXSASMMAAAAXAAAAAXXAAXAXMAMAMMAXXMXXXAMAMSMSMAAAAXXAAAAMXMXAAAXAMSAMSAMXMXMAXSXMXXMASAMXMXAAAAAAMMMMMSMXAMXMASAMXXAXAMAXAMXSSSMXXXAXM
+MXMXMMMSMSASAMXSMSMMMSMMMSSSMMSSXMAMSAMSAMXMMMAXAAAMMMMMMSMMMSMXSMMSMXXMSAXSXSAMXSXMAAMSAMXMXSAMAMSSSMMMAAMAXMSMXMXMXAMXMXMXXSMMMMXAASAMSMSA
+XMSSMSXXASAMXAMXAAXXAXMAMAMXMXXAXMAXMASAASXMXSMSMSMXAAXMASMAMAMXMAXXAAXMSMMSAMMXMASAMXMAAXMAMMAXXXAMAASXSSSMXMASXSMXSSMMASMSAAXSAMMSMMXMAMAX
+MXAAMXAMAMXMMXXMMMXSXMXASAMASXSMXSMMMMMMXMAMAMMAMAAXSSSMSXMAMAXXMSMSSXSAXMAMAMAAXXSMXXSMSMSAAMSMSASMSMMAAAXAASAXMASAXAAXMAAMMMMXAMMAMMXSMSMS
+MMSXMMSMAMXMASXMASAMXSMMMAXAXXXMASAXAAAXXSAMXMSASMSMMAAXAMSSSMSSMAAXAAMMMMMSAMXSSMMMSMSAXASMMMAAXAMAXAMXMASMMMXMMMMMSSMMXMMMXSMMSMSAMMAMMAMS
+MAXAMAMSAMXMAXASAMASASASMXMSMMXMASASXSXMXSMSMXSXXAMXMMMMMMXAAXAASMSMMMMASXASASAXAASASAMAMAMAXXMMMAMMSAMXMAXMXXAMSXMAAAXMASXMAXMAXAMMSMASXSXS
+MASAMAMXMMXMAXXMASXMASAMXSAXASXMMSAMAMMSMMMSMXMASMMAXAAXXAMMMMSXMXAAAASXXMASAMASMMMASMMXMSMXMASXSXXAXAAXMXSSMSMXAAXMSMMXAMAMXSMAMAMAAXXMMXAM
+MMXAMSMSAMXMMSMSXMAMXMXMXMAXMMMSAMAMXSAAAAAMAMXAAASMSSMSSMAAXMXASXMXSXSXSSMXMAXMXAMXMAMMMAXAMXAASMMMSSMXSAMXAAMXSXMMAASMSSSMMMMMSXMSSXSAAMAM
+ASXXMAASXMAXXAASMSMMMMAMXMSMAMXMASXMAMXSSMSXMMXXSMMMAXAMXXSXSAXMMAXAMAMXAAXXMMMMSSMAXAMSMMSMSMMSMMXAAAAAAAXMSMXXAAMSAMXAXMXAAAAAAAXXAMSMMSAM
+ASAMXMXMASASAMMMAAXAAMASAAAMAMXSAMAMXSMMXXMASXMAXAAMXSMASXMXMMXSSSMXMASMXSMXSAMXAASMXSMSAXAAAMXMAXMMMSMSSSMAMAMSSMMAMXMSSMSXMSMSSMMMAXSAMXMM
+XMASXXMSMMAXMXXMSMSSXSASMSMXSSMMSSXMMSASXSSMMAAAMSSMMXMXSAMMMXMXAXAASXXMMAMXSASMXMMXAXAXMMMSXSASMMMSAMXAAMAAMAMMAXXSXSMASAAAMXMMAMXSAMXAMSMX
+MSAMXAMSXMAMXSMAMXAAMMMMXAXAXAMXAMASASMMAXAASMXXXAMXSAMAMAMAXAMMAMSMXMAMSMMMSMMXSXAASMSMMXXMXMASAAAMAXMMSMSMXAMSXMAMMXMAMMSMMAXSAMXAXMXMMASA
+XMAXMSMMAMSAMSMAMMMSMMMSSSSMSAMMMSAMMSXMMMSMMXMSMMSAMAMAXASXSSSMAXAXMMMMAAXASAMAAMSMAAXSMAAAMMMMXMSSSMSAMXAMXSXSASAMXSMSMXXASAMSASXMASAASASX
+MSSMMXASXMXMMXMASXAXAXAXAAAASAMMXMASXMXXSAXAMXAXAAMASXSXSXSMAAXXSXMXSAASXSMXSAMXMAASMSMMSSMSAAMAMXXAXAXASMXSAMAMAMASXSAXSASMMXXXXMAMAMMXMXSA
+MAMAMSMMAXAMSSSMSMMMAMXMMMMMMXMXXSXXAAAMMMMAMMMSMMSAMXAXAMXMSMSXMAXAXSXSAXMAXAMXXSXAXMAMXMAXXSSMSSMMMMMXMXAMXSAMSMXMXMAMMXMXXMASMXMMASXMMXXM
+MAMAMAASXMSAAAAASASAAAXMXXXMAXSXMMMSXMXSASMMMAAAAXXAAMMMSXMMAAXASMMSMMMMMMSSMAMSXMSMXSAMXMAMXXAAAAAMSXMASMMXAMAMXXXSXMAMXASXSASAMXSMMXAAAXSX
+SSSSMSMMXAMXMXMMSAMMSXSMSMMXSAMXAAAXMAMSASXSXMSSSMMXMASAMASXSSMMMXAXXAAASXAAMAMXSAAXAMASAMXSXSMMSSMMMASASAXAXSAMXMAAAMSSMASAAMXAMXMASXMMMXAX
+XAAMAXSMMSMMMSMMMMMMXAAMAMSAXASXSMXSASXMMMXSXMMMMAXAXMMASAMXAAMXMMMSSXSSSMSMMXAMMSMSXSAMXSXMASXAAAAXSAMXSXMMMAMXMAASXMAAMAMMMASMMMSAMAMSMMMX
+MXMMAMAMAAAXSAMMAMAAMMXXMXMASAMMXMAXMMAXMAMMASXSSXSASXSMMMSMMXMAMAMXXAMAXXXSSXASAMXAMXMSXXAMAMMSMSMMMASXMASXXXXMMSAMXMSMMASXMASXAAMASMXAASXM
+MMXMXSAMSSSMSAMSASMSSMSASXMAMAMXSXSMAMMASAXMAMAMAAMAMAASAMXXSMSXSMSAMXMXMSMAMSXMASXMMMMMXMXMAXXXAMMMXAXXSAMMMMXMAMAXXXXASXSAXSMMMXSAMXMMSMAS
+ASAMXMAXAAAXMAMSASXMAAMAAXMAXAMASAMXAAMASMSMASAMXMMSMMMMMSAXXAMAMAMASAMAMAMAMXXSMMXAAXAXMASMSMAMMMAAMMSXMXXAAXAMMSMMMXSAMAMMMMAAAASMMMMSAMAM
+XSMSASMMXSMMMSMMAMXSMXMXSXXSSXMAMAMSMSMAMAAMXMMAXMXAXXXAXMAXMSMXSASMMXSMSASMSMASMASMMXAMSXXAAMAMMSXSAMSXMSSSSSMSAAAAAXMAMSMSASXMMMSAAASMMMSS
+AXASMSXMAXMXXASMXMMXXXSAMMXMAMMASMMSAAMAMSMXSAMXSMSMMXMASMXMSAMXSASAAXXASASAAMAMMAXASASXXAMSMSMXMSAMMAMMXAAMMAASMSSMMXMAMXASAXXMSASXMXSAAAXM
+SMMMXXXXSSXSXMASMAMMMXMASASMAMSAMAAMMMMXMMAMMSMAAXMXSXSSXMASXASMMMMMMXMMMMMMMMXSMXSAMAMAMXMMMMXAAMMMMAMAMMSMSMMMAMXAXSSMSMMMSMAMSAMXMASMMMSS
+MASXSSMAMMAMAXAXMAMAMASXMMSMAMMSMMXSXAMXAMAMAAMMXMASAMXXMMMXMXMAMXSASXASAMXMXSASAMMAMAMAMAMXAASMSMSXMAXMMMMAXMAMAMMMMMAAXXAAAMXMMMMXSAMASAMX
+XSMAXAMAXMSMAMMSSSMXSASXMASXMSAMXSMMXMMMMSMMXSSMSSMAMASMMASXSMSAMXSAMSMMXSMMAMMMAMMMSXSASXSSMMSXAASMSMMAAAMMMXMXMXSAASMMMSMSXXAAAMSMMXSAMXSA
+XMMMMXSMSMXAMSXMAAAMMAMAMXSMSMMMAMAMXSXMAAAMSMXMAAXXXXMASAXXAASASAMXMMMSAMAMXXXXAMAMSASASAXXXAMXMSMAAAMSMMSMSAAASASAMSAAXXAAXSSSMSASXXMAXSAM
+AMASAAMMAMAMXMAMMMMXAAMSAMXXAXXMAXSMAMAMSMSMAASMSSMSAXSMMSSMMMSAMASXSMASMMAMMXSSXSASMAMAMMMSMSSXMAMMMSMMAXMASMSMSAMXMSXMMMSMAXMAMSAMMMSASAMX
+XSAMMAXSASASAMAMXXXMMMMMASXSSSMXSXMMMMAMMSMMMXMXMAAAAMXMAXXAXXSMSXMAAMAMXSSMSAAMAMMSMSMSMMAMAAAAASAMAXASXMMXMXAXMXMAXXAXSAMXXAMSMMAMAAXMAXSS
+MMASXMASAMAMASXSSMMAXMXSMMAAAAAAMASXSSSSXAMXSAMXSMSMMAAMXXAXMMSAAXMSMMASXXAAMMSMAMSMMAAAMMAMMMSMMMAMXMAMMXSAMXSSMXSMSSSMMASXXAMAXSXSMMSAMXXM
+MSMMMSMMAMMMAMAAXAMSMSAMAMXMSMMMSAMAMAMAMASAMXMXMXXMSMMSMMSMSAMAMXMAXSAMXMMMMAXMMMAAXMSMXSAXAXXMXMXMAMSXMASASAMXMASAAMAASXMMSSSSMSAMXMSXXMSX
+XAMAAAXXXASASMMMMXMAAMAMMMMMAASXMAMXMMMAMXMASMMAMMMXAMSAMXAAMMMAXAXMMMASAXXASXSASXSSMXAMXSASXSSMSSMMXSMAMASAMXSAMMMMMSSMMSXAXXAAMXMASXMXAAMX
+SASMSSSXMAAAXAAXXASXSSSMAAASMSMASMMMSASXSXMXXASMSAMMSXSASMMSMMSSSMSXXXMAXMXASAMAMAXAMXAMAMAMXAAXAAAMMAXXMASXMAMXSSXSXAXAXSMSSMSMMSXASAMXMASM
+AXXAMAMMMXMSMSMMXMXAXAMXSMMSXAMMMAAAXASASMSSSMMXSXMAXXXXMMXMAMXAMAAMXMAAASMMMAMSMSAMXXAMXSASMSMMSSMMSASMMASMMXMSMXAMMMSXMXAMXMASXAMXSAMXSASA
+AMMMMAMAMMXMAXAMSXMSMSMMMMAXXMSSSMMSSXMXMASAMSAMXMMSSSSMMSAMAMMAMXMSAMAMAXAMMXMXXXMMSSMSXSASAASAMXMAAAMAAXMXSAMSAMXMAXMMSMMMAXAMMMAMSMMXMASM
+XMAAMASAMMAMAMAMAMXMAMXAMMAMAXXAMSAMMMMXMXMAMSMSAMXMAXAAASXSAXSAMAXSASASASXMXSSMMMSAAAAXXMMSXXSMMMMSSSMXSSMAMASXAMXSSSXAAAASMMMSAXSAMXMASAMX
+MMSSSMSMSMXMASAMMXAMAMMXSXXAASMAMMXMSAMSSXSAMXAAMXXSSSMMMSAMAXMASXMXMSASAAAMMSAAMAMMSMXMXMAXMMXXSXAAAAXXXAMAMXMXXMXMMAMSSMMMXSAAMMXXMMSMSXMX
+AXAAMXSAAMXMASXSXMXSAMXXMMMXMXMAMMMMMSAAXMASAMXMASXAXAXMXMXMSMSXMMMXXXAMXMASXSMMMSAMXMASMMXSAASAMMSSSMMMSXMXXMAMXMASXAXAMXSXXMAXMMMSMMAMMASX
+SAMAMAMSMMAMXSXMASAMXSXMSASMMXSSSMAXAMMAMXSAMXXXXSAMXMXAAMAXMAMAAASMSXSAMSAMMSMSXMASASMSAXMAMSMAXAXMMXAMMASAXMAMXSASMMXMSASAXSMSMSMAAMXXSAMA
+AMXXMMMAXSSSXMMMAMMSMAAASMMAMAMMAMSSXXXAMXMASMAMMMAXAXMSASAXSAMMSMSAMXXAMMMSAXAXXMASAMAXMSXMMXMMMSSMXXMAMSMASMMMMMASASAXMASAXXAAAMSSSMSMMASM
+MXMASMSMMXMAXAAXXSXAMMXMSASMMAXXAMXAMMMMMXSAMMAMXSASXSAXMAMXSAMXMXMAMMMAMAAMXMSMASAMMMSMXMAXSXXMAMAXMASMSAMAMXAAASXMAMXXMXMXSAMMSMAXMAAAAAMX
+AAAMMAAXMSMMMSSMMMXSSMXXXMMXSASMSSSMAAAAXMMASXXSAXXSMXMXMSMMXSMAXASAMAXXMMMSAMMAXMASMMMAAXSMSAMMSSMMAMAXAAMASMSSXSAMSMMMSMSAXAMAXMSMMSMMMSSX
+SXXXMSMXMMASMXMMMAAMAAMSSMMAMMMAMAAMXSXXMAMAMMAMXMAXAXMSMMAMSMMXSMSXSMMAMXXAXMXXXSMMMAMXSXXAXMXMXAXXSXXXSXMXXMMMXMXMAAXSAAMXXAMXMAXAXAAXSMMM
+AMMSMMXSASAMMASMMMSXMMMAAAMASAMSMSMMAXXMMSMMAMSMAAMXSXMAXMAMAAMXMMMMAMMMMMSMMMMMMMSASMSAMMMSMXMMSMMMMMMMXMASMSSMSSMSSSMSMSSMMSSSSSSSMMSMXAAS
+MAXMAAASXMXSMAMXAAMXSAMSSMMXMAXXAXXMASASAAAMSAMXXSXAAAAMXSASMSMAAAXMASAAAAAAAXAXAAMMSAMASAMASASAAAAAAAAMASAMXAAAAMMAMAAXMAAAMAAXAXAAXAAMSMMS
+SSXSMMMSXXASMMSSMXSASAXMMMXSAMXMSMMMSSMMSSSMXMASAAMXSMMXMAXMXXMSSMXSASMSMSSSMSXSMXMMMAMSMXSXSSMSSSXSSSSSMSAXMSMMMSMASMMMMSSMMMSMXMAMMMSXXAMX
diff --git a/2024/04a/example.txt b/2024/04a/example.txt
new file mode 100644
index 0000000..1f4eda2
--- /dev/null
+++ b/2024/04a/example.txt
@@ -0,0 +1,10 @@
+MMMSXXMASM
+MSAMXMSMSA
+AMXSXMAAMM
+MSAMASMSMX
+XMASAMXAMM
+XXAMMXXAMA
+SMSMSASXSS
+SAXAMASAAA
+MAMMMXMMMM
+MXMXAXMASX
diff --git a/2024/04a/run.rb b/2024/04a/run.rb
new file mode 100755
index 0000000..22118c2
--- /dev/null
+++ b/2024/04a/run.rb
@@ -0,0 +1,84 @@
+#!/usr/bin/env ruby
+
+@letters = {}
+data = File.read("data.txt")
+data = data.split("\n")
+data = data.map(&:chars)
+data.each_with_index do |row, y|
+ row.each_with_index do |letter, x|
+ @letters[[x,y]] = letter
+ end
+end
+PREFIX = "X"
+SUFIX = %w(M A S)
+
+found = 0
+
+def find_with_vector(start_x, start_y, x, y)
+ word = (1..3).map do |iter|
+
+ @letters[[start_x + (iter * x), start_y + (iter * y)]]
+ end
+
+ true if word.to_a == SUFIX
+end
+
+potential_starts = @letters.select{|key, val| val == PREFIX }
+potential_starts.each do |key, value|
+
+ found+= 1 if find_with_vector(key[0], key[1], 0, 1)
+ found+= 1 if find_with_vector(key[0], key[1], 1, 0)
+
+ found+= 1 if find_with_vector(key[0], key[1], 0, -1)
+ found+= 1 if find_with_vector(key[0], key[1], -1, 0)
+
+ found+= 1 if find_with_vector(key[0], key[1], 1, 1)
+ found+= 1 if find_with_vector(key[0], key[1], -1, 1)
+ found+= 1 if find_with_vector(key[0], key[1], 1, -1)
+ found+= 1 if find_with_vector(key[0], key[1], -1, -1)
+end
+
+p found
+
+
+
+exit
+
+def find_with_vector(start_y, start_x, y, x)
+ word = (1..3).map do |offset|
+ tested_row = @data[ start_x + offset* x ]
+ return false unless tested_row
+
+ letter = tested_row[ start_y + offset * y ]
+ return unless SUFIX.include? letter
+
+ letter
+ end
+
+ p [word, start_x, start_y, x, y] if word == SUFIX
+ true if word == SUFIX
+
+
+end
+
+found_count = 0
+@data.each_with_index do |row, y|
+ row.each_with_index do |letter, x|
+ next unless letter == "X"
+
+ found_count += 1 if find_with_vector(x,y, 0, 1)
+ found_count += 1 if find_with_vector(x,y, 1, 0)
+
+ found_count += 1 if find_with_vector(x,y, 0, -1)
+ found_count += 1 if find_with_vector(x,y, -1, 0)
+
+ found_count += 1 if find_with_vector(x,y, 1, 1)
+ found_count += 1 if find_with_vector(x,y, -1, 1)
+ found_count += 1 if find_with_vector(x,y, 1, -1)
+ found_count += 1 if find_with_vector(x,y, -1, -1)
+
+
+ end
+end
+
+p found_count
diff --git a/2024/04b/data.txt b/2024/04b/data.txt
new file mode 100644
index 0000000..ebe691d
--- /dev/null
+++ b/2024/04b/data.txt
@@ -0,0 +1,140 @@
+XMMAMXMMSMXMMXMSMAXMAXSXMXXMXSMXXASMXSXMXMXMXMXXXXMASMSMAMMMSSSMASXMXSASXMXAAXXMMXAMXSXMASXAXMAMXXXMSAMSAMXXXMAXSAMXSAMMXXXSSMSMSSXMSMAAXXMX
+SXSAXXXXXXAMAMXAXXMMSMSAMXAMAMMMMXMXAMXMAMASAMMSXMASXAAMAXMAAAAXAMXMMMASMMMMMMSMMXAMASASMSMSMSMSMSASAAMSAMXMASAAMSXAMAMXSMMXAAXAAAMSASMXMASX
+SXSMSMXAMSSMMASXSSMMAAXAMXAMMXAAMASMMSAXMXAXAXAXMASXMSMSASMMMXMMMSAMAMXMAXMAAAMAMSXMAXMMAMAAXAAAXMMMMMXSAMSSMMXSXAMMSMMMXAASMMMMMMMSASXAAXXA
+SAXAAAMAAAXAXMAMMMAMMSXMMSSMSMSMSASAAMXMSMSMSMSMSSMXAAXMASMASAXAAMXSASMXMASXSMMAMMAMASMMSMSMSMSMMMSSXMASAMAMXMAXMMMMAAAXMSMXXAXMAXXMAMXXMAXX
+MMMSMSAXXASMMSASMSAMXXAAMAMASMMXMASMMSSMSAMAMAXASAMXSXXMXMXASMSMSSMSXXMAMXMAMMSMSXXMMSAAXMAXMAMXAMASAMXSSMXSAMXXAXMSXSSXXMAXSMSSXXXMSMSMSSSS
+SAAXMAXSMXMXMSAMXSASASMMMMMAMASMMAMAXSXAMMMMMAMMMXMAMMSMMMMMMAXMXAMXAMSMMAMAMAMASMXXXMMMMSMMSXSXSMASXMXMAXXSASMMXSMMAMAXSMMMSAXMMSXAXAAAXAAM
+SMSSMXMXMMAMXMAMAXXMAXSAMXMASXMAMASMMSMMMAAXMAMXMASMSAAAAXASXSSMSSMMXMAAXSSMSMMAMAMASXSAXAXXAASAMMMMMSMSMMMXAAAMASAMMMAMXAXAMMMAASMMMSMSMMMM
+XXXMXAMAXAAMAMMXSXXMAMSSMMSXXAMXMMSXAXAXASXSMSAMXXXAMXSSMSASMMAAAAXAXMXSAAAXSAMXSAMXMASASMSMMSMAMSXAAMAAAAXXXXAMXSAMXMMSSMMSSXMMMMAAAXMMXMAS
+SMMMMMSMSXXXXSAAMAMMSMXXXAXMSMSAMXMMMMSMXXMMXMASMMMMMAXAXMXMASXMMSMMMSAMXMAMMAMASAMXMAMAMXAXXAMMMMXMMXXSSMSMMSMMXSAMXMAMXMAMAXMXXXXMXXAMXSAS
+MAAAAMAMXAXSMMMXSAMAMMMSMXSAAASASAMASAMXAMAXMAXAMSAASAMXXMASMMASMXMXAAAMXXAAXAMMSXMSMMXAMXSXMASAASMSAAMAMMAMAAAAAMAXMMMXMMSSSMMMMSXAMMSMMMAS
+XSSXXXXSMSMAAXAMSAMMSASXAXMMMAMASXXAMSSMSSSMSMSAMMSMSASXMSASASAMXAMMXSSMXMMSSSSXMAXMAMSXSAXAMASMXMAMMSAAMSAMMXMMMSAMSMMAAXAAMMSAAAMXMAMASMMM
+XMAXSSMSAMSXMMSXSXMASXSMSMMMXXMASMSSMXSAAAAAAMMAMAMMSASMMMASAMXMMASAAMXMSAAMXAXMMMSMAMAMMAXXMAXMSMMMAXXMMSASMMSAXAMSAASMSMMSMAMMMMSAMMSAMAXS
+MMAMMAAMAMAXSAMXXXXXMMSMMAAAAXSAMAAAAAMMMXMMMXXAMXSAMXMAAMMMMMMSSSXMASAMXSASMSMSAAAXAMAAMMMSSXSAMSXMMMSSMSAMAASXMASXMXMXAXAXMXMSXMSASAMXSXMM
+ASXMXAMMXMXXMASMSXSASAMASXMMSXXAMMMSMXMSSSMSXSSXSAMXSMSXMMMAXMAXMAXXAMAXAMXSAAASMSMSMSASAMXAAASMXAXXXAAAAMMMMMSXAXAXXMMSMMMSMSXSAASAMXSMMMSS
+MMASMSMMXSSMSAMXAASAMSMMMMAXXASXMMXMASXXMAAMAMAMMXXAMXAXMASXSMSSSMSMMSAMSSMMXMMMMXXXAXAMASMMSMXXSMSMSSSMMMAMAMXXMMMASAMXAAAAMSAXMMMXMMMXAAAA
+XMAMXXAXAMMXMASMSMMXMAMSASAMXXAXASXMAMMASMMMAMXMXMMSSMMMSASAAAAAAXAAAMAMXAMAAMASXXMMSMXSAMXAMXXMAXAAXAAMSMXSASASXXMASMMSMMSSSMMMSAMXSXMSMMSS
+SMSSMSSMMSAXSAMMMAXXXSXSASMMMSMSMMAMMMMAMAASMSMSXAMAAAAAMXMMMMMXMMMSMSSMSAMSXSAMAMXAAAXMASMSSMMXMXMXMSMMAAMSAMASXXMASXXAXXAMAMXAXAXAXAMXMAMX
+AMAAAMXAMXAMMAMXSXMMMMAXXMAXMAAMASXMASMMSMMXAAAXAMMSSMMMSAMXXAMAAAXAXXAAMXMAMMASXAMMSSXSAMAMAMSSSXMSAXXSMMMMMMAMAMMXSMSSXSAXAMMMSMMMSAMXMASM
+MMSMMSMSMSXXMXMXAMMAAMMMMSXSSMSMAMASASAAAASMSMSSSMAMAXAXSASMSASXSSSMSSMMMSMMXSAMMSSMMAMAAMAMAAAAMAAMSMMMAAMAMMXSSSMSMMAMMSAMSSMMAMAAMAXSSMSX
+XAXXMAAAAMASMAMXMASXSSMAXMAXAAXMMMXMASMMXSMAAAXAAMXMMMAMSXMXSASAMXAMXMASXXAAAMASAAAXMASXMSMMSMMMMMMMAMASMXSASXXXXAXSAMASXMAMAAMSMSMSSMMMAAXM
+MMMMMMXMAMAAMASAMMMAMAXSXMMMMAMAXXMMMMXAMMMSMSMMMMSXMASMXAMASXMASXMMAMMMASMMSSMMMSXMXAMAASAAXASMXMAXMMAXAASMMMSSSMASAMASXSSMSXMAXXAAXXASMMMX
+AMASXMMSAMMSMMMASXMSSSMMXXAAXAMXMMSAMMMSXSAMXXAXAXMAMXMASXMAMAMAMMASXSASMXMXXAAXXAASXMMSMMMMMAMXAXMSXMMSMXMMAXAAAXMSAMAXAXAAXSSXSMSMMSMSXMAM
+XMASAAASASXMAMXAMXAAAMAMMSSSSMSMSAXASMAXXMMMMMMXMMSAMAXMXXMASMMSSXMXAMAMXMXXXSMMMMMMAXAMXMSXMSMSMSAAXAASMMASXSMSMMXXAMMXSXMMMMXAAAAAAAAMAXSA
+SMASXMMSAMXXMMASMMMMSMAMAXMAXXAAXSSXMMASMMAAAAMASMSASMSXMSMASAAXXMXMSMXMASMMMXAAMASMMMXSAMMSMAAAAAXMXMXXASAMXMXAMSMSSMSAAASMSSMSMXMSSSXSAMXS
+XMAXAXMMMMMMXMMMAXMAXMASXXSSSSMSMASXAMASASXSSMXAMAXAMAAXAAMXSMMMSMAAAAMSAMAAXSSMSASAXAASAMAAXSSMXMAXSMMMAMXSAXSASAAMMAMMXMMAAXAAMMMMAAAMMSXA
+SSXSAMAAAAASXMXSMMSSMSXSXMAMAAAMMAMSMMASMMAMAAMSMMMSSSMMSASASMAAAXSSMSMMASXXMAXXMASMMMMSSMSSMMAXXSMAAXMASXXMAXSXSMMMMMXMXSMMMMSMMAAMMMMMASXM
+MAMMXSMSMSMSAMXAAAAAXSAMXAMMSMMMMXMAMSMMMMSMAMAAAMAMAAXXMSMASMXXMMMAMAMSMMASMMMMSAMXSAMMAMXMAXXMMASXSSMXMASMXMMASAMSAMSAMXAAXXMASXSSXAXMASMX
+XMASAXXMXXXSAMXMMMSMMXMAMXSAMXSMAMMAXSAMXAXXXXXSSMAXSMMXXXMAMMSMXASAMMMMMMAMAAMXMAMXSAXXAMMSSMSASAMXMXMXMASXMAMAMAMSASXMASMMMAMAMAAAXMXMASAX
+SXMMXSAMXMMSAMSXSAMAMMXMSMAAAAMMASMSMSAMMMXMMSAMXXSXMXMMXMXSAAAAMMSAMMAAAMAXMXMSSSMASXMSXXAAAASMMXSXMASXMXSASXMAMSMMMMASMMSSMXMAMMMMMMAMAMXM
+XXMAXMAMMMAMAMXAMAMAMAAMAASXMASMXSXAASXMXSAAAXAXAMMASAMXSMAXMSSSSMMMSSSSSSXSMSMMAAMXMSXAXMSSMMMXXMAMSAMXXASXMAXAMXAMXMASMAAXAAXMMSMSAXXMMSSM
+AMMXXMAMXMSMMMMSMMSSMSXSAXMAMXAMXXXMMMXSASMSMSSMASXSMAMMSMASXXMAXXAAAXXAXXAAAXAMSMMAAMMMSXAAXMXMASMMXSXXMASMSSMMMSAMAMASMMSSSSXSAAAMMSMAAAMA
+SXSAMSAMMXMAAAAMAXAMMXMAXXMXSAAMXMASXMAMMSAMAAXSAMXAXSMAXMASAAMXMAMMSSMMMMSMMMSMAMMMAMXXMMSSMSMSASMSAMSXSAMMAAAXXSAMXMAXAXMAMAAMSMMMASMMMSSX
+MAMAXXMMXAXXXMSMSMMSSXMASMSAMXSMSAXXAMASXSAMMMXMMSMMMXXSXMXXXAMXAXXMAMXAAXXAAAMMMMSSMMSAMXAMAAAMAXAMAMXXAAMMMSMMXMASMMMSSMSAMMXMAXAMXSAXMXMM
+MXMSMSMSMMSXSAMXMAXAMMXMXXMAMAMAXSAMXSXSASXMASAAAAMXMXAMMSMMXMAXSAAMXSSMSSSMMMSAXAMAAAMAXMASMMSMSMSMSAMXSMMSMMMXAXAMAXAAAXXASXMSSSMSXSMMXAXA
+SXMXAAXMAMAMMAMAXAMXSASXMSXSASMMMXXMAMAMXMASXMSSMSAMXMSMAAAXXXMAMMMXMXMXAMAAAASAMSMSMMXMMSMMXSAAXAAAMAXAXAXSAMSSMSSSMMMMXSSMMAXAMXAAMMMSSMSS
+MAMMSMXSAMSMSAMXSMAAMMSAAXAXMXAXAMSAASAMMSAMMMMXMXMAMMAXSMSMASMMMXMAAMMMSSSMMXSXAXAXASASAMXMXMASMXMMSSMMSSMSAMAAAAAAXMASAMASMXMAMMXMXXAMAAAA
+SAMAASXMXMXASAXMAXAMXAXMMMMMXSXMSAASXMASAMASMAXMASXSSMMMMXAAXAAASMSMXSAAMXMASMMMXMAMASASXXAAAAXMXXXAAXAAXMASMMSMMMSMMMSMMSAMXAXMSSMMMMMSMMMM
+SASMMMMSSMMMMMSMXSXMMXXAAAAAAAASMMAMSMXMMSXMXMSMMXXAAMXAMSXSAXSMSAAAAMMXXASAMAASXMAMXMAMASXSMSMSSSMMSSMMSMAMMAXAAMAMAXMAMXAASMMMAMAAMAMXMMSM
+SXMAXSAAXAXXAXAAAXAXAXSSSSSMSSXXAXXSXSAMXMMSXMAXMASAMXSSXMAXAMMAMMMMMSAMSAMXXMMMSAMXAMXMMXMAXAAXXXAAXAAAXMAXMXSSMSASMMSAMSXMAAAMASMMSASMMAAX
+SAMMMMMSSSMSMSMMSSMMXMAMXAAXAXMSMMSMASMXAAMAASAXMAMXXAXAAMAMAMMAMXXMXMAXMXMXXSXMXMAMXSXXXXAMSMMMMSMMSMMMSSXSAAXAXMMMXASAMSXMXSMMMSAXSAMAMSMS
+SXSXMSAAAAAAASXXXAMASMSMMSMMMSXAAMAMMMSSXMMSAMASMSSMSMMMXMSSMMSSMAXSAMSMXAASMMMSAMXMXMMSASAMXXAAMXAAXXAXAAAMMMSAMXAXMXXAAMASAMASXMXMMAMXMXAS
+MAAXMMMSMMSMSMMMMAMASAAMMAXAXAXSSSMMSAMMSXAXSMAMAAMAXXMSMAAAAXAXMAMSASAMXMSAMAAXASXSMAAMAMAMAXMSASMMSSMMMSMSXAXXASMSSSSSMSAMASAAMMAMXAMSAMAM
+SMMSSMXXAXXMAAMSSMMMMXMSSMSSSSXMAAXAMAMAMMMMXMAMMMMSMMMAAMSMMMMSMSXSXMASXSMMSSXXMMAASMMSMSMMXSAMMMAMMXMAXXXAMASMMAXAAMAMAMXSXMAXSSXSAASMXMAM
+AAXAAMAMAMMSXSAAAXXAXXXXAMSAAMMMSMMSXMMSMSMAXASAMXSASASMMXMAXSXSAMAXMMXMMAAXAAMSSMSMMMAAAXMASMAMXXAXMASMSMXMASXMSMMMSMMMMMAXMASXMAMXMSXMASXS
+MMMSSMASMMMAMMMMSMSMSMMSAMMMMMAXXXAXASAXAAAXAMXAMXSASXSXXSSSMAAMAMMMASMMSSMMMXMAAMXMAMXSSXMXSMMMMSMXSAMAAAAXSXMXAXAXAXMASMMXSAAMMAMMSMAMMSXM
+XMAXAXMSASMAMSSMXAAAAAXXAMXAAXXAMXXSMMAMSMXSSXSXMMMMMAMMXAAAMMSMAMAAMAAMAXXMAXMSMMASMSAMMXMMMMMAXAAXMAXSASXSMAMSMSMSMMSASAAMXMXAMAMXASAMAMAS
+XMXXAMXMAXXAMASMMSMMSSMSSMSSSSMXXSXMXMAMAMXAMAMXMXMMXSASAMMMSAXXXXXSXMSMASMMSAMMAMASAMXSXAXAAAMSSMSMMMMXAAXAXXMAXAASXXMSSMMMAXSSXSSSMSXMASAM
+MSSSMSXMSMMXMXSXAMAAAAAXAAXXMAMSAMMSASASASXMMSMSMSMAAXSAMXMAMXSMSSMMMXMMMSAAXAASAMXXMAMMMXXMSXSAMXMMMSAMXMXMMMSXSMSMXXMASMASMMMAMAAMXMASAMAS
+AAAAAAXAAAASMMMMSMMMXMMSMMMSMAMMAMASASASASASAMXAAAMMMSAMXAMASMMAAXAASASAAMMMSMMSAMXSMSASXSSXAMMXMAMAXMMSASXSAAAXAMAMMXMXXMAAMAXAAMXMASMMASAM
+SMSMMMMASMMMAAMXMXSMXSAMXAAAMASMMMXSXMAMXSAMXMSMSMSAMXAXSXSASAMAMSSMSASMMMAXXXMXMMMAAMASAAAMMSXXXXMSMMXSXSASMSSSMSAXMXSMSMSSSSSMSXASAMAMAMAX
+XMMMMXMAMAXSMMSSMAAAAMASXMXMSAMAMXMMMMMXXMAXMASAXXSMSSXMSAMXSAMMMAAXMAMASXMSMSSMMAMMXMAMMMMSASXXSMAXAMASXMMMXXAXXMMMXAAXMAAAXMAXMXXSASMMSSSS
+XSAMXAMXSMMSMSAAMSMMMSAMASXAMASAMSAMXAAMXSSMXXMAMMMSMAMMXAXASAMXMSXMMAMAMAMAMAAASXSXAMXMAMXMASMMMSASAMAXASXXXMAMMMSAMMSMMMMSXXXMXXMMAMAAAAAX
+SSSSSXMXAMAXXMXMMMMSAMXSAMMMMXAMXXASXMSXMMMMMSMMSMSAMXAXXAAXMMSAXMMSSSSSSSMAMSSMMASXXSASASAMMMAAASMSXMASXMMXSMAMXAMXMAAAMAMXMSMMMMAMXMMXMMMM
+XMAXAMXXAMXSMXSSMSXSMMMMASAXXXMASMMMAXMASXMAAXAAAXMAMSSMMSMXAAMXXAAXAAAXAXXXXXAAMSMMMSASXMXMASMMMSAMXAMXMASMMMAXMXSASMSMMSSXAAXMASMMMXMAXAXX
+AASXMXAXSMMXAAXAAAXSASXSXSMXXAMXMAMSMMMAMAMMXSMMSMSAMMAAAXXSMMSMSMMMMMMMMMXSMSMMMMAAAMMMXSASAMAMAMAMAXXASAMAASMSMXMAXXAAAXAXSMXXAMAMAASXSMMS
+XXXMXMMXAAMSSXSMMMXSAMASAMAMSSMXMAMSASMASMMSAMXSAMXMASMMMSXMXMAAAAASMMAAXAAMAXSAMXSMXSASXSAMMXAMAXAMAASXSASMMMMAMXMMMSSMMXMMMXAMXSSMSMSMAMAX
+MMMAXAXXSAMXXXMASXAMAMAMMMAMMXAAXXXSAMSAMMASAMXMAMXMASMAAXAAASMSSSMSASMSXMXSSMXXSAXAXXAXAMAMSSSXMSSMXMSASAMXSXSAMAAAAXMXSAXAXMMSAAXAAAMXAMSS
+AAAMMSMMMASAXMMMAMXSXMASXSSSMMMMSMAMXMMMXMXSMMASAMSMMSXMMSMSMSAAAMXSMMXMASAAAMAMMMSSSMMMSSMMMAMAMAAMXAMMMAMAAASMSXSMSXSASMMSXMASMMMSMSMMXSMX
+MMSXAAAXSAMXMMAMAXAMXMXAMMMMMXAAAMXMMSAMXSAMAMASASAAXMMSAXXXAMMMMMAMXSASAMMSMMAMAMXAMXMAXAAXMAMMMSSSMMSXSXMMMMMAMAMAAAMASAMXAMASAXAAXXASMSAA
+SAXMSSXMMMMAAMAXSMMAAXMMAXAAMMMXMMAMXSASMMAMXMASMSMXMMAXXAMMMMXMAMXSAMXMASAXXSXMAMXMSAMXMXSMMMSMAMXXAXMASXXAXASAMAMMMSMAMAMXAMASMMSXMXAMAMXS
+AAXAAMXSAAMMSSMSAASXMSSXSSMSMSAMSMMXMXMAAMMSSMXSAMXSXMMMMAMAMSASASXMXSAMAMXMAXMASMSXSASMSMMAAAAMAMSSSMMAMXSASXSASASAAXMMSSMSMMASXMASXMSMSMAX
+MSMMMSASMXXAAAXMMMMAAAXMAXXAAMSMAASXMAMMSXAAAXAMXMASXAAMSASAXMAXAXXASMXMMSSMSMMXAAXAXAMAAASMMSSSXSAMXAMXMMSASXSMMXXMSSSXXAAAXMASAXAXXAAAAMXM
+SXASAMASASMMMXMXAMSMMMSMAMMASAMMSMMASAMXMMMSSMSSSMAMSSMXSXSMSMSMMMMMMMXAXAMXXAMSMSMSMSMSMMMSAAXXMMMSSMMSXAMAMAXMMXSXXAMXSMMMXXAMMAMXMXMXAMXA
+ASAMXMMMAMMAMMMXMXXMAXAMAXSAXASAMASMSASAXAXAAMXAAMMMXXMASMSAAAAXMXAXAXMAMXSASAMAAAAAMAAAXAASMMSSMAMMAAAXASMSMSMASMASMAMMMAAXSMAMSSMASXSMSAXS
+MMMMXSAMSMSASAAXSASXSSMSAXMXSAMASAMXSAMASMMMSMMMMSSSMAMAXXMSMSMMMSMSMMMSXXMASMMMSMSSMMSMSMMXASAMXASMSMMSAXMAAMSAMAXXMAMAMMAASXSMAXXXSAMAMXMX
+XMAMAMXSAASASMSMAAXMMAXMXSAMXMMXMXMAMAMXMAAAAAXXXXAASMMMSMMXXAXAXAAAAAAAAXMMMAAXXMAXXMAMXAMXXMASXMSAXMASASMMXMMXSSMMSSSSSXMXXAXMXXMXMAMXMSAM
+MAAMMMMMMXMAMMXXMSMSSXMSAMXAAMSXAAMAXAMXSSMSSSMSMMSMMSMAAAMAXMSSSMSMSMSSSMMAMMMXSMSXXMAMSAMSSMAMAXMXMMAMXMAXSAAAMAMXAMMAMXMMMXMSAMSASAMAMSAM
+AXSMSAXMMMMSMMXAXXAAASXXMASMMXAMSMXMSMSMXXAMAAAXXAAAXXMXXMMXSXAXMAMAXMXAXMXAMXMASXAAMSAMSAXAAMSSXMSAMMMXSSXMASMMSMMMMXMASAAASASMAXSAMAMXMSAM
+SMMASASMSAAAAMSMMMMMMMMAMXMSSXSMXXAMAXAASXXMSMMMMSMSMXXMSSMMAAMXXMMMAMXMSXSXSAMXSMMMMAMMSAMSSMMXMASASXSAXMAXXAMXAAMMAMSAMMSASXSMXMMMMSSMMSAM
+MAMAMAMASMSSXMAMAXXASASAXAAAMAMAMSMSAXMSMAAXXSAAXXAXXXMMAAASXXSAMXASAMMXXMAASAMXSASXMAMMXMXAMAXXMAMAAAMSMMSMAMSSSXSMAXMAXMMMMAMMAMXMAAAAMMXS
+MAMMMXMXMXXMASASMSSMMASASMSMMAMAMAMAMASAXSXMASXSMMAMASMMSSMMMAAMSSMSASAMXAMXMASXMXMASXSXAXMASXMXMXSMMXMAXMASAAMAXAMXSMMSMXAAAAMSXSAMMSSMMMAS
+SMSMMASAMMXMMSASXMASMAMAMAAXMASASMSAMXXAXMSAXMAMAMMMXMAAAXMAMXMAAXXXMMMXMSXMAXMXMAMMMXAXXMSAMXSSMMXXSXSMMSASMSMAMMMAMAAXMSMMMMAXXSXMXAMXAMAS
+MAAAXXSAXXAMXMAMXMAMMXMAMXMMMAMAXXMASXMSMXASXXASMMXMXSMMMSMMSMXMASMMSAXMSAMXMSSSSSMXSMSMSAMXSXAAAXXXMAMAMMMMMAMXSAMSSMMSAASXXSASMSASASXSXMAS
+MSSSMMSAMSXMXSMMSMMSAMXSMAXSXSMSMSMSAASASXAXXMASXSAMXXAMASAMXMAXMAMASAMSAMXSXAAMAMMXMAMAXXSXSMMXMMXMMSMAMAAMSMSXMMSXAXAMMMXSAXASAMAMMMAMSMXS
+XXAXMAMAMMASAAAAMAMXAMAASXSAMXAMAMXAMMSAMMXMXXAMXSMSMSXMASMMASMSMAMMMXMMAMAMMMSMAMSAMMMMMAMAXSMSMSXAMASASMSMMXMAMXMXMMMXSMXMMMMMMMXMXMAMAMAM
+SMMMASMSMSAMXSMMSAMSMMMXAMMAMMXMMMXMXXMMMMASXSMSAMMXMXMMMXAMXXAAMASXMAXSAMXSAMXMMSSXSASAMAMAMXXAAXMMSMSXSAXXMASAMASAMXSAAMXMAAASAMMMXSXSAXAM
+AAAAAMAXAMXSAXMAMXXXMAMSMXSAMMMMAMMXMSASXSASAAAMMSMSSMMAASMSSMSMSMSASAXSMSMSXXSAMXMASASXXAMMSMSMSMAAMXMMMXMASXSASASXSAMSMMAMASXSASMMAMMSASXS
+MMMSMMMMAMAMMXMSMXAAMAMXXXXAXAAXAXMAMMAMXMXSMMMMAAAMMASMXSAAXAXXAASAMSMMAAASMMSASAMXMAMMMMXAAXAAAMXMMAXMASXXMASMMMSAMXMAXSMSAMMSXMAXAXASAMXA
+SSMMXAAMAMSXSAAASXMMSMSMSMSMSXXMASMXMMSMSSMSXXAMSMSMSXMMMMMMMMMMMMMAMXXMMMSMAAXMAMSAMXMXASMSSSSSSSMASXXMASMXMMMAAXMXMXMAMAAMMMASAMAXMXAMAXMM
+XAASXSSXXMXASMSMSMXMAMAMXAAAMAXSASAMXXMASAMXAMXMAAXAMAAXSAAXXAAMXMSMMMXMASAXMMSMMAMXXAXMXSAXAAAAAAMAMMAXAMXXMXSMMSSMMAMXSMXMASMSAMMXSASXSMAM
+SMMMAAAASXMAMXMXXAAMASASMSMSMAXMXMXAMSMMMMXXMMASMSMAMSSMSSSMSMXSAAXMAMXSXSAMSAAAXSMMSASASMXAMXMMMSMSXSAMXAAXXAMAAAMAXASASXMSASASAMAAAXMAMXAM
+AXSMMMMMXAMMMASMSSXSASASAAAXMMMSAMXXAAAAAXAMXSXSXMAXAXXMXAMXMAAMMMMSAAAXMMAMMSSSXXAAAAMXXSAMXSXAXMAXAXXMSSMXSASMMMSSMMMAXAXMASAMXMMMSXMXMXMM
+MMMAXMXXXMMASASAAAMMMMXMXMMMAAAXAXAXSSSMSAMXAMXSAXSMMXSMMASAMMMXSAAAMMMXAMXMAXMAMXMMSXMXMAMXAASXXSAMXMMXMAMXMAMAAXAAAAMAMSMMAMXMXSAAMXMAXAMS
+XAXMMMMSXAAXMAMMMSMMASAXMMASXMMXXAXXXAXMAMSXXSASXMXMSAMXASAMSMAASMSXMASXMMSMSXSASMSMMXAXMXSMSMMXMXSAXMMXSAMXMXMSXMMSXMXSXXAMXMASASMMXAXMSMSA
+SSXXAAAMMMMSMSMAMAXSASASMSASAAASXSXSSSMAAAMMMMMSXAAXMASAMMAXSMMXSAMXMAXAMAAAMMMAXAAAMMMMMAXMAAMAMAAXMAAASASXMXAMMXMAMSAMMSMMSMMMASAMSXXXAXXM
+MXAXSSXSASASAAMXSMXMASASAMASMMMSAMAMAMXXMSMAMAASXSSSXAMAXMMMSASAMMMAMMSMMSMMSAMAMSSMAAAAMSSMSAMAMMSXSAMMSSMAMSASAXMAMMASAXAAAAXMAMAMAASMSMSX
+MMMMXAXSASAMXMMAAMAMXMAMXMXMASXMXMAMAMXXMAMXXMSXMXAXMASXMSAASXMASXSMMAAMXMAASXMXMXAXSSSMXAXMMXXAMXAASXMAMASAMMAAXSMSMMMMXXMSSSMMXXXMMSMAMAMM
+XAXSMSMMMMMMMMMSMSMSAMAMAXAMXSAMMSMMXSAXSASXXSMXSMMMSXSAAAMMSAMAMXMAMSXSAMMAMMMXMSSMAMXMMSMMMASXSMMMMSSXSAMXSMSMSMAXMAMASXMAMAMMMSMXMXMXMAMA
+MXSXAAAAXAMASMAMMXXMAXAMXSMXASAMAAAXAXXAMAXAMXAAMAAAXMMMMMSAXXMMMMMAMXAMXXXMMASAAXXXMSMXAXAAMAMAAAMAAAMXMAMXSXAXAMMMSMSAAXMASXAAAAAAXAMASASM
+MXSMSMSMSXSASMMSAXSXSMSMMMMAASAMSSSMMSSMMMMSSMMMSSMSSMAAAXMMXMSAAMSMSMSMMMSASASAMXSMXMMMAMSMSASMSMMMMMXASMMAMAMSSMSAAAMAMXSAMXXMSSMMSMSASXSM
+XASMMMMXXAMASAMMMMSAXAXXAAXXXSAMAMAXAAAXXAAMAMXMXAXXAMSSMSASAAMSXMAAAXAAAMAAMAMAMASAAXXXXXXXMASAAAXXAAAXAMMSMSXMXAMMSSSMXMMASMSMXMXMAXMASAMM
+MMSAMAXMMXMAMAMMMAMMMMMSMSSMXSAMMSMMMSSMSMSSXMAMMMMSAMXMASAMMSMXXSMSMSSSMXMSMMXSMXXSASMXSMXAMXMMSSMSMSSMASAMXXASMSMXAAAXAASMSAAMAMSSMSMMMMMA
+SAMAMMXAMMMMSAMAMXXAAAXAXAAXAXXMXAXSAAAAXAAMASASAMXMAXAAAMAMAAXMXMAXXXAMXXXXXMAXMSMMSAMXAMASMMAXAAXMAAXMAMXSMSAMAASXMAMMMXMAMMMMASAAXSAMXXXM
+MASXMXSSXMAMXMSSSMSSSSSMSMSMMSSSXMAMMSSMMMMSMSAMAMXXASMSSSSMSXSAMMSMSMAMXMASXMASASAMXMSXMSAXAXXMSSMMMMMSSXXXAMMMMMAXXAXXSAMAMAMSXMXXMMSAMXMX
+SAMXAMXAXSASMMAAAAXAAAAAXXAAXAXMAMAMMAXXMXXXAMAMSMSMAAAAXXAAAAMXMXAAAXAMSAMSAMXMXMAXSXMXXMASAMXMXAAAAAAMMMMMSMXAMXMASAMXXAXAMAXAMXSSSMXXXAXM
+MXMXMMMSMSASAMXSMSMMMSMMMSSSMMSSXMAMSAMSAMXMMMAXAAAMMMMMMSMMMSMXSMMSMXXMSAXSXSAMXSXMAAMSAMXMXSAMAMSSSMMMAAMAXMSMXMXMXAMXMXMXXSMMMMXAASAMSMSA
+XMSSMSXXASAMXAMXAAXXAXMAMAMXMXXAXMAXMASAASXMXSMSMSMXAAXMASMAMAMXMAXXAAXMSMMSAMMXMASAMXMAAXMAMMAXXXAMAASXSSSMXMASXSMXSSMMASMSAAXSAMMSMMXMAMAX
+MXAAMXAMAMXMMXXMMMXSXMXASAMASXSMXSMMMMMMXMAMAMMAMAAXSSSMSXMAMAXXMSMSSXSAXMAMAMAAXXSMXXSMSMSAAMSMSASMSMMAAAXAASAXMASAXAAXMAAMMMMXAMMAMMXSMSMS
+MMSXMMSMAMXMASXMASAMXSMMMAXAXXXMASAXAAAXXSAMXMSASMSMMAAXAMSSSMSSMAAXAAMMMMMSAMXSSMMMSMSAXASMMMAAXAMAXAMXMASMMMXMMMMMSSMMXMMMXSMMSMSAMMAMMAMS
+MAXAMAMSAMXMAXASAMASASASMXMSMMXMASASXSXMXSMSMXSXXAMXMMMMMMXAAXAASMSMMMMASXASASAXAASASAMAMAMAXXMMMAMMSAMXMAXMXXAMSXMAAAXMASXMAXMAXAMMSMASXSXS
+MASAMAMXMMXMAXXMASXMASAMXSAXASXMMSAMAMMSMMMSMXMASMMAXAAXXAMMMMSXMXAAAASXXMASAMASMMMASMMXMSMXMASXSXXAXAAXMXSSMSMXAAXMSMMXAMAMXSMAMAMAAXXMMXAM
+MMXAMSMSAMXMMSMSXMAMXMXMXMAXMMMSAMAMXSAAAAAMAMXAAASMSSMSSMAAXMXASXMXSXSXSSMXMAXMXAMXMAMMMAXAMXAASMMMSSMXSAMXAAMXSXMMAASMSSSMMMMMSXMSSXSAAMAM
+ASXXMAASXMAXXAASMSMMMMAMXMSMAMXMASXMAMXSSMSXMMXXSMMMAXAMXXSXSAXMMAXAMAMXAAXXMMMMSSMAXAMSMMSMSMMSMMXAAAAAAAXMSMXXAAMSAMXAXMXAAAAAAAXXAMSMMSAM
+ASAMXMXMASASAMMMAAXAAMASAAAMAMXSAMAMXSMMXXMASXMAXAAMXSMASXMXMMXSSSMXMASMXSMXSAMXAASMXSMSAXAAAMXMAXMMMSMSSSMAMAMSSMMAMXMSSMSXMSMSSMMMAXSAMXMM
+XMASXXMSMMAXMXXMSMSSXSASMSMXSSMMSSXMMSASXSSMMAAAMSSMMXMXSAMMMXMXAXAASXXMMAMXSASMXMMXAXAXMMMSXSASMMMSAMXAAMAAMAMMAXXSXSMASAAAMXMMAMXSAMXAMSMX
+MSAMXAMSXMAMXSMAMXAAMMMMXAXAXAMXAMASASMMAXAASMXXXAMXSAMAMAMAXAMMAMSMXMAMSMMMSMMXSXAASMSMMXXMXMASAAAMAXMMSMSMXAMSXMAMMXMAMMSMMAXSAMXAXMXMMASA
+XMAXMSMMAMSAMSMAMMMSMMMSSSSMSAMMMSAMMSXMMMSMMXMSMMSAMAMAXASXSSSMAXAXMMMMAAXASAMAAMSMAAXSMAAAMMMMXMSSSMSAMXAMXSXSASAMXSMSMXXASAMSASXMASAASASX
+MSSMMXASXMXMMXMASXAXAXAXAAAASAMMXMASXMXXSAXAMXAXAAMASXSXSXSMAAXXSXMXSAASXSMXSAMXMAASMSMMSSMSAAMAMXXAXAXASMXSAMAMAMASXSAXSASMMXXXXMAMAMMXMXSA
+MAMAMSMMAXAMSSSMSMMMAMXMMMMMMXMXXSXXAAAMMMMAMMMSMMSAMXAXAMXMSMSXMAXAXSXSAXMAXAMXXSXAXMAMXMAXXSSMSSMMMMMXMXAMXSAMSMXMXMAMMXMXXMASMXMMASXMMXXM
+MAMAMAASXMSAAAAASASAAAXMXXXMAXSXMMMSXMXSASMMMAAAAXXAAMMMSXMMAAXASMMSMMMMMMSSMAMSXMSMXSAMXMAMXXAAAAAMSXMASMMXAMAMXXXSXMAMXASXSASAMXSMMXAAAXSX
+SSSSMSMMXAMXMXMMSAMMSXSMSMMXSAMXAAAXMAMSASXSXMSSSMMXMASAMASXSSMMMXAXXAAASXAAMAMXSAAXAMASAMXSXSMMSSMMMASASAXAXSAMXMAAAMSSMASAAMXAMXMASXMMMXAX
+XAAMAXSMMSMMMSMMMMMMXAAMAMSAXASXSMXSASXMMMXSXMMMMAXAXMMASAMXAAMXMMMSSXSSSMSMMXAMMSMSXSAMXSXMASXAAAAXSAMXSXMMMAMXMAASXMAAMAMMMASMMMSAMAMSMMMX
+MXMMAMAMAAAXSAMMAMAAMMXXMXMASAMMXMAXMMAXMAMMASXSSXSASXSMMMSMMXMAMAMXXAMAXXXSSXASAMXAMXMSXXAMAMMSMSMMMASXMASXXXXMMSAMXMSMMASXMASXAAMASMXAASXM
+MMXMXSAMSSSMSAMSASMSSMSASXMAMAMXSXSMAMMASAXMAMAMAAMAMAASAMXXSMSXSMSAMXMXMSMAMSXMASXMMMMMXMXMAXXXAMMMXAXXSAMMMMXMAMAXXXXASXSAXSMMMXSAMXMMSMAS
+ASAMXMAXAAAXMAMSASXMAAMAAXMAXAMASAMXAAMASMSMASAMXMMSMMMMMSAXXAMAMAMASAMAMAMAMXXSMMXAAXAXMASMSMAMMMAAMMSXMXXAAXAMMSMMMXSAMAMMMMAAAASMMMMSAMAM
+XSMSASMMXSMMMSMMAMXSMXMXSXXSSXMAMAMSMSMAMAAMXMMAXMXAXXXAXMAXMSMXSASMMXSMSASMSMASMASMMXAMSXXAAMAMMSXSAMSXMSSSSSMSAAAAAXMAMSMSASXMMMSAAASMMMSS
+AXASMSXMAXMXXASMXMMXXXSAMMXMAMMASMMSAAMAMSMXSAMXSMSMMXMASMXMSAMXSASAAXXASASAAMAMMAXASASXXAMSMSMXMSAMMAMMXAAMMAASMSSMMXMAMXASAXXMSASXMXSAAAXM
+SMMMXXXXSSXSXMASMAMMMXMASASMAMSAMAAMMMMXMMAMMSMAAXMXSXSSXMASXASMMMMMMXMMMMMMMMXSMXSAMAMAMXMMMMXAAMMMMAMAMMSMSMMMAMXAXSSMSMMMSMAMSAMXMASMMMSS
+MASXSSMAMMAMAXAXMAMAMASXMMSMAMMSMMXSXAMXAMAMAAMMXMASAMXXMMMXMXMAMXSASXASAMXMXSASAMMAMAMAMAMXAASMSMSXMAXMMMMAXMAMAMMMMMAAXXAAAMXMMMMXSAMASAMX
+XSMAXAMAXMSMAMMSSSMXSASXMASXMSAMXSMMXMMMMSMMXSSMSSMAMASMMASXSMSAMXSAMSMMXSMMAMMMAMMMSXSASXSSMMSXAASMSMMAAAMMMXMXMXSAASMMMSMSXXAAAMSMMXSAMXSA
+XMMMMXSMSMXAMSXMAAAMMAMAMXSMSMMMAMAMXSXMAAAMSMXMAAXXXXMASAXXAASASAMXMMMSAMAMXXXXAMAMSASASAXXXAMXMSMAAAMSMMSMSAAASASAMSAAXXAAXSSSMSASXXMAXSAM
+AMASAAMMAMAMXMAMMMMXAAMSAMXXAXXMAXSMAMAMSMSMAASMSSMSAXSMMSSMMMSAMASXSMASMMAMMXSSXSASMAMAMMMSMSSXMAMMMSMMAXMASMSMSAMXMSXMMMSMAXMAMSAMMMSASAMX
+XSAMMAXSASASAMAMXXXMMMMMASXSSSMXSXMMMMAMMSMMMXMXMAAAAMXMAXXAXXSMSXMAAMAMXSSMSAAMAMMSMSMSMMAMAAAAASAMAXASXMMXMXAXMXMAXXAXSAMXXAMSMMAMAAXMAXSS
+MMASXMASAMAMASXSSMMAXMXSMMAAAAAAMASXSSSSXAMXSAMXSMSMMAAMXXAXMMSAAXMSMMASXXAAMMSMAMSMMAAAMMAMMMSMMMAMXMAMMXSAMXSSMXSMSSSMMASXXAMAXSXSMMSAMXXM
+MSMMMSMMAMMMAMAAXAMSMSAMAMXMSMMMSAMAMAMAMASAMXMXMXXMSMMSMMSMSAMAMXMAXSAMXMMMMAXMMMAAXMSMXSAXAXXMXMXMAMSXMASASAMXMASAAMAASXMMSSSSMSAMXMSXXMSX
+XAMAAAXXXASASMMMMXMAAMAMMMMMAASXMAMXMMMAMXMASMMAMMMXAMSAMXAAMMMAXAXMMMASAXXASXSASXSSMXAMXSASXSSMSSMMXSMAMASAMXSAMMMMMSSMMSXAXXAAMXMASXMXAAMX
+SASMSSSXMAAAXAAXXASXSSSMAAASMSMASMMMSASXSXMXXASMSAMMSXSASMMSMMSSSMSXXXMAXMXASAMAMAXAMXAMAMAMXAAXAAAMMAXXMASXMAMXSSXSXAXAXSMSSMSMMSXASAMXMASM
+AXXAMAMMMXMSMSMMXMXAXAMXSMMSXAMMMAAAXASASMSSSMMXSXMAXXXXMMXMAMXAMAAMXMAAASMMMAMSMSAMXXAMXSASMSMMSSMMSASMMASMMXMSMXAMMMSXMXAMXMASXAMXSAMXSASA
+AMMMMAMAMMXMAXAMSXMSMSMMMMAXXMSSSMMSSXMXMASAMSAMXMMSSSSMMSAMAMMAMXMSAMAMAXAMMXMXXXMMSSMSXSASAASAMXMAAAMAAXMXSAMSAMXMAXMMSMMMAXAMMMAMSMMXMASM
+XMAAMASAMMAMAMAMAMXMAMXAMMAMAXXAMSAMMMMXMXMAMSMSAMXMAXAAASXSAXSAMAXSASASASXMXSSMMMSAAAAXXMMSXXSMMMMSSSMXSSMAMASXAMXSSSXAAAASMMMSAXSAMXMASAMX
+MMSSSMSMSMXMASAMMXAMAMMXSXXAASMAMMXMSAMSSXSAMXAAMXXSSSMMMSAMAXMASXMXMSASAAAMMSAAMAMMSMXMXMAXMMXXSXAAAAXXXAMAMXMXXMXMMAMSSMMMXSAAMMXXMMSMSXMX
+AXAAMXSAAMXMASXSXMXSAMXXMMMXMXMAMMMMMSAAXMASAMXMASXAXAXMXMXMSMSXMMMXXXAMXMASXSMMMSAMXMASMMXSAASAMMSSSMMMSXMXXMAMXMASXAXAMXSXXMAXMMMSMMAMMASX
+SAMAMAMSMMAMXSXMASAMXSXMSASMMXSSSMAXAMMAMXSAMXXXXSAMXMXAAMAXMAMAAASMSXSAMSAMMSMSXMASASMSAXMAMSMAXAXMMXAMMASAXMAMXSASMMXMSASAXSMSMSMAAMXXSAMA
+AMXXMMMAXSSSXMMMAMMSMAAASMMAMAMMAMSSXXXAMXMASMAMMMAXAXMSASAXSAMMSMSAMXXAMMMSAXAXXMASAMAXMSXMMXMMMSSMXXMAMSMASMMMMMASASAXMASAXXAAAMSSSMSMMASM
+MXMASMSMMXMAXAAXXSXAMMXMSASMMAXXAMXAMMMMMXSAMMAMXSASXSAXMAMXSAMXMXMAMMMAMAAMXMSMASAMMMSMXMAXSXXMAMAXMASMSAMAMXAAASXMAMXXMXMXSAMMSMAXMAAAAAMX
+AAAMMAAXMSMMMSSMMMXSSMXXXMMXSASMSSSMAAAAXMMASXXSAXXSMXMXMSMMXSMAXASAMAXXMMMSAMMAXMASMMMAAXSMSAMMSSMMAMAXAAMASMSSXSAMSMMMSMSAXAMAXMSMMSMMMSSX
+SXXXMSMXMMASMXMMMAAMAAMSSMMAMMMAMAAMXSXXMAMAMMAMXMAXAXMSMMAMSMMXSMSXSMMAMXXAXMXXXSMMMAMXSXXAXMXMXAXXSXXXSXMXXMMMXMXMAAXSAAMXXAMXMAXAXAAXSMMM
+AMMSMMXSASAMMASMMMSXMMMAAAMASAMSMSMMAXXMMSMMAMSMAAMXSXMAXMAMAAMXMMMMAMMMMMSMMMMMMMSASMSAMMMSMXMMSMMMMMMMXMASMSSMSSMSSSMSMSSMMSSSSSSSMMSMXAAS
+MAXMAAASXMXSMAMXAAMXSAMSSMMXMAXXAXXMASASAAAMSAMXXSXAAAAMXSASMSMAAAXMASAAAAAAAXAXAAMMSAMASAMASASAAAAAAAAMASAMXAAAAMMAMAAXMAAAMAAXAXAAXAAMSMMS
+SSXSMMMSXXASMMSSMXSASAXMMMXSAMXMSMMMSSMMSSSMXMASAAMXSMMXMAXMXXMSSMXSASMSMSSSMSXSMXMMMAMSMXSXSSMSSSXSSSSSMSAXMSMMMSMASMMMMSSMMMSMXMAMMMSXXAMX
diff --git a/2024/04b/example b/2024/04b/example
new file mode 100644
index 0000000..1f4eda2
--- /dev/null
+++ b/2024/04b/example
@@ -0,0 +1,10 @@
+MMMSXXMASM
+MSAMXMSMSA
+AMXSXMAAMM
+MSAMASMSMX
+XMASAMXAMM
+XXAMMXXAMA
+SMSMSASXSS
+SAXAMASAAA
+MAMMMXMMMM
+MXMXAXMASX
diff --git a/2024/04b/run.rb b/2024/04b/run.rb
new file mode 100755
index 0000000..5fa5f4e
--- /dev/null
+++ b/2024/04b/run.rb
@@ -0,0 +1,38 @@
+#!/usr/bin/env ruby
+
+@letters = {}
+data = File.read("data.txt")
+data = data.split("\n")
+data = data.map(&:chars)
+data.each_with_index do |row, y|
+ row.each_with_index do |letter, x|
+ @letters[[x,y]] = letter
+ end
+end
+
+found = 0
+
+potential_starts = @letters.select{|key, val| val == "A" }
+potential_starts.each do |key, value|
+ score = 0
+
+ if @letters[[key[0] - 1, key[1] - 1]] == "M" && @letters[[key[0] + 1, key[1] + 1]] == "S"
+ score = score + 1
+ end
+
+ if @letters[[key[0] - 1, key[1] - 1]] == "S" && @letters[[key[0] + 1, key[1] + 1]] == "M"
+ score = score + 1
+ end
+
+ if @letters[[key[0] + 1, key[1] - 1]] == "M" && @letters[[key[0] - 1, key[1] + 1]] == "S"
+ score = score + 1
+ end
+
+ if @letters[[key[0] + 1, key[1] - 1]] == "S" && @letters[[key[0] - 1, key[1] + 1]] == "M"
+ score = score + 1
+ end
+
+ found += 1 if score >= 2
+end
+
+p found