diff --git a/2022/input/day03.txt b/2022/input/day03.txt new file mode 100755 index 0000000..f82eaf1 --- /dev/null +++ b/2022/input/day03.txt @@ -0,0 +1,300 @@ +FzQrhQpJtJMFzlpplrTWjTnTTrjVsVvvTnTs +mScqSqqgcfPCqGPZcfGNSvTNsVVNSjNvWSNsNz +fPcPGqgCcHgFzQpJJtHtJH +DZDqqlrjplDHrNCmnBcHBMCRcJzb +RQFLStFvdcBbzdJbJM +PThQtwftTPFvtTPhvtFtfFtpZZllwjRNlsqNqqZjwpGlrZ +pPwtqgwJZPJLgQqSFlqhFFlqMd +DBmCWBBDWTRGvcVRTCCnnfQlFSdlzfhfdMWQfjhhQz +drmBVVCRgprPtrZp +HznjQjvmzDMVrQnMLJMMlfWgPSlJGWWJPl +BdcqqhcdBRpFhhZBthhctdJSJJWfgGFlJCSFgbWPCDJS +NdRTZdNqBwqtthpRBTTRqdtZrsLQVzrrzjzDwDsnmrQrnsrr +HZFZCFzZWszqsRTBZTNMhmthVTmhDppmMQVPpm +wjvSbJddvrvlrvnJSJJvlJmhPlhVPVtGVpQDBVMpphQP +frbrfrcvvnvjfwbcJgrrCBRsCFsNzRgRCHCqssRH +dDFNqNqZqPLNqvqTTvCLSPdZssGHClJQJcRHJGHHcHBcsMsQ +lrjmWgWWrhjgrppQHHMQrsQRJGcBJc +lVlmnwjmdTTSvVFN +FWNFHvQPmLGwwwSHtswwln +RfMJcDdfdcfdddfZjdchrtZmSmCZVtqVnZmrnrtC +JMmJcfjjphcghpgjhRGzGzBBGPFGNBvPTpFL +cVPVwStmmcQPBQPpSCppwhHZNNqHszNBhsNRNjqHzj +MfWdDgvdbnvgMTWgvgZfzmsZJHzNhqjqjRhJ +MDWMWGndMgFDnFLDwQrPPCSrCSVrlmGS +QLZmPdRdWmMsMDWZmsLWWrhMHcHGzHvGzFcvrvzNrc +tplSbLVBlvHHcFNnSr +VqfgwLlCJWmWQTfW +nRWvlvRbtLvdMCPFGL +wrfsJNNGhNzGrTgDMDLgPMLPfq +wcVhJQhwhrrBpmVblBRGSG +HHHcggrZLcQQcQll +GzfzTRTzmmFMwSNSwdSJQtNLNB +TGbmLMFTzVVVTMzmFMfFPMHPZhnjZCpHnhgnZnPWCPZZ +MRwwpVMHRspqVqwmccDlDrcHBBZgBl +jQfQQQjWWFBgmcgDfcZg +hvvSQzSnQQSWWQWSjTZVTRMshwVCssppwV +pvrTvCvtFppCHMMZcdDFdcZM +wLjTQnqljjSnlwjqjRgLcHHHMBDMZhBMHgHcbBDh +mqjqlSNqRqwSRrWCvzGmtfTfzs +TWScDCqCQQVBWDqWHsHswwBgRJzRhhHp +dPttGrvFfGjMjnjvshsJgsJLgghRgH +rFMlGdtjPffNnnrffSNcVCDqQqCQRqQRRN +GmBRbVpPbmJcwggBBgWW +LjsTCNNtddjHqLLgWwccqgfq +nsjNjntNtjHCsDwZmwZZVmmGSvSD +bwDDgNFtMMDbFsMbFwWWVcRcSpcgjgQWhWSp +lfTJJlvdfCffccWppRjRlcSc +RnzGdJJmsMNnMFtM +bsBTFsqqTTmFZTsQBWWznWCRshlJNJlCVh +GjGnDvDjvjPppHwwpwgrPPClJhNVRCzhhzJWlWlhNlvJ +ffdgLrgdLrDjdfHPbbZbttcBbcbLmntn +TNTwwvTTHNtTHNLLVqtqTSZBJnrnhhbrFJjZjnVZgghF +cplWfRlzcWfRCZZhFrGjBfjZjn +pddzDsRpDcclzCQMWBvNSmTTSqdvPPvqwqtT +DQTttwwLtQtVSDMJDRmmSS +ffsWfvrBWrPvwJhPhPSMPMVn +WsvsggFvwNLgHtNQ +llBbVDMTlFVdFDTbVggSVsqZqZZZqqvNJZJRNRWgtv +HhpjcHHvjPsqCsWcNcsq +GfpvnPvwFDTTFFDw +GMmFGMGFFgVwQHQwwM +cJtZNtZTbThcZtcZJJtTZWJPllgNgpPvVgpjHvQpRpHQNg +hWcJZcnhcJznbcBZLqSLDfCmHqnqCLsD +zQpjLpnhnsHTnlQLrMCCHPFrvvCMPcHm +ZfgdSBtNqBwlgSDfZDwtqSFvJCvrPrVvFmwCJFvrmmFV +dfbRNZBqDtgRNBNNNljLLjhGRGGWGLGTRhjz +hhrnfBzhtzZgDgDnBfrfDZsRpMNCNNWjwCCfGQGGNGCGQC +lcdPmHLSPDSdFDpQMLjCQQQCRGpN +lJSSbmPdVdVvdHbvSDFHHPlZqgBnttzgTsssTrqgbZbsTT +FsdsShrgggLDdbSDsgrGrlWHTpfRpTjjfFTzRTRjBWWp +mPvqCmJCqJNnPvPNPCvvLTTVjHjzNWHHTWRBRVTWVz +wJLvqPZmJtccncvZmJqqrghDGQwbdSGdsgGgQgQr +zFwtNJGtNFlpnwHccZjZbcpprsmc +PWQfBWhBgQgTWQRLThBqMSVDSbbDRsVDmsmZsSZDjr +fvQfWBfLqfTqhLhCvNFttJlCwGrrCC +fNrGLNrfNrGjllRRRPmWVL +tbJdcFbSSssZSmmpFcsSbwDWVWBlllVPDnnjBFjDRnBF +ZZJcvZctgNmmvMGhQm +HhhjFRhgrcRTFLvWVJVQWJVHDHQJPP +GwCmwBfGzfSCzCfwtmtzzJVWSVJJZrbWQQQqJJDZVJ +mtfzpGdststtBmfmCwrGRFcTcvjngjFnRcLnpLLn +rrwjdwLgVmVwHrfPCJPQBCBGmPtt +ccNZqbNnMMblNpTlNpnhhBPSJsQhJtJtChPJqS +vTWvNcWNWTFvnnvcgjzDLVQLgHVwWDrW +jNPgbNHbfLJgLzfz +ShvhhFVVDShFVqMSSSvZfffvPLtBBBBJJlpfLJJv +DqhnShhMnZZwCSDCMhChrRnNrNdNQbHNNPmjmdHN +VQVZGQFnzFTSsBfgzgfs +rjlpjtDrtMLZPMtPtpPZPwCsgSHgMHCCmCTWsgBWSBmg +pjvDqLwrlDtwqtqNLvtjpPPwRNbQRncQVQddZhRhJQbJncbG +PsBSqnSdQsFhmmmnppFc +TRhNvrTCvNTHVcfHbJVTpc +rhtWvGWLrjRqdSqqLLqdld +vPhfqPJvrMrnffDDhvpMjdzGMLdLLQpllLGQ +mbmcFSScGbSCcQlzwQQlclsg +BSGVCmCTZWCGGvnvfZHqqrDhHN +GSRfrzGRhzsGChjTBBlqBgjgCTCn +wHQwtDVDHwHHDJcDWJZwzHZBqTnnBFlvjFgBqnljjvBdBZ +JNmVJpVmNtDHJWHrbfPLhbGhrzRbpr +WcWcbzNPbDwBNvWBwRMPQmJZQRQZftRZGP +LhVHFgggTHCFHhfMQQSMMGQRMLLM +qnrqppFVHphqfDsNbzjrzbrN +cwgDrdLSrBrvvhDzCljjTW +VHtVZpspQtMQsVRQppFVQVHtCdPTPTzdjvhTzTTPRvjjvWhn +QQZpMdJsQFJHtMHdScwLwLJGrSScSwqw +ZsjNflGfRfRPrZNRFcffLwJdwcLdDBnwzzzDznVn +CTGvhhTqbtbgTqLJWdDntzWWdnLw +phCMgmQGvvHCvMhbTQQFsNsNFPZSfZjffmNsll +CNpCJHLNhhSSHZPgrFlFFWgpFpmzjj +qQttDVDwQGdQGvqDQfwbcVrrlljjzzmzrVJgrr +nvMDsqqqQvfvsqDnRSZHJPPZHhLHLS +RNNrrPfDNRQwQhjscghMqs +WVZlHvnZqtlLVLvwjwhsggTstMhwTw +vGHWLJlVWlmLVqRCGCFFNfqqGf +MNzqCnvqvqvCVLBvvCVCpVcRssncrPSTWGrPSPdGTcrP +hmHwFmQjFlhtZmHwtZjjddSSGcsdPrrGcQQQRGPW +fHbbFjlhZwmtwhfjmmwmmLbpLqzqvBzLzCvLNRMbNB +tQfLrtQPrrfDSSCVlDfLSrmbBjGvWjjLmWWWpWNNppmv +wdHhRTTndnRThdvnBFGpNBMnpvvp +JdqTHTHHRdqzsJRRzTRHscJdDSGCfDlqQZqlfZrZZCffqSSQ +hQMWLsgGJMMhsCHggQWhgspDWFPzZvPvptDvzvmtdtdF +BrBlrTBrNRbfnjNQlZDztPvpmpppmzvfdd +jQlQlqQVbVcsMgMgChhJVs +MtFMCTWRFRRtCRTTRTMGJddjLdstHvBzBHzHVVpL +lZSDnbDlnZPrbHpzJJsdSVJpBL +nNghhPrlZlgDTFhCfMFJRMQF +RGpPFZPRQZPFRGvpPQPpjvpmhnnCMjhmhgBgVgMVWBVgVM +wLtfNdNHmrNthCBgCbhnngWd +srSfwHfszsNmtswlrqQDGQFDRPJGDvzRppRJ +GVFFGvVWZLFsmssFRNfVvmGGJPpJTTqDBvTpqlpDvqbBtTPl +gQhzzChzrMQhjpzlzWzJpPpBJb +ghgWjcCjMgCHWdQMhdjChCmfwmRRGZZGVHLZHRfmNwVs +DnDVhdnrfSfpcGGjQQGdJddJ +bPWPRbRsRMsHNzDqTZcGBcqZqmmN +HvwPvvzMPwDCChDVwS +vTCCvTfWFDTtRPMvfWFlDFHBqGLpLzbwBgWwqzGqbBbB +cQcSNchSJSZShVJNnZrhSqBpgwGHHtGwqtbwLbqpbr +JNnJVsJscNstNhQsjnVVNlFfMmTMFfCTfjFvfPRPPF +VLFBsgffNFNqRvbz +ChltjTdjDhHpHZvdpjjZhwCpbNrbSzzbrNGMTMMNSMbWWNSN +vQjpttQhHnLsBQVLsQ +mbzQgTzRVVbsVdQgzzVRddmztFGWNGNNWnGtFSGBsrCNWCrC +jfJjvPPwLDcHDPvDDPDppLCWCFBGWntCBnrtFcrFWTGn +wpJPLjvpTTDpwhfgzmVMbqhdhVRgzl +PlcqbWClLmnqZVLq +THwdrrhddhhfJJhwLJhpQnDVnznnmZQQnSpfpD +vrFdvGsGHhhhwHjFGrFGJHdMCCcNgbWMPccRRccMFLNPPP +tbppJqcNtJnZzRJbPFsFPHfZrrshFDjj +GdwgwlLgGCndsDFrhDHHFF +SSlLnmmvqWNqmcqb +ZPFPPTZpZSWzCMMSzPBsFvhtlQvJQQtJhsVs +dmNbmgbrwDNmbcDgwNdcwdLsnhlJlnvtsBJnhVQqqnstLB +bNGfDGgHHVwbwNwVfgmRMzCzzCSHjSRZSZCTRS +dDTffQdqQQLBLnVLLQvL +rrBHZZcgJcrLvNLtLgRLbN +cjjJhrFlhZwFFzwJzmTBBdmTsDPzDsBP +ClGrJJMNCrGQqlcPvWgnDP +ZBvbjHpSwBVVVcWjjjqQ +BLSbbwsHSTBHwmLHHLbBsSTFdrfvCrtmdzfGJzrdzGJddGfh +gljWRwmSjtJWjJtJjgjSZfVSTVVHGZSVHcVchZ +pBzLFQpPsFBGcGBTThfB +pFpQzFLPLpvQFQnLbsqqGddgjbmwRldwtWmlGWwj +PDQDMFQBMfWPvjdLLndLjrmsMj +qZqVzTRRqHtvZGGtVqTTzVjLLsrmJCddnLjrjHsrhdCr +GzwcZtqNzqvNqwzZVGRwSzbpWfFbWPlWFpNDBfQfFNNf +dfRszdzVdsjwdhLwCCqwGllHvPGPwG +SpJtBLFgcGqHQClqZF +JrttrtcTmSSLrmtBTrNgnBJjbNhhbhzRdsVdMhNjhMMhVd +MPFSCfSMqVSBGrtzlvccfQctzbzl +hZNjTHWWTZwshbLvmlWpBzmbmm +dRTTJNDNhjsJqBBMMgrJPVVr +WnVzDMjlDVWwwHgwhmgNhNNsJh +qfvrLNCcbLdvpcvbrPPqCsGhSJGTTBspTshBpTBBms +ZLvvZfrPfPCLbCFFzjVQzRnNNMVzDQ +nllbFTTpTFTBcnCjQPqQdZRQZhCb +tvWszrrztvSmzQQvrDmZRjjjPPDVqPRdZRdCPd +gfzvSsftgQHQHgQl +GVbHRRGRLpdmGWTm +gSPPltPlrlvccFccPlcJNCTpnnmpMCLMMmWfdRmMSS +FzNJRhhvPFRvQwzqjqzBHZZj +PhZSpFBPBFsNmjBVllltBj +JMGLnrrnbfffrdqRqPHnnqLDVTDDjgmRgwtmjDljlDVlwl +LHMqPqPnnqGLWJPMnndrGfSWppzvvFSChFFFvvzQSQZz +RSWWssbvnnCqZnWsRCnssWrTggNhgbNHBgQjhhQBgjNT +mcpzcppzczcDGVcPcDLLGLjmrMNTNtQNHhMHrQBQNTgN +LVpPfcjjWvsFFnFf +MpddpdCpJdJlbdMvBHMnnsHqSRvG +PWvZfFmZrrfmwWwFznBnqRRSGcsBVmVBRG +zjzzhQPQvzjLPQzwffrwrtlTCDtJDlgJLltpTTJlTl +TvTWjjzpznGttFFZccrrPrSZllcB +gNNSqHMqsMHQJHNZCDDCZDqLZdlZBD +SMQNSRNbRRHwhwhsRmtnvWVmmnbGnjmpGn +ccSVQjCQddTsFJcH +gLppBfgfmvCRFdsddTJJgb +WMLMmWGGBZWZLCtvDhlSSDGlwhSPSzSP +TpqVGVHFQGmqSqPZdccNCzzhdwCjNG +fffbbvftMrBMDDcCccCZCjlvhCCd +RLWMnbftDhnMRtfBftRJMtLMgFgHmmpmPmSmmQFPPLHHVTQS +nRvwQSDNcpVJJcJR +qZMjBhjhZMMBzLBGLGrjJbTPVTpbdPPdVbVb +ZZpmFFZlfGqfmmGMzlfmMmnWQDtHtSvnWWNSHSSstFtS +bFDGZjGDbbRSgLtN +CphJVfJWCTBgvfLHNRcwnt +WVhPWBTzzChzhhhBmrpPPCJZDQtdMlrjFQdrFqsjdrQsFG +ZBpVQHHVMMWWdmmLWw +lQhhrjcRttrqbvQLNwdDWzmNSDmStz +QbGqhcbvcsqvCCHnsCZHCnTn +tlWtQTTTJjTQtVnmrbnPWVShVC +MDMGGzsHcwFgGZBqrmmPSnbqVmNVGC +sZFPwHcMZDBRTlvQQJttTQTR +FhVRfGptMGMnZhRFBNRBCCNHHNvTNTRC +zmwrLLSjrbzmNlcvvrHvDPCN +JLwjQdSbjdbSdqJQFGVqFVMgnGHMfGVV +fffZWrJqZSHWTWHqSvrgDhggzRjttsDhpDgs +PGlBLcBBbnnbLLFbGLBjRgjFTFVzshtzpgsppz +TGCPnMPQlGnPmclPlnnQmbmHJvNvfHdqwddwvvZfCNHCfW +ClLwpspTPrTFZCdzFbZdbQ +RRMWfRgWVRMRQBZZScVczVGFbjNb +MfnvMqWmslvDhQPw +hdndSdqsTddBhdcmmNHFDcqHttPF +JjMzzMZQGwZGZJzMzZJQzGJFvPvNPtFmvmNmDvcFtvDHMv +gZwzQwJfGVJQJbGLBsSTSTdTbCWDBSnd +ZZCHZRzMZGRMhMMVVFNThrdd +SgsccSPmmgqssSlqsgcmscSqlhpFdVThjphNrdrhjdwdhFJN +vmttqTcqvLqqmPccmqSBbRWnWzQZZZZBHnQCzHDH +GgPnGdSPBpGsLTBL +rVNJjmwZqtZZshltFTtvRFsL +mqmWrZVqWjrqZMNwPMQQbsddgdsbsgPz +LZLVvjZrggHLJggSZDgrnPnQnRnppVRllntRdPFz +chMCzbqGmhNhhbBCMBdFnpfqFnltRRQnlPpQ +TChmWcMMTmBswJzZZrWrvzgg +gngRNBNRBsNFFBgfgbLLLnqdSLvLTcbLbd +GWtlChlVMllcZSDWSLbdZL +lljjGlhMGrGJpsFdRJfsfzfz +jVTdrnGQcQtTTTFQqBqsgHHFgsqf +ZZLbPLzDzPZCmsgqsBHt +wDzDlPblRDPLPvhvwtdnnhdrnrMGWMVGMThj +spjjpjvjpjmQjrpCMfSlfzrPBl +dHFntHWnnbRVFtnbcqHFzBCCCPzfPMlcCSlgllzc +RLbVWHnnSWtnHFbdbVRdNNtQsjsQTjDLwmGTmTssQwmLGJ +JbJJSLMhRMSLhNqqwFDwFNcFqL +GcpnGnznnpzpzGpffNTNTwTfwdDNNdTFdD +nllnlPGWQWHcGpzzQGGzGvHGJbVVtJSChQVbmtmVJrmrmbRm +GFsFrzwrflmtdtbltG +ggLPDngCJncNLJRDwgnllmJqjWMjhjhjWWmWjj +nBNRNPgpRgDLTgNwfsSHVBQHVHwsZr +WwvnvWvcFtwtSFSF +zBZZZRQSzMBSgSVJGjGTPTGFzCzmmj +fZDrpZZfRfMgSQDDBhgQghDHsnbrcNlWnnLWHLrHsWnllc +ZVncdPPwVPdhZngnqHWHNNvTHvlMvn +fSLjjLSGGBjTTHqvBqrMNT +RSSSDGRtSGZthTTctmtg +rtzrfJbgJHRfGRZLPR +hdVhlllmFlFPLwHmsRGGZP +nTWhRjTBTWlvNQgnJSSbrJtz +JgVTpBpfvgpTDDJFJvTgggtlFlNNMRLNNzNNZRNHMRCLlF +wbPWcSGbGqWDlnNWMMMCLMWZ +wrsGcbrcbcqwDwbcmGvQBQgTTsdVJgJsVdQf +mztrhgJtDrhgcrZmnhbnzbhcMTMPlBCPBGVGTMVGslCCPGDs +FLRQmjjFSQpQwLlPsMsCpvslvPCB +fNLLwSdSwWSWjwmrtczZhhrJzdzh +HHwCwJFmHZttZCfCSffSMHcVDMcPBRPcPRDhPghM +nvQLsTnLslnLvpzGTssnsRPDMhPgVPVgtcVMRPgVQQ +vnsTGWlTLsWTLLvNsGWlsZrwmZCJddjFmtJJNZFftj +hbjSTvSJTfcSwcPSPfTbfHszVVFpGnpJpsHFnHVVls +rtZrcQrRZZQrmZBQlCGppnppHzpVFCGR +WmLqmgNtcLNQWTbPvfPwbbdb +HzZgsdHglHlzdHsFtsNNJSlNcSpjcjlrrNVv +wqqWRPPqwmbcqPjQVvSPJJrVpv +qqBBqmWRhqRLqcBnhzzztgnTdDHnHsFsHn +rJPFVwwsrJwmdVrLWJvvRBWBvbzWlb +nDZcNGNpjTpHncvpZCDnTNZGhlWzQhWbpRRQlQhpWWSWLlQb +CDNntnCCHnvmqPfwtFdVqd +gqBwgBjCswwgqNBNCVDDTVdhlSDTDcZc +HvRRFMzRRRRMpHrtTllfhZHHSShHTf +PmlGLPrppMrrmFFmLMWRjbsjnsjwQNJWnbQjWgBN +pDggpFgRghZjBFPPnPPFrt +cwTfLwBVwCWbLcVTVVvrdndGjMHrnGJtnttdMC +NTVcWNvcBSpgNqspRQlN +DLDgFlDmNZfjfnJZSF +tctvttzvGGzvrHqtVVdwnJGSSnnjjZdWTdwW +zvpcrbpHpqJJsPbPlLlhmhglPQ +pvHHvssFCFZQNCftttdQdd +VgTGTTVGgLjDjlLGzgPVMTNwmcwQmMQfQtmdcmwMJwNm +TPjTDjfGWTLLljgzrWpZZbsqrFqhqbps +ppVLcfcwSLgpSLVLgWwtfshDNDqvWvGvlQZvDNHQHjqq +MPrzmdRrPPrCJFnMnMRRFRPdqqZQNQvjvZDGDlHhQvGNDG +BmBMBBJTMmPBJMMFCCFJRmrsTlVpVbpwLSVwLsgcwTVlVc +SSGzmFRzmRGLgSSmGMJFnvfvJnJVnJQnMl +cBpjHtjwNfcpNZtppHtCMlMPMlJBVlVQlvJPvJ +dNtNZwqWfqtqZWtHttsqHqrRrrdRTLbmmzSLmTGGmbrg +RrrddnrgnRbbgWdGrfnwgQwjDjDpvTpBQTwBPP +MHCStZJzSwvPjWQD +mcJWVHCCLcGLbdcn +PlMsdjPdGMjdPSrSjgddbLbmHHTszHZzpHmsTFvmpzZzmN +ntRJQVRfcQhcQWhnchBJWntTFTTTNTSpFtztmZFDTpDZ +hQfcfCBSwCccVJhSJnrPPGLqPlbPLCrqldgb +vgvWDMZvGpcqgqsP +tSdtjLHLQLHjdFdDddQSQhwlsGqwQlqqqhQsPhGc +tbRjtTLFRvTZDBrMrV diff --git a/2022/src/day03.rs b/2022/src/day03.rs new file mode 100644 index 0000000..371246b --- /dev/null +++ b/2022/src/day03.rs @@ -0,0 +1,53 @@ +use std::io; +use std::vec::Vec; +use std::collections::HashSet; + +use crate::utils; + +pub fn execute() -> Result<(), io::Error> { + let mut score = 0; + let mut sacks: Vec> = Vec::new(); + + for line in utils::read_lines("input/day03.txt")? { + let text = line?; + let (text1, text2) = text.split_at(text.len() / 2); + let mut pouch1 = HashSet::new(); + let mut pouch2 = HashSet::new(); + for i in 0..text1.len() { + pouch1.insert(text1.as_bytes()[i]); + pouch2.insert(text2.as_bytes()[i]); + } + + let intersect: HashSet<_> = pouch1.intersection(&pouch2).cloned().collect(); + score += get_score(&intersect); + + sacks.push(pouch1.union(&pouch2).cloned().collect()); + } + + let mut score2 = 0; + for group in sacks.chunks(3) { + let mut intersect: HashSet = group[0].intersection(&group[1]).cloned().collect(); + intersect = intersect.intersection(&group[2]).cloned().collect(); + score2 += get_score(&intersect); + } + + utils::print_step(1, score as u64); + utils::print_step(2, score2 as u64); + Ok(()) +} + +fn get_score(intersect: &HashSet) -> u32 { + if intersect.len() > 1 { + panic!("More than one overlapping item."); + } + + if let Some(item) = intersect.iter().next() { + if *item > 0x60 { + return (*item - 0x60) as u32; + } + + return ((*item - 0x40) + 26) as u32; + } + + panic!("No items in intersection."); +} diff --git a/2022/src/main.rs b/2022/src/main.rs index e334979..17e3869 100644 --- a/2022/src/main.rs +++ b/2022/src/main.rs @@ -1,11 +1,12 @@ use std::env; use std::io; +mod utils; -const LATEST: u8 = 2; +const LATEST: u8 = 3; mod day01; mod day02; -// mod day03; +mod day03; // mod day04; // mod day05; // mod day06; @@ -34,7 +35,7 @@ fn main() -> io::Result<()> { match day { 1 => day01::execute(), 2 => day02::execute(), - // 3 => day03::execute(), + 3 => day03::execute(), // 4 => day04::execute(), // 5 => day05::execute(), // 6 => day06::execute(), diff --git a/2022/src/template.rs b/2022/src/template.rs index ae4e817..4e7c4e0 100644 --- a/2022/src/template.rs +++ b/2022/src/template.rs @@ -1,6 +1,11 @@ -mod utils; +use std::io; + +use crate::utils; pub fn execute() -> Result<(), io::Error> { + for line in utils::read_lines("input/day03.txt")? { + let text = line?; + } Ok(()) } diff --git a/2022/src/utils.rs b/2022/src/utils.rs index 7e69f99..dc1fa5e 100644 --- a/2022/src/utils.rs +++ b/2022/src/utils.rs @@ -2,11 +2,11 @@ use std::io; use std::io::prelude::*; use std::fs::File; -fn read_lines(filename: &str) -> io::Result>> { +pub fn read_lines(filename: &str) -> io::Result>> { let file = File::open(filename)?; Ok(io::BufReader::new(file).lines()) } -fn print_step(step: i8, value: u64) { - println!("Step {step} solution: {solution}"); +pub fn print_step(step: i8, value: u64) { + println!("Step {step} solution: {value}"); }