diff --git a/prob3_part1.txt b/prob3_part1.txt new file mode 100644 index 0000000..dd22ec4 --- /dev/null +++ b/prob3_part1.txt @@ -0,0 +1,300 @@ +zBBtHnnHtwwHplmlRlzPLCpp +vvhJccJFGFcNsdNNJbhJsJQplQMRLQMlfdfTPCLfQQCT +GPhjcjhZDjWtnSVH +BNhHVhrGNVTbDHdDJdJRPJdSQQSJwPjR +lvtsfbsqzwSnJcvjSm +MftttFLftZMLgtgMbltMqZzbDNrTpVGhNWrDTrpTGNpZGZhD +VSSHcTgTtTdtllZlzmmbljTn +RqMqsFfQLLFLQFMMfRLPZLvPpCfWrbpmCbjCnfjlWmnrmmnm +hqRDqPDRsqNHwtHSNBZtJd +tNFDpDFrtdjfmjjjFmFFdScpZhZScTJgpHccHhMJgS +lLzSlSCQqbsVhBghggBZgCcJ +zRLVVLQnvQqVVzRldfWrwffjjdwSdfjv +bpWqqqWvHBpwGBCCRl +hJdjdJFQqdBBDMMC +tFFzJZFtJSqtZJQsWLbNSTnffHfvTH +lFhRZhFjPlqMlJqZJlJcRLwrLrwStRwtsVVtVSrgRV +WcpDvDfBmpDHzWBDbpbmWmNVSSTzLTtrVswgttVVzwwr +pbWfmGBpHfDmWnvvGbmWnjjMqPJMlMFPdGcjqPqPhP +NjFNRlpVLFCSSlbBWWfw +pssPZQQsMnzmtnQPttzDBbBJBcrrJWbrZSBJSbfC +QTHPHspMNGHdhvRR +QfPdSJfFJmthSthtwbsNLbPLlLTLpbvP +nHnMBnZqqgBMnWrZMqnZVcbCqRwNsvblRwppbllTsRNp +nZHBHznMnWgcrnVBtjFdfmzQNtNddjNF +hFhfPghppPhpRNhzsjsvHVzjpsGnWz +tTjlCCwMqtdMjMctGJWHwWnVwWnwvWGs +rZdrjBBtqdCtlcdgFZQLfhRLFSgRNP +RDHSWrJWffJFlJCgCMCDjCvzjPMP +QtGTndBwBtNzBVjBCMgB +LdwwMpTdwsRHsqSHqHJl +RfsfzvLLFvFzCSvSbDsTpTGMPMZPPTMt +jqWBjwBBNwWqwPGZbTwVwVtD +BnhgglhhNNngqjBjHNWrZLlFLSCJSFFCCQzQvQFCFF +HLvLDQbvnDQDvbHTLhntSnGBSlfGldddcmfMMf +NgFjZjrZZJrlfJfSVcBJGc +scWCNFZpsjzrDLwLhbQzhQwD +SlqJlThDPqpwSTwhcbDdbWDbZGcZNcDb +MsnWWjHjvLvfscjjgdzNdbgbcc +vQQvWVQFLLHfHVBWfsfmFFpJRhhSplqlRJqpBwlqTCPC +DZbDzzZDjQbPGZFFSSgSlFCzTgzm +qLnvwvhddrqMrwrCTLLFJjmtSlFlSH +VdhvsWqdVWvvRhsvqbpbPcZfPpjZGBQNRj +mJNtNFmzDZtzdzrLtwwRqJSchgfGcRfwRB +pWpjQjCTQnHMWCCpjQpHvTqcwTwScfRcBcSGBRThwS +MQHjvjVCCqsvljWnVQzLtNPZzmzLVNLddtPN +QVRPRVDgsRjLssnL +TTGDJDJfbfLHSnsMWWbs +qGqqTFFDqgQgQQQq +nlMnRRjbMjCdJVQJCZ +nGqfLwfNLFNLnPPGFVVCdVGZJtCtCCVzJz +LHHfPNHnPqqLwqPqDPWfNFvMglbhhbMgmclgcllDmgmrcl +cLLWWSThtdLpRcddcgPRZFDMCVPPMCCPCPCZ +NfGbGNzrBNffGNJjbPPZsZmZZPmDHpMH +zlJBfzlQzNjNjfJcpwSdvWhcvLwQWt +cVVQfVCJVrVcTJnfNvlDFmDrmlvrFWlL +snZHpMhZtMbtPNvzHWWvNFNvNW +gppnbbbRgMnZbswRqRwbqTcCCSTCJJdGjgfVGTdcCG +jplgNdrHrrNZgdHmlHNJHddlDSPPSTlzTSlTSDSzCQLfzf +vscvWWWvGWGGscbFMpRWFwQTPzfLQwQwPfLbzSzzDL +GvGBWpqcMVRNNZHgdHdtBJ +LchbZhjjZFjwSmPRqRffqbdtggdR +vWHMWlHJdGqtRqHV +MvzCJlnMnlTNnNNLLdhjjCdjjhDjjL +FNCllHFvCGvwQcPQJfgfmwgh +zjtRpbDLjtsrzbLLQmfBTgTBQQfhbfQB +WLgqRzqsrWvFGFZFZC +qjLlNcLjcNWpQLlQMmvmhCvCgsMZZghj +tGSDJtRGJzHMMGDVZCfvmfhzmZZgZsmv +BSSRDRHBGHtSSSbGJSwHbNcLQddqMNlrqcMQMldBWc +JSfctrtctDpszHvzVQHr +glCWjhWmFjlmlhmdWPhVVznvcHjszbvvpHvznv +FgBmFhCBCGFqglgmhCFmSTSRLJLLZfSRJcDSGMtM +vZGlFFtLMLdShSSShRVtVf +rQNvmznWPNCPNsrCsbWbsPCvjShhhfHBBHJjSJRhjSRnHhSj +mCNsQCmqszNcQzrzrrzWvGgGMgpdFpMLlFZGwcLDdg +QJRJQDlcqLlWbNGL +HCnwwsCrnstLWqtWNgZNgg +rsnTrTCHTnnVwnsVPqqDQcRjcczMPvPRzM +qCzjqnzVdzrdhnhddDbDBMPttcGBDBDPnc +sZgRQWHgWHHLsgsRRZsJbpJlDcDGNcTDFtGNFFcJNFPBPBTc +WggbRQSRRgRSsWWmbHqvVffVwhzvCdmfhmdV +lhqWcNpQGcNmmHmNPWCsQzQsgrQrBMCMbMVM +wDLFFDJvSFFZRDZSzCrzTzsRgVWbCrMW +dFwDtZfdjFZWFFfmHGPnPPmqfmPNcN +lcMRNJRGGLJnNVFbVrwrwZrD +tjCzQjQhQwgWFShVFS +ffHQsQssQTzBsPnLpMPRwsJP +MQSMSBSRFMQLJChLChjTBh +WmVlPrwnpwDlflNpDrNnDlDwThJCCdLJhhdhCfJTccGjvscd +gnDVnNnwgglwDwptSZFzgQHqbjZgZZ +nwBcFgwTDcNrpZMD +WQWCLZmvhMRvNjsNSD +CGGWmZGHHhtVzHbTqgTdbgzz +RmcTCwvssRbsThTcVRJJfSPqfJwJFqfjfMFq +zQNZDWtQlDZGBQPfFQqjJLjL +rrglggZGWnrnrrHlDhsbsPTVCsCVsTRpHv +wFGfzSvCPGttSzqwmtqmvvPRDDRCWgWWDTBTMcBcBWbCRM +hVJJHQHnpWnDTNnnDb +LJsVVdhQqvmdbbSf +srlJztzsVVsSsVtRlNllTWzzmqGhqWLPCDCgmChPLDdqCmCP +bZQMZpbvMBMgmDGmZLSPZd +MpScMSMpvfjMBcBcfMfSBnzlTjssNszrNrtlTVzlzFVN +rCtgrgClprGGClnJCZmwtMjZRjbjjcjZQv +PWVfBHWPdbNfbbRmRj +sPsVqFPsHWLhBVVqHFqPVddWSDLJgpTCnnrRRLGpJSSTRrgT +zjqpGjrQjGqSHCVvCrRZDN +cTdshMhdmcMNmddRHBhvCCBCCvHZDC +JTmTmJnLTdwzNQpPWJWgpP +BmpZmrzZnznHbpprSbQSQbqdSVqbPQcV +fRGTGJZRTTDwJTJRGDfgJgNFlSSFcldfdccFVlPlFFQPSQ +GvTTTZZLmsntzmCL +VhMcrmbhvzMSnhvftbRbllLtglBBtf +HqqqJqDqPjJPNjjDVFDZCdqBtRtGBGlGRfQQgttQfHlTQl +pCZJPqqZpmhvhpVh +dWLBJHJhGJGMBJRcDLDSQsSQpvcR +ZlnnPqglblfRRpSvSsnz +sPTgZVjjmwVTljrwTTlbwVGdJhBNNdFdMGNHHJMjBNFN +FhFrfbfgbLRdfqfrmvDgLdjrcQtSNStHHHQlSjJJPllt +CnspzZWTpCnMVzzZZGZRCzttHNjNlQlSNtNlNjVcjlQS +GCZsZBRwnvwfbqwFwb +bZnJFJgLFRnqQZqJQJFQGpCLNcGlLllClNtccjGc +rVfvwPDhPHGtlcbClr +mBhshsfMvBvqsQJdTbgnqQ +jgWHqMSWMGqWjWjqbWGJQDfVqLfrfDfJhVLfTr +pPplwsRZPFZFtLhfwgfwrhJL +zlRsdgFcRgmjdBCMHdjHWB +qJSGJSPQWzcprtQZtt +mBMVfsNBnZzcNtcc +LMLBsmMlvBgFsghVVvfgLBvbJJSqgGHqPGPtCWwbJHqCPG +ZvZLcdMGVMlHDvDpvqhH +NNSrQNbJbrTnnWZDDZqqhqpW +wbgNJrsrCwwJQZbsrJBFzjCCdzGdjcGzMdzj +JbVmdVLJJJdQMnzmmMgHjPqqjNgvqwngHNNP +ZfffDZZsRpcpRDcCRrlpplcWSSgwgSwjvvsjPSwhNSWggh +cCtfppZrpjtMMmdQQTLz +TtbnmbdmTmgTlPNhqvqj +wrwrLsVZRsJJJsfHjvPPWfhjHqRN +sDZwDvsCCQLJZQJQsMCMzZBtSMpndcSFnnSBFtSBmdBc +mWFTZdmQdZFrFQbCRsrspjSjnvCLRS +GwlDqcNHDzwGfHSRqCgJsSpnvpSL +NGlcNwHLLGfDDHDhDwDcwVczbPddZtMFWttWWtdPPdQdhPWd +mnfcZgcdZqnqdfFqPmHfhqsbgVMCJNMtvCJtMvtblTJtvb +rRLDDjPSjjPDGBQSBNbtLVtbMNNJlTMtbl +SzjDDzRRpGQDDDPHzdsmnnhsqcqdFq +ZDGNRDGjSdwnnmnsVNsHJJ +tMBWWrddLPLhvWTTPLccvmmbVpgsJHmccppJ +ClPrtBWWrhrFLBPlCRzjzGqdRzjRdRGZjF +csTRNQNJcNBDLfhfMf +qGmWpGHqrqPLChPRhVFPDD +tgHrtnrrJnZRTZcv +FLqrfmLDrqCmqjTqcbGqRTGVvb +FMtWMSWzzFStJzPzhWzhQvTvHVjjTjHTTHvbHc +PgtWWstWtSpZWPzWwnrBsdBDdFLfllLlfC +mThbMDMQDCDbwLqWpqPpdhwR +zgrcffgHNZltZSgHLsRsLLWRWgLqppsW +SVlSrfSHlSSVlrJfVctlNDMCmMFbnbRDbDBFJFbBRM +PrBrWqtRPdBLLrBwqpswgpwhgpnZhhzsgw +FTFRSVJQVJflFfQQgggGMZngGQZszZ +TbmfFJFSDFblSTDSFFbmVSDrPLLWtcmBqqRmBtmcLtcrjP +DjPsMwDjLVVTsvNNRTNTRT +ztdQQHqHlFNtfRNNNMgg +FzhMhHQlDcCrhCCc +zSHGzzmHgnnMDLTNTG +lPVBtvhQjpNSMWTLBD +VCftbjvbVCfPbZwsJsrSgSSZwC +CbwgmvMnmnCwMmwRQqJBGBgHZHpJHdtdZpJt +zVSlNSDlrzNhqlNTScDzVWfBBZZZZGBstGsdsWFpdHdJsW +NDlLzhrVcqRPCMRwLLLw +TjTHHLwnLjVlTwLjgVfvsFvDsdWfvDvFMd +qbRRRpmpcmDcczppztSqSvWFssFGfWdMvfQWdfsG +RZpqDBmtrzhzphjTgjHlnwjgJhgJ +dLmMgdgzwDLzDWFhBWvzFzzBZJ +tTVcppbSTfstTMMHfTbhBchhJFCWcjWBZhjGGB +SSSSNbsNRpRRsRrfVHfRpNtlPgQDLPdMmlDLlrPnqPdPLl +qqbTCSqdqqFZdRLZhwhZ +HWWlHtlrBfGtVssnsLnHfJVPPMMFzhPRwMPwFhzPZzPMGM +nfmtsrlsnrfVnHJrVBWlsVfgbbNTNSvmvvpcTjLjLbqvvS +GGhFvGPFcThqffPdnfNLqZZCSwtQSwZpwQQBsL +RglMRrJJgHBCBZSQQpdr +WmbRHHbzDgJMDzRDMdWmWHzHNFFvvGGhnvVvvfcvnFfcbvnT +QsfQmsLfZZZcshnJ +dSgdWgSVVFvzSpqFdqTgWRHbJNcbZNCTJCNNZRRCCh +FcpVjgDvVVFdVWFvzjwwQtBMLtBBGDwftPrB +rqsRrHsvsPqswNcJcNJrnnBrNn +bFjgGFdbVRNNnpRQpV +GSthhggGDSvMRqtHvMfM +ZwVPgMsgVsGzVsRZpgpzzgpFMrNbbLFrDLFFrrSDLfrNBN +qvnjBhQhntbfDLrF +CJlHHcHcTWqvpBdsWRpdPdgs +BjmTDjJBCBWrgQRPFlWWlW +dHphshtdtVHVhpJqspdvRrqFPgrLPPFPrrRPvQ +sdMsMtStVszpwMzHjJGjCcZjmScNfCDf +DmGdDffgDSDDdJstqdJldlRt +MhnvMCZCbbZHMvsCHtrcVrPjJcRqVtlt +LsQbsFZvZhQzZwhQWTNgBWpNwSGpTmfS +RRJQnCzbZZLTZJCBtWvFtsfqBqtfWb +prjlChGNldGNdlSVMhWfqWtfsvwvqsFtdtsq +GGjNDNhpMGMGVhrnZZTzcTHCCJcDHc +RmbMmjgpPjMBsBMfchhVsc +HwFWFTztSrtFpcQvBsSqVscBBC +zWwnJFHtWWHDgbGgdpGpnl +mnbWbRRLRFnmmWcCDTBVwCDBlwNW +ggJPtpdHGfdZtMHgtZgVPPBCVsPNBcsBTTDDCC +hpvJJTpGhdhtJdMHqvmmnLvSbmnFnRFm +WWtrWrNgVbRjMrQCNzqJFwQJFNTJ +LdHPhcdchQQssLzJrz +pBccnHpnrrcGHnnSlWjnRMSlbt +NMMfNFnZgMVThhTMcgTDJDJjsVvvJJqJmHsqHG +LQpwwprCQzBNBdGjGjHswswdvm +CBCzzCrbWbSlNQnTRgPPfFRWnfgc +RFwHVQRwFgTQSFVhdsdHsBdDBnnqnq +LGftLtPGGMzlNrhlPqPsrJ +fvGpWpMtccpTwwpRRQhh +TTJCGdTGtZRQQCnzcnCv +FWWHPSFNFbDbDDqSWnVmLRRjRRQLhcmLjS +qPwPWwFppbwggGZGfdJZgdnGdd +zSTWzrzWTLWpCtCGpqqGgplc +nZWwsJVZZBnJHJCclHllgtChgCgc +DFnVBJsFssVVFBFnBdfvjDSmTMWzrmMfRmTv +MJmgMssrsggqqMVstbwTcTbPbTTwThmw +NRBBGRjHVRRcRbCp +QnSfzLWzNHzNVQQVjrglJMsMFvgJdFWrgZ +ggLLGnhgnPvJHZnN +VBtmVSldbSBVlcNPHvjmNcwNZZ +tdWqSVSSBztVWGrThLhfrfvG +TDqrjdSwLqDppdTCdzPBFmmjQmhHFPFQhPFR +zlGbMcVcVtsPHFRhWRRsPF +btgvlVVcDZZZqgrz +DgwlgbbFDDjjPTHDrmddPhPV +WqtMBBtQsttMNWQBqsbJpGGzdPdTHLVmTzJhmTPhHHPTmH +qQsqGZNQtZGMNsNtZpFnjnCRbZffwwSRljFf +gMdFLCdnMZCTFFCqnTgWLCHfSgPgPHStcQQmfSBBSfHg +vrwwrwzbGjjswjvhGGsjPQmqRmHPbBtcBQtqfmcH +qzJllVsGVGljjsrzwDzhwzDGTddNLFnZWNdpCVWTNTZTLZCF +LtwMhDtctwbwwppdWBJQJBWPvPfDfqvG +FTzrNrgSRFrgzFRHNVFQJvlqHjBvQWlQWqPBfq +sFgNzmVmNzgTvVTMwhMhstMwZtsbsc +MrBDQVzzlrvhQzQrDMVQrzrzgRJnRRwwRbwSwwVRRNSgwwwJ +qFTPTvfTHcqqncpcwR +LmtdGGPmTPGCTLHLWsZMhvZMMMzrzzdlMQ +ZVNpjfpZNpfNgNjzNVfWtnbbWmBHtsZWBSZBGS +MrDrQvvDrPLDMvFvdmBGGsBBCtsHrnrGCm +ltRMwLLDDRlvQwvlQcwhqfcJNpgzjJpjhJ +sRRRlRbcFbBBdnFBwCGppNvGrTCDDGVNlr +PPSLQzHjzZZPLZPjgTNTgpCbVJvGrNCTGr +ZLHHPQjhQmWWSRRnssdtbnmfwF +GRwrMrHJGwJPGWsgfqQgsc +VbTvLQCZLSWWsgWf +TVDvVCvppvTDmzZVTbZpTzBBNQQQJlJBBJBNNJmRBwRH +shJRWJsjZGNjSTrjFS +dMLCddggldQzMCCVgzVVLmLvTwNFFSqpNSqSbFGSqTTpMTFN +VGQvVglCLcVzgdddCDVvlsPZRRBDJPHZWZZnBsWJRR +CrwlwhRCMrswnsHBFccHHWFc +QJTmtfQgLtzQfLQfdPcWSFHHDDSpcFpFBg +jTQTqbfQfmLbLQJbJrRCWjljZGjNrZlZlC +JmthDmLShtJmHphphJQCwjdjdFDzFgzFdgdNlC +sbMTVBrWMbNvVMnsWMnVzjsjwCfjFgfZzfdgdzlj +NvqbbBcMMPPSqLSpGGthmp +RfGWFHlPFFNWGFZRZBjvwCvzBwhhrvvjzmrr +sLJSLMSTSJTbStJtMSqSqbpMrvmrzWdvhmjDCzzwrrpjdDDv +SbQqsqsWcZPcQGFG +BjqbMqMVBsfqGqFqGLmF +ZZQbQPddPcwbPnRQltdtQZdnmFNrvfhGrhrWWFNWWtmNFNNW +dJJQccnRPpcbQcMHsSgSMsDMTJSg +WWGBBvPflnWbBWhvhbPvNfnnVCFZmVRVZmVGMVwRLCCCGwVC +gjszgTMrgzgqCRRdmJRjJLVw +grzQHzqczMSzqSHcgQsqPvPlbNblpPhhPPbHvnhp +sJDDNWdnRLTTvqwSFPCmLCCrCq +thzplgfjglflFcbMclpppMfcwPqCZQCmqCwrzCqmQmHSqPqq +MhcpFBMBlhjbBTdnNJWvNvsvBd +czwwghnWWfcfgwfWthfrvVvrjdrdvDDVrbzrLF +RHPPMRpQPRMPPJRjJQsZsrrvvJBDDVDVdFqrBrFdBv +smjMsGZHRsHSmRQNGHPpSTwwttCflwngnChcCtWW +bprrrwrtLDtrWwrQjRDQDbPPVHVmmmmHNWlPlVNPZZlv +hqqhfnBCTfnnhzJwzsqzfPZZMCCVZVHHFvZMFvZmlC +TzhhdJTqJzcBdJJnzjtQrLdjwgLtpbgrLQ +qzQvzzgWSCqtqqGpddGc +jLrZNZhZrNRLHNffhrjNjNdtdZtGcPFwFwpbGwbVpdwC +nHnhrLNCCMHmhHBMhrzvgJvsWSWMWzzWzSlv +RzcbzdRFzbbzbzbFdZFTHMZPhVhVQMLrlrQPhLZlMM +BNGfBvsNttVmMhlMLm +BwGjpllswfjwpcFDWcWcbpdb +SjzpswrLSDjVSpwlmZJBTBdNJLvBNvHQZT +rCcCtbqgCfthggtbGGMqqghqZQvvQTBNJQHQZQTcZTJFZFFd +CggGMtqMfWbbGghPhhbCMtmsSppSspjpmWzjVSWlVrrm +PmWTPThTQWnLWQFl +VNcSVfMbtsddBQNnNpdl +sSjctwjVSzzccjgnTnDTHRDhqjRR +WfMWfCNCjWWHNTccMjRjfRcMbqSwfVwqwsfGGbssrJSrswVw +llLFQLlvlPFnhQBPBZQBqvBwzSzGGhShJVwShmsJbbmzSG +lnPqvQZBFFBnnpgplFvtvHDjTdcTjTMMjCRNCMWgRC +rprFNFFNjNLmMdgcqL +BvzCQQbBQgffsDbvVHMdbcVqmLVqlmqq +JvJCzBDJwnsRnQDszCBnnnQBrjZPjFpgZFTFZRpTrpZFGFtT +wBHQQZHVCcpwDgdZdMsZjvMZFn +GPSzlNlJLfzzzvsWdWLMmFWLMM +NfqGSfrTNzRTqJfRbptQHFQFrwrFHBHw +sNjVMVNVMzPzQgghcMsNzJtjSJtTFDTJtJnnDLjDnL +CHwrdCpvCrwrWdpZqcpFttJSFJTLLHLJfbnbfD +qrlZCwlqZrqqpWdlRqCRqdqcVNsVMzQzmNgNPBsRhVQVVzMs \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 93e4c65..ea0ca37 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,3 @@ -extern crate core; - pub mod prob1; -pub mod prob2; \ No newline at end of file +pub mod prob2; +pub mod prob3; \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index b9dba0a..2752061 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use advent_of_code::{prob1, prob2}; +use advent_of_code::{prob1, prob2, prob3}; fn main() { { @@ -13,4 +13,9 @@ fn main() { let max_part2 = prob2::solve_part2(file_path); println!("Solution for problem 2 part 1: {max_part1}\nSolution for problem 2 part 2: {max_part2}"); } + { + let file_path = "prob3_part1.txt"; + let max_part1 = prob3::solve_part1(file_path); + println!("{max_part1}"); + } } diff --git a/src/prob3/mod.rs b/src/prob3/mod.rs new file mode 100644 index 0000000..1fab3aa --- /dev/null +++ b/src/prob3/mod.rs @@ -0,0 +1,19 @@ +use std::collections::HashSet; + +pub fn solve_part1(file_path: &str) -> i32 { + let binding = + std::fs::read_to_string(file_path).expect("Please provide a text file as an argument."); + let content = binding + .lines() + .collect::>() + .iter() + .map(|item: &&str| { + let (first, last) = item.split_at(item.len() / 2); + let second = last.chars().collect::>(); + let intersection = first.chars().collect::>(); + *intersection.intersection(&second).next().unwrap() + }) + .collect::>(); + + 0 +}