From 1c208f534c3b5041cafc19b3ece002248097462d Mon Sep 17 00:00:00 2001 From: gbrochar Date: Sat, 3 Dec 2022 13:58:42 +0100 Subject: [PATCH] day 03 --- aoc_03a/.gitignore | 12 ++ aoc_03a/Cargo.toml | 8 ++ aoc_03a/input | 300 ++++++++++++++++++++++++++++++++++++++++++++ aoc_03a/input2 | 1 + aoc_03a/input3 | 6 + aoc_03a/src/main.rs | 50 ++++++++ aoc_03b/.gitignore | 12 ++ aoc_03b/Cargo.toml | 8 ++ aoc_03b/input | 300 ++++++++++++++++++++++++++++++++++++++++++++ aoc_03b/input2 | 1 + aoc_03b/input3 | 6 + aoc_03b/src/main.rs | 59 +++++++++ 12 files changed, 763 insertions(+) create mode 100644 aoc_03a/.gitignore create mode 100644 aoc_03a/Cargo.toml create mode 100644 aoc_03a/input create mode 100644 aoc_03a/input2 create mode 100644 aoc_03a/input3 create mode 100644 aoc_03a/src/main.rs create mode 100644 aoc_03b/.gitignore create mode 100644 aoc_03b/Cargo.toml create mode 100644 aoc_03b/input create mode 100644 aoc_03b/input2 create mode 100644 aoc_03b/input3 create mode 100644 aoc_03b/src/main.rs diff --git a/aoc_03a/.gitignore b/aoc_03a/.gitignore new file mode 100644 index 0000000..62bd1a4 --- /dev/null +++ b/aoc_03a/.gitignore @@ -0,0 +1,12 @@ +# ---> Rust +# Generated by Cargo +# will have compiled files and executables +/target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries +# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +Cargo.lock + +# These are backup files generated by rustfmt +**/*.rs.bk + diff --git a/aoc_03a/Cargo.toml b/aoc_03a/Cargo.toml new file mode 100644 index 0000000..922ed8e --- /dev/null +++ b/aoc_03a/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "aoc_03a" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/aoc_03a/input b/aoc_03a/input new file mode 100644 index 0000000..556acc3 --- /dev/null +++ b/aoc_03a/input @@ -0,0 +1,300 @@ +jLnFTjhwFTLFDGDDvLgvDssBJBbVRNZJPPJBGzBNRVJNRB +QWmffSmMZCfWrmHlCflQWfSNBpVBNbPSbbJNppcVVzzpcp +lflrqrWMmfdMlrtWWmZgDjsqwFwhFDsngnvhqs +CNBGwsWVsdWDNCCVvfPLfQfgZHPBvpgf +qhJqJlmcFnhJclllPgZjvpHpvfZpPbLn +lpMJJhhcSMDMMwws +jphtLMfVpjJRjJscMJptssnrwdNwQrNbwNzQTbcNrwQT +gSPPSqGGGrdLrNQGrr +PvWPDvWWCSSBBZPjLVDfhjsLLsDhtR +hlLwDGLNnTrbNdtbdb +ZfsvJbsJTrsttHTR +vjPQJPFcmZjVFZFvbbVcJZJPBBhLMnDBznnGMDLMwBhlmBBl +JdTJFtwHjJTzPMqPccqzjB +rggffSCvNBCbWBWt +ZsSpnnRpLStrZpTDwTVwGTJHDLdH +sZqswsrcRpCrsCsrrbtpbpDlttlFbbpGtj +LhNgNvNNhTQMhQMWhvvhfWhllbGGPbPtlPmFlDbjHHdlmg +ffNBNMhDvQDhvzhBhNTBnSzzrZCZnrsVCSwcnrCC +hHGhjLjwtFGwGhhhhtwjtlhrDBQrRBHczRcMvsBcRrDDMH +TTfbZdZbPbVCmCdmnZmCVdfrJBczMrrznvBvQBzzzcBscn +fdbPZTVVfSdmbfdvjjSGljhhtNGGhL +fMrGQbPrbnfljjzVLQzNCzVv +WcDqlSpctSJNzSFJLCzN +hBBWcHtWgWDmZlwwrsPrRTRTMrmn +ZJTVdgpzPpLVVwZgPzTPLwgWdhcWhSQCbcSbBtSWdSWchb +qnDGnNjqDqNlqsCSWhMtlMltWSQB +NnNrFQGjDRgLrgrpPr +nCrhsmVrlrzsTvsnVvmTTlpvPJPWWMPJWWPCJMPNPgPJMjJj +ctDqBLHLRLBSBqFRDBFqFFNGgjjrGGMrWftWJPGgwfGN +HFcqZqqdcFQRQBdrlnplhspQlTmmvlph +mllQMvMTMMdNNdTzTGmLgWjBgGtBqWHhGWjHtB +PPsbbZPCVfJFJRJZsBHjjHhHcjqSSWBt +wCVJFVRJDDpCPqZlTlwQnrvzmMdmml +JfCJtCwfsffBJmFmgFmFhhdwgV +lzHzsSHvSRlDRjlHTgqVVmmVPZqqmggmqS +GzNNRTWvbWGvGQtfLnbfMbJfsC +FnPrwqrFqsPrrsrwqwnbZFPwBQMhhdBHQZhTVBMdDHVhQQVh +zlLWlLvLgtgbMdhfVDdzfd +NWRNjLmWblGFsssNnSwPsw +gnmCjzwnmCPTPhBwPjzBgqPjllJJSWlhfhQDSrpJRhDSlfJl +rLHNHrLHVNbVHMMctZFHsbcsDSDWpSDSGfSRsRWSRllfGSSG +NNtdMVrLNdZNvLvLZrzCndqBgwwPmwgjggBn +tGSBRwwStBftfBHRScHwfcrCgQgDnjQhQDqgBqgCCDnnqg +LNlbZmlPVNzWlLZVFPQqgDTQTmjqCQDQqmsQ +bpZNZLNNZlLNLZNNZbLlbLZbwrwSHGJSwrGwRtRpcjjtMttw +JvGNPWhLPLBffwhGCrbgnFDbgcZwbVnb +TqzSTlQzdHQQpTTjSddHTSnbqnZDcrrFnFVFVbVVcbhc +mlpdjhhTHWBmWWBJvG +ScrppccsbMRRvltvrvrj +HRTVTnDwDLJJJZwwVQTmNlvqBNtvWBBBQvhNfqlB +TLJdLLCJZHJCVHHTwRdcsGpSbgsczcdcgS +tffHzJctHsSHHHGTtzvttZFlZZhVjglVmgDhDdjgjS +qCBMCqbpqfQPMBPpPljQVDDZdddZdgFlDV +fWwLfbbWNzGGrzvWHJ +VnNFqrrJdfQhCDFPhttD +pGpTTzHmRTNTTLRRtbBBbzhPtbtbPPBt +HLpHpmSRHTpllcLTSgVvNrJVfJvqMnZN +tHzgwJCgzZlLFLnWJTnc +NnNnmsMnBDFSFWdqssFd +mDMBNmRRjjMNnvrPnjjRQQvfRgwpgHHpppHhZbzfCpbHtH +TTwBnnZwBnNQZZWLWTTFNFbsCGrGFCNvDDDGFj +lzPRfVVRMclPRMRcbFDjfCCGvvsdGCDd +hSmmlMlVztlhRlVbqQpLnWqSqLZZwZQT +zzVTcqmVqzdmhZJbFpQZQQtLLWLLbp +TGwvGgTnGTRHLNtMftWHNbWf +vljTGwvvlCljsgSnCBslDPPJrPdVzrSmhdqhVDPP +LzCGCGLBGNlLmFFmmSSBBqSc +ZJfbdfbWtbgVlblJtjcFcqTmFqqjtFHtjj +QgZhZgQVdlfddlWPhfvMCGRGPDMMRvDNGvND +nLdpLJSSnLMwjCDwnQhw +NZGNgmsgPtPTgWqqCGwRbrDCQbCwhMjr +gNqPTqTPttPZqcWfHLlBvccFvhpvJc +GNdGhMMvRBjmMVjM +trcZJJFmCgfZtcrQCfCZSpqSRjBQpQRQBbBqsSqR +JcTmwtTtcrmThLGDhNTThvNW +ZqhmtzzfZRsSfRmSTThMpLNgpgJQThMG +jdnvdHWFvvjFdCWFrvVVnvFDQrJJMpgMJGNLJNJTPPgQGJGR +vnHjDVHBWjdncDRbRzzzmmBsSSzt +VZNZSCPTJPpvNTNsCrbnVrLccbLnnRVfWb +MlqQBlBztFlhQJdFhccbhnRWWfnggfGc +lzJqllwQtmzdHZpvwjPPNspj +wTnCMnwQCQvTTJdfqhdtrrSmhttmmm +LZlZglZBvjgbHHSrHpbr +GWvPjPNGljBzMzJVMwNJMw +CSlChlvPPGvdddqPqSJhPdbNbcMTMTbDbcRNDFcFLMLJ +HWjgngmBZGQgRRNbFRcHbbzT +BmnpnQBBssBsQBnPptSStllGhdCGrS +nhQCnCvjchBBjMNrwbRwZvvSvSWW +qgHlfqblVbPfVqlbGgPGfdfLSdNssWWLZsNsLZsdNdLSZZ +gbGHzzbzHtPfcJhczmMnQBJn +TTGJJPPZJGRzDwtQjTjzDC +VbnrmNVWVWbffbVMsrbrnvFRjzCzQCjvQDDStDFS +MhrRfMmfMmsHgsqPLLGdBqJJGHqd +FMCMbmSQTHdCBmpFHprdHcDNqqfqJdJsDcclDDZlNf +wzwRjwwtRhnzjRBWRnvtnWtnNsfsVDlDlsqVNNNqcqVlDvqf +PtnGWjtwLBwtjCFPFpMpMbSrQm +PWzrtrtzBBfjjWGbfNWvLJLgVSjRLVlSlllLpS +HhZmHGGhGZRpQlpLpL +dTdnHCnhmhcHcntrPPGfzfrcNtPz +PfmWWWPwWdPdWPTVCdpjRnzhjDbrFnGbnQGQrrDR +LSBnZLnJBQDLRGcQGc +NHNqqBqvMMBsJgNvgsstBHNsdwwfTtwdpfTTmVmnWmtmWVlp +zjzwTHCzDzbDzNTDjzDCCHRZmmSGmfgPmZGtHtgLmf +hsqJMcQltLtPhLgL +QWWWcMsWFJssrnsWrdlcPBwNTdzwTvvBvjwpTbBzpT +LRvWZdLzzZWSqdpBzLdzLgRmbHPVHtFHMFFMCtHCfHcbVcqb +sGGjNDnGTnlSSwsrTwcFVMHwCPPPcVfVHwPM +GDQsDlJlQhSDTrpvhhWBLWvdRvWh +sWhhdhdhbHSVBbFLZLnnCmCmtTTCCV +RcQvjNrcrwGNcGNRJJmTpppgCCgppNgTtFmp +GRRRGRGclfjwRsbfHFhWBDhdFs +jfRTfgHqgDZHClcPcrGhnbcqrr +FztdMLGBzpFJpcnzzclblcnbbl +pdNBtdNLdvsNtdLpdGLTZDTgDjmvCZjCRCDDHg +bdrbdZbJtZhrMrWRHHvRHRvHllqZ +GGjCNgDVDFsCCwFNHjlrPrlSRWPcSlvl +CNVDgDwVrQggDDQVsDwNwgTQdJtbfbLhtTdtLmnfbJMntnft +mjznjLchnPPcLLnwCTFFvPgJJWdqJqJJdJJr +bMlQRzbSBbRBMlMfMBBZFrqggvVvfqdDVDVDWWFd +ZSSsRGQtSpBBpZMSbSpZsbtsjhCHTHcLCcjzjCwTTHhmNHtT +ThCHLCfVfDTtDnDppTqclFfSclNrwNPwNfFr +JmsQjJPJMWRRMddZGZWsdsMZrmcqvNSFSwrScrvwSwcccFFw +ZWdJQGGzPJsMRZBGtHLgCHTTVTLBDtgn +JVGJfttHgTLVTsnHgVHfwVBDjQDNQSjQwjbNbQjBbddS +rPvZcZpcvtzcZddmNQjWQSjDpp +rrRZPzRMztFFFqMZFtRVgnsLnVHfVHqJnghHJL +grrZZbJSggQDLgrvSSDBVsGdjHjnGnBGVsLGHj +pCtWtPtffPRcWdBsGsGRBRvhBj +zmvNNclfZJJFZQbN +DDqCgPPDgtDSPPDbgCqcmBMBTQLQZBWwQZbsMWZZMw +RNlNvpvNvndNjMZtBpwMTWLBZt +VlNJvRzdlGFRFGRRRjFVJRRggtPPHgHzgStqCcHHmHqcrc +RfmdFgbtFLHlsjRPsL +LqrhvCTvNNhWBvBTrThrDWZrPjMQPQMcjzsPcQHTlVHQjcMM +BhhrJWJLvCbfJbwgtgJn +FWpRfFRjtjFpVvbTTZFPhJhJLdCLdWBhPmHmCW +McMzNlGrgGGsHcqmdLqbhJmd +lNMwsnMzzsSSGtVVSfvZTtSppb +JrJQDJDVvGwGVwvcGCRRcCBBqsWBRZqWZZ +bNdmhvMpjmHbNbpNvmbBqlRWlCtCqlRZqRtW +HmTjNdmMfTTVvLSzvz +WMQWmfGfQfVnMGWGmGtGWHzZtdLzpZhwrtZcwZzdps +jBgljNPbNjPFRbggNlNBCcHsrLLLHlrLslhlzdhdHppp +BBPBJbFCTGJcVQMGMv +fdmfmmjbPmjlmfhfGglTNLCNvPNSpPvpvSLCPCpS +MtJwMrwrZJVHMgqJHtwVJzVVLCvpNLvDrLvQSQSNcCNpFNLS +wWMVWZzqqMRHztwJZzRqVtjGlBdhbGGbThhTlnTBTWgb +ShhrjPrvhlljnHrggPvvSqRMBZZqBTZmMmTmTMdD +ctLzbcpWCJbNWRQqBBdZFMBdfZdJBm +GQWpzLcVpVNpRggHrhhgvnGPwj +PdzSrmmqSgWWddNQds +TZbwCTLZbHLWptQHhpgNsc +MZjBLjMLDTDqrrGflsjjrf +DBHTnlGGBPjPmwRWhn +hgLgZccSrcMgLMSpCLJjNWmPWjmVWdwJjd +MfQMScQrMSprrTGHBhqTvqlGQT +CDvLRCCzQDWzcGQGvRcpVFVsgTsFrgllrTpF +mjbqtHqHbspspnMv +ZvvqdqqHvLhDhJWzJd +ThHnbRTVbQHSWvBVVBCPBW +FFJgfqfqNwNrvDCBNppP +jzsFfqwqssLzJjffJcssHQHQdnMdhTGHLbddbCnn +gwMHHhbSwnqHrgMqMbnBcldhzBLQBQhBLtLttQ +dCRmpfvpCzcQllflQz +TjPsCJmvZPNPsvZpPTTRCpprjdbrHngqDwqMrDnMbMbHgM +CgNQpgTCgNltHTNQlHpRnRnzBfJnPnmpcpfq +LGrrvGSMGvrsWPBmnJPmPfmrqr +VGsSvdJvbSHVtlttNVHT +LnZDtzpzNpPsCbfBbDCDBC +gSGRSSghqhhSvSRvvhvVqFJdsfBsCHJbVfddCJ +vglRRjQSmnQQCNrL +HwhVddVVwRcGHGjlfS +MbBvDBGvWqpNWvMbzDMNZZlLcjlSclflcjqgfCRg +bvDWDWQbspPPWWQMnGdnFnJtJFGJhhPJ +nDJDdQdPDlDJnnbRQDlTqVfFwfVtjJjjFfqqFqgN +hScrSmSCTZvZCSmZLFwfffqgjfhNGwjhfw +zCzsCCTcMBmSLmsMWHdPWRQPQPddDQ +lzGflPZLSqSlccpqjpdNCwjdsjCnCsJp +VghPQDVMFQNdJjRNBw +tVrhDVmHTlPlGrzL +gfSJJlzvGgRPpggR +VLDDHhHtlZnnZqbGmtqPmmmmWN +VVDBnddDBFFzlscC +cmmzRzcRjFrGncTHqc +ghJfwJJvqhbrdndWgddWBH +fQbSpJwSthbhtvpCwqQbsDPMNLlpRmplzPlRMPzM +bBVQDgBpTzbhpgQVhTmBVBzgrvcnrncsnZrwzHJZfnHcZfrP +tdWlFLMHGFGRGMRLNFHlfwJcrPwcsnfwcvZPfr +RLWGjHLjSjtjmBQVgpQhhg +ttRRJBrCfpprmFqSJVTSwNJNTWlVTn +nLsMghDbQdnhwWNLjcwNSlVH +ZZDgnDQvDdndPCmfrRqzvFqpmp +PPzCrcGGlnhPcsdfNZZdpLLNZsfd +RjjWHjVWDvjWqVMHjHJjVlHdwwJbLfNZdfdgfpppgpfpZw +lBVvqjQqBDBlVmCFGChhnSmTTrmr +BZnGZFvGvBGGrwLBZlzNgmzMhMdfmwgmdmmt +cpDHtVjDWjCtDTCcDNhhzNJszgzMTJhmgg +VWWcRWDpPDPPtHtScqFrLlBFFFSFBqZLSF +qBFcCGFcHHGBldzBLtdzSrdR +fpmfpswfQNQmfPHfPPgJNwRtngTtSTRzdTrLRnSnldLd +fsHNpNPwQZwhVHMFGqvvMcqWFGVF +FwFJlqDDwwgFHQdmFmSQ +pPtzcrLHZrQfdsBsdLdf +bHrrHjbrjbrJvDvbqMVNqJ +WVVpPHPfWnHmpccpnpvQcrgNNMSCTMjMgjjMMN +RsZbhRFTDDJtZFJhTLRRLMrMrCdSNCdSMjrNhjNGSQ +LLqtqqzwqmmflPTq +mmLhdZSdqhqnqMZShLQrMWcrcWQwTgrWVVWc +CCvjjsfJRCCJbDbFsbGJvzgWWGlWrWlwTQrwQGGcHlBg +NRDbRCNsNjQPSSLZNdLn +cmVLcQZPSHBGlSddBf +DFNzDNszlbBlgHNN +tWRzFjsWWtrtlDztzwjDjThLPhRMpppLMhmMhnmncRcn +LFFcgdNLpLQggZQMFMcNJggRHCHsTtRtHTzCTZHRsfSRfs +qnhlhmGrrhhnqdmGhdhWbnSRzSfsBRSTSRtBflRffzfz +PnbmrmGjWMVNvdPFLp +swcWsMMmVwWwFtWlbnnZnFBhbNfrhN +dQLZHjpDQCfBBBBTGTTC +DJvDpDSzSDQZMWsWwPqVtwcS +NVTMjjGGNBqhNttdTTjtcqjCfDlhZhSWCFFJmSmZmWJhmZ +rznsHPnRLzwspZDWfGZJSLZZDC +QzPRRvRQszQsGQcVNqTBBdVj +rHGBglBNLpbqCgFC +PbmbRnmMSbRPDWRnDVSMPMWmvvcvqqppTLZZFpvCpczLcCVv +dsdMSPtMdPnSffQwGGsBBbQw +nqjTlGPGnqWsMPPwGdGjQvQvJCCQBvmvCvQJtmCw +DDhVbDrcVVFZLzHrZBRNCWStmQWztJvtCm +VHDLhFFDpcHZcHGWfsGlspTTMqps +FTPZwBzHHFLTTSwHLJTwVQqnDrzgRRVgQpDVRprn +jJMjsWlvQqVrqgWW +CjNsjjvlmslbcJmmbtCtCThdwhHLhhhLPdBCSPFh +jfgllWfLrfmlTjsCjcjDNNDnNcHJnd +MMBRSRZGppGFpBbbBGvVnFHhcCJqNcNcHCFNgnnn +pMZZgBRVZVGRtRSMbMbvRQmTswWfzLzLzWLrPQmfwLlW +tzpdHLNpfpPnlNFHnpssbgShtqcgTTggrsqg +JZwWGCWMCcbsSHgWjq +QCmDZCJwmvZvCVCVRQGCDMFBNlfHmfLLzPPfdpfBLlPB +PCvRTdPPBVBTGgLGrGqMrMnv +twQwStrsQwstjSHmmpqZpwqNGnGnNnZgLN +mJScfjbttQjQtjcmfbbQJHFTBfdfRhhrPhhTfPVVhPPB +DMPJmLLjhJwNBCNBww +TpccnsZsbTHpsTHVszbpbGHSNwBtWlfrtCtCfrtlBlFZlf +HsHvccvzbqsGzqnnHvLQPghQNNDDvLLjdjLR +zmgVMrrjjMGbbzzdqqrgVbRTHqTTThpNHphNTvvvTNnv +QLSmZmSJTvTnZTvn +SfDtDDmQCFDwWmSrjPPGfjMjjGfMgV +hdNHNHjnGHMTcpWlhBchRBJR +fPztCTPtttLwLzVbwqSVtCBBDpWvlcRRlBpbDBQWcDWJ +ftrCVzfTCFFzTFPrPjNZFHnNsMdZgjHdss +TVcTbdqLqzHHRNHM +PppQTWffPfCPQSsCprzRwRJDzMDzNwRBRPHN +pjCTZjTjmTtsZhGcGdLvdlgv +VJRhVfJRBgbdrrrvJpJJ +cCSSHSHnZPwDFNHCDCQdbQQdvqnMsrpqQnvq +NFFCwSrDzCNrwhtgzhWtBhgzWB +RRBRczzcvmfzVRzVPvPTlCWnnlTGqGMgTTnG +tNLdSdNSMFhsFttddtjlwGqllqQglqTWqwnThT +rLSsLrNdZbbHjLdSFFMjLLtSfVRJzVJJVZcRfvZVRfDpVvRz +DBsdssbdbDfPnnqzzJbqStqzjjJS +RcGMGwwmrJjFFHPG +mCgwMLPgCPmmwWDBDZvWvBCWfZ +cJCGJJMZcMGWMhWCJTfFSfDmmgFmtshggffr +vBVQBDbNstQmFsfm +RVwHNblzwHvNdvBwNjVHGZJZLJTMLMJDZLGRMDGG +LNCssCldDbrnNtVWNQ +mmcpRBMBRBTZzgMMhtFFvrWQrQmWFtvn +MZTgzMZSzTfSMDHwCfPlLLDnwL +HlPcjMSHsMSPbgLhFPFNzP +ZfRhtVdGBNLFzLqf +DRtGGtRGJJTJDZDGdCJrVJmlWvHWcvjMsMWmhQsmCMjW +swpQcsBvvHFpBHHcCHJvJddvbbWPdzhzzqqWdhPnhP +gDDGTgjNWZTMTNjjggRLggldSPqSqGznnhnbdfnbqfhh +WDMDtDNDctVFJstJ +rFDbGjrGbpBBbrCbrwpvvZQZZhgTLVVVVLgThCTggg +NlfHpttqzltMzRSMSdWRNSfSTTmqgcLgQVcQTcmgQgmZVPVZ +HWSWpMHNpNWlpNMsMzWGGwwBvvwBnwBvsnnvnB +mZVVHmmRZlvdjvNpHh +DFBnFDtnFbBMrQbBMvFLvgtjjNpcLpJdNzJJdhWNpJNWcN +QTsbrQggBsvsgVTwRVGZCfGZfR +RGNGlGTWJnJlMcRMGqvSmnDtvDDvtLSLvr +HfsFhPPdVshfbggDVmzcvSwvStVzDq +BPPfCgCFfcBbPbHbBHZPFsbBpMGlClRNJRlQTjQWjWpTTlGT +HQNqQbbRQHbZPZQPqbZTvWFWmCjvFRvRTSrRrr +lBpBpzLLdBwsLwLLWNggzCFTCmFgWmrF +VwsswGVBfJfccLBcsJGNdpJHZZqnhtqqnhPHDZHVtPQMZn +LMHnHnPMnFdJFNFJjZvrJF +wlTlslptlwtzcvTqvTsVSWWrbJfmJZNZJjcNWfNJmf +qDlqVthTztSSpSlqtpTTzLvRRnnCvRCPLBQGDBdDGD +HlmlJgRBBpJLpPBHnlLJsrgJDMttvSdddcMSStWjjWtcSzjs +qfTbNPTVGhGFCVGTwZfNZNNVWvjSczcjStMMcdSczzczvbcW +GZVqffQTwNQTmPRlggHLprHQ +BjsWschcTjjWclQTSnZFrjtFtbzZfqntzF +qggNGMHgvHMRZMtznbrftMCn +qvHdqpwgJTsVccwscT +FJwNPHJmPHTJHglTFwgmwqtShBqDmDBzzBzWhCDWqQ +fpsjNsMVLVjDCCSzBtjztt +sLrdfbsMcbMRZZZbbsfrsrNgGNglRwllRnJnwFvnFHnG +lWWVTJlJCTTzDdWzqdtFFt +PvPvrhbjhgSjvJQSnQRbjZDZFFHMtGGqFtRMGZFtGH +rhPrSgfvJPfmwsTpLcsV \ No newline at end of file diff --git a/aoc_03a/input2 b/aoc_03a/input2 new file mode 100644 index 0000000..22cbf88 --- /dev/null +++ b/aoc_03a/input2 @@ -0,0 +1 @@ +rhPrSgfvJPfmwsTpLcsV \ No newline at end of file diff --git a/aoc_03a/input3 b/aoc_03a/input3 new file mode 100644 index 0000000..9919ffa --- /dev/null +++ b/aoc_03a/input3 @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw \ No newline at end of file diff --git a/aoc_03a/src/main.rs b/aoc_03a/src/main.rs new file mode 100644 index 0000000..63d3db1 --- /dev/null +++ b/aoc_03a/src/main.rs @@ -0,0 +1,50 @@ +use std::fs::File; +use std::io::{self, BufRead}; +use std::path::Path; +use std::collections::HashMap; + +fn main() { + let file_path = String::from("/home/wafoo/advent_of_code_2022/aoc_03a/input"); + let mut result = 0; + + println!("In file {}", file_path); + + if let Ok(lines) = read_lines(file_path) { + // Consumes the iterator, returns an (Optional) String + for line in lines { + if let Ok(ip) = line { + let len = ip.len(); + let mut i = 0; + let mut hashmap = HashMap::new(); + for c in ip.chars() { + if i < len / 2 { + hashmap.insert(c, Some(0)); + } + else { + match hashmap.get(&c) { + Some(&_number) => { + if c >= 'A' && c <= 'Z' { + result += 27 + c as u32 - 'A' as u32; + } + else { + result += 1 + c as u32 - 'a' as u32; + } + break; + } + _ => result += 0, + } + } + i += 1; + } + } + } + } + + println!("{}", result); +} + +fn read_lines

(filename: P) -> io::Result>> +where P: AsRef, { + let file = File::open(filename)?; + Ok(io::BufReader::new(file).lines()) +} \ No newline at end of file diff --git a/aoc_03b/.gitignore b/aoc_03b/.gitignore new file mode 100644 index 0000000..62bd1a4 --- /dev/null +++ b/aoc_03b/.gitignore @@ -0,0 +1,12 @@ +# ---> Rust +# Generated by Cargo +# will have compiled files and executables +/target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries +# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +Cargo.lock + +# These are backup files generated by rustfmt +**/*.rs.bk + diff --git a/aoc_03b/Cargo.toml b/aoc_03b/Cargo.toml new file mode 100644 index 0000000..adb8dcd --- /dev/null +++ b/aoc_03b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "aoc_03b" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/aoc_03b/input b/aoc_03b/input new file mode 100644 index 0000000..556acc3 --- /dev/null +++ b/aoc_03b/input @@ -0,0 +1,300 @@ +jLnFTjhwFTLFDGDDvLgvDssBJBbVRNZJPPJBGzBNRVJNRB +QWmffSmMZCfWrmHlCflQWfSNBpVBNbPSbbJNppcVVzzpcp +lflrqrWMmfdMlrtWWmZgDjsqwFwhFDsngnvhqs +CNBGwsWVsdWDNCCVvfPLfQfgZHPBvpgf +qhJqJlmcFnhJclllPgZjvpHpvfZpPbLn +lpMJJhhcSMDMMwws +jphtLMfVpjJRjJscMJptssnrwdNwQrNbwNzQTbcNrwQT +gSPPSqGGGrdLrNQGrr +PvWPDvWWCSSBBZPjLVDfhjsLLsDhtR +hlLwDGLNnTrbNdtbdb +ZfsvJbsJTrsttHTR +vjPQJPFcmZjVFZFvbbVcJZJPBBhLMnDBznnGMDLMwBhlmBBl +JdTJFtwHjJTzPMqPccqzjB +rggffSCvNBCbWBWt +ZsSpnnRpLStrZpTDwTVwGTJHDLdH +sZqswsrcRpCrsCsrrbtpbpDlttlFbbpGtj +LhNgNvNNhTQMhQMWhvvhfWhllbGGPbPtlPmFlDbjHHdlmg +ffNBNMhDvQDhvzhBhNTBnSzzrZCZnrsVCSwcnrCC +hHGhjLjwtFGwGhhhhtwjtlhrDBQrRBHczRcMvsBcRrDDMH +TTfbZdZbPbVCmCdmnZmCVdfrJBczMrrznvBvQBzzzcBscn +fdbPZTVVfSdmbfdvjjSGljhhtNGGhL +fMrGQbPrbnfljjzVLQzNCzVv +WcDqlSpctSJNzSFJLCzN +hBBWcHtWgWDmZlwwrsPrRTRTMrmn +ZJTVdgpzPpLVVwZgPzTPLwgWdhcWhSQCbcSbBtSWdSWchb +qnDGnNjqDqNlqsCSWhMtlMltWSQB +NnNrFQGjDRgLrgrpPr +nCrhsmVrlrzsTvsnVvmTTlpvPJPWWMPJWWPCJMPNPgPJMjJj +ctDqBLHLRLBSBqFRDBFqFFNGgjjrGGMrWftWJPGgwfGN +HFcqZqqdcFQRQBdrlnplhspQlTmmvlph +mllQMvMTMMdNNdTzTGmLgWjBgGtBqWHhGWjHtB +PPsbbZPCVfJFJRJZsBHjjHhHcjqSSWBt +wCVJFVRJDDpCPqZlTlwQnrvzmMdmml +JfCJtCwfsffBJmFmgFmFhhdwgV +lzHzsSHvSRlDRjlHTgqVVmmVPZqqmggmqS +GzNNRTWvbWGvGQtfLnbfMbJfsC +FnPrwqrFqsPrrsrwqwnbZFPwBQMhhdBHQZhTVBMdDHVhQQVh +zlLWlLvLgtgbMdhfVDdzfd +NWRNjLmWblGFsssNnSwPsw +gnmCjzwnmCPTPhBwPjzBgqPjllJJSWlhfhQDSrpJRhDSlfJl +rLHNHrLHVNbVHMMctZFHsbcsDSDWpSDSGfSRsRWSRllfGSSG +NNtdMVrLNdZNvLvLZrzCndqBgwwPmwgjggBn +tGSBRwwStBftfBHRScHwfcrCgQgDnjQhQDqgBqgCCDnnqg +LNlbZmlPVNzWlLZVFPQqgDTQTmjqCQDQqmsQ +bpZNZLNNZlLNLZNNZbLlbLZbwrwSHGJSwrGwRtRpcjjtMttw +JvGNPWhLPLBffwhGCrbgnFDbgcZwbVnb +TqzSTlQzdHQQpTTjSddHTSnbqnZDcrrFnFVFVbVVcbhc +mlpdjhhTHWBmWWBJvG +ScrppccsbMRRvltvrvrj +HRTVTnDwDLJJJZwwVQTmNlvqBNtvWBBBQvhNfqlB +TLJdLLCJZHJCVHHTwRdcsGpSbgsczcdcgS +tffHzJctHsSHHHGTtzvttZFlZZhVjglVmgDhDdjgjS +qCBMCqbpqfQPMBPpPljQVDDZdddZdgFlDV +fWwLfbbWNzGGrzvWHJ +VnNFqrrJdfQhCDFPhttD +pGpTTzHmRTNTTLRRtbBBbzhPtbtbPPBt +HLpHpmSRHTpllcLTSgVvNrJVfJvqMnZN +tHzgwJCgzZlLFLnWJTnc +NnNnmsMnBDFSFWdqssFd +mDMBNmRRjjMNnvrPnjjRQQvfRgwpgHHpppHhZbzfCpbHtH +TTwBnnZwBnNQZZWLWTTFNFbsCGrGFCNvDDDGFj +lzPRfVVRMclPRMRcbFDjfCCGvvsdGCDd +hSmmlMlVztlhRlVbqQpLnWqSqLZZwZQT +zzVTcqmVqzdmhZJbFpQZQQtLLWLLbp +TGwvGgTnGTRHLNtMftWHNbWf +vljTGwvvlCljsgSnCBslDPPJrPdVzrSmhdqhVDPP +LzCGCGLBGNlLmFFmmSSBBqSc +ZJfbdfbWtbgVlblJtjcFcqTmFqqjtFHtjj +QgZhZgQVdlfddlWPhfvMCGRGPDMMRvDNGvND +nLdpLJSSnLMwjCDwnQhw +NZGNgmsgPtPTgWqqCGwRbrDCQbCwhMjr +gNqPTqTPttPZqcWfHLlBvccFvhpvJc +GNdGhMMvRBjmMVjM +trcZJJFmCgfZtcrQCfCZSpqSRjBQpQRQBbBqsSqR +JcTmwtTtcrmThLGDhNTThvNW +ZqhmtzzfZRsSfRmSTThMpLNgpgJQThMG +jdnvdHWFvvjFdCWFrvVVnvFDQrJJMpgMJGNLJNJTPPgQGJGR +vnHjDVHBWjdncDRbRzzzmmBsSSzt +VZNZSCPTJPpvNTNsCrbnVrLccbLnnRVfWb +MlqQBlBztFlhQJdFhccbhnRWWfnggfGc +lzJqllwQtmzdHZpvwjPPNspj +wTnCMnwQCQvTTJdfqhdtrrSmhttmmm +LZlZglZBvjgbHHSrHpbr +GWvPjPNGljBzMzJVMwNJMw +CSlChlvPPGvdddqPqSJhPdbNbcMTMTbDbcRNDFcFLMLJ +HWjgngmBZGQgRRNbFRcHbbzT +BmnpnQBBssBsQBnPptSStllGhdCGrS +nhQCnCvjchBBjMNrwbRwZvvSvSWW +qgHlfqblVbPfVqlbGgPGfdfLSdNssWWLZsNsLZsdNdLSZZ +gbGHzzbzHtPfcJhczmMnQBJn +TTGJJPPZJGRzDwtQjTjzDC +VbnrmNVWVWbffbVMsrbrnvFRjzCzQCjvQDDStDFS +MhrRfMmfMmsHgsqPLLGdBqJJGHqd +FMCMbmSQTHdCBmpFHprdHcDNqqfqJdJsDcclDDZlNf +wzwRjwwtRhnzjRBWRnvtnWtnNsfsVDlDlsqVNNNqcqVlDvqf +PtnGWjtwLBwtjCFPFpMpMbSrQm +PWzrtrtzBBfjjWGbfNWvLJLgVSjRLVlSlllLpS +HhZmHGGhGZRpQlpLpL +dTdnHCnhmhcHcntrPPGfzfrcNtPz +PfmWWWPwWdPdWPTVCdpjRnzhjDbrFnGbnQGQrrDR +LSBnZLnJBQDLRGcQGc +NHNqqBqvMMBsJgNvgsstBHNsdwwfTtwdpfTTmVmnWmtmWVlp +zjzwTHCzDzbDzNTDjzDCCHRZmmSGmfgPmZGtHtgLmf +hsqJMcQltLtPhLgL +QWWWcMsWFJssrnsWrdlcPBwNTdzwTvvBvjwpTbBzpT +LRvWZdLzzZWSqdpBzLdzLgRmbHPVHtFHMFFMCtHCfHcbVcqb +sGGjNDnGTnlSSwsrTwcFVMHwCPPPcVfVHwPM +GDQsDlJlQhSDTrpvhhWBLWvdRvWh +sWhhdhdhbHSVBbFLZLnnCmCmtTTCCV +RcQvjNrcrwGNcGNRJJmTpppgCCgppNgTtFmp +GRRRGRGclfjwRsbfHFhWBDhdFs +jfRTfgHqgDZHClcPcrGhnbcqrr +FztdMLGBzpFJpcnzzclblcnbbl +pdNBtdNLdvsNtdLpdGLTZDTgDjmvCZjCRCDDHg +bdrbdZbJtZhrMrWRHHvRHRvHllqZ +GGjCNgDVDFsCCwFNHjlrPrlSRWPcSlvl +CNVDgDwVrQggDDQVsDwNwgTQdJtbfbLhtTdtLmnfbJMntnft +mjznjLchnPPcLLnwCTFFvPgJJWdqJqJJdJJr +bMlQRzbSBbRBMlMfMBBZFrqggvVvfqdDVDVDWWFd +ZSSsRGQtSpBBpZMSbSpZsbtsjhCHTHcLCcjzjCwTTHhmNHtT +ThCHLCfVfDTtDnDppTqclFfSclNrwNPwNfFr +JmsQjJPJMWRRMddZGZWsdsMZrmcqvNSFSwrScrvwSwcccFFw +ZWdJQGGzPJsMRZBGtHLgCHTTVTLBDtgn +JVGJfttHgTLVTsnHgVHfwVBDjQDNQSjQwjbNbQjBbddS +rPvZcZpcvtzcZddmNQjWQSjDpp +rrRZPzRMztFFFqMZFtRVgnsLnVHfVHqJnghHJL +grrZZbJSggQDLgrvSSDBVsGdjHjnGnBGVsLGHj +pCtWtPtffPRcWdBsGsGRBRvhBj +zmvNNclfZJJFZQbN +DDqCgPPDgtDSPPDbgCqcmBMBTQLQZBWwQZbsMWZZMw +RNlNvpvNvndNjMZtBpwMTWLBZt +VlNJvRzdlGFRFGRRRjFVJRRggtPPHgHzgStqCcHHmHqcrc +RfmdFgbtFLHlsjRPsL +LqrhvCTvNNhWBvBTrThrDWZrPjMQPQMcjzsPcQHTlVHQjcMM +BhhrJWJLvCbfJbwgtgJn +FWpRfFRjtjFpVvbTTZFPhJhJLdCLdWBhPmHmCW +McMzNlGrgGGsHcqmdLqbhJmd +lNMwsnMzzsSSGtVVSfvZTtSppb +JrJQDJDVvGwGVwvcGCRRcCBBqsWBRZqWZZ +bNdmhvMpjmHbNbpNvmbBqlRWlCtCqlRZqRtW +HmTjNdmMfTTVvLSzvz +WMQWmfGfQfVnMGWGmGtGWHzZtdLzpZhwrtZcwZzdps +jBgljNPbNjPFRbggNlNBCcHsrLLLHlrLslhlzdhdHppp +BBPBJbFCTGJcVQMGMv +fdmfmmjbPmjlmfhfGglTNLCNvPNSpPvpvSLCPCpS +MtJwMrwrZJVHMgqJHtwVJzVVLCvpNLvDrLvQSQSNcCNpFNLS +wWMVWZzqqMRHztwJZzRqVtjGlBdhbGGbThhTlnTBTWgb +ShhrjPrvhlljnHrggPvvSqRMBZZqBTZmMmTmTMdD +ctLzbcpWCJbNWRQqBBdZFMBdfZdJBm +GQWpzLcVpVNpRggHrhhgvnGPwj +PdzSrmmqSgWWddNQds +TZbwCTLZbHLWptQHhpgNsc +MZjBLjMLDTDqrrGflsjjrf +DBHTnlGGBPjPmwRWhn +hgLgZccSrcMgLMSpCLJjNWmPWjmVWdwJjd +MfQMScQrMSprrTGHBhqTvqlGQT +CDvLRCCzQDWzcGQGvRcpVFVsgTsFrgllrTpF +mjbqtHqHbspspnMv +ZvvqdqqHvLhDhJWzJd +ThHnbRTVbQHSWvBVVBCPBW +FFJgfqfqNwNrvDCBNppP +jzsFfqwqssLzJjffJcssHQHQdnMdhTGHLbddbCnn +gwMHHhbSwnqHrgMqMbnBcldhzBLQBQhBLtLttQ +dCRmpfvpCzcQllflQz +TjPsCJmvZPNPsvZpPTTRCpprjdbrHngqDwqMrDnMbMbHgM +CgNQpgTCgNltHTNQlHpRnRnzBfJnPnmpcpfq +LGrrvGSMGvrsWPBmnJPmPfmrqr +VGsSvdJvbSHVtlttNVHT +LnZDtzpzNpPsCbfBbDCDBC +gSGRSSghqhhSvSRvvhvVqFJdsfBsCHJbVfddCJ +vglRRjQSmnQQCNrL +HwhVddVVwRcGHGjlfS +MbBvDBGvWqpNWvMbzDMNZZlLcjlSclflcjqgfCRg +bvDWDWQbspPPWWQMnGdnFnJtJFGJhhPJ +nDJDdQdPDlDJnnbRQDlTqVfFwfVtjJjjFfqqFqgN +hScrSmSCTZvZCSmZLFwfffqgjfhNGwjhfw +zCzsCCTcMBmSLmsMWHdPWRQPQPddDQ +lzGflPZLSqSlccpqjpdNCwjdsjCnCsJp +VghPQDVMFQNdJjRNBw +tVrhDVmHTlPlGrzL +gfSJJlzvGgRPpggR +VLDDHhHtlZnnZqbGmtqPmmmmWN +VVDBnddDBFFzlscC +cmmzRzcRjFrGncTHqc +ghJfwJJvqhbrdndWgddWBH +fQbSpJwSthbhtvpCwqQbsDPMNLlpRmplzPlRMPzM +bBVQDgBpTzbhpgQVhTmBVBzgrvcnrncsnZrwzHJZfnHcZfrP +tdWlFLMHGFGRGMRLNFHlfwJcrPwcsnfwcvZPfr +RLWGjHLjSjtjmBQVgpQhhg +ttRRJBrCfpprmFqSJVTSwNJNTWlVTn +nLsMghDbQdnhwWNLjcwNSlVH +ZZDgnDQvDdndPCmfrRqzvFqpmp +PPzCrcGGlnhPcsdfNZZdpLLNZsfd +RjjWHjVWDvjWqVMHjHJjVlHdwwJbLfNZdfdgfpppgpfpZw +lBVvqjQqBDBlVmCFGChhnSmTTrmr +BZnGZFvGvBGGrwLBZlzNgmzMhMdfmwgmdmmt +cpDHtVjDWjCtDTCcDNhhzNJszgzMTJhmgg +VWWcRWDpPDPPtHtScqFrLlBFFFSFBqZLSF +qBFcCGFcHHGBldzBLtdzSrdR +fpmfpswfQNQmfPHfPPgJNwRtngTtSTRzdTrLRnSnldLd +fsHNpNPwQZwhVHMFGqvvMcqWFGVF +FwFJlqDDwwgFHQdmFmSQ +pPtzcrLHZrQfdsBsdLdf +bHrrHjbrjbrJvDvbqMVNqJ +WVVpPHPfWnHmpccpnpvQcrgNNMSCTMjMgjjMMN +RsZbhRFTDDJtZFJhTLRRLMrMrCdSNCdSMjrNhjNGSQ +LLqtqqzwqmmflPTq +mmLhdZSdqhqnqMZShLQrMWcrcWQwTgrWVVWc +CCvjjsfJRCCJbDbFsbGJvzgWWGlWrWlwTQrwQGGcHlBg +NRDbRCNsNjQPSSLZNdLn +cmVLcQZPSHBGlSddBf +DFNzDNszlbBlgHNN +tWRzFjsWWtrtlDztzwjDjThLPhRMpppLMhmMhnmncRcn +LFFcgdNLpLQggZQMFMcNJggRHCHsTtRtHTzCTZHRsfSRfs +qnhlhmGrrhhnqdmGhdhWbnSRzSfsBRSTSRtBflRffzfz +PnbmrmGjWMVNvdPFLp +swcWsMMmVwWwFtWlbnnZnFBhbNfrhN +dQLZHjpDQCfBBBBTGTTC +DJvDpDSzSDQZMWsWwPqVtwcS +NVTMjjGGNBqhNttdTTjtcqjCfDlhZhSWCFFJmSmZmWJhmZ +rznsHPnRLzwspZDWfGZJSLZZDC +QzPRRvRQszQsGQcVNqTBBdVj +rHGBglBNLpbqCgFC +PbmbRnmMSbRPDWRnDVSMPMWmvvcvqqppTLZZFpvCpczLcCVv +dsdMSPtMdPnSffQwGGsBBbQw +nqjTlGPGnqWsMPPwGdGjQvQvJCCQBvmvCvQJtmCw +DDhVbDrcVVFZLzHrZBRNCWStmQWztJvtCm +VHDLhFFDpcHZcHGWfsGlspTTMqps +FTPZwBzHHFLTTSwHLJTwVQqnDrzgRRVgQpDVRprn +jJMjsWlvQqVrqgWW +CjNsjjvlmslbcJmmbtCtCThdwhHLhhhLPdBCSPFh +jfgllWfLrfmlTjsCjcjDNNDnNcHJnd +MMBRSRZGppGFpBbbBGvVnFHhcCJqNcNcHCFNgnnn +pMZZgBRVZVGRtRSMbMbvRQmTswWfzLzLzWLrPQmfwLlW +tzpdHLNpfpPnlNFHnpssbgShtqcgTTggrsqg +JZwWGCWMCcbsSHgWjq +QCmDZCJwmvZvCVCVRQGCDMFBNlfHmfLLzPPfdpfBLlPB +PCvRTdPPBVBTGgLGrGqMrMnv +twQwStrsQwstjSHmmpqZpwqNGnGnNnZgLN +mJScfjbttQjQtjcmfbbQJHFTBfdfRhhrPhhTfPVVhPPB +DMPJmLLjhJwNBCNBww +TpccnsZsbTHpsTHVszbpbGHSNwBtWlfrtCtCfrtlBlFZlf +HsHvccvzbqsGzqnnHvLQPghQNNDDvLLjdjLR +zmgVMrrjjMGbbzzdqqrgVbRTHqTTThpNHphNTvvvTNnv +QLSmZmSJTvTnZTvn +SfDtDDmQCFDwWmSrjPPGfjMjjGfMgV +hdNHNHjnGHMTcpWlhBchRBJR +fPztCTPtttLwLzVbwqSVtCBBDpWvlcRRlBpbDBQWcDWJ +ftrCVzfTCFFzTFPrPjNZFHnNsMdZgjHdss +TVcTbdqLqzHHRNHM +PppQTWffPfCPQSsCprzRwRJDzMDzNwRBRPHN +pjCTZjTjmTtsZhGcGdLvdlgv +VJRhVfJRBgbdrrrvJpJJ +cCSSHSHnZPwDFNHCDCQdbQQdvqnMsrpqQnvq +NFFCwSrDzCNrwhtgzhWtBhgzWB +RRBRczzcvmfzVRzVPvPTlCWnnlTGqGMgTTnG +tNLdSdNSMFhsFttddtjlwGqllqQglqTWqwnThT +rLSsLrNdZbbHjLdSFFMjLLtSfVRJzVJJVZcRfvZVRfDpVvRz +DBsdssbdbDfPnnqzzJbqStqzjjJS +RcGMGwwmrJjFFHPG +mCgwMLPgCPmmwWDBDZvWvBCWfZ +cJCGJJMZcMGWMhWCJTfFSfDmmgFmtshggffr +vBVQBDbNstQmFsfm +RVwHNblzwHvNdvBwNjVHGZJZLJTMLMJDZLGRMDGG +LNCssCldDbrnNtVWNQ +mmcpRBMBRBTZzgMMhtFFvrWQrQmWFtvn +MZTgzMZSzTfSMDHwCfPlLLDnwL +HlPcjMSHsMSPbgLhFPFNzP +ZfRhtVdGBNLFzLqf +DRtGGtRGJJTJDZDGdCJrVJmlWvHWcvjMsMWmhQsmCMjW +swpQcsBvvHFpBHHcCHJvJddvbbWPdzhzzqqWdhPnhP +gDDGTgjNWZTMTNjjggRLggldSPqSqGznnhnbdfnbqfhh +WDMDtDNDctVFJstJ +rFDbGjrGbpBBbrCbrwpvvZQZZhgTLVVVVLgThCTggg +NlfHpttqzltMzRSMSdWRNSfSTTmqgcLgQVcQTcmgQgmZVPVZ +HWSWpMHNpNWlpNMsMzWGGwwBvvwBnwBvsnnvnB +mZVVHmmRZlvdjvNpHh +DFBnFDtnFbBMrQbBMvFLvgtjjNpcLpJdNzJJdhWNpJNWcN +QTsbrQggBsvsgVTwRVGZCfGZfR +RGNGlGTWJnJlMcRMGqvSmnDtvDDvtLSLvr +HfsFhPPdVshfbggDVmzcvSwvStVzDq +BPPfCgCFfcBbPbHbBHZPFsbBpMGlClRNJRlQTjQWjWpTTlGT +HQNqQbbRQHbZPZQPqbZTvWFWmCjvFRvRTSrRrr +lBpBpzLLdBwsLwLLWNggzCFTCmFgWmrF +VwsswGVBfJfccLBcsJGNdpJHZZqnhtqqnhPHDZHVtPQMZn +LMHnHnPMnFdJFNFJjZvrJF +wlTlslptlwtzcvTqvTsVSWWrbJfmJZNZJjcNWfNJmf +qDlqVthTztSSpSlqtpTTzLvRRnnCvRCPLBQGDBdDGD +HlmlJgRBBpJLpPBHnlLJsrgJDMttvSdddcMSStWjjWtcSzjs +qfTbNPTVGhGFCVGTwZfNZNNVWvjSczcjStMMcdSczzczvbcW +GZVqffQTwNQTmPRlggHLprHQ +BjsWschcTjjWclQTSnZFrjtFtbzZfqntzF +qggNGMHgvHMRZMtznbrftMCn +qvHdqpwgJTsVccwscT +FJwNPHJmPHTJHglTFwgmwqtShBqDmDBzzBzWhCDWqQ +fpsjNsMVLVjDCCSzBtjztt +sLrdfbsMcbMRZZZbbsfrsrNgGNglRwllRnJnwFvnFHnG +lWWVTJlJCTTzDdWzqdtFFt +PvPvrhbjhgSjvJQSnQRbjZDZFFHMtGGqFtRMGZFtGH +rhPrSgfvJPfmwsTpLcsV \ No newline at end of file diff --git a/aoc_03b/input2 b/aoc_03b/input2 new file mode 100644 index 0000000..22cbf88 --- /dev/null +++ b/aoc_03b/input2 @@ -0,0 +1 @@ +rhPrSgfvJPfmwsTpLcsV \ No newline at end of file diff --git a/aoc_03b/input3 b/aoc_03b/input3 new file mode 100644 index 0000000..9919ffa --- /dev/null +++ b/aoc_03b/input3 @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw \ No newline at end of file diff --git a/aoc_03b/src/main.rs b/aoc_03b/src/main.rs new file mode 100644 index 0000000..208c505 --- /dev/null +++ b/aoc_03b/src/main.rs @@ -0,0 +1,59 @@ +use std::fs::File; +use std::io::{self, BufRead}; +use std::path::Path; +use std::collections::HashMap; + +fn main() { + let file_path = String::from("/home/wafoo/advent_of_code_2022/aoc_03b/input"); + let mut result = 0; + let mut i = 0; + let mut hashmap = HashMap::new(); + + println!("In file {}", file_path); + + if let Ok(lines) = read_lines(file_path) { + // Consumes the iterator, returns an (Optional) String + for line in lines { + if i == 0 { + hashmap = HashMap::new(); + } + if let Ok(ip) = line { + println!("{:?}", hashmap); + for c in ip.chars() { + if i == 0 { + hashmap.insert(c, 100); + } + else if i == 1 { + *hashmap.entry(c).or_insert(2) += 1; + } + else if i == 2 { + match hashmap.get(&c) { + Some(&number) => { + if number > 100 { + println!("{}", c); + if c >= 'A' && c <= 'Z' { + result += 27 + c as u32 - 'A' as u32; + } + else { + result += 1 + c as u32 - 'a' as u32; + } + break; + } + } + _ => (), + } + } + } + } + i = (i + 1) % 3; + } + } + + println!("{}", result); +} + +fn read_lines

(filename: P) -> io::Result>> +where P: AsRef, { + let file = File::open(filename)?; + Ok(io::BufReader::new(file).lines()) +} \ No newline at end of file