added day04

This commit is contained in:
2024-12-08 17:29:55 +01:00
parent 94cd880183
commit e6f4cbcac7
11 changed files with 343 additions and 1 deletions

5
Cargo.lock generated
View File

@@ -9,6 +9,7 @@ dependencies = [
"day01",
"day02",
"day03",
"day04",
]
[[package]]
@@ -22,3 +23,7 @@ version = "0.1.0"
[[package]]
name = "day03"
version = "0.1.0"
[[package]]
name = "day04"
version = "0.1.0"

View File

@@ -9,4 +9,5 @@ opt-level = 2
[dependencies]
day01 = {path = "src/day01"}
day02 = {path = "src/day02"}
day03 = {path = "src/day03"}
day03 = {path = "src/day03"}
day04 = {path = "src/day04"}

7
src/day04/Cargo.lock generated Normal file
View File

@@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "day04"
version = "0.1.0"

6
src/day04/Cargo.toml Normal file
View File

@@ -0,0 +1,6 @@
[package]
name = "day04"
version = "0.1.0"
edition = "2021"
[dependencies]

140
src/day04/input04.txt Normal file
View File

@@ -0,0 +1,140 @@
XAXAMXMXXSAMSMSMMMXMAXSAMXSMMSSSMXSSMSMMMXXMSMXAMXAXASAMXMASAXMAMMXSAMXMXMMMSXMMMSAMXSAMXSXMSMSSXAXXMASAMAMSASASXSSSXSXSXMAXSAMXMSXXXXAXMXSS
MSAXMASMAMXMAAAASAMXMAMXMAXAMXMASAAAMAMXXMMMMXMSMXMMMXMMAMXMMMMAXSAMXSMSASMAMAMAXMASXXXMASAAXAAMMMMMXAMXMAXMASXSXMASAMAMMMXMAMXAMXSASMMXSAMX
AXAXMMXMASASMSSSMASAMASXMMSSMXSAMMSMSASMMMAAAXSAMAMASMMSSSXAASMMMXMAMAASAXMASXMASAMAXXXMASMMMMMXAASXMSAMSSSMAMAXXMXMXMAMASMSSSSMSASMSASAMAXS
SMSMSSXSAXXXXMXAXAMAMAXAAXAXXXXAXMAAMXMAAASMSXSASAMXSAMAMXMMASASAMSSSMXMAMMMSMXXXMSMMMMMMSXXXAAMMASAAXMMAAXMAMMMSMMMXXXXXXAAAAAAMXSXSAMASMSM
MAAAXMXMMMSXMSSMMXSAMSSSMMMSMAMMMSMMMSSSMMXAXMSXSAMSMXMMSSXMAMMXMXAAMXMAMSAAXMASXAAXAAAAMXMASMSSMAMMMMAMMSMSAXAAAAAMXSMMSMMMMMMMMXXAMSMXAXAX
SSMSMMAXMASAMMAXAXMAMAAAXAXAMAASAMXSAMMAMMMMMMMAMAMAASMMAMXMAXXMXMMSMAMAAMMSXSAMMSMSSMSMSMSMXAAXMXMAMXAMXMAMMSMSXSMSASAAXAASAXAASAMXMMMMXSMS
XAXXASXSMMMAMSXMMMSXSMSMSXSXSMXMASXMMSMMAAAAAAMAMXSMMAXMASMSMSMAXAXXXMXMSXAMMMASAMAXMAMXSAAMMMMMSASXXSASASXSMSMXMAMMASMMMSASASMSMAMAMXXAXMXM
SMMSMMMAMAXMMMMMSAMAAXMASAMXMXMMAMXMSAMXSSSMSSSSSMMXMSMSASAAAAMSAMXMAXXSXMXMAMXMASAMXAXAMSMXASXXXAXAAXMMMMMAASAMXXSMMMASAMAMXMMMMAMAXSMSXSAS
MXAXAASAMXMSAMAAMASAMAMAMAMAXAXMXSSMSASXMAMAAXAXXAAXSAAMASXMSSMXAXASAMXMXXMSSXMMMMMMXSMMMXSMSAMXSSMMMSXMAAMMMMXMXSXAASMMMSAMXAXMSSSMXXAXAXXM
MMSSSMMXSAMSASMXSMXXXMMXSMMMSMSXSAMAXMAMMAMMMMMMSSMXMMSMAMAMXMASXMMMAXSAMAMAMASAXAAMMXMSAMXXMAAMAMAXXAASXXSSMAMMSMSSMMMXAMXMXXAAAAAXAMMMMMSM
XAAAMMSASMMSXMAAXMAAXXMASAAAMXAXMXMXMMMSMMMAAAAXXMASXMXMASAMXMMMAXXMAMXAMMMASAMASXMSMAMMASXMSSXMASXMMMXMSAAAXMAMXAXXSSSMMSMMMMXMMSMMSSMAMAXM
MMSSMAMASAAMMSMMAMMMMXMXMSMSSMSMMMMSSMAAAASMSSSMAMAAASAMXSXSXXXMSXSMSMXXMAMMSMXMAMAAXXSSMMAAXAXMAXMXXXMASMSMMMSSMSMAAMAMXAAAAMASAMAMAXXAMMSM
XAAAMXSAMMMSAXAMMMSASASAAAMAXAAAAASAAMSSSMSAMAMXAMMSMMAXASXMMSSMMAMAXXMSSMSXMXMXAMXMMMMMAMMSMMSMXXMXXMMAMXMMSMAAMMMXMSSMMXSSMSASASMMMSSXSXAM
MMSSMMMMXSAMMSMMSMXASAXMXMSSMMMSSSMSSMAAXXMMMAMSXSAAAXMMMSASAAAAMSMAMAXMAXSAMXSSXSAMAAAMAMSAMXAASMMSAAMSMXXAAMXMMSMXMAMAMXAAXMASXMXSXAXSMMMS
MAMXAMSAAMASAXMASAMXMMMSXMXMAXAXMAXAMMSSMXXASAXXMMMSSMXAXXAMMSSMXMASXSSSMMSAMAXAASXSSSSSMSSXSSMSMAASXMMXAAMSMSAXSXASMMSAMXMSMMAXASAXMMSAXMSS
MASXMMMMMSAMXMMXSXMXAXAMAMXSSMXSSSMMSAMAMMSAXXXAMAMXMASMSMSMMAAXXMXMAXAMXASMMSMMMMMXAAXXMAMMMXXMMMMMAXAMMMMMAMASXMMMXXSASXXAAMSMMMSAMXSXXSAX
XAXAMXSXAMMSSMSMSMXSMMXSAMXAAAMXAAAAMAXSAASXMSSSMSMAXXMAAAAXMSSMMMAMXMAMSAMXAXASXAAMMMMXMAXASMMSAAMSMMXSMAAXSXSXXAMSXMMXXMSMSMXAXXXXXAMXSMMS
MMSMMSAMXXSAMXSASAMXXAAXMSMMXMAMSMMMMXMXMMMAXAAXAAMMSAMSMXMMMAMAAMASAASMAAMMMSAMSMMAMXSMSXSSXMASMMMAMXMXMMMSAMXAMSAXAXSASXSAXASMMMMMMAMXXAXM
XAAAXXASMMMXSXMAMSAXMMXSAXXMXSXMAXXAXSSXSASXMMXMMMMXAMMXMXSXMAMMXXMSXSAASAMXAMAMAXMMSAAXAASMSMXSXMXXSAAMSAXAAASAMMXSAMXXSAMAMAMXAAXAXAXMXAMX
MXMSSSMMAAAMMAMXMMSXAAAMXMAXAAASXSMASMAMMASAAAASMMSAMMSSMAXASMSXSAMMXMAXMAMMXSAMAMSAMMMMMSMAXMAMXXXXSMSAMASXMMMAXXAMMSMXXXMXMXMXSSMMSMSAASXX
MXMMMAAMSMSXSAMAMAMMMMSMASAMSSMMAXASMMSMMMMMMSMSAASMXAXAMSSXMMAAXAMMAXXSSXMSMSXSXXMASMXSXMMSMSMMMSAXMAXAAAMXMXMAMXMAMAMMAMXXMMSAMAAMAMXMMAAM
AASASXMMAAXAXXSXXASMMAXXAMAMXAXMXMXMAAAXXAAXMAMXMMMXMASXSMMMSMMSSMMSSSMAMAMXAMAMXMSAMAAMAXAMAAMAAAMMMSSMMXXXMSMMXSXSMMAMSASMSAMXMSMSASAMXSMA
SMSASMMSMSMMMMSMSMSAMXMMXMMXSXMXMSASMMSSSSSMSASMMAXAAXAMMAAAMXAXAMXAMAMXMXMMMMAMAXMAMMXMAMMMSMSMMXXAAMAMXSSXAAAXXMMXAXAXMASXMXSAMAMMAMMSAXXS
MXMMMAXAMXAXXAMXAASMMXSSMMSAMMSXAMAXMXXAAAMASXMASMSASXAXSXMSMMMSXMMSSSMXSAXXMSXMXXMAMMXXXXMAXXXAMASMXSAMAMXMSXSMAXASMMXSMXMASXSASAMMSMMMASXM
XAMASXMXXSSMMXASMMMXSAAAAAMAMAXMSMAMXMMMMMMAMMSXMXAAXMMMSAMAASXMXSXAAAAASMMSMSAMSXSASASMSAMASXSXMXMAXSMMAXXAMAXMMMMSXSAMXSSSMAXMMASAAASMAMAM
SXSAMSMMXMMASXAXXXAAMMMMMMSMMAMMAMAMAASAMXMSSMMMMMMSMMSASAMMXSAMXAMMXMMMXXXXAMAMAASAMAAAXXMASAMASXMSMSASMSSMMAMAMMXSMMASAMXAMXMASAMMSMMMSMMM
MXMMMAXMAXMAMMSMMMMMXSXSXMAAMXXSASASXMMSSXXAXMAAASAMAAAXXXMXASAMAMAMSSXMSXMMMMMMXMMXMMMSMXMXMASAMASAAMASAAXXMASAMMAMASXMMSSMMAAMMASAMXSXMASM
XXASMMSXMXMMSAMASXXAASXMASMSMAAMAMXMXAXAXMMMSSXMXMASMMSXXAMMMSAMAXSAAAXMAMSAMAAMXXXXXAAMMSMXMAMASMMMSMMMMAMXSXMASMASMMMAMXMXSXSXXAMAXAMSSSMA
MMXXAMMMMAXMMASAMXSMMSASAMAAMXMMSMMMMSMXMAAAAMASASAMXMAXSASXXMASMSMMMMMMSXMAMXSSSSSSSMXXAAAAMASXAMAAAAXMMSMMAASAMMAMXMSSMAMAXAMXMSMSMSMAMAMM
XAMSSMAASMSSMAMXMAMAMSMMMXSXMXXAXASAAMXSSSMSMSASAXAXXMAMXAMMMXAMMXXAXSSXMMSXMAXAAAAAAAAMSMSMSAMXXXMMSAMXAXASXXMSSXMMXXAAAMMSMSSXXAAAAAMAXAMS
XMXAAMXMAAAXXXAMSXSAMXMASAMAXAMXSAMMSMAXAXAMAXMMXMSMMMSSMAMASMSSMMXSAMXAXXAAMXSMMMMMMMSXXAXMAMXMMMMAMMMMMSAMAXMXMASXMMSSMXAASMAASMSMSMXXSMMA
MSMSSMMAMMMMSMMMAAXAMXSMSASAMXSAMMMMAMMMMMMMMSMAAMASXAAXMASXSXXAASXMAMSSMMXSMAAXMSAMXXXAMXMASXASASMASXSAMMMMXXMASAMXMAXAMMMSAMXMXAAMAMMMAMMM
AAAXMASXXMMAAAAMMSMASAMXMAMAMAAXMAAMMSAAMAXAAAMXMXAMMMSXMMSMMMSMMMAXSMMAXMAMMMMMAMXMMSMSMSAMXSMSASMMMXSASXSMMASXSAAAMXXAMAXXMAXXXSMSMXAMXSAX
SMSMXMMMAMMSSSMMAAXAMXSASXMXAMMSSSSSXMMMSMSMXXXAMMSMSMMAXAMAAAMASMMMXASAMSASAMXAMAAXAAAMXMAAAMXMXMASAMSAMXMAXXAMSXMMSSSSMMSSXAXSXMXSASXSASMS
AAAAASAMAMXXAAXSSMSXSAXAXXAXSAAAMAMAMXAMAAMAXSAXMAXAXASAMSSSMXSAMAMAMMMMXMASMMSSMSMSSMSMASMMSSXMAXXMAXMASXMAMMAMXMSAAMMAAXAXXMASXSAMMAAMXSXM
MSMSMSASMSSSSMMAAXMASMMXMXXAMMMMSAMASMMSMSMAMMASAMMAMAMMMAAXMMMASXMASXASAMXMAASAMAMAXAAMMMAAMXMSSSMSSMSMMXMASXMMAAMMMSSMSMSSXSASAMAMXSXMASAS
XXAMXMAMAAAAASAAAMMAMXAMSMSMSXMAXAXAXAXMXXMASAAMAMAXMAAMMMSMSXSAMAXMAXXMASMSMMXAMXMASMSMXSMMMAMAAAAXAAAXMASASAASMMMXSAMXMAMAAMASMSMMAXAMXSAM
XMASAMXMMMMMMASXXXXAXMMMAAAMSAMSXMMSSMMSAMXSMMSSXMXXMXSMMMMASAMXSXMSMSXSAMASMSMSMSMMSAXMMASAAXMMSMMMMSMSAMMAXXMMAAAMMMXAMAMMMMAMMAMXSSMMAMXM
SAMMMXMMAMXSMMXMMMXSSSSSMSMSSMMMAMAAAAAXMXMMAAAMMAMXSAXAAAMMMAMMMMMAAAAMXMASXSAMXAMSMMMMMASXSXMXXAAAMAMMMXSSSMSMSMMSAAMXSMMXXMXSSMXMXAAMMSMS
SASMSMSSSSMXAXXAMSMAAAAAMXMAMXASAMXXSMMSMAASMMSMMMSXMASXSMSSMSMXAAXMMMSMXMASAMXMMAMAAXXAMMMMXAXMAMXXMAMAMMXAAAXAAAXSMSXXAXXMMSXAXAASXSMMXSAA
SAMMAAXAMAASMMXSAAXMMMMMSAMASMMSXMMXXXMAXAMMXXMAXMSAMXMAXAAAAAXMSXSXSAAXSSMMMMAXAXXXSMSSSMAMSSMMAASMSXSASXMXMMMSMSMXMAMSAMXMASMMMSMMAAXMXMSM
MMMMMSMXMMXAAMAMSMSXAXXXXASAXAXMASMAMSAMXMSASXSAMMXXMAMXMSMMMMMXXAMAMXSSMAMAAXXSSSSMAAXMAXMMAAAMMSAAXAXMSAMXSAAXAXXXMAMMXSMMMSASAMMMSMMSAMXX
XAAAMXMASXSSXMAXMXSXSSMSSXMXMSASMXMAXXXXAASAMXMXXSAMSXSXMXXMAXMASAMXMAMAXAMXMSAAAAASXSXSAMMMSSMMXXMMMXMSMMSASMSSSMMMMXSXASMAMSAMMMAAAAASXXXA
SMSXSAMASXMAMSMXMAMAMXAAAXMAXMAMXMSMSMSMSMMAMXMAMXAXAAAMSAMXSMMXSAMXMXSAMXSAAMMMMSMMSAAMMSAAMAMXSAMXSMMAAMMAMAAMAMXAXSXMAMMAMMAMMXMMMMMSMSMS
AAAASAMASMMAAAXMMSMMMSMMSMSSSXMSXMASAAXAAXSXMAMAMSMMMXMAAMMSMAXASAMXMXSAMAMMXMASXMXXMMMMMSMMXAMXSAMASASXSMMMMSMSASXMSXSASMSMSSMMAAXSAMSMAAAM
MMMMMXMMSASMXSXSAAAXAAAXXAXAMAMSASMSMSMSMMMASXSMXMAAXXSXMAXAMXMASXSAMMMAMSSXSAMXAMSMMMXXASMXSAMXSXSASMMAMXSXXMASASXMXMASXAAXXAAMSXMAMSAMMMSM
MXSAMXXXSAMAAMAMSSSMXMXMMAMAMSMSAMXXXXAXMAMMSAMXAMSMSAMAXSSMSASAMXSAMSSXMXAXMASMAMMAMXMMASAAMAMXMAMMSMMSMAASXMAMSMAXSAMXMSMSMSXMASAMXAMXXSAX
MASAMMXXMMMMMMAMAXXXMXMSMMSAAMMMSMXSMMSXSASXMMMSAXAXXXSAMMAXSASASASAMMAMSXMMSSMMAXSMMAXMAMMMXAMAMAMAMAMAMXSAMMSMXMSMSAXXAASMAMMMAMXXXMXMSMAM
MASAAMAMXMAAAMXMXSMAAMAMAASMSXXXXMAXXAAMSASMXSASMSXXAMXMXMMMMAMAMASMMMAMAAXAXAAMMXAXSAXMASMSSMSASASMSASASXXMAAMXSAMASAMXSSSMAMAMSXSXSXASAMAM
MASXSAMXASXXMXAXXMAAMSAXMMMMAASAMMXXMMXXMMMXXMAXMAMXSMMSAMAAMXMASMMAXXAMMMMSSMMMSXSAMXSXAMAAAMSXSASXSMSXSMMXMMSAMAMAMXMXXAXXAXSXMASAAXMMAMSS
MASAMXXMASMSMSMSMMXMMSASMMXMSXMAXASMMSXASMAMXMSMMMSAMAASASXSSXMXMASXMSXSXMAMMMAMXAAXSAMMMMMMMMSXMMSASASMMXAXXMMASAMXAMMMMMMMSXXAMAMASMSSSMAM
AASAMSMSASXAAAXAXSASXMAMAASMMASXMXSAASMMMSAAAXAAMAMAMSASMMMXXMXMSAMXAAMAAMMSMSMMMMMSMMXAAAAXMASXSAMXMAMAAASMSAMXMXSMASAXAXAXMASMMXSMAAXAMMAM
MXMAMAMMASMMSMSMMSASXMAMSMMASAMMMASMMMASASXXXMSMMASMMAAXASXXAMAAMMSAMSMMSSXMAAAXSXMAAASXSSSSMASAMXSXMAMSAMMAMAMSMXXMASMSXMSSMAMXSXMMMMMMMSAS
MSMMMASMMMMXAAMXAMMMXSXMAAMAMAMAMAXAASAMASAMSXMMSXMASMSMMMMMMSASMMSAMXAAAMAMSMSMMASMMMXAAAAXMXMXSXMXMSXMASMSMAMAAMXMAMMXXAMXMSMSXSAXMAAAMSAS
AAAAXXXAMAMSMSMMMSMAMXXSSSMASAMSMMSSMSXSMMAMXAXXXXSAMAAAXAAXMAMMAASMMMMMSSMMAAAASAMXAMMMMMMMSXMAMAMXSAAXMAMXSXSMMAMAMXSASXSMSASXASXMSMSMMMAM
SSSMSSSMMAMAXXXAXAMASMMMAXMASAXMAXAAMMAMASXMMMMXAXMXMXMSSSXSAXSSMMSAAAMXMXXSSMMXMXMXASMSXXSAMXMAMAMXXSSMXXMXMXSMSMSSMAMASAAXSMMMXMXMAAXMXMSM
AXAXAMAMSMSAMXSSSMSAMAMMSMMXSMMMXMAMAMASXMAXXXAMSMSXSAMXAXASAMXXAAXMMMSAMSMMAMSXMMMSAAAXMAMASMSASXSSMMXMXASMMASMSAAXMAMAMMMMSASAMXMMMSMAXAMM
MMMMMSMMAAAXSXMAAMMXSMMXMASAMMXXAMSSXSASXMAXMMXMMAMAAMSMMMMMXMMSMMXSAXXAMAAMAMSAMAAMXMSMSASXMAMAMAAMASAMSXMAMXSAXMMMSASMSSMAMAMAMSSMXMXMMMMM
XASAMAMMMSMXMAMMMMAXMMSASMMASASAMAMMXSXMAMXXSASMMAMXMMXAASXMMSAXXMAMAXSAMSSMSMSAMMSXXMAASAMAMXMAMMMSSMAMMXSSMMMXMXXXMAMAAAAAMXMMMAAMASAXMMAX
SMSASASAXMASXXMASMMSMASASXSXMASMMAASAMASMMMAMASMMMXXXXMMMXAAXMASAMASMMAXMMMAXAXXMXMASMMXMSSSMASXSXAXXMMSAMXXMASXMSMMMSMMMMMXSXAAMSXMAMAMMSMS
MMSMMASAMAMSAMXMXAAAMAMXMXSSMAMXSSSMASXSAAXXMXMXMSSSMXSASXSMMXAMASASAMXMSXSMMXMAMXMAMAMXMAMAAASXSMMSXSSMMAMSMXAMXAAAAAXXMXMAMXSMMMXMAXSXMAAM
SASXMXMMMSSSXSMXMMMMMMSMXAMAMSMXMXAMMMAXXMMAMMSAMAAAXMXAMAXXXMMXXMASMMAMXAXMAMMAMAMAXAMMMMMSMMSASAAXXXAAXSSMSMSASXSMSMSMSAMXSAMMASMSMSAASMMM
MASMSSMASXAMAAMSXMAXAAAAMMSAMXMAMSAMXMMSSMMAXAMAMMSMMSMSMSMXSAMASMMMASXSMMMMAXSASXSSXMMXAAAAAXXAXAMSMSSMMXMAAXAASAMAXASXSASXMASMMSAAXMXMMAMX
MAMXMASMMAAMMMASASXSMSXSXXSXSXSAXSASXAXXAASMMMMSMMMMASAXAXAASAMASAMXAMAAXXAXAMMAMXAMASMSSSSSSMMSMAMAAMAXMAMMMSMMMAMAMAMXSAMXMAMAXMMMMSSXSAMX
MASXSAMXMSMSXXMSAMAAXMAMXMMAMXSMMSAMMMMMMMMMASMXMAMXAXMMMMMMMAMAMAMMSMSMMSMSMXMAMXMMXMAMAMAMAAAMXXSMSSXMSASMMXMMXXMMMMMMMMMXSASMMXAXAAMAMMXX
MAMXMASXMXAXXMXMAMSMMMXMASMMMAMSAMXMXXAXXAXSAMXSMSXMSMXAXAXSSMMMMSMMAAXAAAMAASMMMAXMAMXMMMMSSSMMMXSXAXAASASAXASMMMSXMXMAAASAXASMAMXMMSMSMSMX
SASXMASMMAMMMMMSXMAMXMAMXXAAMAXAMXMMMSMSXMXMMSAMXXAMXAXSXSXMAXXMAMASMSSMSXSMSMAASXSAXSXMAXXAXAAXMASMMSMMMXMMSXSASAMXMASMSMMAMSMMXSXAMMAMAAXS
SASMMASASASAAAAAASMSSMMSSSSMMSSMMXSAAAXMAMXMAMASAXSMMMMXAMXSAMXMMXXMMAMXMMAMAMSMMAXMAMXSMSMMSMMMMASAMAXXSMSXAMMMMXSXSXSXXXMXMMASAAXMMMAMSXXA
MXMASMXXSASXSMMSMXAAAAAAXMAMXMAXAAXMSMSMMMAMXXAMMXAAMXAMAAXMASAAASMSMXSASMMMSMMXMMMXMMASXMAAMASAMASMSASMAAMXMASXSAMXSXMAMSAMXMAMMSMXAMXXMMMM
MASAMAXMMMMXMXXMMMMMSMMSSXSAMMAMXSMXMXXASXSMSMMMMASMMMXSMMSMAMXMMSAAMAMASXXAAXXAXXAXXMAMAXSASXMAMASXMASAMXMXXMAMSAMAMAMAMSASMMAMXAMSSSMXAAAX
MAMAMXMMAXSAMMXMXAMAMAAAAAMASMMMAMXMASMAAAAASXSAXXAAXXAXMMAMMSXSAMXMMAMMMAMSSSSMSMSAMMMSXMXAXMMMMMSMSMSAXXMMMXMXMAMASAMXXSAMXSMSSMMXMAMSSMSS
MASAMXASAMSAMAAMSMSASMMMXMMAMAAMAXASAXMAMXMMMASASMSMMMMSSSSSMXAMSSXXSXMAXXMAXMXXAXXAXAASAMXSXMAXMAMXSASAMXMASMSMSAMXSXXSAMAMAXSAMXMAXAMAXAAX
SASASAAXAMSAMSSMAXMASXSSMMMXSSMXAMMMXSASXSXMMAMMMMAMXMXAAXMAMMMMASAMXMSSSXMXSMSMMMSAMMMXAMAMMSXSAMXAMMMMSMSAMSAXMMXMMXMMMXSMXSMXXAMXMSMMMMMM
MASASMSSSMMAAAAXXSMAMXMASXAAXAMMSSMASMAMSAAXMSSXMSSSSXMMSMMAMAMMXSXSAXXMAXXXMAAAXASASXMMAMXSAXAMAMMMSASXAXMASMXMAMMSSXXAXAXMXMASXSASMXAXMAXS
MMMAXXAAAXXMMMMMMXMMXXSSMMMMSAMAXAXXMMAMSSSMXMAXAAAAXXMAAMSSSMSSXMASASXSASXAMSMSMXSAMAMSSSMSXMMMAMXASXSMMSSMMXMASMAMAMSMMMXSAMMMAMXSASXMMSAA
SXMXMMMMMMXSSSSXSMMMMMXXAXXASAMMSXMASXMMMAMASASMMMMMMXMASMXMAAAXAMXMAXAXAMMXMAAAMAMAMXMAAAASMXMASXSMMAMAAAAAAXAAMMSMAMAASMAMMSMMXMAXMASAAMXX
MAMMMXSXXASXAAXAMSAAASASXMMASAMAMAMMSAMSMAMMSAMXMSAMXAMAXMAAMMMSXMAMSMMMSMXSMXMMMMMAMSMMSMMMXAMXMAMXMASMMSSMMASXXAXMASXSMMMSXMASMMXMXAXMXSSS
SAMASAMXXMSMMMMMMAMMMMASXXXMSMMAMXMXSAMXMAMAMAMAXXAXSXMMXSAMXSXSMSSSXSXAMAMASXMMXMMMXSXXMAMXSMSMMMMSMMMAXXMXSMMMMSAMXSMAXXSAMMASAMXMMMXSMSAA
MASXSASMSXMAAAXSMSXSXMXMMMMASASASXMMSXMASXMXSMMSSMSMSMASAMASXMAMMAMMAMMSSMXAAXAAAMXXAMXMSMSASMSASMAAMSSSMSMASAMXXXXMAMMAMXXMSMMSMMMXAASMXMMM
SMMMSXMAASXSMSXMAMAASMAMAXMMSXMMXAAAXAMXASAMXAAMAMAAMMAMASAMAMMMMASMAMMMAMMXSSMMMSAASXMMAAMASASAMMMSSMAAAXMASAMMMMMMASMSSMMXSAASXAMSSMXMASXX
AAAAMAMAMMXMXXAMAMSAASXSSMSXMXSMSSMMSMXXMASMSMMXAMMSMMSSMMASXMSASMMXASASAMMMMAXAXMAMMAMMMSMMMMMMMMAMXXSMSMMMSMXAAAAMMSAAAMSASMMMSAXMMXAXAMXM
MSMSSMMAXXXMAMAMXMAXAXXMAXSAMXXAAXXMAMXMXMXXAXMSSXXXXAMAASXMAAMASAMSXSAMMASASMMSSSMSMXMAAMAMMXMXSSSMSMXMAXXAXASXSSSSMMMSMSMXSXXAMXMAMSSMMSAM
XXXAAXXMSSMMASAMMSMSMMSMSMSAMAMSMMMSASAMXSMSMSMAMMMSMSSMMMSMMSMXMAMMASXMSAMMMAXAXXMAMAXMXMAMXSXAAXAAXAASAMXMMAMMMMXAXMAMMAXMMMSMMAMXMAMAASAS
AMMSMMXMAAAMXXXXAMXAAXMAXAXAMXXAASASASMXAMXAXXMASAMXAMMXSXXXAAMXSAMMAMAXMAXSXSMAXXSSSMSMSMAMAXMMSSMMMMXXMASXMAMASAMXXMAMSAMMAXAAMMXXMASMMSAM
MXAMXMAMAXMMSMSMSSSSMMMSMSSSSSSSSMASAMAMSXMXAMSAXASMXMAAMAMMSMSASASMSSXMMSMAAMXSAMXAAAAAAMAMAXXAMMXASMMSMMXMMASXSXMASMAXMAXSASXSMSXXMAXXAMAM
XMASASXSSSXXAAXAXAMXAXMXAMXXAAMXMMAMAMXMXASXSMASMSMXMMMMMASAMSMMSAMMAMMXAXMMMMAXXAMXMMMMMSAXXASXMXMAMXAAAMMMSAXAMMXMMMSXSAMXAXXMASAXMMSMMSMM
MSMSAMAXMAXSMMMMMAMMMSXMSMMMMMMAXMXSMMSSMAMAXAAMXAXAXSSSSXSASMMMMXMMSSSMAXXAMSMSMSSMSXXXASMXSXMAXSAMMMSSSMAXMSMAXSAMAAXXMASMMSAMXMAXSXAAMAAA
XAAMXMXMMSMXASAMXMMMAMXMAAAXXASXXAMXAAAAMXMAMMSXSMMMSMAASASXMAXSAASAMAXMMMXXXAAAAXSAMASMASAASASXMMXSSMAAAMSMAXXXMMAMMXXASXMASMXMMAXSMMMSSSSS
SMSMMSAXAAXMAXASXXAMASASMXMASMMXMXMSMMSSMXSXSMXASAMSAMXMMMMAMAAMXMMAMMMSSXMMSMSMXSMSMAMMMMMMMAMSAAAXMMMSMMMMXMASMSSMAMMMMMMMMXXMAMMAAAXXAMAA
SSMAXMMMSSSXMSAMXSXXAMAXAAXXMAAMSAMXAXAAXXMAXMMMMAXSXSXXXXMXMMXMAXMMMMAXXAAAXXXAXSAAMASASMMSMSMXMMXMAAXAAAXSSMAAAAAMXMAMSASXMMSSMMSSSMSMMMSM
SAMSMXAAMXAAMMMMAXXASMSMSMMMSMMMMASXMMMMAAMSMSAXXAMMXMXMMMXAXXASXSMSAMMSXSMSXMMXMMAMSXSASXAXMXMAMAAMMMSSMMXAAMMSMSMMXXXMAXSAAAAAAMAMAMSAXAAM
SXMXMXMSSSMXMAXMXMMMAAAAAAAAAAMAMSMXSAXXMMMXASASMSAXAXAMAASMMSASAAAXXMXAAXMXASMXMXSMMXMXXMMSSMSMMMSXSAMXSSMSXMAXXAXXMAMXMXMMMMSXMMAXAMMSMXSA
SXMASMXMAAXMMMSMAMXXMMMSXXMXSXMMXMAAMSMXXAAMXMAMMXMSMSMXSMSXAMAMMMMMSMMMSMASAMAASMMAXXSMMAMAMXAAMSMMAAMAAMAMXMXSXMXAMMMMXMXMXXXXXSXSASMXMAAX
SASAXMXMSMMXAAAXXAMMXMXMMSSXXMXSAMMMSMXXSMMSAMXMAMAAMAXXMAXMXMSMSXAXAAXAAMXMXMSMSASXMXAAXMXXMMMSMAAXSAMXSMXMAMAMASXSMASAAAASMSMSAAASAMXASAMX
XMMMSMXMXXASMSSSMSSMAXAAAAAAMAAXAMXMAMXXXAAXAMXSAMSMSXSMMAMXXXXAXSSXSSMMSMSMSMMASXMASXSXMXSAAAAAXXMMMAAAXXMSXMSSMMAASASXMSXXAAAMAMMMMMSASXMM
XSAMAMMMAMAMXXXAMAAXSSSMMSMSMMMSSMMMSSMSSMMSSMAMXXAAXXMXAASMMSMMMAMXXMXMAAAXAAMAMASASXXAAAMMSMSSSSMXSSMXSMXMXXAAXXSMMMSXMMAMSMSMAMSXMASAMXMS
ASASXMAMASAXMMMAMSSMMAXMAXMMXSXXAAXAAAXMASAAAMMSMSMSMXSASXSAAAXMXXSMSAASMSMSSSMXSXMASASMMMMAAMXMMAXAAAXAXAAMXMSSMMMAXAXMAXAAXAMXSMMAMAXMMXXS
MXAMXSSSXXAXXAAXAAMAMXMSAMASASXSSMMSMSMXMMMSAMXMAAAAASXAXASMSMXSAMXAMSMSAMXAMXMASASXMMMMXSMXMSSXSMMXSMMMSSMSAAXXAXSAMXSXSSSSMXMAMXSXMXSASMAX
MMSMMMAMAMSMSAMSMSXMSMXMASMMASXXAMAMXMMMXXXAMXSMSMSMSAMMMAMMMMXXAXMMMAXMASMMMASXMMXAAXASAXMSSMXAAXSMMXSAAAASMSMSXXMASAMMMAMXAAMASMSXMXSAAAAM
MXAAASAMAMAAXAMSXXAMMASXXMXMAMXXAMAMASASAXMASXSAMAAXXMAXSXSMAMASMMMXSSXMAMXXXMXXMASMMSASMMMXAAMSMMMAXAMMSSMSAAXAMSSMMASMMSMSSMSAXXMASAMSMSXA
ASXMMXXMXMMXMMMXASAMXAMAMMAMAXXSMMMSAMAXMMSSMMMAMSMSSXSASAAMMSAMXAAMMMMMSXXMXSSSSMASAMMMAASXMMMXXMSMMSMMMAXMMMMSSMASMMMAAMAAMAAXXXMXMXMXXMXS
XSASXMSMSXSASASMMMMXMASXASMSMSAAAAAMXMMMMAMAASXSMXXAXAXAMSMMMAMXSMSXSSXMMAXSAMAMASAXXSASXMSASXSAMMAMMMAMXXXXAXAXAMAMXMAMXMXMMXMXMSAMXSMMAMAM
SMMMAAAAAAMASAMMAMXAMMMXMXAAAMXMMXXMAAMXMAXSMMXMASMSMMMAMMXMSAMASAAAMAAXXMXAAMMSAMXSSXMMAMSXMAMAXXASASAMXSSSSMMSMMMSSXMXAAXXMAMAXMAMSMMMAMAS
MASXMMMMMSMMMAMSSSSSSMMSMMSMSSMSSMASXMMMSMMASMMSMMMMAXXXXXAAMAMASXMASMXMSXSSSMXMXMAXXAMSXMXXMXMAMMMMMSAMASAMXAAAMAMAMAMAMXMMSASXMSXMAAXSSSSS
SAMMMSXSAXAAMSMMMAMXAAAAMMMAAMMAMXAXAXMMAMSAMXAAMAMMMMMMSMMXSAMXSXMXSXMXAAMAMXXAAMMSSXMAXMXMSXMAMAAAXMAMXSMSSSXXMAMMSMMASAAMSASAMAMSMSMAMSAX
MASAASMMASMMXMAMXXMSXMSMSAMMMSMASMSSSMXMAMMMMMMMSASAXAAAXAAMSXMAMAMAMXAMMSMAMMSSXSXAAASXMSAAAXSASXSMSSSMXXXXAXASXSSXAASASXSMMXXAMAMAAXMASMMM
MMMMMXAMMMMMXXSMMMMXXMAXMXSMMMXMSXAAAMMXMAMASAMXSASASXMSSMMXMAMAMAMAMMMSAMMAMMXAMAMMSMAAASMSMXMASAAAAAAAAMMMAMXMAMMMSMMASAMXXSMMSXSASXXXXAAX
SAAMASMMMASXSXXASASMSMSSMAMAAXASMMMSMMSAMASASASXMAMXMAAAXAXXXSSMSMSASXAMASMSSXMAMMAMXXMMMMXXMASAMMMMMSMMMASAAMMMMMXAMXMAXAXMAXAAAXXAXMSMSSMS
XMXXAAAAMXMAXAMASASAMXMAMMSSMSMSAAMAMASASAMXSMMMMMMXMMMMSMMMMMAAAASXXMAXXMAXMASAMXMMMMXAMXAASAMXMMXAAMMSSXMXSMXASMMXMAMMSMMAMSMMSSMXMAAAXAAX
XSSMSSXMMAMMMSMAMAMMSXSAMMAMMMXSXMXASASAMXSXXMAMXAXAMXMAAMXAXSMMMXMMSMSSMMMMXMMMXSAMXAMXMXSASXMAMXMMMSAMXAMXMXSMSAMSSSMAAAAMMAAAMXMAMXMXMMMX
SAAAXMASXMASAXMXMMAMMASMMMASXMAMAMSXMAMXMMMMXMASMMSASAMSXSSSXSMMXSAASAAXMAMMXSAXASMXMSMAMMMASASMXSSMMMAMXAMXMASAXAMAAAMXXXMSSSSMMASASASXMXMA
AXMMMMMMASMMAXAMXAAAMXMSAMMSAMXSAMSXMXSSMSAAXSASAAMMMMMMAMMMAXAXAXXMMMMSXMMSAMXMXMSAAAXAMAMXMAMXASXSASAMSMMXMASMSMMMSMSSMAMAAMAAMAMAMASXMAMS
MSMASAXMAMXMMMSSMSXXMXAMXMSSMMMMXSMASAMAASMXMMASMMMSAMASASXSMSSMASXMMAAAASXMASXXAXSXSASXSXSXMSMMMMAAMSAMAXXAMXMXAXXMAXAAMSMMSSSMMSMMMSMMSASA
XAMASMSMASAAAAAMAMMSSMMMSMMMAMAAXXMAMXSMMMAMSMMMXMASASASMSAAXAAMAMXASMMXMMAMMXAMSXMAMMAMXMSXMAMAAMXMXSXMSMMASAXSSSSSSMSSMAAXXAXXAMASXAAASXSM
AMMXSASMAMMXMMSSXSAAAAXAAAASASMSMMMMSMMXMMXMAAMAMMASAMMSAMXMMSSMASMMMMSMMSSMXMXMMAMXMAMAAAXAXAXSSSXMAXSMAASMMMMAAAAAXXAAXSXMMAMMMSAMXMMMSASX
MXSAMXMAMSSXXAXMAMMSSMMMSXMSASAAMAASAMXASAXSXXMAMXAMXMAMAMAXAAMXXSXMAAMAAAAXXMAMXMXSXMXSMSMMSMMAAXXAMXMSMAMMASMMMMMMMSSMMMSAMXMSAMXXXAAMMAMA
SAMXSMMSMAXAMXSMSMMAMAMAMXMMMMXMSSXSASXAXMMMSXSASMMSAMMSMMMASMASMSAXMSSMMSSMMMAXASAMAXMXMXAXMXAMMMMSAMXAXAMMAMXAXMXAXAAMMSAMXSXXAMMSMXXXMXMS
MASAXMAAMXSXSAXAMAXMSAMXMASAXAXMAXASAMMSMAMAAXMMMMAMXXXAAASAMXAXASXMSAMXMAXAASASASASAMSAMXSMXMASXXAMASXMMSAMXSXMXSSMXSXMXMASMMMSMMAAMMSSMASA
MXMMXMSSSXAXMMXXSXMASASMMAMXMMSMASMMMMAASAMMSSSMSMSXMMSXSMSAXXAMXMSXMASASAMXMSASASAMAXSASAMAAXMXMXMSMMAAAAASAMXSAMMSAMAMXSAMXAAAAMSXSAAAAXXM
SSMSAAAAAXMXAXMMAMXMSMMMSSMMXMAMXMAAMMSMSXSXAAAAAXMAMASXMASASASMSMSMSAMAXASMASAMAMMMMMSAMASXXXMAMAXAXSMMMSXMMSAMASAMXSASAMASMMSXSMAMMXSXMMSX
XAASMMMMMSXSAAXXAXSMSMSAAASAMXSSMXSMMAMXMXSMMSMMMXSAMASASAMAMAAASASAMMSXSAMMAMAMXMAAXXXASAMASXSASXSMXMASXMASAMXSAMMSMSXMASMMAAMXMMAXXXXMSMXM
MMMMSXAXASASMSXSXMMASASMSSMXMMAMAMAAMASASAXAMAAXAXXAMXSAMAMXMMMXMAMXMXAMMXMMSSMMSMSMSMSAMAXXSMSAMAAXXMAMASASASAMXSASAMMSMMMMMMSAXSMMSAMAMMAA
MXMASXSMMSAXAAAMMSMAMXMAMAMAAMAXSASXMAMXMASMSSSMMSMSMMMMMXMSXMASMXMAAMSSSMXAAAAAAXAASASMMSMAMAMAMSMMSMSSMSAXAMXMMMMSSMAAAXAXXMMMMMAAMMMAMXSS
XAMASMXAAMMMSMXMASMSSSMMMAXSASXSMMMMMMSSMMMAAAXXMAMXASAXMASAMMAMAAXASAMAXAMMSSMSSMMAMAMMAXMXMSMMMXAXASXAAMXMMMSMMAASAMSSSMXMASAAAMMMSXSAMXMM
MSMAXASXMSAMXMMMMSAMXMASXMXMAXXAAXXAMAAMAAXMAMXMASXSAMMSMMAMAMASMSSMMXXAMSXXAMMXXAMXMSAMSSSMMXSMAMSMMASMMMASAAAMSSXSAMXAAXXSASXSMXAXMAMAXSAM
MXAXSAXXMAMMASASXMAMSSSMSXXMAMMMMMXXMMSSSMSXXAMXAMAMAMAAXMAXMMAXXXAAASMMMXMMMSMAMXSXXMASAAAMXAMMAMAAXMXMASAXMSMXAMMSAMMXMAXAMXMMASXSMXMAMMAS
ASAMMMMXSAMSASASXXAMXXAAXXXMASMASMSMSMMMMASMMSSMSSXSXMSSSSMSAMSSSSSMMAAAXXAAXAMMMAMXXSMMAXMMMSSSXMXSXXAMMSAXMXXMAMASAMMMMSSMMSXSMSAMMXMMXSAM
MMMSXMMXAAXMXMXMAXSSMMMMSSXSAXXXMAAAAMAMMAMAAAAXAMMAMXAAAAASAAAAAXXAXSSMSMSMSXSXMSSMASMMSMXXAMAXMSMMMSMSXMMMAAMSSMASAMXSAAAAAAMXAMXMASAAAMAM
XAASAMSSMSMSASMMSMMAMXAAAAMXMASXMMMSMSASMMSMMSSMMSMSASMMMMMXXMMMMMSMMMAXXMAMAAXAAAAXAMXAAAXMMMAMMAAAAXAMMAMMMMMAAMXMASXMMSSMMSAMSMAXXAXMSSSX
SMMMAMAXAXASAMXAXXSAMSMMMSMASAXMAXXXASXSAMMMAAMAXAAAMXXAXAMSMMXSSMSXAXMMSXMSXXXMMSMMXSMSSSXXMASMSASMSSXMMAXMAXMXSMSSMMAXXAMXXMXAMMSSSXMMAMAM
MSSXAMMMXMXMSMMAMMMAMXMASAXXMMXXSMMXXMMSXMAMMSSMMMSMSSSMMMMAAMASAASMSSSXMAXSXSSXAXXXAXAAMXMSSSXMXAXMAMMMSSSSMXSAMXAAASAMMASXXMMSXAAAAMAMSSMA
SAMXSMXSMSXAMXSAXAMMMASXMAXMMMSAMAMXASAMASXMXXMASAXXXAAXSMSSSMXSMMMXMAMASXMSAXXMMSAMAXMMMAMASAMXMMMMAXAAAMAAMAMMSSSSMMMSMSMMSMAMSMMSMASMAAXS
MMSMXMXAAMMXMASMSSSMXAMAMXMXAAXMSAMMMMASAMMSMMMMMSSMMMMMAAXMAMXXXAMXMXSXMSAMMMXMAXMASXMASASMXMSMXSAMMSMXMSSXMASAXAAXAXMAMAAXXMAXAXAAXXAMSSMA
XXAMMSMMSMSMMXMMAAAXMASXMMAMMSSXMMSXAMXMAMMAMXAXXAMMAASXMSMSMMSMSXSASAMXAAMAMSSMASXSMASASXSXMXAAXMAXMAMAMXXXSASMMMMMMMSSSSSMAXMSAMSMSAAXAMXA
MSMSAAMXMAAAMASMMXAMXXMASAMAXAAAMASXSMAMAMSASXMMSMMSMMMAXXAXMASXMASASMSMMMSMXAAMASMMSMMASAMAAMMAMSMMSASXAAMMMASXXMASXAAXAAMMASMMMMXAXMSAMXMM
MAAMMXSAMSSXSASXSXSSXAMASXMSMSSSMASAXXSMAMSMMMSAAXAASMSSMMSXMASAMAMAMAXAAAAMMMSMAXXAXXMAMASAMAXXMAXAMAXMMXSAMSMXMXASMMSXMAXSAMXASMSSMXMAMAAM
MMXMXSSXMAMXMASMSAAXXMMASXMAAMAAMMMMMAXMSXMASAMXSMMSSXAXSXAXMXMAMXXXSSMSMSMSAMXMSXMMSMMXSAMMSSXMSMSSMSMXXAAASMMXMXAXXXXXMXXMASMMSAAAAXSXSSSM
MSASXAMXMASXSXSAMMMMSXMASASMSMSMMSAMMSMAMMMAMASMXMMMMMMMMMMMMSSXMMMXMAMXMAXMASMAXXASAMAMMMMMAMXAAAAMAMXSMSSMMXXAXMMSMXMMSAXSAMAMMMMMSMMAAAXX
ASASMXMASMMASAMAMXXASAMASMMAAAAAMMAMAAMXMAMXSAMAAXMAAAAAAAXAAASAAAXASAMAMAXXAAMAMSSXMAXSAAMMASMSMMMMXMAXMXAAXSSMSAASMSXAAAXMASMMAAAAAAMSMMMA
XMXMASMXSXMSMXSSMAMXSXMXSXMSMSMSXSSMSXSASXSAMXXSASXSSSSSSSSMSSSSMMSASMSXSMXMASMAMSASXAXSMSSSSMMAXSMXSMXSMSSMMAXASMXMASMXMSMSAMMSXSMSSSMXXXSX

2
src/day04/src/lib.rs Normal file
View File

@@ -0,0 +1,2 @@
pub mod part04a;
pub mod part04b;

52
src/day04/src/part04a.rs Normal file
View File

@@ -0,0 +1,52 @@
use std::fs::File;
use std::io::Read;
pub fn day04a() -> u64 {
// read file (that for sure exists) into two lists
let mut file: File = File::open("src/day04/input04.txt").unwrap();
let mut file_content: String = String::new();
file.read_to_string(&mut file_content).expect("Can't read file");
// create n*n matrix from input
let mut matrix: [[char; 140]; 140] = [[' '; 140]; 140];
file_content.split("\n").enumerate().for_each(|(line_nr, line)| {
line.chars().enumerate().for_each(|(col_nr, ch)| {
matrix[line_nr][col_nr] = ch;
});
});
// examine every element in matrix
let mut count: u64 = 0;
for row in 0..140isize {
for col in 0..140isize {
// skip if it's not X
if !matrix[row as usize][col as usize].eq(&'X') { continue }
// if enough space search in X+
if col + 3 < 140 { count += search_xmas(&matrix, row, col, 0,1) }
// if enough space search in X-
if col > 2 { count += search_xmas(&matrix, row, col, 0, -1) }
// if enough space search in Y+
if row + 3 < 140 { count += search_xmas(&matrix, row, col, 1, 0) }
// if enough space search in Y-
if row > 2 { count += search_xmas(&matrix, row, col, -1, 0) }
// if enough space search in X+Y+
if col + 3 < 140 && row + 3 < 140 { count += search_xmas(&matrix, row, col, 1, 1) }
// if enough space search in X+Y-
if col + 3 < 140 && row > 2 { count += search_xmas(&matrix, row, col, -1, 1) }
// if enough space search in X-Y+
if col > 2 && row + 3 < 140 { count += search_xmas(&matrix, row, col, 1, -1) }
// if enough space search in X-Y-
if col > 2 && row > 2 { count += search_xmas(&matrix, row, col, -1, -1) }
}
}
count
}
fn search_xmas(matrix: &[[char; 140]; 140], row: isize, col: isize, x: isize, y: isize) -> u64 {
if !matrix[(row+ x) as usize][(col +y) as usize].eq(&'M') { return 0 }
if !matrix[(row+2*x) as usize][(col+2*y) as usize].eq(&'A') { return 0 }
if !matrix[(row+3*x) as usize][(col+3*y) as usize].eq(&'S') { return 0 }
1
}

60
src/day04/src/part04b.rs Normal file
View File

@@ -0,0 +1,60 @@
use std::fs::File;
use std::io::Read;
pub fn day04b() -> u64 {
// read file (that for sure exists) into two lists
let mut file: File = File::open("src/day04/input04.txt").unwrap();
let mut file_content: String = String::new();
file.read_to_string(&mut file_content).expect("Can't read file");
// create n*n matrix from input
let mut matrix: [[char; 140]; 140] = [[' '; 140]; 140];
file_content.split("\n").enumerate().for_each(|(line_nr, line)| {
line.chars().enumerate().for_each(|(col_nr, ch)| {
matrix[line_nr][col_nr] = ch;
});
});
// examine every element in matrix
let mut count: u64 = 0;
for row in 1..139 {
for col in 1..139 {
// skip if it's not A
if !matrix[row][col].eq(&'A') { continue }
// if enough space search in X+
count += is_x_mas(&matrix, row, col);
}
}
count
}
fn is_x_mas(matrix: &[[char; 140]; 140], row: usize, col: usize) -> u64 {
if !validate_tl_br(matrix, row, col) { return 0 }
if !validate_tr_bl(matrix, row, col) { return 0 }
1
}
fn validate_tl_br(matrix: &[[char; 140]; 140], row: usize, col: usize) -> bool {
match matrix[row-1][col-1] {
ch if ch.eq(&'M') => {
matrix[row+1][col+1].eq(&'S')
}
ch if ch.eq(&'S') => {
matrix[row+1][col+1].eq(&'M')
}
_ => false
}
}
fn validate_tr_bl(matrix: &[[char; 140]; 140], row: usize, col: usize) -> bool {
match matrix[row-1][col+1] {
ch if ch.eq(&'M') => {
matrix[row+1][col-1].eq(&'S')
}
ch if ch.eq(&'S') => {
matrix[row+1][col-1].eq(&'M')
}
_ => false
}
}

39
src/day04/story04a.txt Normal file
View File

@@ -0,0 +1,39 @@
"Looks like the Chief's not here. Next!" One of The Historians pulls out a device and pushes the only button on it. After a brief flash, you recognize the interior of the Ceres monitoring station!
As the search for the Chief continues, a small Elf who lives on the station tugs on your shirt; she'd like to know if you could help her with her word search (your puzzle input). She only has to find one word: XMAS.
This word search allows words to be horizontal, vertical, diagonal, written backwards, or even overlapping other words. It's a little unusual, though, as you don't merely need to find one instance of XMAS - you need to find all of them. Here are a few ways XMAS might appear, where irrelevant characters have been replaced with .:
..X...
.SAMX.
.A..A.
XMAS.S
.X....
The actual word search will be full of letters instead. For example:
MMMSXXMASM
MSAMXMSMSA
AMXSXMAAMM
MSAMASMSMX
XMASAMXAMM
XXAMMXXAMA
SMSMSASXSS
SAXAMASAAA
MAMMMXMMMM
MXMXAXMASX
In this word search, XMAS occurs a total of 18 times; here's the same word search again, but where letters not involved in any XMAS have been replaced with .:
....XXMAS.
.SAMXMS...
...S..A...
..A.A.MS.X
XMASAMX.MM
X.....XA.A
S.S.S.S.SS
.A.A.A.A.A
..M.M.M.MM
.X.X.XMASX
Take a look at the little Elf's word search. How many times does XMAS appear?

26
src/day04/story04b.txt Normal file
View File

@@ -0,0 +1,26 @@
The Elf looks quizzically at you. Did you misunderstand the assignment?
Looking for the instructions, you flip over the word search to find that this isn't actually an XMAS puzzle; it's an X-MAS puzzle in which you're supposed to find two MAS in the shape of an X. One way to achieve that is like this:
M.S
.A.
M.S
Irrelevant characters have again been replaced with . in the above diagram. Within the X, each MAS can be written forwards or backwards.
Here's the same example from before, but this time all of the X-MASes have been kept instead:
.M.S......
..A..MSMS.
.M.S.MAA..
..A.ASMSM.
.M.S.M....
..........
S.S.S.S.S.
.A.A.A.A..
M.M.M.M.M.
..........
In this example, an X-MAS appears 9 times.
Flip the word search from the instructions back over to the word search side and try again. How many times does an X-MAS appear?

View File

@@ -5,6 +5,8 @@ use day02::part02a::day02a;
use day02::part02b::day02b;
use day03::part03a::day03a;
use day03::part03b::day03b;
use day04::part04a::day04a;
use day04::part04b::day04b;
fn main() {
let exercises: Vec<(&str, fn () -> u64)> = vec![
@@ -14,6 +16,8 @@ fn main() {
("day02:B", day02b),
("day03:A", day03a),
("day03:B", day03b),
("day04:A", day04a),
("day04:B", day04b),
];
let start: Instant = Instant::now();