diff --git a/rust/day3/Cargo.lock b/rust/day3/Cargo.lock new file mode 100644 index 0000000..728a7e3 --- /dev/null +++ b/rust/day3/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aoc-day3" +version = "0.1.0" diff --git a/rust/day3/Cargo.toml b/rust/day3/Cargo.toml new file mode 100644 index 0000000..58f773d --- /dev/null +++ b/rust/day3/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "aoc-day3" +version = "0.1.0" +edition = "2021" +authors = ["Yohan Boujon "] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] + +[workspace] diff --git a/rust/day3/input b/rust/day3/input new file mode 100644 index 0000000..43d8bc4 --- /dev/null +++ b/rust/day3/input @@ -0,0 +1,300 @@ +NGvdqJmJvpNbGRMGQgRsfgfn +WlHTHShlLwSWjFRsncfbcwsgQc +BHtSBHWHSCWLZHlhjTHLLdbNNqNpzpDzNvDvtPmmPp +JJSShnTpDSJJlllfwBNVbMQWwhQhgQtt +cTzrvrHdLwwzttQNWB +qrFqTFvqZvrmsplsjlnDflnZ +mhhhVHvNNddHMwBqQwlWZZtv +fbjzjJllCtWjjrZtjq +CbgcgpPRDJfzVHFFnSnsSDlm +ZqBPqBQnPLmqZsFqhsvFsLZQMfSSMbbWddWbjbJSrgWgJf +NRHnlllcDwwCNClNtttHbNJrSJNfbdWMdfbWgdrJ +cHGlzTptHtCpncHnCpHpRGzDmvVhqLmvLPmPvLqPmzsqqmPB +rCzVtMMbMvCmmvGlclFQFfLpJFJfJpcLHPJL +nDGGwqGqnRTfpHLpRFpLFf +ZNdNTDsWgNZsZBndnGrzrlMrjgrmjVGjvC +MgFZHFTgqFFDZZDTdVdHrzQvLzCGwpCPrGLqQpzz +JsnmbjhmffJbRNJppzPPzwzzrwdv +lfblfthBRbBRjnjhBtBlZgdVcFSTVFDtSSWgMcdM +hPVhVhWPCMhlDTTWdrPlTcLjfbZbFNjZBbFNBbdBFbsB +MHSwMJpHnqJHwtqHGqGGmvqZsZFjBmsBNRBFfLbsFsZfsZ +pqtMHHQpvqnwMpgJMCChTQhVVlclPWrCCD +zRBBhZFwWZlBQpMZNNNJsfDpLsNsJppN +SvggPbjvVSvvtgGVPbbnSMcCLtMrDddssJdsLdfdCD +mTSmMgHjgmgGgqzTwZwBlBFzwB +WLzWZHWSZPFRVSPSPM +hmrvmGvfTCmhBGBqTfnmJFfdbQcwdMhMwRdbQMVQQcMhsQ +JGJJnrnnCmqBTJTrNBqBLDzHFLFDNgjZlWtDNZHL +bwbbnWwpbTwFHwRzzzmH +ZccjZjddjPVhJmrBQHHFQRHcWF +NVhWldsMjZZZLSnvSTGTgvMb +ccJbHpzccZJsNpJCmHHlBTgHnlTPmF +qvQGQfDVhhDfvVfVDSdDCbFnjmllPQjlbCmnFgjg +hSbtWRGvhdfDVdVRfvRNpsWsZLNMZzcswLZWMM +vlTdlBTMdtjcvLGmtb +SSgfSsJngCSSwNFgspHFNFFpjlbGjQbbQGLthLnWtmWWhjbm +SJsfqqgfNHwJfHgCpwzBZVMDBPMMRPTlqzBr +VHsVhtbRHRpVHBfBCJdNfGjggGJdqLGq +wSzSrrSMPDSDwzPjdqJjNwGdsLqGjj +MnrnQTnWZWWzWQDMvZhtHtshhHlHBcBBsvVt +DZbPqdTqGTZtRrzjFmZZtF +gjQwVvBVWgfghvgmcrBNFccHFRmHtF +QlgvWlfgVsQfdlqqjqPDbPlM +VcfLwwcMlpnfVDrDtrtvbjMtTM +mmgBgzSQmQdgHBFSLvvbDTJmTDvTJJDr +RWNBHHzWNSdSdzFgSLNWWfZGwfpcwWVnnfpCCWlV +GDZLtsJMFGLDPnbblJlNJNcJ +BBRgSwqwqRZhTVSqjVgRwCdQcmcPmdnPPnPnmjlrbmQj +RCqfVvhfCCShBCRfVCwztDGZMHpLWHftFptspF +dlZqlBfBSShZhvprbCJTDrJCJjJNDh +WGRwQwHsMVVGMsVGcRVtQWRVpNCjWNDbzbDNJnbnrCbprrNW +HgHRRVGGwLgLBPvgSp +QPlZSlZzVLLDwhDfBppf +bghGGhmqrspDcfbsbs +tTrdTgFddtnvmdgvtCTdGTTqFZjjQQPVZPSZSjlZhVVQjlRS +BgBFHnwwSTNHqSPN +GJmCbDdlbZGCLhsstNLsMZZZ +JGJpCCDvmlVDVldGJBVfBBRwRjnVWWBRfN +WTFWQgGQtTMqMCJJzDVDgCchhj +mNPBmPlPHrWmwmNLHmShcnJjhrnzJzdcdzdjJJ +SHssNRSmvPRmlsmLwwsmwLvpQptpQWMQbGFQFtfpFfZQ +DgpNLVjgNjjmzGPVRmfrZrctdTcrzfwzdfMc +bnbNqnbFNwMcMtMfwF +svCQHHhShnbCvHChsvHlLDVhJJLRJGNpgPJPjLLD +TmBzgTVVBgfbmTVfPmFRJcHctnHDLDDLJqqBGB +hwvlNCCvSphMwSvrlwCCrrDcfRlJDLRtGqcqHnqRqLGR +pMSSMMNCSwMjjWhwrrjShQNFmsPmPFWbbZzVfZsPPPZVmZ +sTTrWGCMggpVWhSBltWp +HNJdwLDzNcJnNLwJJPqpllqhBpqStjfwlfpj +PJHzDzFLtLccdLggvrGGmgvFssgG +FwCssBFRBlvbBVdQ +jPzjDpqNGqJzZGSNHppPclFvvdfVflblbJlmFfll +SDzDpSNqjZjjZFSrHrFZTTCMLsnTLnnnMhrLtLnn +ScWQvvSDddGrWVrG +fwhPFLpwTfTjrzwHdmmmGdgdsPsqdRmV +CHlFpTpwwCjwFjwjCBnrvQBZZcBSnZtvZl +vJvdWVNslWtJcDtDHrDf +GCnnMZpZnSZpvDqFtftfjfZqrh +TbGMSRCRvWbPNsWB +NNNdsRddGNdZZTCBtqbtBgtC +zhFHppHhzcgmzQhccjgmjhQTnvvBFtBnCBbbnTvtCCtntt +HpjmhfSjQwfzwHmcggfzjSLfVWPDsWMsMdWdDSMsGWPPllVN +WSvcSSwrGzFsznqPNNWqPqlllB +djVDdHdSPRqlntjN +LpZZgpLgLHTDHVpDSTsffvGwrcfffGwv +wGlbWGVvGlWlrvppbFMjQjsBjCsjmCzzQzNv +ZgfdJcfZhMNCgSBRCQRz +hcLDZPZdqZhJPhcTHJfPHVqlqtFWMrGGrpwVGVpWrV +dsngCgdssHDVsHdsFDvMDvmMmjTjDFTL +qZpSqptZZGWLTLSjlLHFzl +NZqqRpWqhQpNhqhpZRWBJQQssJbbCsdbHsCbgb +QdGBjjbHsBsBbBdGcwwTGrCRRrFcPPTC +ZDtvWfMDvWScSrpzPccCdr +hhZMgffDhZNvtDgHQsQQVQmBVVHNdV +LhQLrzVdVmqcjmTNzm +tHMZDJDZCDDtZMWwCJjcffqqfjRmqSRqcq +CpHpZZWWtWpWwBplZWmQbhVBVPhnPrhbLQPvvs +FFgFSmJmSgGpZzsmgGmbDlDzMQPDNPzRQRDjQQzV +CLwnwWBdrtthttTWBWdPnVvRVVVNMSVQPvVnnV +BTtdLthfhTrLdftCwqrddmGFcSfpGbsmFGHpmGFHHc +JFJnMZwQBqnJJBqZJqPqMFBlbmBHblWbrmlfbWgbvmWrgW +spCTjtVzsNDdsNdTsjVTtNzgHfmWWgHSSrgrbSbbhHbVHS +TfCdjjsjzLNsfTszcdqcQMnRMPPRnFRPQRFP +VvDgDqTDtTNWTWfNFWlW +pzPvdssRNQFQRNZF +CCpBpsrrccGvttgGqBDG +jmZrrjlCJqmCVFMPbFbBZPVp +dfLLfRMGTdHbssPLLPbFwL +QWWHHTRQdRRHRMhzWQfvddngqJqjjNgqqjlgvrtjJmtn +sGGwJdHDDTfWbTcRzbbz +BmjvdhNVlFBZmSZvFrWpfpcBrbzbWcbqpf +SLmSZLhNhMhwtLswPHGssd +mGhlPclTmhhlJRWlRTDPlJtTFMngBcLSBHHBHLHSwncFgLwB +jQVbjprjVfzbZQrzdGnHrrBLgSGwGFLHHg +zzZqjQjdvsRlGqThGJ +GSPQPvVmSwpVQGVlSQmWJRcFBpnFBcBWcJcJDc +rTTCLmhTTbZNqMNbhjfhmDzsFDWzsDnfcBWDDDzcFs +qmjhrhCtbMCZNhZMhNTZbLjvQdHdHGgwgdtQHlllQwlQgv +ggpCCgvjPTJWjBjWWJgCWCdVVHRZdLfZhqLdZRHZrf +GsstmNslzzzGlMnGMnVZRZrLpZqdhZHZrZHM +lNbDsbltmzpsmmmnnccBJTwPgWvvvTwPwFPS +FWbTRTdWGCnThqQVBQqJ +rrDMPrDcSrvtcJdLVhVHQMQVBQ +rNtNwrZtDNPmZStwvcvRlGFRlzCRlpmdpplbpb +gHrHrlFgjCrNDfCMTzwwLN +WhvTvvWnmQvpGWNNLzwWfNzW +vTnRZhnRRBhscBVpcBTvnsjFltPqggqHPHHjHrPcgrFg +VzfWRVsnNzWfsvpQPvvFbdVQpQ +SqCqqhLDTTCTTCDcSdbpPvdPFFvhMbdMvF +BCLBDCDGLlTClCSrglrGzWmrszzmHRJmfJfJpHNz +dwGBHGdwdcCMCBzzZJJssZFsBBgt +NRqbRbQhLQRLrQlTggFWlZtRlTvW +FbNDFDLqnmLmNbqbLQbhLNDpPcVHMSVMwCVHcPnVGccwjdcM +LdHtrrrHrLZrBVbQjtPnnsVb +TwfhhcTCTCpfJJwpTJwhDDPnbGsbFjlQnnQjFBFslsBQDl +pwJCThfRCMMMvhchhwHSmWLZHLNHMdrdZzPg +LbMQbHbHQLLMsWLvszvzvqCfqCCqss +ScWlpmplWrDzlzvznJ +RNNcZWhSZmdVdPwHbQQTTwNwjP +jFFFtHZjwmLNmnQCFL +sVbdsqcqHBHqrQrLPmWqQnmr +sfGJVVzJJsczczfsczBzzvdbTMTptlTZZgDSDtGlplZSlgHt +MgMQJdqqMDQJDggzTMgVplvffmctcCzmfjRlmmmjjR +HrGbGswnBBtRvccBlljB +HZPHRRGGshZHnnnwPnshnVZqMJJDdpQDVgDdVDWDpQ +whwQRQGHRVhWRRcLLJgLmL +jSnnzgBnpCZdCBjNmnNNJmllJTlccT +jPSzrzpzpCjgfZZrZCFpdwQDQVVPttGDtVqQVtHqth +mvnGFmvGhTcSCBcBpv +bwMRzbQLwBQRWSctCcTtLpss +JJgHZqRrbqDnmBjhDh +MVvvGrsbGtVsgTggHjSFHJBBBg +PPNpCpQPZppplttDNwZPBdfTFPPTSBWSFjjSTH +CpNwChQCzDDNZwhZlpwZpqrqsGGsmmctGbbbzcmMms +pjMbgCgdQjCgBjQQCncwcGGLDZvFtGLsZZFZtH +zPhhrVhVVSmqVqhmzPqvDtsLLHrFWFvGFGFsvt +SVPzVTzJNBfjDQbQTb +CRDjjRmmLhjRFFChmHDNLZzsZNnPZNzlnnsvlv +SSqcMwdrctQVtqTwSSgnvZnsZvnBZpcPsvlvbz +trMGSSVdQQqdGMtwwQCmRHHhmJFhsfJGfjHh +phJzrnJJwNNSJhSnwpwGGZzmvNfmmDvfcvcDfvbRPNcvvR +tWtgQBqsqdLFLmZvTRTfDZcb +ttssdgQqsHQtZFsqVdgdgdCBJGSphnljnJhjwrhnpJrrzJHl +srzpVWrWTptbrPpPPtcWpNhNNNdfhhDgDNvfBDNNds +jmnQHmLqlnSlGMjqnLLljRHqdNdgwHZBgfhZvBdNhDwBhhtZ +MjSlnLmMLnCGjlSQLVWCzbrcTpPtpFbFWr +ZnQRczHZsMSRZQcBRSZRscQwJbWFbbQwpWTjdFLJTJTWwd +PVmGqDlGhDPVNvqDmmqtqLbbpJfFJwpbdJpdbfdjwdbl +VGNCgGPgqVqhNvmNCNZnSsRLRsMzzgBRnHrS +ZgMMgJMhjmZrZgggmlTTbfwTfRfbRGwlGTDf +nPqQttNVPzSPnqpGDwDDbGfwbJ +dJvQzzJtdSPWSthhHMjgMvrHghsv +cMvwHCWcMnwWnScWVFzTqHpHFpVBFtFp +bbblgRDhtlGgRPFBRqFpmzVFBTFp +fPbtGJGhfDfDsPhQJDPbbnjjSWnwjdvQCnSSCnCSCM +NcgDtwghTLntgNtLrjfHSSFlSbCfprlL +ZGGMmdmVZVvsRQvMGRVVZCHPfpZSfZbFPlbPjCfH +RVRjvRzMQQJBVmzzgWgzTWTWhNcWzN +gsgBqdsWprWddpBghBpwwJzbLcvhCZmwZCFcJC +PRPtStHfwmJvzPmF +HnSHHRQDVFsVVgsgTWsG +QRQTRrDHSLSNzzZLzZ +dBmPwfwffWtWRtzdhhLzLzLzzLFN +BtWnWCCVBWtCBmRPqVmqmntjjlJHJslJQVsQjsbbHrjHDQ +TwwJrHSMnHGvWHMvvSqrrZbRrRqfqVNfbNRc +GjhstmPFFhlFtmmjQtlgVcZVfcgqqNRNpgRcbP +CzdCdFCtdzGWGJwWWHdW +zfSVfSpHVpCHSZLnsttDnvDvpcsqRc +rWzMGWFFPBFjqjDjFDFs +PbQQWbJPrQwPrrPBwrJCVzZZLZdLSLLmfZfHJd +gPDPLgsLNslNLHqlLqqjhjnwwjJbDjnjwTRnGD +tzdMdMddmcRMdtcFFGWnwWjFwjFhGbTG +mRMmttpVHNCNpNZN +mfCFGfDDFCDWtvvstjjJ +njnVnrggLlwVVqLpvHVpMpMsHVhhMW +QQPPPnjlPPSgwBrnNLcdFCNNGFbmbZFcZzFf +NzNHFNFnFrtgwwPchvGFFS +LsjdQCVsTsLCTTdMCJtQgPPqwhPgqScPGvSZ +jdLdVjJtCVjRCMpmpNfNNWHrNzDrNrHrmr +NmggPPrPbPmdCbcfCNLVRRWpWTWRVTpdVVWspW +qGhDzGqnwGQnJrjllJWttMRDFRtMVsTDTTZs +SrnHhGQlvLmSfbfc +DmdPCJMLlQdSjGCqjcGGccHH +zWtBwfsgvVnBfftWtnnpTmnTRhppHpTqpc +wzFtwZWmsVFzZtvPJSPbMFJFDJJJJd +wrPRRSJSWrTSRzRWrqlfCLlcBfBGDqrL +gVNQjgdVhdfqqhlDCBDs +NmjgbtmNtjNnjbPbvRJPbpwZwZSD +tNHGccGNthtSGmVjjVmrrVPqSB +fgDTwRwDFmLTFlspBBqjjBgqBssB +mLCZwZRMJMbtdWMtvd +TPzHPPgChjsgPdPTjQvZLvnpLQnvlRQn +GScFSzFWWrfGGMrVFMqGqmrBnplmwmnlZZlmnvvvLRnJLLvJ +qVSVFtFtFtSzrTNNDsHhhNTHht +NQqtqmqmNhvvclvhcljJ +CSCfMZSgWMvfWgrbjwcMJwrrrclr +CGSCZgSGZPRTSCWWDgGBRtnFRvqNRsLLzmsLzqpq +tWmtCZjnWZWCGjtnnmtcwFvvlgSDTDTvVwsVgCfT +LpLhpLdqbBMNsQPBQhpLvgFqllgfllvVvwTDTwlw +pNQBBdLbBPpPHLmGsRWjRZJzWZHc +WtjBSvBjWzTtzvDTjBfbbthsMNRNgCMQDgRcCcQwLRgCQgNc +HJmqnHqHpplVnlPdqGrpGQNLCgSwLMwFwFFCgnMLRw +SdJGpHVZmqpVVVdZVJGddsjvzzvZTsZvWTbvszWjWj +FhRhhLZgLZhCRWZBFFWRmGbvSgHqvvbPvHTPccVncb +wzSMpjJdwssdrdDfJJJsJSvpGVPqGpvVqTVqTnccnTvH +rwfMMdtDjNwjzDrjDDdtChRZWSWhmCWBSmLQRW +RWLNLWrhtrhWJmLnSStBBdVtBGVVBt +wQqnzjCFbflqpQlQFTDDGGsGDBZBSZMsDVfG +QvqCTwjjTqwbTqjznFzQvqjFJgmvgghJgPmgmvPNmNRJJNgN +qLqwhztjhqqDDzjZqqjPMmFmCnVDsmgbggggTMDC +WBhWJQrJcRmnFnWMTTCF +lvvJSlGSvBvJQBrcpSfwwLjLPjLfhptjwNtp +sbFjnZpPPGZLZzCRhqbJhJMCqMgS +vtNvFHBcNwNDHffvtfQMSMJVRMBMChVqSMCBJV +cQlvTffDlFWTlcfFTlHQNtzzGGWGdLsGWdrnzspjGdGr +LMQtlzlMQLLrztVfVdfqDdrhrhdd +JPJTHcvPTPTJGPZgbmvGPmcZhwRVdDBdSWfdRHSBfqBSVHqq +sJchPZGccmcbvcmgmPcCnnnnpzppQppspFjQntMl +qtQQtsMDqtPDGQltPHbsLFnMccRNcVLLrVNVwMVM +LCSdzZdBZmvzZTCBfJrwnWppFcWrFpdRnWpR +ThSgBZTLJmPHlgQHjPtq +mrwGPrVrbjbPVmwmbdTwbGfJMDJMgsqhhDjsqjJppfqt +SQnLnWnWHLSFCRnlQRnFhqfsDMJMppqDfcWgpDfD +NCSvLQnRSQFBLBzdgvTbbwPrzbPZ +FFjvvHZbHZnZpvFHZcFbgQVwgwQnJfQPVNQJGqSq +RWmCmdClRtTzVRwVfVQPNQgN +shwhzTsmlbhZDLbBHL +PpPHllshHDTlsprJrsPQpltzjVzjLNggZNznLNLnhNnnjL +qRBvSwqBdRqvmfvCRSSLjcnVcVmLgmnNZjmQVg +vdfbSfBWffMbQqQdtprtslHJsWDGHptt +pqQdFWlQZpGZpLpS +wnjwJhjvVgjwvwvsgwgtsRTtssGTtLrNtrSrHS +VDJVMGCCChjccDJDwgwVJvMBzBfzbzbDPPFBFBbffzbQqq +gBwwBZGhcfhnFjvrQjMhrjQQ +PPLJNdNldlNSRmzLSlpbHQvbvdMtjjbMtMtt +lqDJmlSmlmPzqNmzmVnvnBZDgvBWgcZTfD +HMqrwWqzWJqHzrjgGFNNtQFMFQnFBt +LddPLdVmchPSvmcvTZlvghLLFBDNDtFGDQpRnntnFDQnFPnB +SbSvZTSLSgqbCHJWzr +TGcjzjgtNqjttgNNTTjmGwLhfQQfDnDLDwSQWTSCvh +PHJRJJbBVMPRMJHbJRMPbwCQSSvfCDhVhvvwwvQLnW +ZJPMbHbJJJsdsJplRRRZsPJztrFrqtzGrgmcrprcmFjDgN +tlDpSbpwgbgtpddJppgJwJDtNQWGQlcGQGhlhnGGWcrcWWFr +MTZLqzjfFLqLjRfvqsQhNPGnhGGsnchW +LMCzjzMTTjjFRfZMBTCvRfLRDDbVVpSbSgwwwtSBSSDJgStg +ZLVTrJmJDHFtzSTlpc +wNhhNfhvwwvvfvPnsNPhglszqpcHcFbbFSzSzzCHzb +NWjPwgNgRHGWvhwWPfgfGwjMDQJdQLVLJLQVVLRdBRJrZr +CPRJCFJTqZfJlJRqssHJftCWQMnHHwMbbngMMrQMgMWwQn +BmzVVhvvcvDdWgwVrTnrMb +BjzvhjLLczzBjLchDLmLJtsCqFClTqsZCPtPTCjq +DbWjNCWQCRRNsDPpFGcjjcqFqFfm +PZdMSzSZTtZZqVmpqmmmTpgg +ZvZMzBztzvhvddPMQlNCQDbQLBLrsRRW +WzWFhHpWhvCpPpPLswMHswMMHLbgmH +NNZSZTVQNrTnqDqrrwtwwLstsMGMnbntGm +TBmQcrNqNSQVmrmQBPdpFFzhFlPzzCPF +nBgmSrjgmjtmrbjSFGLWtLVpFVQQVGFL +JlChvCzvqCqWffwFdFVQfPVPHPFGLV +JzvTThZcCCMcMMwJzlbjTjmnRgRTTBnWgbBn +rppjbbDpGnwrGprVCLLJZDzQqZzLNQqc +htflFBFmBBlWTTgsggtZHMQLCCCcHqHMfZczHq +gFdFTWgRhBmWWTFSGQbVnSSPnvndpv +qFSRRGGgTgThTQhcllCWCJCctWWhfJ +bvbdzNDMzHZNNHFHfJWWjljWNNfcnWtn +PdbPdPBHmsdbdbPdBHBdmdmsgrTqsGQRTwSpSFrqrRSFpRwp +pQJZZGQtChQtpWZQTTWhNtVdVWSLBrsLSVrLvrvrLdBd +lMHnzGRgPRMSMBLcvBSS +nglFzflzHRDGgzfzPgHRbTDQthbZbhhppNbbCqhb +jVrvrJjpZfZCCGctwhbhMRcM +BQQnFFTBdBndzssFsdTbRwDGTPGbcMbwtDgbcG +HnLtQQBLtWNrVpqjJvWN +dnVlsnJlMqnlNqJdnMRvDHBRvbBLHLpRSPPPRS +NcGGCthFwcFwmjCTGDSfPSSHSPfPtDHfbD +zNWNZGWNzQnWlJWVJn +tMGSBtRtvjFcGpQrQQQQrp +FffbJTJfPLNbTnJJmlVcQVfpQmlWVVfH +FTdJJdhNvZhMtRSh +pSTfMtMLSTPsPsBszP +jdlmlFHHhVdmVHFNFRnHzHQJsGZBJbbJDvsDRPBsrGrDrJ +VHnFjcdccjlmNVmnzmNVmCMggfqwtLLfSMwWtcWMSg \ No newline at end of file diff --git a/rust/day3/src/main.rs b/rust/day3/src/main.rs new file mode 100644 index 0000000..550f409 --- /dev/null +++ b/rust/day3/src/main.rs @@ -0,0 +1,25 @@ +use std::fs::read_to_string; + +fn convert(num: u8) -> u8 { + if num >= ('a' as u8) { + num + 1 - ('a' as u8) + } else { + num +27 - ('A' as u8) + } +} + +fn main() { + let binding = read_to_string("input").unwrap(); + let file_content: Vec<&str> = binding.split("\r\n").collect(); + let mut ruckstack: Vec = Vec::new(); + for con in &file_content { + let splitted = con.split_at(con.len() / 2); + let mut iter = splitted + .0 + .chars() + .into_iter() + .filter(|ch| splitted.1.find(*ch).is_some()); + ruckstack.push(convert(iter.next().unwrap() as u8) as u64); + } + println!("Sum of the priorities : {}", ruckstack.iter().sum::()); +}