From 8ab3bcb7992ecd4d0234ff31ab2e50d1562f67ba Mon Sep 17 00:00:00 2001 From: Mathias Magnusson Date: Sat, 6 Jul 2024 14:10:15 +0200 Subject: Some old uncommited aoc22 --- aoc22/day3/Cargo.toml | 8 ++ aoc22/day3/input | 300 +++++++++++++++++++++++++++++++++++++++++++++++++ aoc22/day3/src/main.rs | 59 ++++++++++ 3 files changed, 367 insertions(+) create mode 100644 aoc22/day3/Cargo.toml create mode 100644 aoc22/day3/input create mode 100644 aoc22/day3/src/main.rs (limited to 'aoc22/day3') diff --git a/aoc22/day3/Cargo.toml b/aoc22/day3/Cargo.toml new file mode 100644 index 0000000..898e70d --- /dev/null +++ b/aoc22/day3/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day3" +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/aoc22/day3/input b/aoc22/day3/input new file mode 100644 index 0000000..51d8036 --- /dev/null +++ b/aoc22/day3/input @@ -0,0 +1,300 @@ +lvcNpRHDCnTLCJlL +RFZggsMrjTFGCJmdmd +srsBZgBqwBqRZbzqtHpzzDNtHDqV +CCTPpCvlpzzZQQQflrzbQDttTJcgcggJcHtcddtdhT +nMLBRnGsFFLznRFRLMMNBnNLDRDdhScJccctdSccJJgDDHhH +GVBGVBsLjsrrvfzpjpfQ +dzVRSPVVBVDSPzDBQVSQFFlrclMplpMJMtPJlJvHZCMt +TjmGmbhjTnTmwhmrvvrHcZvCHZMl +fnLwwqfwfqjghHwGThwfTGGBFVDFFsszSRVzRBsdBDgFsV +CCWFCcdDWwcWFpSvggnzRRQszngJwT +mGtqqLrqfmmLNtNrgTjgJzNQlvJTvznJ +tnhVbhMLLZZrnWHPSHDBWbWBFd +nQhvgnCQjSSSTTSMCsLDsfPfDlsPJMWLzL +qrqBFFBbrVRLszLfsqdqPW +bNFFRbBcFZNrZRRRbprNpFrHSwznTnvSwgHvzCSSSjnCQwgz +tnnZZVmwmqtvVdZqnddQQHHTHQLsFTnsPrrgrQ +MzMflMGpzGzPGPgjLgHrGj +zPfhMJDDMJfzlhcRJvVwcVtwVcmcbqqtbv +GVzrBVcPVfGrzVVBcQJlGGRCZSSRtSdRnGLJ +wbjvHWbLvhFppjZdtwZRNddtJwlR +pvMmbpFFbqqqvWHMFvzrLDMMrMTTrVTPzVzc +qPmgpmwpwqWWPHdjdTNStzNLMztSWtMNtz +lVFfJrFJbbcsvcRVRZzQCzQNSZTZ +DGbvFSDGbDjnqgjwmGdq +DMnpnpwwnpmRRmcRBDnDwpbRQHssHqhHCHHSsQddHZQQcqqs +JlZjjlJgNSddfsgQdf +GvrWvzNjvPVLDpbPZwBP +drQDzHsHrdZWqDSSPwmmJDDbvbSJ +hphBhCMFlBtBtGTJMJsscPwTjMJv +tlBCGFgVFNpGClFFVGGtFBZrdZQznfdQQrRWVRQdRsVf +NjdCLdjzzlNdjwBBtZqpqPJQbN +CsDWcHcGHtcBbJPpbP +mGHSssSgSsHFSgGrSgmlLzCdldllrCVCLdnfnT +rDLLzRmbcLJRtRSvSBdZtSTp +MFswshwgsCsjghgFBsGssjlZpfpvdSHfTdCZTSpHtfddTH +llwlwGjMPMQQnBMswsFgglPVcWcDcbWqLWbbLJVDzrqnVr +pqmmcSTLfSSSMFlf +rHWtPWnHtlrlDntzWwtBFdzCFMRCfjRQFfgMRMjC +PWWHDVZPDDJVlWHncGGbqqTVvVmpGTmm +wLBtWhGWJBdMmZMs +jgvNCFvvGppGnmNJ +DDRQTgcvjTPFqGHhRVhLRSVL +tPPwLpBpDpgLSPvgQCvsLPjdjNZrJZsdZjsrsnZNjbZc +lMWzWMBhmMhRGfVRffHmMjJcJjrNNZnjJcWjNqJnZJ +mFMzhTmBGfHTwgPgtptFpPgP +qCcqJQHslgtsQsCZmPWNSRNZTPBBCN +nnLpjjnvwwvDnrGwFvbFjwPgPWRTPrrPShNhmmNSRRPN +bnwdDLjnzGgvFqdJQcqVfQVqHt +DfCzDCCTDLDBCsdjzwdrHjbRgjGH +MSStMScccJtPptJNJZtJJSrFdwPGjFFHHwsggrwdwRdP +nStlpVlhhNSshZlcNZnMcctpBChWBQLqCWqmqvmBCBmQBqmL +RfLHNvfLfLZQBtRZsBfffjVqGvqpGSmJpgrJpjGjrp +FDbPCMzbTTDDPmzrVzqppJBrBj +DPcWPWDhlbCcWBsQZZfHtdwf +fbHfPfHHfPZWgZfSGpqNBqdBBjpjdPBJqv +rnVNCwwrhhDrmmvcmjdDqcmB +hFRrslFRNhFzVthllRCRCCwnQtSGfQgZZbbSWQLSSTZWbQTt +nmVqTFCmTVbnvVCnqwFrffjhZLffhNrNJF +StBHWDgMBpHMBHDzLjffjWwZJNNfNZjL +wBBcDcgzdVbbQcnQlq +MfGCtqGDhjDqHhrjGCcJZZBwHRcspZsBsHRc +PFFpLFSpzVdSTPgnzzdPPZBRcZBwBJRcWJBmJW +vdTTzVpNVpfCChMGqMvr +VtZzBzhtlrhznFlBfgrfZgFrPjGRMGjRTmSjRjRTHjfRHmRv +DQpnsbJCsNNnpNNJsDQdCDcRmHPGTHTHRSmRmHjvjHSpSS +cQbnQdNLdJJQJJJDJWnFwzgwBthrgZBwBgFLZV +VhRRgmhpFjFFBDVPGPWQPzvvMMWfjf +qcnbnCbfLqJrCnrcdbbLrGSlzWsQvsWWzvWGdMWGQl +bnfbwrcwCrHqnHcZhFBTBVRDFmpBHB +lrtqltJJJqSTWJqVHRnsRhphdbfbzBdhsRsd +vSZCgZMMLSNvCQLPLDPNgZgnznzBfsGGnQnQGdnsfhsfzb +CMFLgmPgFFNMFDDCgLLcrWrjTTjtmSJqlWTTwWSr +LdjljBdZMFdZFLLLgPvWzQRzCsCmCVssmFSW +TJttwDhnnTlWsQzSQQDvWm +HtcnfctJwtwrHhrwhfHhJpjNLMZBMgZLrBlbbLNPNj +qqhNchPdpqTTNqpDmmvvGzVfzfmvdH +cwccjsFwFjnwGwQDfVVVVv +FbWjcRsLLFngBrjpbJqCJZTbJZNClq +lhznMTSzSnjhQGtVPQBdGB +msfNDDJLWslJgfNgCrmLdtGQFVvdGQPZVttBFP +RCrJJJDrJRsfgmbsrNsrlDMTSMHcjqwzScjMqqTjbbSc +nNgsvNWDRvgnRNVCFddTNZTNZQCTFZ +lffHJfHSPmSfvLlbLmpZrCTFTtrTQHqtTrCCrq +cpzblplpbvMzWnsDDB +CgtvQvJvMtWttvwftCdWvDQrfsFcrqnlcnqZZFRcRqsnhF +HzLzVBNLjHqnhzFlWFlr +NmBjLbVVbmbTLpTjBNVLHNdCtTSWQvCgdwSwJtWQwdSD +lncHcnlccVSLNSQNslncLcrZJCrgPfJZDrggJCCvZPHC +jRqqRmmqFwRFppfPPppPBfpWBvZf +wmMqjtTdjFwGGdtNhQbVfhntcNLVbL +HFBgMjpbpddMpbHdgHLLRNwhwFLDtNSRDLLD +zsCnfqZflrlnhhrtwNgggNNL +CGqnQzlqlWWMWgVBGg +pQnvzjztpzpCmtzzjzpnBHrJNGlqggMMqgqlNWgfNNqNCP +sVTSwddRRDVShwRwRTWgPNqMGQMGNqMWslsg +hDSTQhcQcHrtcBmZHv +QRmQfvQpWpswfZWWvNbhlMglgFbZDldlbL +rzHqtcnqqVjqjGcHdLdFdCFdCbLDnMCh +DGcGGSPDpWTsSfpv +llfMHTmvHlfZlFZRzgQzsFBLtLzFGF +wrWNJrdJhRmhGmNh +DWrrJjwPjCdPDwdmwnrTZnZZcqZfnqbvZfHvql +mPmVJJmNZJmlVBPPrZpWcFWbGWbjgqNbdqjSjg +nMhzwRhwvhMDMgWHRdGHgccggd +sMvnhQshMwwvdvMMCwBtlZtplZpTmPBVZVlC +ltlRzpncRglplzhFwFwzZZMWLWZBqnDVZLDVZQQQ +SJcdvJscNSsGcSGCSJmsTQDTVZQTLTQQWCTTMQCW +sPdJmcvsJvGJmdJmfpwftfrlztrRlPfP +LdPrWcMCWCfPdMJgdFsbRRHsRSHRHHcFpH +hVVTQmQTnRFLFsmzps +qthVVwZqlQLQhNttDDDWrffDJJJDrgNP +BTjTNjtlPrBjjrljbnMFfhVWFFhlMWMfHdll +mzcgZvDggDDCJCZLvsLJLcmVqWVSVqFLfdHHMWVWWWffnF +cmmcmzQDZQJmZCnDRgQCTTwjpTtwRjrbNjpPpwrj +rMbchQphhCSbGnzSbl +qFtgvTTqFFFFJGzWJG +NZjGqGBNjNHQrhpPNHQr +LnLmbtTtTwtLcVfFFLtPrfPrfqqqsqhSvrhrhh +BzJWzZRZJzJvlZJCZgZZpJHCqQDhNQPDqDDrjNsjPPNrhSCN +lpJWZzJpgHWdWMgHlJMZzgpJLGVLGGvwVwtmcGbvGMGVvncn +WdBgdqRgWqHmNNwsGgcQ +ptPVbPbSbMJrmsVzRzhwmcGQ +SSbvrJbJtCDZfTqdRfCdBZ +WDNNWvPpvNJRRbGLsGMnnbmG +qgFdBwgVdjwdtjjdBgMgGmLQsnZrnZssGswsmLrw +FqTCTtqjdjVqgCqSMJMTvPThTJMNDh +brSSSpZjVVWdfVrHPhRBggNNGwHr +fDlLzFCLMvnMMJLNHNCBQwNhRgwRPP +MJqMmfzDvFtLDtmsVsZZTsSScWcsbq +CSZlllhSdnDrrDdJjqjzbSGzGvwbfHMb +gTNvVNLQtsFpQHqfwfBfVMfHzf +QgNmWTtmTcmmdmrZRvnlPl +SmzfvfjvjbjLNJjD +cFhWMhGHTPhccMQQGBTFGwbVVwdbddJDvVJLvDDHvd +GFMBGcWTWhcGrhFZTTchQsSfgtmnnRvnmnnRgRCrRS +ZTQHVZsZSQpQQGBMGqfBRbRB +CwtLDtNFcPnllwnqvMgbvGVfVfBG +VClLWWFPPhlhctsTrrSpWpmszjZj +HChzPltNnnHtnpqSpHpFpSfSvS +mJmQssZJLdTQLcbjlGLGfSgMbqwwSFSMSFMMqMwS +JdBLlGTjLjjjjdmmBPnRzCBRNPhPtPWPtr +FPLHMHqqPMgFLLggsMghTJhwtDSSJDltJvtwdvST +WQfmjQZsjfZNQCrZCNZQQWQBCSClvdwTSClwSwlTJvtwJdbT +BpmzrWcpBrfmpsGPGFqPRgzqVPLM +bHjccpHwGHJTfPlffPwr +VtChMZVhhStZdfTCfJvcPRCTJn +sLNLZcdNZZqZqqVqSNWtjQDGHssHGHgQHDBgmsDg +CdWgCpddwgClFlmmVTBbRtRtbntBVVds +vcJGhPLPhJvChLhMLfccrvfvsVVbsGBTTBnVbRzBVstsGnbz +vJJHhjcCLPPjQPHLrSZmpgmqwlWZZgZZQm +VpTFCFtrjCdJdjHVFnSjszSllDjsDzgvzl +fhmhZBMtfZfGBNfNcmsbZnzSlRsRggslsbnv +qPLPhMcLhPfNWPpFrdFdFTtJ +nlgQJhJFlncMzMWZMFvw +mDdsDfHjHsjHdjTLfpDsbDcNzzwcRbZNZPMcCPWMRPMc +sqqdwffHjTmdmpffmLddTTGDnSJtJBShVVhrGVJtShrlBBnJ +CrcMcMDBCmLlZdSd +qPjGjnQPqWjgZmTdlFwTmqLJ +bnPnnzHjbPznzVpdpVDcvprr +TCScMQcQCrssJPQhQs +VpfnqqfdVVwpqvqwGbDPPsjgPShDSsJhlnSl +qffdmGpfwfbfvVqpfwwfbdqRMTSTWNMWTmZLTzTCZTMLWC +QQPpPbPbDNplSJrCCj +VdMzffgnRmVdfVWRvlrCTjRlNBvrrlrr +mGgNdthhGgMWWtsFcHcHwqLqtH +HrPFVqVppVpDjFDrVbCpDFJSLsmwjhjGLLmthJLJLmZs +WWgRdMdRMnQnRzWvPSssPWssJmhsshtG +MnfvMlnQccvfMlcTRMQdRfpHPDDDpPrDTbTBNbHbHDCq +GWWRsSwLhWsRsSbsPttThZqrNBJJBgPNCJCCqNMNgP +HpVDTHzfFDpFfzHzFVcrBZCggMJBvNrNgcNNrM +jlVpVpVVQDHdFVlmmmQTlzpjjGstWLsSbsnnnStWLRhnht +prLMDDjNCLZbdFLGngdLBv +VQHmhWSSzhWHmPJRJhSmVHJPFvgTbtnTbBtGqbQnbdqgTFqG +RzwzzhwhwNCvvfpc +wQgmZnhmWVtwQmnnnQbQhzwsFcRPrFPvRJhPlPPBBBFvJv +DdjqMMGLLMMGqTGdMqdMLdBBJsJPJBJJrrBFcqRlPlqr +DsddsfMsWgfzftZb +lcqlFSFwBBPlNwPlvSlQfWsVLTQjzjWVfLsWVq +HMMbMHMtJHgFzzFrVVtfFQ +RMFpCDDFcCNBcZvP +gwDrClhppDDPwPhnmPlwDrlDjMFfMTjMTjJmRHHJBJRMJHGj +LbbZBSvSLVRHffHJHJGZ +WztdtLsSvNQStbbtzdStthWhnwnPBDclgwwnrwllCC +MnMMBppMBDWMhpnCDBgCBmRbstvPvvbGltSPVGlVPWVv +TrrddJHjNcTqrrqdFcqZwSvLSlGGPbtFRbLvFVSRPG +JTccqTcwNQcTJrZwNJcJqHwJBQDfhCBCpCQpmpDfMRfCfBpn +njVcjHfGjVjpTCpMWprW +tsSsQDvSqQshDhtmWpnQnmMmbrpdzM +FNhsDDLNLnNllBqfRJGBVHBPHRRBZZ +hFVdlFSFlfZdRhgWgdWnnnfGpMNfnLMQzQQjMD +RsrJRHsvBcvHBHjDMMpDQDjjzDHj +BcCmBqvrbbqJgmFZtWdRVSVV +FzzdDJrJCFSFRqLlwsgspsBCpL +HQdWhMZMVwqLMllw +bbQtcvZcmHtNPZcWthWRvrdrRzrSDfRSrzjJjR +bTFZzHjZNJHzLggsJgbdsWcdcShWCwsSSdvGvv +VDBmntntfCBGGGGhRc +fMnnPDfmDlmnMPmtmttnVlHzZzNLbFbLbhzJJjMgJFbb +GzgJGPRrMSgTgpgH +hcvWhBdhcfPFvmFQvwfbHMsMMbpDpTDSSHsHpd +LmcvFFlcWQlFlfPnRZPVCJzJClCz +DdCHCHrmHRgghTHH +pFVZFwfssMsgghML +tSnphvhtctSSQNDqNdmrWGvq +rqmtRmGmcWrRRQprRRnfbGMMlPGGPblwMbTP +BHHhVZSvDNdhvBVhshbzfPbTmDfnwPwzPgbl +ddvBsSSdsLdshLsLpmWqcWrCCrtFpQ +wZPCwdPCHrnLQCGZDcPRqllzqqBzjlqc +gMmgnJspsvTmWNVWNpTNWNcDcqVjqDcclhSzllRSDzqR +JnWsgMnngmttFWWMdrwCZwHfZfdfGdFd +wwgNgrsWvbfBrqqsWbjDCDDDCDCmFbSmLDLlSC +QdpdzQTVdzRMTVVzcHTQLnlFmZHPSChCmlDPPHnP +dRMLVttzzVtTVQVqrrrgBtsvWWwtNw +vtBvntlqMvfnTfPDPhdRNbhdTFzF +QLWcmrrcgmCgCcsgcQWlWWrrDjjzzjsdFDdRhPNDhhhzDzPF +GGWHcCQcCCSlmmBVMGVBfMqwJtqv +cfqfhDRwhqZgRgRzRvcfhBSrsBnrDBBJWrnrWrSmmr +VCTVjGCTCjFddQntmrsVsJvrtrrW +PFQGpFbvPRMNqgRq +MmDgZZGMjZGfZRFztzCtCjzSrF +cBNpPJpBdNntcBHBccJlsSVVzzSwlCRrCnzsFw +PPBJLPPBBLPHBNQgqfMQtmTftGGvhq +bbZnbnVVgVSnbgZtntZrltsprpMCJvpqdJmsCMMmvvCq +BjDcjLLDzNjLDcjDzhcDNLLLHdpmpHJsqsMMNfCHfJpspqvp +dFLTFBcBzjFLgTbQtRgTVTlZ +nqNnrBRjLnjLZCqGGlqSGWlWDS +mTJTTcTJJfJfhhhwMbQDPWCQFCRlbDCSDDPl +dhMcRgJmgRrBrrrNgrLZ +GvJvJSGZFrGmmbmCrWnhjncLctcWttVqjLBB +wDlTzwlHTncRTqnRBt +gspglgzDzdPDfpgfdDzsgMPGvZJBrrbZGJNFmCFvmFvFvM +RLjMZZzfvNLBdjQfBfQdhRfSTVlcVqGbGcLGlbmqLVccmm +FggHCwsggrWWtCHJDDHtWrTNNlqSnlTlnGVTmWGcbcbm +PtpttrwsJssPsdRQvphZNzdMBh +NqqpZBHqTBpPNpPpGwwMPGTJjjLjQljGmtLfftllbJQfGf +nHczcrSFnVWSlrltrgJmjLLQ +SvzcDDVVFzdzhndCFSvnhcDspRDRDMPpMHRNPPZqppwM +FRSbVCSFFCDMFjRMjSSVFSWggMmWtWngJWttWmmJctnt +BPwcQQcQqQmWHfgrfwrh +PPlBQdNQvdLzzvclczdNRSbpLSbRbDjFZFFZVsFs +wtrrVhBbpcZSSjBfSfmm +MDWTvTMGMRCDCTQWsvfrRjjFfHlFmjlmLlHl +gQrTQvQDssdNWGsTstcbptwVPqcbpNqttP +jtGSwGQczrzjtGzrcsJwMRqMVMwRVMWFvVTWFV +DhLgnDLndDHmLvWqpTHqHHVNqF +LhdmPhfgZnZDlPCPmDfljQtGsJtBsWjGJzJSWBjC +zHDjcjBjTfjjfGpf +NNFTnNwPNNdqnJdFnqqTgmgftfftrWCZGbmrpWttmW +FLJqVNVNhnwnTRsRQBlQzShs +HJGJGJzzHHQHfJHsnNsGMbccMrTgbr +vddSCCjdmVvDDmvmBVbbBchcrrcscMTTnscn +VjWdFCVVMWWmjdSVFSVpqwwZttfJJltJZqltppLw +SnmPBPBnMLnPBsSgSDqRNRRccDfNcNQQRg +lZVWtWVzCjvZzCCGzDwbwRwtqJwJNTtDfD +zCzHZFFFfdLnBfFf +NRBFpNNJgNbWbJLRpRbWNtNpZllCZdjjZfjPVljTVCZQltlV +sDqHmsHcDrwHhMDlfCQfVBjDPCTd +MnGGcqwhhsrchcmGpzRJSSGGJWJzbJBR +LBzjQQzcjWvHWLnVDdnHRffHDCVR +rmJSrPJJsbNZssGSPrFpddfGwDRRpVjVpCGdCp +mPsrmsNTrPNLTjQlWQhqLc +MSDFszbhbRRTRdwhtw +PWmCZCmZVvGqMcjmJRpdTTtdLpqwdlll +MWGmmCVHvMSBDSNbbHHS +mBwSBSfSPHZCLPZSWwfPppTndVpdVncFgcgPpP +rhQJjzQjrltJzGqCrGJTvgqRpnTgFgcFTVFqFR +QbhGMJrhzrhQGQCsjwMDNWBDSZBZwSBLmM +bQfDPgDQbQNGPgflWfvMZcRMMFmcvMfZ +BLqSssjnzpBwszqwzFCNMvzWvRvzCCZFvc +BpNpjnNHnSpssqLqrBLLHjdhTPPDgbggllldhTPdrrQh +CvCMqNWVVqqPvNvvChhhdSnFHwBdWwhfdS +gqTZGGjlmclrZjlmSndSDwfFhhDBHm +tRrZpgrcctbbltRpgtqCVJCvPsRvsvPCQPCLPz +dTjRdWDBRzvjfzTfvTJPtJttsSLqHsSQJw +hrJNmbnFNZrbhlCsqltqcQcQSQqwPL +pVNhFgZphZmjzvjGDJWzVJ +gWzQhCWbQnCCFgCJnFQnWCzwjrHjjHGTwHGrhLwjjjtStL +splcpqDNDqqcZqRlspwHbjVrjjHTrwSbtVNV +BpMslDqDmRDRsBRBJPPnbzCfvQgmCWJb +tRtgRQWCwlTglHZHTglCtTdbbfvhWpbSBbhWzzbfGpfhbb +cqZVMJmLqmNrsJMDbzGrGSvzGBhvvG +mmnJPMZcclFRdnQtCQ +QVQVqfFzVVQQrQwZsCTrBtTrccTtctcJRRjT +vNNPnvGbBtWBLvBf +mMHbfDfHdHGmnhDDqZFDzVSQzF +NNlTNFCRTrfllTZsPWSsFPfzJdVQVpDQVszQVtpbzJMVbJ +LNHjNHjmLLjNqvGgvVQJQDVLbDVDpdQQzQ +nqmqGHjwgHvgwGHjGgccNTSWrrlCZrFfPSFFCP +qWzCQqhPCHjHmqJhqvqmjRgSFMTFggMFTFVRVVTgTm +SptGsDlnGfnDLgTMTwgRFFFs +bBcntZdpGZZcctlGtDfnDnBCSWqJvQhqjqzjhJqJQCQWPd +SjZJrSSDShddqLvPqzzdwq +nTssfRpQQmQCHlPBBgGmwVGzwm +TWQsbCRQFHFWQRTpzRHRsRrMtDrjhjbtMbccrttJjJht +cCChVMwPPMHCPCCPrvJnntdTJSvTtdrSRt +FGfFDBhGGlfGGfWJWdbSRSnRNbTvdn +fGpGlDmBhflgfDFmmfFpcVzMzqZZzcCPQVZzqP +SmgtSjGPjppBjbqqWTCZDQTHHHTg +VsFfCzLvsMfzNfNRhVMslzlHqrWrQDQcqDqTrLWHcrWJJW +dsRdsNCvNMVpwPdnnGbbPb diff --git a/aoc22/day3/src/main.rs b/aoc22/day3/src/main.rs new file mode 100644 index 0000000..81a3fe7 --- /dev/null +++ b/aoc22/day3/src/main.rs @@ -0,0 +1,59 @@ +#![feature(iter_next_chunk)] + +use std::collections::HashSet; + +fn main() { + part1(); + part2(); +} + +fn part1() { + let input = include_str!("../input"); + + let ans: u32 = input.lines().map(|line| { + let first = &line[..line.len()/2]; + let second = &line[line.len()/2..]; + let first: HashSet = first.chars().collect(); + let second: HashSet = second.chars().collect(); + let common = *first.intersection(&second).next().unwrap(); + let priority = match common { + 'a'..='z' => 1 + common as u32 - 'a' as u32, + 'A'..='Z' => 27 + common as u32 - 'A' as u32, + _ => unreachable!(), + }; + + priority + }).sum(); + + println!("{}", ans); +} + +fn part2() { + let input = include_str!("../input"); + + let mut lines = input.lines(); + + let mut sum = 0; + while let Ok([first, second, third]) = lines.next_chunk::<3>() { + let first: HashSet = first.chars().collect(); + let second: HashSet = second.chars().collect(); + let third: HashSet = third.chars().collect(); + let common = *first + .intersection(&second) + .copied() + .collect::>() + .intersection(&third) + .next() + .unwrap(); + + let priority = match common { + 'a'..='z' => 1 + common as u32 - 'a' as u32, + 'A'..='Z' => 27 + common as u32 - 'A' as u32, + _ => unreachable!(), + }; + + sum += priority; + } + + println!("{}", sum); +} -- cgit v1.2.3