From a14688f106922348b7ac79f07fdc78eeb5eadccc Mon Sep 17 00:00:00 2001 From: Maciej Jur Date: Sat, 3 Dec 2022 10:43:57 +0100 Subject: [PATCH] 2022 rust day 3 part 1 --- 2022/rust/inputs/day03.txt | 300 +++++++++++++++++++++++++++++++ 2022/rust/inputs/scratch.txt | 9 +- 2022/rust/src/main.rs | 2 +- 2022/rust/src/solutions/day03.rs | 36 ++++ 2022/rust/src/solutions/mod.rs | 1 + 5 files changed, 344 insertions(+), 4 deletions(-) create mode 100644 2022/rust/inputs/day03.txt create mode 100644 2022/rust/src/solutions/day03.rs diff --git a/2022/rust/inputs/day03.txt b/2022/rust/inputs/day03.txt new file mode 100644 index 0000000..3b759d1 --- /dev/null +++ b/2022/rust/inputs/day03.txt @@ -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 diff --git a/2022/rust/inputs/scratch.txt b/2022/rust/inputs/scratch.txt index db60e36..f17e726 100644 --- a/2022/rust/inputs/scratch.txt +++ b/2022/rust/inputs/scratch.txt @@ -1,3 +1,6 @@ -A Y -B X -C Z +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw diff --git a/2022/rust/src/main.rs b/2022/rust/src/main.rs index 6a78bb8..f506e36 100644 --- a/2022/rust/src/main.rs +++ b/2022/rust/src/main.rs @@ -3,5 +3,5 @@ mod solutions; fn main() { - solutions::day02::run(); + solutions::day03::run(); } diff --git a/2022/rust/src/solutions/day03.rs b/2022/rust/src/solutions/day03.rs new file mode 100644 index 0000000..1b6924f --- /dev/null +++ b/2022/rust/src/solutions/day03.rs @@ -0,0 +1,36 @@ +use std::collections::HashSet; +use crate::utils; + + +pub fn run() -> () { + let data = parse_data(utils::read_lines(utils::Source::Day(3))); + + println!("Day 1"); + println!("Part 1: {}", solve1(&data)); + // println!("Part 2: {}", solve2(&data)); +} + +fn solve1(data: &Vec<(HashSet, HashSet)>) -> i32 { + data.iter() + .map(|(left, right)| { + let char = *left.intersection(right).last().expect("Not found char") as i32; + char - if char < 97 { 38 } else { 96 } + }) + .sum() +} + +fn solve2(data: &Vec>) -> i32 { + 2 +} + + +fn parse_data(data: Vec) -> Vec<(HashSet, HashSet)> { + data.iter() + .map(|str| { + let length = str.len(); + let left = &str[..length / 2]; + let right = &str[length / 2..]; + (left.chars().into_iter().collect(),right.chars().into_iter().collect()) + }) + .collect() +} diff --git a/2022/rust/src/solutions/mod.rs b/2022/rust/src/solutions/mod.rs index 28326d5..89345b1 100644 --- a/2022/rust/src/solutions/mod.rs +++ b/2022/rust/src/solutions/mod.rs @@ -1,2 +1,3 @@ pub mod day01; pub mod day02; +pub mod day03;