initial commit

This commit is contained in:
Jakob Lechner 2024-12-07 17:45:16 +01:00
commit cf7d87c04d
34 changed files with 4282 additions and 0 deletions

1
day4/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/target

54
day4/Cargo.lock generated Normal file
View file

@ -0,0 +1,54 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "aho-corasick"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
dependencies = [
"memchr",
]
[[package]]
name = "day4"
version = "0.1.0"
dependencies = [
"regex",
]
[[package]]
name = "memchr"
version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "regex"
version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata",
"regex-syntax",
]
[[package]]
name = "regex-automata"
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"

7
day4/Cargo.toml Normal file
View file

@ -0,0 +1,7 @@
[package]
name = "day4"
version = "0.1.0"
edition = "2021"
[dependencies]
regex = "1.11.1"

4
day4/input Normal file
View file

@ -0,0 +1,4 @@
..A.A.
...C..
..A.A.
.B...B

140
day4/input2 Normal file
View file

@ -0,0 +1,140 @@
MAMAMASXXXSAMXSSSSSXMXMAMMSXMASAMXMXSSXMXXXXMSMSSMXXSAXMMSSSMSXMMXSMMMMSSMMMAMMMMSMMSXMAXMASMMSXASXSAMXXAAMXMXMAMXMAAXMASXSMXSSSSSSSSXMXSAMX
MSMMMMSXAAAMSMMAAMMMMAMASXMASAMMSXAXXMAMSMMMMXAMAMXAMMXSAAAAASASMASXAAMXAAXSAMAMMAAXXAMXMMSMMXMAMSAMXMMMSMMAXXXMXSMSMSMASMSMAMAAAAAAXXSASAAX
XAAXMAMMSMMMSAMMMMXAMAMXAAXAMXSAMAMXMSXMAASASMSMAMMXXAAMXMSMMSAMMAMXMXSXSMMMASMXSSMMMAMAAMAAASXSAMXMAXSAAAMSSSMMAAAASAMXXAMMAMAMMMMMMMMASMMS
SSXMMAXAAXMASMMXSXSMSSSSSXMSSMMXSAMXXAAXSMSASAMAMXXMMMXXAMXXXMXMMSXMSAXMAMXSXMXAAMXSASMMSXXMMAAXMXXSAXMMMSAAAXAASMMMSXSSMSMSASXSMXAXASMMMMAX
XXASMSSSMMMMSAMAMAXMAAMAMXMAAXAAMMMMMSSMAAMMMMMSSSSXSAASMSAXSAMXXXAAMAMSAMXSXAMMMMASAMAXMMMSAMXMSAMASXAAAMMMMMAMMAXXXAAAAMASASXAMSMSMSXXAMXM
MSXMAAAAXMSAMAMXSAMAMSMSMMXSMMMXSAXAAAXXMMMXMXMAAXAAMMXSAAMSMAMSAMMMMAMSASAMMSMSAMXSASXMSAAAAXSXMASAAXSMXMMASMMSSSMXMMMSSMAMAMMMMSAAXMAMSXSA
ASMMMMAMAXMASMMMMASMXAXAMXAAAXMASXSMSXSSXSAMXAMMSMMMMSMMXMMMXAMXXSAMSSMXAMMSMXASMSASAMXXMMSSSMMXSXMASMXMSMSASAAXMASXXXAAXMAXAASXMMSMSMXSAAAS
AXAXAMAXMMSXMASXSXMXSXSXXMXSAMXMSMMAXMAMASXASXSXAMAAAAASXMSXSXSASAAXAMMMSXXAMMMMAMASXMXMSXMAAAXASASAXXMASAMXSMMMMMMMSMMSSSMMSMMXXAXMXMSAMXMM
AMXSMSMXSAMAMSAAMMMMSMMXXAAXAXMAMAMAMMAMXMAXXMAXSSSMSSSMAAMXMMMMMMSMSMSAAMSSSXSSSMMMMMXMMAMXMMMAXAMASAMXMMMMMMSMSMAAAAMAMAMXXAMSMXXSAMXMAAXS
XAMMAMAAMMMAMAMXXAAAXAAMMMMXMMMMSSMSXMASASMSAMMMMAAAXXXXMMMAAAXASXMAXAMMMMAAXAXMASXAAXAMSMMASMSXMAMXSMMAXAAMXAAXAMMSSSMXSAMASAMAAASMMMAXMMMA
SSSMAMMMSASMSSXSSSSSSMXSXAAASAXMAMAMXMMXAXAXMASAXXSMMMMASASMMXXASAMSMAMAASXMMSMSAMMSMSMXAAXMSAAXSXMXMAXAMSSSMSSSSSMMAAMAMAMASAMMMMXAASMMSAAM
AAAMXSXXMASXAXXXAAAXAMAMMMMXMASMSMSMMSAMSMMMSXSXSAMAAAAMSAAAASMMMAMAAAMSMSAXAXAMMSMAMAMSSSMXMMMXMAAASXMSXAAXAXMAMSXMMAMASAMASMMXAMMMMSXASMSX
MSMMMSXSMSMMMMMMSMMMAMASASMSMXMXMAXAAMAMXAMASXSAMMSSMSMXMMXMASAXMAMXXAXMXSMMMSSXMAMAMAMMAXXAXAXASMMMSAAMMMMMSMMAMSXXMASASASXMXMMAXASAMMXMMMM
XMAAAMMMSAAAASXAXMSSXSASAXAAXMSMMMMMMSMMSXMAXAMAMXAAXMXSXMASXSAMXXMMSSXMASAMXAXXSSXSSSSMAMMSXSXMMSSXMMSMAXMXMAXASXAASXMMSXMASASXSSMSAAXMXMAS
XMSMXSAXMSSMXMMXSAXAAMASAMSMMMSAAXAAXAAMXMMXSASMMMSSMMASASXSAMMMXMAAAAAMAMAMMXMMMAAMAMMMASXXAXXAAAXXXAXXSMXMASMXSMMMSXAMSASMMASXXAXSAMXXXMAS
SMXSASAMMAMXAXAAXMMMXMXMMMXAXASMMSSSSSSMSXAMSAMMAXMAMMASXSAMXMAAASMMXSMMAXASMSXAMMMMAXMXXSAMAMSMMSSMMMSMMMXSAMMMMMXAXMXMMAMAMXMMXXMSASXMSAMX
AAAMMSASMMSSSSXMMXAXXMMAXXXMMMSAMXAXMAXAMMSXMAMMXSSXMMAXMXMMMMMSXSAAAXMXSSMSASXSMSXXMMMMMMAMAMXMAAAAAXAAAAMMXMASAAMXSMMSSSSSMMXMSMASAMXAMSMM
SMMSMMXMAAAAAAAAASXMMSAMXMSXMXSMSMSMMMMSMAMMXXMSMMMMAMXSAMMAAAXXASMMMSAAAAAMAMSMAMAMSASAAMAXAMAMMSSSSXSSMSXXMASMMXSAAAAAAMAXSAAMAAXMAMMXMASX
MAMMXMASMMMXMXMMMMSAAAMXSMMAXMMAAAAMAAAMMXSAMSXSMAMASXMAXAMSMSSMMMAAAXMMSMXMAMAMAMAMSASMSSSSSSXSMAAAAAMXMMMAXXXXXAMXSMMMSMSMSSMMASMSSMSAMXMM
MAMXASMSASMMSAMXMAMMMMXASXSAMSMSMSMMSSMMXMMASMAMSAMSAMXSMSAMAMXMASXMXMXMXXASASMSSSSXMMMAXAXAASASMMXMMXMAMXAMMMMMSAMXXAMXXXXAMMMMAXAXAASXMAMX
SSSSMSXXXAAAMXSAMSMSXXMASMMAAMMXMXMAMAMSMMMSAMXMMXXAMMXXAXXMMMASASAMXMAAASASASXSAMXAASMMMXMSMMXMAXMMXXXAMXSXAAAXAMMMXSAMXAMSMASMAMXMMMMMSXSA
SAAAAXAMMXMMMASMMXAMAAXMMXMMMMXAMMSXMAASAXXXXMSSSMSSXSXMMMMMXSXMAXXMAMXSMSXMMMXMMMSSMMAASMMAMXMMMMMSAMSASXMSSSSSSSSSMXAMMMMAMAMMXMXAXXMAASAM
MMSMMMAXSMSAMMSXAMAMMMMMMAXXAMSMSAAXMSMSSMMMXSAAAAXMAMASASAMXMAMMMSSSSXMAXMXSXASXMAXASMMSASMSAAAMXXAAMSSMMMAMAAAAAAAMSMMAXAMMASMMMMSSSMMMSXA
MAMXXXMASAMAMSSMMXAMAAAAMSXMAXAMMMXMMAMXMMAMSMMSMXMMAMASMSSSMSMMMXAAAMAMMMMMMSMMAAAXMSAASXMAXXSMSASMSMXMMMXMMMMMSMSXMAAXMMSXMAXAAXAAAAASASMS
MSSMMXSAMAMXSAMAMSXSSXMXXAASXMMSASAMMMSMXSMSAXMAMMXSXSXSASMMMAMAMXMSMMAMXAAAMMMSAMXSXSMMMAMXMMMMAMXAXMAXAAASXMAXXXXMMXSMAAMXMSSSMMMSSSMMASAX
XXAAXAMASAMXMASAMSMMAMSSMMMMXAXSASMMAAAAMSXMASXSXSMXMSXMXMAAMAXSSSMAXSXSXSSXSAAXAMAMXXMAXXMXMAXMXAMXMMSSMMMMAAXMMMMAAAXAMMSMMMAXMXAAMXXMMMAM
MSSMMMSAMAMASAMXXSAMXMAAAMMMSMMMXMASMSMSMXASMMMMAAXAAMSXXSSMSSSXAASAMSMSAAAAMMMSAMASXMSSMSXXSSSMSSSSXAAMASMSSMSXAMAMMXSAMAXAASMSMSMSSXXXAMXM
AXAXAXMMSASASXXMASAMXMXSMMAMXMASAMMMXAXXXMMMAAAMAMSMMAMMMMXMAMMMSMMMSXAMMMMXMSASXSAXAAAXASMASASAAXAAMMMSAMXAAMAMMMXASASAMXSXMMXAAAAMXMASXSSM
XXMXSXMASXSAMXMAMXSMASAMXSAXAXXSXSXMSSMMAAXSSMMXAXAXSSXXAAXMASXAAAASXMMMXAMXAXAMAMASXSSMAMAXXAMMMMXMAAAMXSMXMMMSSSMAMAMAMXSASXSMSMXMAMMMAAAS
SXMAXAMXSXMAXMASMMMMAMMSXSAMSMMMMSAMXXAMXSXXAAMSMSAXXMMSMSSSSSXSSSMSXAXMSMMMMSAMXMMMMAMXMAMAMSMMSMXSMMXMXSMMMXXXAAMXMXMSSMSAMAXAAXASMSAXMSMM
AASASAMAXASAMAXXSAAMXSAMXMAMXASMASMMAMSMAMMMMXMAMMXMAXXAMAAMMMMXXXAXXMAAXAAAXSAXXSXMMMMAXXSAMXAAAAAMAXMMAXMASMSMSMMMMMMMAAMMMSMSMSXSASASXMXA
SMMASMMMSMMMXMSASXXSAMXSMMSMSAMAXSAMMMXMSXMAMAMXSMSSMMSASMMMAAMMAMAMMSMMSSMMMSXMASAXAASMSXAXAXMMMMSSSMAMSSSMSAAAXMAXXAASXMMSAAXAAXAMAMAMAXSA
MXMMMMAAXMASAAMXMAMMXSXMASAXMMMXMSXMMMSAXASASXSXMAAMAASMMXMSSSSMXMAXMAAXMASMMMASAMXMMMMSAMSMMSSSXAXAMXMAMXMAMXMMMSMSSSMSMAAMSMSMSMMMMMSMXMAS
SXXAASMXMSASMMMSXSXMAMAMSSMSMXMAXMMSAAMXMASASAXMMMMSMMSSXAMXAAAASXMMAXMMXAXMMSAMASMSXSSSMMAAAAAXMXMSMXXXMMMXSSSSXXAAAMASMMMXMMXXXXAXASXMASXM
MXSMXXMSMMXSAAMSAXSMASMMAXXAXAAXXMASMMMMMXMAMMMSXXXXMASMSMSMMMMMMASXMSSMMXXAMMMMXMAAASAMXSSSMMSMMMXMAMSMMAMXAAAMAMMMSMASAMXASXMASMSSMSASXMAS
XMAMXSAAMMSSXMXMAMXSMSXMMSSSSMSSXMMSMSMSMSMXXAASMMMXMXMAAMAMASXXMAMAAAMMAMXMMAXMXXXMSMASAMXAAAMAMAAMAMAASASXMMMMXMAXXMAMMMMMSASXXAASXSXMASAM
SMSAMMXMMSXMASAMSMAMMMAAAMXAMAAMXMAXAAAMASMMMMAMMAAAMAMSMSASMSAMMSSMMMXMMSAXSXMMMMXXXAXMAMSSMMSAMSXSASMXSAXXXAXAASXSXMASXMXXMAMMMMMMMSASXMXS
XAMXMASMXSAMASXSAMXSASMMSSMMMMMSSSMXSMSMAMAMAMXSMMSXSAMMXSXSXXXMAAAASXXMAMMMMXXAAAXMSMMMXMXAMXMAMXASMSXMMXMAMASXXSMAMAXAMASMXSXSAXMAASASXAMM
MXMSMASAASAMMSXSAXMXASAMMAMXMXMAMAAMMMMMXSMMAXAXAMXXSXXSAMXMASMAMMSMMSMMSXXAMXSSMSSXMASXSXMAMAXXMMMMAMXMAMMAMMMMAMAMMSSMMAMSAMAMSSSMXSAMMSSM
ASMXMAXMMSXMAMMXMMSMMMMXXXMAXXSMSSMMAAMMMMASAMSMAMMASAXMASXMMMASMMMMAMXAAASXSAXAAAAMAMXAMAMSSSXSASAXMSMMAMSASXXMAMMXAAAXMASMMMAMAMAMAMAMMMAM
XMASMSXSASAMASXXSASASXMSSXSXXXAXAXMSXSMMASMMMAMSMMXAMMMSMMXMMXSAMAMMSSMXSMAAMMSMMMSMMXMMMMMAAAAMASMSAAAMAMSAMXXSASMMMSSMMXSASMSMMSAMXSSMASMM
XSXMAXAMXXAMXMMAMASXMAAXSAXAMAMMXSXSMAXSMXXAMAXASXMXMXMAMXASAMMAMXMAMAMAAXMXMAMAASAMMASXSXSMMMXMXMMXMSSMMXXAXMMSASXXAAMASXMAASAAXSASXSXSAMXM
MXXSAMAMSSSMAMMSMAMASMMMMSMMMMMMXSAMXSASAMSXMSSMMSMAMMMSMSXMAMMAMXMXSAMXMMSMMMSMMSAMSAMXAAMXSXAXMAMAAMAAMAXMASAMAMXMMSXSAXMMMXMSMSAMMMMMSMMM
SAMXMXAXMAMAASAMSASAXASXMAMMAXASAMXMAMXMAMSAXMAXAAMASMAMXMASAMASMSMAMXSXMAXXAMXMAMAMMXMSMMMAASMXMAMMSMSMMAXSAMXMAMASMXXXMXXXXXXXAMXMAXAAAXAA
MMSMMMMMMAMMMMAMSMMMSAMXXMMSASMSAMSMXSSMMMMAMSMMSMSASMAMASAMXSMAAXMAMAXAMASXSMSAXXMMMSMMXAXXXXMASASXAAXXMAMMMMASASAXMMMMXXMSMMMMSMASASMSXMXM
XMAMSASXMXMMASXMXSAAMAMMXMASAXXXXMAMAMXASMSMAMXMAXMXXMAMXMAXXSMMXMMSSMMMMXSAMSMMSAMXXAAXSSMMSMSASASMMMMAXXAMAXXSAMXXAAAMAXMAMAXAAMXMAXAAMSMS
MSAXSASASMASASASAMMSMSAMXMAMMMXSAXAASMSXMAAXSXAXMMSXSMXSAMSMMSASAAXXAMMAMAMXMAMXMXASMMSMXAASAMMXMXMXMMSMMMXSSXXMMMMASMSSMMSSSXMMMXSMMMMMSAAA
AMXMMXMAMXXMASMMMSXXMAMXXSSSSSXAMSXMXAMXMMMMMSMSMAAMMASMMMAAXSAMMMMSAMSXMMMASXMAXASXMAXAMSMMASXSMASMMAAAAAMAMXSMSAXXMAXAMAAXAMSMSAXASXMXSMSX
MSMMXMASMXMXXXAXAMAXXXXSAAAAXSAMXMAMSMMMSXMXXAMAMMSAMMMAXSSMMMMMASXMAMXMMXMAXAXSSXMAXAMSMMXSSMAMSAMAMSSSMSMMMXMASMSMMXSAMMMMMMMAAXXMMAXXXMAM
AAAXSAAASXMSMSMMSMAMXSAMMMMMMMSXASAMAAAASAMXMSSXXXAXSSMXMMXMAAAXMSASASMSMAMSMSXMAMSSMSSXAXXSAMXMASXSMMXXAXMXSAMAMMAXAAMASXMAAAMAMMSSSXMASMMM
SSSMAMSSSMASAMXAAXMASMAXXXSXAMASAMAXSMMXXAMAAXMASMMMMAXSXXASMSMSAXASASAAMSMMAMXMXMXAAXAMMMMMMMAAXXXMASMMSMMXSASASMMMMXMAMAMSSMSAXXXAAXMAXXAM
XMMMMAMAMXAMMMMSSXMSXXMMSMAMSXMSMSSMXXXSMSSXSXSAAXAAXMMSMSXMAAMMMMXMMMXMMAAMXMAMXMSMMMMMAXAAAMSMMSSMMMXAAAXXSMMMAAXSAAMSSSMAXMSMSSMMMMMAMSAX
MASXXAMAMMXSXSMMXXXAMASAMASXMAXSAAXASMMXAXSAAAXASXSSSXAXAMMMMSMSMSMAMASXSMMSASASAMMAXAXSXMSXSXXAMASAMSMSSSXAXAAMSAMSMMSMAAMAMAXMXXAAMAXAMMSA
MAMASXSASXMMAMAAXSMASAMAXSAAMAMSMMMSMSAMXMMMMXMXMAAAAMSSXMASAMMAAAMAMMSAAXXSASXXASXMSSXMSMXAXAMXMASXMAMMAXMMMSXXMXMXXXXMXMMAAXMSMSSMSMMMXAMX
MASXMASXSASMSSMMSMAMMASXMMMSMAAXAXXXAMMXAAAMMXSAMXMXMAMAXSXMASMMSMSSSMMMMMAMMMMSXMMMAXAAXMMMMMMSMMSXSASAMASXMMSMMASMMSMMSSSMMAAAAXXMAXAMMAMX
SASXSASXSAMAAMAMAAXMSMMXMAAAMXSMSMSMAMAXSSMSSXMASXXSXSSMXMAMMMXAMAAAXMAXXXAMAAXMAXAMSSMMMXSXSAAXAASXSASAAAXMAAXMSASAAXAAAXAMMSSMSMSSSSXMAAMX
MAMAMAXMMAMMMSSSSSMXXXMASMSXSXXAMAAMAMMXMAXAXASAMXXSAAAXSSSMMSMMMSMMMMSSXMASMMSAMMSMMAAMAMXAMXSSMMSAMASXMSSSMMMXMASMMXMMSSXMMAAXMAXAAXMASASA
MSMSMAMSSSMXAAXAAAMXMAMXMAXXSAMAMSMSSSMASMMMSMMAXSAMXMMMXAAMAMAMXAXXAXMAXSXMXAMAMAMXMSXMSSMMMAMAMAMAMAMXMAXAAXXXMMSXSXAAXXMASXMMMXMXMASXXAAX
MXXMAXMMAXXMMMMMMMAAMAMXMSSMMAMAMMAAAAAXMXMAAMSSMMMSXXXSMMMMMSSMSMSSMSMAMMSMMMSAMXMAXAXSAAASMMXAMXXAMASXMASXMSMAXXMAMXMXMAAXAAAAMAMMSAMXMSMS
MSASMMSMMMMAXXAXAXSMASXSAAAXAMXSMMMMSMMMSXMSXXAMASAMMXAXAMXMMAAXXXAASXMASASXMXSXXAMAMXXMMMMMAMXMSXSASAMXAAMXAXMAMMMAMMSSSXSAAMSSSMSAMASMMAXA
ASAMXXXAAXASMMSSMXAMXMAMMSSMSAMXMSXMAMMAXMAXMMSSMMASAXMSSMASMSMMXMMMMXSXMASAXXMMXSMMASMSMSSMSMASAMXMMASXMASMXMAMMXSASAAXAAXXXXAMMASMSAMAMAXM
XMXMASXSMMXAXSAMXAAXAMXMAAAXMAMAMXAASXMSSMSSXAMAXSSMMMASXMASAXAXMMSMMAMXMAMMMAAMAMASXMAAASXAASXMAMMMSASAMXXMASAMMMSAMMMMMMMMMMMSXMXAMMSAMSMX
SMSSXXMMASMXSMMXSSSMSSSMSSSMXMSMXXSMMXMAXAXSMMSMMXXAAMMMAMSMAMXMMAAAMASAXMAMMXXMASAMXMXMSMMMMMSAMXSAMAMMXMXSASAMSAMXXSMAAXAXAAAMAXMMMMAMXAAM
SAAXXMASAMXXMASAAXXXAAXAMXXXAAAXMMXAMXSAMMMMXASMSMMSMSXSAMAMMMSSMSMXMXSXSSMSMSMMXMMMMMSMXXAASXSMSMMASXSSSMASAMXMMAMSAMXSAMMSSMSSXMAXSSMSSMSA
MMMSMSMMMMXMSAMXSMSMMSMXMXSSMSASXSXAMAMXXSASMMXAAMAAXMMSAXAMXAXXAMASMMXAAXMAMAASXXMAAXAXASXMMAXXAASAMMMAAMASXMASMMMSAAAMMSMAXMAAAMMMXAXXAAAX
SMXMASAAMMMXMAMMXAXXMAMAMXMAAMXXAMSMMAXMASASXSMSMMSASXAXSSSSMXSMMMAAASMMMXSMSMSMMMSSXSMSAMXAMAMSSXMMSAMSMMASASXSASASXMXMAAMMSMMASXSSSMMSMMMS
AMAMXSSMSASASMSSMXMAXAMASAMMXMXMAMAXXMXSAMAMAMAMAAXXMASMMMAAMAXAAMSSSMAXSAMXXXXAMAAMMSXMXMXXMAAXXXAXSMXASMAXXMASAMASMAXMSSSXXXXAMAAASXAMXMAX
SXXSXMXMXMSASAAAMASASXSMSASAXAASASMSXAASXMAMXMAMMMSMXAXMAASAMXSSMMAXAXSMMMMAMMSMMMXSASMSASXSSSSSMSMMXMXXMMMMMMXMXMAMXMXXMAXMASMMSMMMMMSMAMSM
MSMMAAMMSXMAMMXMXASASMAASAMASXMSAMAXMMMSASMSMMSSMAAXMASXMMMAMXMAXXXMSMXAXAMAXXAXMAMMMSAXASAMAMAAXXMMXXMAXASASASMXMAMMMSSMAMMAMXAAXAAXAAMAMAA
MAXSMMMASAMXMSASMASAXAMAMAXAMXXMXMSMMSASXMMAAAXAMXSSSXMXSXXMASMSMSXAXXXXSXSAMXXMXSXAXMXMAMAMXMXSMSASMAXMSXSASASAMXSMAAAXMASMXSXSXSSXSSMSSSMS
SXXMXSMMSAAMXXAXMXMAMSXSSSMSMXXSSMMAMSASAMXSMMSXMXXAXAXAMMSSMMAAAMMSMMSMMMMAMSAMXMXMSAMXXSXMXSXAAMAAMSAMXMMAMAMAMAXSMMSMSAMMAMAMXAXXAMXAXAXX
XSAXAMAXXAMXMMSMSXMAMMAAXAAXMMSAAMMAMMAMMMAXAMXXMXMASXMXAAXASMXMAMMXAAAASAMAMXAMASAMAXXSMAAXAMSMSMSMAXAMASMMMXMXMSMXMAMXMASAMMAMXAMXMMMMMSMS
SAMXASMMSMMAAAMAMMMAXMXMXMMMXMASMMSMMSAMXMASAMMMMSMAMXAXMMSMMXXXSASMMSSSMSMSXXAMAMASASMAMSXMAMMXMAAAMSXSASAMSAMXMAAAMASXMASAXSAMXASAASXSXAAX
SMSMXAMAAASMSSMAMAMSXSAMMSAMXMAMXXSAAAASXMXSAMMAXAAASMSMMAAAASMAMAMAXAMXMXMAAMSMMSAMAXXAMXAMXMAASMSSMAASXSAMXSMAMMXSSXMAMASAMMMSAAMASMAMSMMM
XXXMSXMXXMMMAMMAMXMXAXMMAMXSXMAXXSMMMSXMASAMAMSSSXSMAXXAMSXSAMMAMAMSMASASAMMSMMAXMAMASXSSMSMAXSMXXAAMMMMMMMMXMXAMXAXAMSXMAMAAAAXMXMSMMSMAXAA
SAMXMSSMSMMMASXMMAXMAMSSSSXMXSASMXXXAXASAMXMSAMXMMMMXMMMMAAAXSSMSSSXXMMASMSAMAMXMSAMXMAXAAAMXMXXXSSMMSAXXAAAAMSSSMXSAMXXMXSMSMSSXXXAAXMSXMAS
MXSAMXSAAAXSMSASMXMMSMAAXAAMXXMAMSXMSMMMXSAAXMMMXAMMSMASMMMMXAAXAMXAMMMXMXMAXXMAAMXMAMMMMSMSSSMMMMAAXSAASMSSMXAMAAAMAMXMXXAAXAAXAASMSMMASXXM
SMSASAMXMMMMAMAMXAXAXMMSMSMMASMSAMMMXASXMAAXXMAMMMXAMXAXMSMXMSMMSSSMSASMSMSSMSSSSSSMMSXAXXMAMAAAASXMMMXMMXAAXMASMMMSMMSAMMSMMMMMMMXAAAMAMMMM
AAXXMMSMSSSMAMXMSXMASXSAAAAXXSAAAXSMSAMAMXMMMSMSSSMSSMSSMAXSAXAAAAAASXMAAAXMAMAAAAAAASMMMXMASXSMMXASXSXXXMAMMMMMMAXSXAXXMAAAAXMASMSMXSMMSAAX
MSMAMAMMAAMSAMXAMASASMMMSSMMXMMMSMMAMXSAMASAAAXAAAXMAXMAMASMSSMMMSMMMAMSMSMMAMMMMSMMMXASXMSAMAAMAMXSXMASXSSXSSMMSMSXMMSMSSSXMMSMSAAAXMXMAXSX
AXMXMAMMMSMMMSMASXMASAXXAMASMSAAAAMXMASASAMMSSSMSMMSSMMAMXXAMXMMAMAAXSXXAXASXSASXMASXSMMAAMASMMMSXMMAMAMXAMXXAXMAXSMMSAMAAMASMMMMMMSMMAMSAXX
MMMXMAMAXAMXAAMXMXMAMMMMASMMASMMSSXAMMSXMASAMXAMAXXMMSMMSSSMMASMMSSMMXAMAMMXAXMMXMAMMAMSMMMAMAAXMAXSAMASXXMASMMMMSMAXSASMMSAMAAMMXMXAMAMXAMM
SAMAXAMMSMSMSSSXMXMXSXMSXMXMXMXMMXXXXMXAXMAMXMSSXSMMAMXSMMAASAMAXAMXXMAMAMXMSMMSAMAMSAMXSASXSMMMSMMSXSXXXXSXSMAMSAMSMSAMXMMAMSMMXAMMSMMXMXMA
SSMMSXSAAXSAMXAMMAMMMAMXAMXSAMMSXAMMXMXMMMAMAMAMXMMMXSMMAASXMASXMASMMMMSMMSAXAAXMMMMXAXAMXSMXXMAAXXXMAMMSXSASXAXXAMMMMMMASMSMMSSSMMAAXXSMMSS
MMSMAAMMMMSSSXMASASXSMMSMMASAXAXMAMAAMXSASASXMASXMAXMAMSAMMXSASASMMAASXAASMAMMAXXAMXMSSSMMSAMSMMSXXASAAMAAMAMMMXSAMAMAASMMAAAMAMAAMSSMMXSAAM
XAAMMMMAXXXAXMAXSAXAAAXAMXAMXMMSASMXSXASAXASXSASXMAXSAMXASMMMAMAMAMSMSMMXMMXMMSASASAAXAAXAMXMAMXMXSXMASMMXMAMAMMAXSXSSXSMMSMMMAMMMMAAAXAMMSM
MSSMXAMSXSMMMMSMMMMSMMSMSMMSASMAMXMAXMMMXMXMXMAXASMASXMSAMXAMAMAMMMMMSXSMMXXXAMMXAXMXMSMMMSASASASMSASAMXSXSMSSMSAMXAXMASXAAAASXXSAMXSMMXSXMM
MMAAMSMXAMXMAMAAMXAAAMXAAASAAMSMXSMASAXMXMSAMXAXAMMAXAMMAMXMSXSMMSAAXMASAMSAMMSSMMSXSXXXMASMSXSAXASAMMXAMASAAAAAXAMXMMMXMAXSMXSAXAMXXAXXSMMM
SSMSMXAMMMAMAXSMMMXXXMSMSMSMMMXXSXMASMSSMSASXMASMXMXMMMSMMSMAAAAASMSAMAMAAMSXSAXAXAASAMASAMXMAMXMXXMASXMMAXMMMMSXSXMXSMMMSMMAXMSMSASXSMAXAAX
AXXMAMAMASAMSXMAXAMSSMSAXAMXSXMSSXAMMAMAMXAXXSXAXAXAAXMXSAAMMSMMMMXXAMXXXMSAMAXSMMMMMAMASMSSSXSAXSAMASXXMMMXAXAMAMMSAMAXAAAMSMAMXXSXMXSSXSMS
MXMMMMMMAMASMASAMXAMAAMAMXMAXAMAMMSXMAMAMMXMXMASMMSMSMMAMMSSXMAXMMSSMMSMSXMASMAXAAXASXMASXAMAAMAXSAMASXSASAMMMSMMMAMASAMSSXMXMSAMXMXXAAXXXAM
XAAASAAMSSMAMAMASMSSMMMMMMMMXAMMSAXXSSSSMSASAMXAMXAAAAMXSAMXXSXSXAXAXAAXXASAMXAMSMSASAMXSMXSMXMXMXAMMSASAXMAXAAAAMXSAMMMAAMSXMXXMAXAMXSSMMAM
SXXXXMXXMAMMMMSAMAXAXMSMAMXSAMMXMXMMAAXAASASMSSSMSMSSSXAMMSXMAASMSSMMSSSSMMASMSXXASASMMMMAMAASMXMSMMXMXMMMXMSMSXMXAMXAXMMSMXAMAMXASXSAMAXAAS
SMMSSMSXXAMXMASASMSAMXAMMMAXMASXMASXMMMMMMXMAMMMMXAXAXMASAMMAMXMAAAAMMMAAXASMMXAMXMXMMSMMAXAXAXXAAXXAXASAMAAXMMASMMSASMSXXMSSMASAMMAMASXMXSS
XASAAAAMSMMXXMMASAMXASMSSMMSXASXMASAXXAAXMXSXMASXMMMASMMMASXSSSMSMMMMAMMMMXMAXSSMSMSMAXSSSSSMSAMSMSSMSASASXMSASAMXSAMMAXAXAAXMAMMXSXSXMAASAX
XSMSMMMAAASMSSMAMMSMMMSAMXXSMXMAMASXMSSSXMMMASAMMAXSAMAAMAMAAAAAXXMSSMMMXSXSXMAAAXAAMAMXSAAXAMXXAAXAXMAMAMAAMXMXMXMMXMXMXMMMSMSSXASMMAXXSXSX
SXAAMASXSSMAAAMSSMAAAMMMSXMXXXSAMMSMMXMAXSASAMMMXXXMASMMMSMMMMMAXAXAAAXSAMMMSMSMMMXMASMMMMMXXXXSMSMSMMAMXMMMMMMSMAXMASMSMMAAAXAAMXSASMSXXAMS
AMMMSASMXAMMMXSAAXSXMMAASASMMXAXSASXXAMXMSAXASXSAXMSXMASAXXXSXXMMMMSSMMMASAAAXAXMXMXMMAAXASXMSMXMAAAMXXXXXSMAAAMMASMMSAAAMMXSSMXMASAMASAMAMS
MSXXMASAXXMSMXMMMMMXSMMMSAMXAAMMMASASXSSMMSMAXAAMXMAXSAMSAMXMXMMSAAXMMMSAMMSSSMSSMMAMAMMMMSAMAAAXXSMSMSASAAMSMSSMMSASMXMMXSMMXXAMXMAMMMMMSMX
XAMMMMMXMXMXXXAMSMAASAMAMXMMSMXAMAMMMXAAXAXMSMSMXSXAXMXXMXMASASASMMMAMXMASAMXXMAAXSXSASMXAMAMSSXSXMXSAAAMMXMXSAMXMSMMAMXSAXAXASXXMXMAMXXXAMX
SMAXXAAAXAMAMMMAAMMMSAMXXAMAASASMSSMSMMMSASAAAAAMAMXSSMMXASASAMASASMXMASAMXMSMMSSMMASASXMMSAMAAASXSAMXMXMASMMAMSAMXAXXMAXMSMMMXMXSAMASMSSMSS
AXSXSMSXSASAXAMMMSAAMAMXMMMSMSXMAAMASAXMXAMMMSMSMSMMAAASMXSAMXMXMAMAMSASAXAXAAAAAAMAMXMXAASAMMMMMAMSSSXMSAAAXMXSASMMMSMMMMAXXMASAAAMXSAASMAX
SMMASAMXMASMSXSAXSMSXSMSXMAMMSAMMMSASAMAMSMMXMAMAAMMMSMMAAMMMXMXMXMAMMASXMXSMSMSSMMXSAMMSMSXMAMAMXMAMAAXMMSAMXMSMMXXAAASASMSASXMASMMXMMMMMSS
XAMXMXMASXMAAAMAMMAXAAAXASASASXMAMMXSAXMAXAMXMAMSSXSXMXAMXMAMASASASXXMAMXAXMMMXMAXSASAXAAXXMSSSMSSMSSSMMXMXMMMMXXSMMSSSMAMASMAMXXAAXMAMAAMAS
SMMSMASASAMMMSMSXMAMMMMMXMAMAMASXSMASAMMMMMMAMXMAMAXASXSMMSASXSASASMSMXMXXMSXMASMXMASAMSMSXMAMAXAAXAAMAAAMXMASMSXSAAXMAMXMAMSSSMSMXMXAMSMSAS
SMAAMXMASAMASAMMAMSXXAXMAMXMXMMAMAAMXXXAAAAXMSSMAXMSAMXAAXSASAMXMAMAAMMSMMXSASAMMASAMMMXAMXMASAMSSMMSMSSXSAXXAAMASXMMMMMSMSXMXAAXXAASMMMAMXS
MMSSSMSASAMXMAMSAMXMSMSMSXXXSSSMSSMMMMSMSSXSASXMSMXXAXXSMMMMMXMAMAMMAXMAMXASAMASXMSAMXAMAMASMMMAMXAXAAAAAMMSXMAMMMMXMAAMAAMMASMMMMMXASAMXMMM
SMMMAAMASAMASMMSASAAAAMAXXMASAXXXXAXXAAXMAXMMMAAMSMMMAXMSAMXXAXASXMSASMASMASASASAASXMMSSXSAMXSXMXMASXSMMMMASASAMSAMXSMSSMSMAAMMAAXSMMSXMMSAM
MAAMMMMAMAMAXAAMASXSMSMAMAMMMMMMMSXMMSMSXMMXSSMMXAXAXMXMAXSXSMSASAXMAMXAMMXSAMASXMMMXAAXAMMXMMAMSAXXXAXXMMASXMASXMMMSAAXAXMMMXXMSXMAXMAMMXAS
SSMMMAMXSXXXMMMMAMMMAMMXXAMAAXAAXXAXXMASMAAAMXMXSMXSAASXSMSAAMMAMMMMMMMSXMXMXMXMAMMXMMSXMMSAXSAMXSMASXMASMXMMSXMMAAAMXMMMMXASMSXXAMMMSAMSSMM
XAAXSSSMMMMMAAAXXXXMMMMSSMSSSMSSSSMMAMMMAMMXXAXAMXAXMASAAAXMMMMSMXAAXAAMASAXMMXSMMSAMXXXAASMMMSXSAMAXXXXXSAAXMAMSSMSSXXAASMMSAMASXMSAXXXAAMX
SMMAAAAXAAMSSSSSSSMMAAMXAXMAMAAAMASAMXXASMSASMMXMMSSXAMMMMXXAXMAASXSSMMXAXASAXAXMASASAMMMMSXSAXXSAMASMXMASMXMXAMXAXXXXSMXSASMAMXMASAAMSMSAMX
XAMMSSMMSSMMAAAMXMAMSSMMAMXAMMMMMAMMMSAMXAMAMSAMXAMAMSSXSMSSSSXSXMMMMXSMMSMMAMMSMMMXMMSMMASAMAMASXMASAXMAXMSSSMXAMXMSMMSASXMMAMAXXMMSSXAMXMA
XXXAAAAXAMAMXMMMMXSMAAXSMMMMSXAMMXSAAXAMMSMAMAXAMXXAMXMASAXMASAXMAXAAAXXAAAXSASAMXSMAAAAXASXMXMXMASAXMXMSSXAAAASXSAAXAAAMSXSSSSSMAXXXMAXMAXS
MMMMSSMMASXMSXMASAXMMMMAAAXMAMXMAAMMMSMMMMAASMXSXSAMXMMAMMMSAMXMMXMMMSMMSMXMMMSAMXASMSSSMMSAAXMASMMXSAAXAMMMSMMAXSMSSMMMXMAMAXAAXAMXMASASMMM
SAAAMAMXAXAMXASASAMXAAXSSMSSMSSMMSSMXXMAAXSMSXMMASMXAXMAXMAXAMSSMMSXMAAXAXSAMASAMMMMMAXXAXSMMMSASAAASXMSASXAXAXMXSAMXAAAAMMMSMSMSMSMXAMMMAAX
SASMSASMXSAMSXMASAASMMXMXMXAAAXAXMAMMMSMSMMMXMAMXMAXMSMMSMXSAMAAAAXAMMSMASMAMMMXSAXAMMXSSMSASAMMXMMXSAMXXMMMMMMXAMAMSSMSXSXAXAMAAAAAMSSSSMMM
MAMXMASAASMMXXMASMXSMSAMXMSMMMSMMSXMXAMMXAMXAAMXMSSMAAASAXAXAMSSMMXSMSAMMMXAMXMAXXSSMSAXMASAMSSMSMSMMAMXXMXSASMMXSAMMMMXAXMASMMSMSMSMMAMAAXX
MAMXMMMMMSAXMAXXMMMSASMSAAMASXAMAXXMSSMASXMSAMSAMAAXXSXMAMMSSMAMAAAMXSASAAXXSAMMSMMXAMXSMAMMMXSAAXAASAMXXMASMSXMAMAXAMSMSAMXSMMXXMMXXMSMSMSA
MAXXMXAXXXMMSASXXSSMMMXSAMXMMSMMSSMXAAMAMMXSAMSAMXSAMXXMAMXAXMASMMMSAMAMMMSMMASAAAMMSMSXMASASAMSMMXXMAXMXMAXMSAMXSSXXMAAMAMXMAXXAXASAXMAAAMA
SSSMMSXSMSMMXAAXASXSMXXXAXMAASXAAAXMXSMSXSAMAMMXSAMMXMAXSAMXSSMSXMMMXMXMXAAAXSMXMMMAXXMASAXXMAXXXMSSSSMAMMXSASXSAAAASXMMMMMASXMMMMMMAMMMMXMM
MMAXAXAXMASXMMMMXMAXXASMSMSMASMMSSMSMMMXAMAXXMAAMASMASXMXMASXAXMASAAMMSMMSXSXXAXMMMMSXXAMXMSSSMSAXAXAAXXMAAMXMASMMMAMAXASASAXMMAAXAAXMASMSSM
MMAMMSMAMAXMASAMMMSMAXAAAXAMMSAMXMAAMAXMMMSMAMMMSASXMXASAMXMSSMSASMMSAAAAXAMAMMMMAAXAXMXSASAAAAXMMSSMMSSMMSMMAMXXASAMXMXMAMXSSMSXSMSSXXAXAAS
SMSXMAXXMSMSAMAMSAASMSMSMSXSAXXAMMSMSMXAAAAMXMAAMAMXSMMMMXXXAMAMAMXAMXSMMSMMAMAASMSMMMAAXMAMSMMMXAXAAXAAAAAXMSMMSXMAMSXSMSMMXMAXAMAAXMMXMSMM
XAAASXSXAAAMMMSMMMMSXAXMASAMASXMAMMMAMMSMSSSSMMSSXMASAXSXSMMSMSMSSSXSAXMMMASXSMXMXAMXASXSXMXMMSAMMSSMMMSMAMAXMAMXSMAXMASAXXAAMAMAMMXSXMAXAMX
SMSXMASMXMXMXAMAMXSMMMMMMMSMAMMXSASMMSAXAXAAAXAAMAMASAMXAAAMAAAAMAAAMASMAXMMMXMAXSAMXXXAAMXXAAMAMXAMXSXMXXXMXSXMASXMAMAMMMASXMXXXMXAMASXSASM
XAXMMXMAMXMMMMSAMXAASXAXMAXMAXMXXAMAAAXMMMMMMMMXMAMXSXAMSMSSMSMXMMMMMMXXSSMAMSMMMSAXXXMMMMASXMSAMMASASAMXSSMAAAMXMASXMAXAMAMXMSXSSMMSAMXXXMA
MXMASAXXAMAXAXAMXMMMMASXMXSSMXSMMAMMMMMAXAXAXAMMSSSXXMSAMAXAAMXAMXAXXMMXMAXSMSASASXSMSMXAMASXAMASMSMMSAMAXAMMSSMMSAMMXSMSAMXASAMXAAAMASXMSSS
XAXSMMXXSXSXSSSXSAMXMXMASMXMMASASXMXXAASMMSMSXSAAMAMXAXXMXSMMMSXSAASAMAMSMMMASAMMMASAAASXMASMXMASXXAXSAMASMXMAMAXMSXSAMMMMSXMMMSSSMMSAAAAAXM
SMSMMASXMAMSAAMAMMXXXAMXXMASMASAMXAASMSMAXSXSAMMSSMMXSXASAMXSXSAXMXMAXSAAXAMXMAMXAAMMMMSAMXXXAMAXASMMSXSAMXSMXSSMMAXMASASASXXAAXAMXMMMSMMMSS
MXMAAAMAMAMMMMMAMMAMSASAMXXMMXSAXMMMMMAMSMMAMXMAMMMSXAXXMASAXMXMMXASAMXSXMASXMASAMXSXXXSAMXXSXSSSMMAXMAXAMAXMXXMAMXSMAMXMAMMSMSMSMASXMMAMAAX
SASMMXSXMAMMXMMXSMAXSAMMMMSXMASMSMSMMSAMXAMAMAMMXAASMMAMMXMAMMASMXXXXXMASMAMXXAXXXAXXXAXXAXMMAAMAMXXMASMSMXMAMXSAMMXMAMXMAMAAAAXXSASAMMAMMSS
SASMSAAMAXXMAXXSAMXMMMMASAMAMASXAAAAAMAXSAMXXXSASMMSASMSSSMMASASMASMXXMAXMAMAMMSMMSSSSMMSSXMMSMMXMASAAXAMASAMMXSASAASASASMSSMSMXAMXXMMXASXMA
MAMAMMSAAMMSASXAASXSAXSASXSAMMXXMSMSMSAMSAMMSMSASAAMXMAAXXAXAXAMXAAMAMMMMSAMSMMAAXAAXXAAAXASAMAMAMXSMMMAMAMMXSXSAMMXXMXASAAMXMASXSXMASXXSMSS
MAMXMXAXXAXAAAMSAMXSAMMASASMMSXXXAXXXMAMSXMAAAMASMMSSMMMMSSMSSSXMAMSASASXSAAAAMSMMMXMMMMSSXMASMMAXMXAXSXMASXSMAMAXMSXMSAMMMSSMAXMAMSASMASAMX
SMSSXXXMMSXMSMAMASMXXAMXMXMAASMSSMSXMAXXMMMSSSMAMXAXAXXMXAXXAAAXXXMSXSASXSMMXSMAXXSMSAMXAMAMAMMMSSSMMMXAMASXAASMSMAMAMMAMXAAAMASMSMMASMSMMXA
MMAMAMAMAMAAXXXSXMAMMSAMXAMMMMAXXAAMASXSMAMMAMMMMMMMXMXSMMXMMXMXMMMMAMMMXXXMAXMMMXSASASMASAMXXSAXXAASXSSMAXXASMAXMXMAMSAMMMMSMMXAXAMAMXXASMS
SMXSASAMSSMMSSMMMMAMSXMASMSMSMSMMMMMMMAASMMMXMASMMMSXSAMAXSASAXMAAASXSSSMSMMMSAMSAMMMAMXMXMASAMMSSSMMMMMMSSMSAMXMMXSSXSMSXSAAXMMSMMMSSMSMMAA
AAASMSASAXAAAXAAXSASXAXMASAXMAMAAAXAAMSMMXASAMMSAASAAMASAMSAMXMASXMSAAASAMXAASAMMAAXMXMASAMXMAAXMAMAAAAAMMAMXAAAAXAAXAMAMAMSSMXXMASAAAMMAMSM
MMMSAMXMXSXMSSMMMSXSMSMAXSSMMXMSSSSMSMMXXSSSMSXSMMMXSSMMMMMAMMMMXSMMMMMMSMSMMSMMSAMXAXSXSMXXASXXMASXSSSSSSXMSSMASMSSMMMMMXMAXMSMSSMMSSMSAMXX

60
day4/src/main.rs Normal file
View file

@ -0,0 +1,60 @@
use std::fs::File;
use std::io::{self, BufRead};
use regex::Regex;
fn main() {
let file = File::open("input").unwrap();
let lines: Vec<String> = io::BufReader::new(file).lines().collect::<Result<_, _>>().unwrap();
let mut sum_matches = find_matches(&lines);
println!("matches: {}", sum_matches);
let mut lines_flipped: Vec<String> = vec![String::new(); lines[0].len()];
for line in lines.iter() {
for (i, c) in line.chars().enumerate() {
lines_flipped[i].push(c);
}
}
sum_matches += find_matches(&lines_flipped);
println!("matches: {}", sum_matches);
for (i, line) in lines.iter().enumerate() {
println!("line@{:02}: {}", i, line);
}
let mut lines_athwart: Vec<String> = vec![String::new(); lines[0].len()];
for i in 0..lines.len() {
println!("fill");
lines_athwart.push(std::iter::repeat("x").take(i).collect::<String>());
}
for (y, line) in lines.iter().enumerate() {
for (x, c) in line.chars().enumerate() {
//lines_athwart[x+y].push(line.chars().nth(y).unwrap());
println!("char @{},{}: {}", y+x, y, c);
lines_athwart[x+y].push(c);
}
}
println!("");
for (i, line) in lines_athwart.iter().enumerate() {
println!("line@{:02}: {}", i, line);
}
}
fn find_matches(lines: &Vec<String>) -> i32
{
let mut result: i32 = 0;
let re = Regex::new(r"XMAX|XAMX").unwrap();
for line in lines {
let matches = re.find_iter(&line).map(|_| 1).fold(0, |sum, val| sum + val);
result += matches
}
result
}