From bbf346ba4163430ebe6dc23811eb9fa32caf90a6 Mon Sep 17 00:00:00 2001 From: Brandon Scott Date: Fri, 9 Dec 2022 01:47:37 -0600 Subject: [PATCH] Add day 3 solution. --- rust/resources/day3input.txt | 300 +++++++++++++++++++++++++++++++++++ rust/src/day3.rs | 44 +++++ rust/src/main.rs | 2 + 3 files changed, 346 insertions(+) create mode 100644 rust/resources/day3input.txt create mode 100644 rust/src/day3.rs diff --git a/rust/resources/day3input.txt b/rust/resources/day3input.txt new file mode 100644 index 0000000..1bba85e --- /dev/null +++ b/rust/resources/day3input.txt @@ -0,0 +1,300 @@ +dWlhclDHdFvDCCDfFq +mGdZBZBwRGjZMFgvTvgtvv +jwwJrzdzGdSbGGnNlzWczHzPHPhn +cczcbMBszhzzDBTBPPPGjtvtlt +LqJLfpwdLnvQLRGQjGtj +gSgnSJJCGSGpGSrwgfhchmmmHzcrHDmbrmMm +bVjstCsSstCLCrbSLnMpdMndcLddcqcpHR +wPZJQJwtBfJZmgBwPTcpTdcnfHMppcGMdG +gmFJzwPJJtszvNhCNC +DmjZDMZWDqGRqqRpHmmRLTTNTPTfCQJQQLJHTClc +FtzfvrfFwVgtzztgBLJNcNlTcTVNNQLN +vgsdbzzrwtqWfWRpZDdZ +rJhqRhLHhdcQqdHqfQGfPGstgGPlWttM +DzCpDDmnNCmBZBZnVBmZzBGPfsbglfNPwgPGPMWsWWft +BZFnlmpBpBzDzVZmhFHFrrrchhRqTdrc +DWCCWFNqdGFdPVcb +HllttQsTRlJlsblrHlhdmPLVcVcTccndLvPLmL +HSlstHgJltghhRrzNBNDzSwMjNZwNb +dzGSHCWSsGVVSdHVHHWWVVDCgJDpQqLTTRJpgmTLRmJTTpTR +BvNjMPZMBtBBMvvNMNttlhLQqCJpLmhTRQqQJgRJLQQg +llNncBlMCwwMnwPZrGsVHzcfFGdHGFGs +JfZhphMMQmFzDTDjSdrQjQ +sqHCbCwBVtbqbCqtrWdjzlSJTlrTSWBn +bHcwbGCGRssNscwtHNbwvmRFvpFFJFvLZMmPLFfv +qBCrzznVmDCmMMDNgrgcrvHHcgbQcW +TTTsdJRTRhhlsgbvbdCFdbWvbQ +JhGGlfRlJsnCMDMqjmfV +rqLLvDLtStDLQhQDQrQhhNdsmWdmmjjnssPnTMnTzfTsWT +ZRFFpgCgppcBcnjTsjTMTfPFMP +GCZpGlwJwBgGHcJhSSHLDDrNqrMtNq +FsPFqsDNZFNnZrcBmWfWWQ +lSnRlRTvgrWtctTmft +SMbGbbvnGlnSDwGqLwNCqNVD +dPQDcBwJJDgDTPgGgQTBVjSsmLhLTrLmjSLpjSLh +MvvZRHtMtbCNvCNCNtNvbRfBSMSrjmLpjnjmVhrVSLsnnmSh +qHZtbBZfRztbHbCzNRHPQgJPJgGgglFPPFqdQD +MsBsVDspRPfPlhMl +zWnCFzHbSCwqNmPSjmGlsmfN +FnHnFbFzsHHCCgzCzbBptVppgvvVgVrpBrJt +pTLntptZjQLfVDjQTDlVJCSWNCPSCCsSNmFlNslm +BBHbqGHHqgwSWSCCWwZWWZ +qRzbhhbzzrHdRRHhRHvzZjfrVTrppVQttDfcQTfp +DHsdHPHHsHMsRmhMZZQBtljgZGtC +NFnCbFznLVJbVrjhQthjGBLZBjGL +wNrfFJJbCpNnfbdwDSDHsvsHmsmH +jLZRjnMMjJhJnvtQbdHfHZbvHQ +mBzwptCWlcFCwsHSTpQfQHQfrpTb +mNltzmsCNmFzGwCBllGRgRgqjgLMnGqjnPjV +ZqqcqmVVtbcBMFfFMcQfgphJ +HLWLDvWjjLwTWzzvGLThQQshQllgJDJgfbffJQ +vHzLvrwwzGzTRGzzLLRPRwRdSVdnBBdSbBSVStbNmnrmZS +TWVVvPSgwWSqcRgRwbRRcqshsfFzzzChTGNHzHhhhCsG +njZrjMLlpmDmGfSGtrNttzCF +ZQBmZdDBZRRPRSBgcb +TpntvdpnZDptnbnTDGtSFSlFmzCzzmSFRjqlZj +MWrNcWRMlgqzMjzq +NPwsPNrBNcVHNNcJHBNBcJwwttDvGVnDptVRtbnTtGvVGtGG +tsbbvvSfnqvzQLLBjfMLdd +gJRmRNmJNchgmmrFJhFgWJQMwBnjwrMBVQwQTBdLdVQj +GcGpGGRGJgqstvpbnCqb +rsHcrbZHBTTtLtNSwwHLLJ +mFqhWVsjsVCjQlNJGMwMlMMGMh +QggzffQRCfgVFWzzCQffqfZpZDcRvTTBTvvZnsdnddcn +bPFMFFBpMlFfMZMpHGNSrNctJcPSSchJchPt +zCgwnmgzQDnQgdWWQRgqSrqLSqSgssLNJhgJ +rQCQQTrRRmDBFfbHBFHZbT +fzfPQsGrrMMjtHtBHs +SwNNDqwhWpVTwbDGGDmwSVhZRZHdbCtgBjCRjMtbBHtRMd +vVTGvVGNvPPvQvfncJ +cwzMJbclHDPqfJQPfq +rrqjjTBrqqBjRCgTjrRjNrsGPDhDFGCfWGfPFfFPGWfD +BZTTSTZgjbSwVptvpq +PPPPJpvpJsJwPHHPsJdTNZRZZZjTFFmRRRNjZd +qbWVfChDCDnVVDGfnSFNNjRLmNfBNLQjLjmBRm +DhFDhbnWCDhGcbJPPwrsrMwrvlvc +lFSDTwHTSwlTNwFFlwNcFFpjLZvZqvnqLPnnWbgngbbncqbZ +rzQfMzRGrRGJCffBMGdGsJZWWnqWVqdPPgNvvVZWPWWn +RJrttBtNQCsNzTpShhHFDwFlth +QNzQFjNFrQPNbmPpqTTDGswWmB +ggHRcSlcCVCSzMVqDGwgqTWpsmqwqG +cltzCZtLClHRRtMZZLQjfNvtrJfhvrddvNNd +mcfWHffBFnQRQlTFdv +wssSLVbbzDVbzbggzSzNshNMnvnljRdvQRlMBjvQdnCj +bhDzVSSJDDJhDLBwtbDzzbbWppfpcmWGmprqqGtqprcHPp +rpVFrZpgHWSZrFPqhzwcqPwmcVBD +vMTnQJjQLCbljvvQzTMbTjPNdBLwwDhmhNNqPwmmhhBh +jvGjjQJnrspGHgFz +sjssjtZlcphZHwWvcrHTwWJH +qDdzzrFNNNDGdFDzzVBVVvfWJPfgPmgWPgvwVH +nqMQGDrnLGnqqLNqjtCZZjsMhZhCMbtl +JJJsLFmzsrFlSpzPscjgHhnRnmvcjqRvvj +fCMQbCbTjjqTGhjc +bfdbWdCddfBbtCfbfbqVWQQpPlBrJLJJSSLwppFssFzLzp +pdbbzlffWtJbgQwhcphQcCCg +vHvLFvVLvSfFRLnRFRNHjPjggcssQcjjsnwhsPCC +vGVGGFFVHLTvDRHDmBbTzfZWMdJZlfMm +wjCbjQgjTQhNNzgWQCWrDFMZmZDZDCrrMDpLpL +czGSPznnRGGJGGlVVRVBGGlBmDDcMDFDDZLqfffZFrrZqFpZ +JPGlvBSJHVGnVsjvQjjzwdwjzd +MFlWQHDTpnpsFNNQllWFWlhzjGgrgDzGGhGGjvmZDZrh +PtTPcTLbBCVPTRVcvhjmmhVhSZGGgvZg +JLPfCwPbTbBPJCfblplMpqWsMpMwWHQn +QbHVBBzWtzHBNtBwQSgqhqSbFgRLjhmqqj +ZnCnMcdsDnJTncggFJwRmSwgRFmL +sTMZpGDvsZcMpcvTCPHwzrfzrpzHpWBrWz +PMdJWwJWHFWJnNzbDlfbCfMvbl +rZgttrFptFFcBtccbbCDvgfbGCGGgGDz +QsZBmsrFscrVrjQJjJQRJWWLwq +GwNNJwwRThwrWfhh +SmQqmzsjHssQzCbvsmSSzsQTjWpFTTfFfThchhFTBBfppB +mmbHbmtmCzzQZzQRdZJhNMdMlRMglh +rrsPbncQvvgnnrTdGDVcCdpZHHZp +RwwwhjLLqtJFwjzwtwmwwGpDZVdGDVdZBZDFHdHZCp +zhzwLhhfffLtjNChgWbbrbnMvPrMrrfv +tQMtQtTSBFtSmQSttMggMtbtnTnPrZvrnzNNTGZvrZZdLdnL +HqhwDpDcwlHqpVrrFzvFGpZrrzrP +RwlhhjwRCjVfjDbMtFWBWJMgWjWm +WpWVlWzsGlBJpspNclNlhhhmgzrdtzQMQttzMmtt +RfnPRLTPDHRdPbwvvntnSrFgmvnmtm +CwqRDCCwqCwbCTqJcJBNcZqdVcBlpJ +tpfnNBsGGNRppRCgfgRRCRQJGMPPWdwMJdWFFwjVzGPJ +chLSchLTbLqvqcZLlvvLqbmldMzFFWdzVSFWFMzQVJwjQjdM +rLqqcjDrcvhRsDfHDtNNnN +DjZjvTTDqrtTZZSMcdRdmRJrcJNc +HWgPGVhFPgnSVtnJcdMs +FPLfBwCWGPfCwfLHCCDBZlbDpBjvqTtDzzDj +FJNqNFgNFssqGGqBsTlMVcgVrCwLwlhcrw +fRZzDmDZvvDdZbtdpDZmbrThrLMCvcChwwlSTrvMSr +zmfZmtZmpDmbfWRDDZdqFljqnNQjGWnsjFqGsG +rMdMWddmJmvdSdmWfWMddpVRqRFVHRRqMRRPQMRqRq +tDGtGGhLjLLZNLjjNgNthGtqHTVqRVVpPDRpHHVRQVRPPR +ZlLtzNjgsZZlssLgtjNpfWfJvlJrrvCJfBmBfn +hqpWvFJsJFNHhqMWNhWvWRmmDcDMLcwZnjcwnjRnjn +LdrlgCCrSSTrTnwRjmwRQZwdwG +PVlfClrLlLlfggtBPzHHhHFbWzJNbvqJFNqF +TbbQtnDtbGGjGlGsGHpJJmFWFJJrBWWFlWrS +CZzzNzzhddNchhMhhRVjpCBwBrCvJvpmSCvrwJ +fhZZhddRjRgZzMZRzPjPTsLGQtHLTHTbDPQTtqPT +nHnWsQNQQWTWQshwjBJJJmHwFBwm +VZZpfbffZVvbSbGfBhSwmtmmJlmjJFJJ +bpphpMfMvMzDbMGZgQNrrngzdTsNqWdd +VPNddVTPPmdnVcPVZcdTmcDbQTFjMpjtFzbMtFjzsFTssT +lJCllWCrgvRlgwlJfRRvSzjSjQpbzMHpbwMQpszM +fRhGBBJJCgrNLsNPNVVhNq +pLrVDgbNbjVplpsltHBqWSqhSQcHDttH +MCdCwCGTmnTmmmvTTCwCqNhHQhRWcwHWBRHSqSQH +TNTFFPfffTvFTJvTPCPTFfGdzVjspVLZglJbsbZpVblrzjlb +cdPzFrldgcdCrnlznPzrBNRssLLBbVNVZsLHRHdm +wTQQwvvtqwqcGvTZmVHBbVLLBbRV +GWJSGfJWcjQwhQQWjqJhhGfgpMnMzDnpMlPpMnDlMrzl +pMhqTTsSpdBPpNBshsdMMTQFvFlQtQWCRQlCllVFqVqG +dfcbnmrnjzRFvGQQGvfv +mDrjLLLcJjLhpZSSJMdpph +NGZNwqFqZhhcFSCfRzwdzRfCzVRw +QTTmBTsWQWJPPCvzvpHPzdvVFR +bsmWTBbQDbmbLQQMsWWQchgqLqhGGGGZLhSFjhqS +HgmGlgsvBBDgBGCdHHvHwCGwhZJWhTjSdhTSFFFhJtSJTJhT +RQfVrfQNszMQfpMzpNnfLbtjhtSbWJWFWtFFtFJtFSZq +PNzLfnLnBCPHgsgC +mTZGgCdNSNmCQLLpPnDhRlGhpV +vWJHWFsfHMWBBFbBsjfjHrFfLRRLPPnpLthttRVPLSnhSPbS +fzMrBjWfBrzsZCZmSTgQzcNN +mgmCZCMgmnZmZgBZpgpJfbQfwSQPDTdfdwSDfwhn +sHhcrWLcFlzHcHRNNFvNFcFPwDDTWdddDdqWbSTWDPTTQS +RNsslsRrNcRNvNRFFNvVsghZBJtVCCtCtGghjhGBGG +gchrcRRdnRwPPnvQ +CVCCSrDjFHjVDbBLFGGBSvwnwNMnMsPPNsNPvwPQVM +lHLCTHGDCbbjFTTzdWlpcqfgcrdzZg +fRDPsDsqqJttttJSzPDgJWQCbQQbGMWCCnGGPVGVQQ +rTTBvZhrvBnWWDWCbZWW +cwLlTLpjTwBFLLhgfRRfmRqRDmRdjq +sprGGPTrJTsGPzszqGzNtTtpfbQddQSQSDFDFvvbZvwFbbfN +LWWCMVmwMmgWFQfFDDvZDgdF +mlMmRVCWVMmmHRjVCmjHWRhMzpTtlrlPzrtzwlsGPrpwtrJp +tsfwwfjfdfrtrClfvwvvLnTHNmvLHcNccRNcvNWH +qQSqZqFQRBzghDFncHgmccHNmWcNmM +SQJphFJzRDSsdpVlllrCrw +vGQqLQFvBvLvdNnvjnvNDc +TRJwmWmZWlCCmzznbNhhbDhRgj +CCTtDTlmDTWTmDmZZlVLLsFfstfFFLsBLQfF +cfWflMmWWlWfPWBhBlQtLmmvrrrvCLjvRTjLLwwr +gSgbsbgHdsjzHbqbdVDLZLvTZwLTvSrZrFvZLw +sdbJqDNdjJNdsJBpBWpJlMcfcB +FHlMHPqDLlPctgHSnttCSC +zhrmBrTwJTjBmQcSQvQqbtwGvg +jBjmBmJjjjRZTBzhhrBJLDdZqfpDMdfWWlDDLMlV +zPVdbsBzZdwqJGhrLTvNNJqH +tmmCgCPCDDnptHDjNvGvhrDvLv +pRWRlpSpPllClnpbQVQwFFVSQFVBZz +nDrCvmvMnMSmsCvblBzzCZplbJlTbZ +FNRtFWRfcGqFGQbzlZTQqQTBbd +GRwFfNtwFRNFGMvBsnnwMMMBjn +LVTBjjlJCDrnJzJNQR +GsGGsggGpfhgpchgdqzbMzzhzQRnnMRrNzzR +PwWFqFGpwWpdWgfsGggdmjCVHPHlCCCVZNCjVmVj +qVTsCWwbCsPlCVfcbvfPDgLzbzDDhrzRrjgZghgr +ntmHmNpSQNGtntNttmSdSdBdjrrDLQZQLLhRrFFFRDTFZhDF +mtMtBNTSNBpNJStMGSdHppNcVWPsWvqVcsVJfwwqlqWqlc +vvWzLvvdpZDvhTpcrLcTTLpdwSPnCfJwCMnQSMwSnCGJrnwr +ttHVmVNNsHBBRsHbMMwwnjnjBfjJwCMP +tsVllgNVqbRlfplldDvDWT +mLjLsQqLQqsBRvvlRBLRlT +bhgtDDhCtmptmTTS +nfmdbggwGWrfsPzfWq +JpWDcSGJpGzsHPSSlbbd +wVRqVZwwRwPDwbDddH +VtVVVLthLVtVgfQLRTNtqDcCcJBmmWMWWprpFrcBJWNp +dhhhDtmLdttdPlslGlRFjfzBBpzzRpGJ +QMrVMwbVrrbvVVCrvcnqQQrrSMBJfpjFSzfjJFMFRWSpjjFG +cwvbHHbCqVchRDHgDsPTdt +CgVNCtDsDtJGZZGqMMGhDq +cLRnSHgWcRdLHWSSRLjQdlHBTTPcPwwhzqzTMBPTwhPPwP +HnnnglnWWgdRjlmQNsNFmJCFJFvsJsNN +hfccLbjhfSRbfDZjFRJzrlvlwwlnnFrWwzqr +TCsPLNtQdpdQQVtVNvJNJWlzJzwlrvJl +pHtPsPtPtCQfbRHHDHhMLh +nWRWgLtWnfTcZNNsscfd +JMGzMVJwMVTvzVQFGHMMmPdddsPsCjldlHPcScNPsP +vGrMQQmmvTQzMJpghWRWgpbbBqLbLR +WSbhFbPTpRfTfPdhpfbhSbfPQLzlQlzlHvtQsvlltlsgHdgQ +pZcGJDZNGcVrJwrDrrnvtNvlNzsgtgzvvsgt +qmJZZJcBqwrMJcVbWfSPPWpmpjmSCF +jHVjjCcpNrDgjsfB +ndqllRvJQtqlQQTRWllFNDrsMZBfDBLvNMNDfsbZ +qTFnWJqdWRdqWRlnTRnQGnTmwwSHCzpcGNmHNcPVcHGmCz +pZCpBhDfvgBVZQGMMVZVlq +sLsLTTSssjPnTNbFGRGFPVHqMMRF +TsNSccnjLdcsLjdmjWvWvBhfmvWpCGhGhD +VWFFFPMpPVSMbTppHTnHTbRH +DtvfNdBNddDNSLjsvDTTHnzzHwrTrwsrwqbT +dgBLNffdgjjtfBQSvgNjNDlvMcQJmJJmZCMmVVVZFPFcPMGG +VWsQLHMVVSNRShWLhNSNLjbbbddbpDZDddcbZdDRztpd +FPlhhgPvThGFJndnnCCnJzzdCp +qrTfmllGvfvGqwNMMMsffsQsNh +NsmFqNlmnQRbCFsmJgSffpPcbvSfrVvpgS +LhZGDZhhwtDHMwDdHGhDjDpTzzPdzgTvcPvpSSpPrdrv +jgHMjBLhwtZMHMHmJNNJNFlBqlBJNn +bznSQggscgMcSTTfJbSQzQFwClMhmCmthClvMwFLwhZL +BRWBPBVVPjPNVHpVqlqrvtwFqmmLqltZmL +WDVddNHNvRgccgsDsgbT +sNgnQLtLLLPPnsPpqdqjBclpGWjcWjBG +rVCChSZhVrrwqVDVHSHmMjldGfJGfHddJGJlfGjGJj +CVZmDvZCmmhFVVrCgTNbbnQFgbsqNqNQ +WmMmSSfJNRRPfJRMRMtllCgdStgbgttgCdDd +QGBrvzwBczlgqCtDbvDq +QQpBGFrLQjQzGVVRNjPmNNWMbW +gGljnJhnJtllpNVCHWcccdTdjdmB +bLfSQDSMSHmBnwCB +LFMDrbFfFQZQRzLZnbgtlsRGtltpgNhgPpPG +cRThZZchCThtgTRhZTRtjWFjWNwqCjGmwFjqqffC +DPDPGzPMHDbrpqjfwrjqmjmp +JVHHDdVdVbvGMdnVdQVdDbHcRZllhRtgStRLThRSTcBTvc +lQWPSBrrPZGgPglGssDfHnWsfDFHHvHh +TDCqpttptJNLtwNpbwTqzqHshsvsMMFnmHMNfssmvmvf +JCjqVpDtrBjQjrlj +wFGWGpFLvCczNSWWsz +tlfgtftjlbtHHlDBsBzmQQnsQDQsCn +gjfrsVqVgPlfqhvLdvdwZhGq +pHpZHBSvRvRCBBZCTMngRnWndnRmWcgg +jsfrfrjJFDwDDMMggMCGWGcfmG +qbCszCjtCjQsQrtZVBHBHvBvqLZvlp +scFzsPScNgNPNgQzpttlCBCwpLrMLCrDdljLwq +TjfGZZjVwMZwMLwr +vnGbWTvTmFRjQFQPsb +bVLrzqrzJVgJbbtVrWJVgppcBCzBvdzwBCCBHDcBvc +hflPQnMQmQSRlQMPNRTHwwHHHqpHpdfwdBCp +hFhZMhqSNMNbrZgWWGWJjZ +NJsgNjJlMHQrwnRgSRPwrP +tqpQtTFpFvbGpzTTWSrnSbrhwChCnRfrCf +GtcvGqQpttzcqdFzWppDsZMJjBBsBJcBNmBjMsLJ +lGfZGZhFfhdSWqmFFWSS +wDRDPLcDnjtWbSmqrSCSLC +MPwmtVnVMjztznHPgQhQfJfvvHHGggQZ +llTspLllCHmLHHndldqHdlLQQPSBQczZSFDDQZSNGcGG +jMhwvVrRjbRhFBZNGPcGNN +wVtrrtRwrfrwftjVjwWvMrRpsqsnsHsBglslCmTsdWdHTd +vPvmTGgDPRvGpDPGPqGHQnWJQJMBBzJBlBQWlHWl +bfbwNsmwFdLjbfrrLsSfLNQtMllznBzJQZMQtMlZZnnF +frssSscssNfScCjfSCwjsDmRDpGmDRDvvvVcvRDvRp +LtlPZPjBTbWsWJVJVzdT +nnprqhrqmzfrSrphqfCChVVGVDJWgSHHWgWsRDVHWd +nrmppNqhcCrfMchcMCncqbzPZvlvlwbBNjPjtNjZjL +FPWsFdSspVbbbtWVvl +CCHnnfHHvCwtVMhzlzDllC +LrGnjGfgfvcwfgrLrBjrBLgwdBTSRBFsRZdRsSqFFSFSSPPp +whGCLqsrjgGhhGFqrCCFGCGzTRTZJcNnzlLTnznNHcnzTH +ddvVmbfvdvVbDVQdvvdSzpNcnJzlzSRHNJpnJcSc +BPdvfQdWtPDDPfDvDQVVPmbhssCGGMqgFCFMqGMWgMjrRw +PSLbGmWPSPLQbMTPWGFWltthdDdrmBDHhdDdczzDRh +VfCngVfgsZwCftrZdhcZrdNDzz +CjVJJJqnJwQhWPPLQlGj +ntnnQmTQTQGVWGNGNNlClG +jDffjMSvqjHzHHzwNVwNVcCddPVNdD +ZszJsrrZMjsHqqvZJLRQCbTRQbJmThbt +BgLHgFDsJNWgQgflWd +mnVVcCHnCGRcVnZSjmlthftMQddlfhQctNfW +qbSGqmHSTFprvpvTTL +dvdTMvvpdLpTcSLvdLLMmhfFBftwCNhRwRNjtCTRCf +lshQWgsgrHHqlFfRqFjRFfFwCB +rsgHQbJbrsGHHlgQHgJrlHrPZdhdpMZGDSDpdPLcZhdvhZ diff --git a/rust/src/day3.rs b/rust/src/day3.rs new file mode 100644 index 0000000..cbc4761 --- /dev/null +++ b/rust/src/day3.rs @@ -0,0 +1,44 @@ +use std::fs::File; +use std::io::BufRead; +use std::io::BufReader; + +pub fn run() { + let file = File::open("resources/day3input.txt").expect("Input file not found."); + let reader = BufReader::new(file); + + let mut priority_sum1 = 0; + let mut priority_sum2 = 0; + let mut counter: usize = 0; + let mut group_sacks: Vec = vec![String::new(), String::new(), String::new()]; + + for line in reader.lines() { + // Part 1 + let current_line = line.unwrap(); + let (compartment1, compartment2) = current_line.split_at(current_line.len() / 2); + let common_item_code = get_common_item_code(compartment1, compartment2); + priority_sum1 += get_priority(common_item_code); + + // Part 2 + counter += 1; + group_sacks[counter % 3] = current_line; + if counter % 3 == 0 { + let badge_item_code = get_common_item_code_part2(&group_sacks[0][..], &group_sacks[1][..], &group_sacks[2][..]); + priority_sum2 += get_priority(badge_item_code); + } + } + + println!("Day 3 Answer 1: {:?}", priority_sum1); + println!("Day 3 Answer 2: {:?}", priority_sum2); +} + +fn get_priority(item: char) -> usize { + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".find(item).unwrap() + 1 +} + +fn get_common_item_code(c1: &str, c2: &str) -> char { + c1.chars().find(|&c| c2.contains(c)).unwrap() +} + +fn get_common_item_code_part2(c1: &str, c2: &str, c3: &str) -> char { + c1.chars().find(|&c| c1.contains(c) && c2.contains(c) && c3.contains(c)).unwrap() +} \ No newline at end of file diff --git a/rust/src/main.rs b/rust/src/main.rs index 35f8f26..6f8d917 100644 --- a/rust/src/main.rs +++ b/rust/src/main.rs @@ -2,6 +2,7 @@ use std::env; mod day1; mod day2; +mod day3; fn main() { let args: Vec = env::args().collect(); @@ -11,6 +12,7 @@ fn main() { match &day_to_run[..] { "day1" => day1::run(), "day2" => day2::run(), + "day3" => day3::run(), _ => eprintln!("error: invalid day") } },