diff --git a/build.zig b/build.zig index 04934e3..c93697a 100644 --- a/build.zig +++ b/build.zig @@ -12,7 +12,7 @@ pub fn build(b: *std.build.Builder) void { const mode = b.standardReleaseOptions(); - const days = [_]u8{1, 2}; + const days = [_]u8{1, 2, 3}; for (days) |day| { const dayPath = b.fmt("src/day{}.zig", .{day}); diff --git a/inputs/day3.txt b/inputs/day3.txt new file mode 100644 index 0000000..0c99dca --- /dev/null +++ b/inputs/day3.txt @@ -0,0 +1,300 @@ +dtddvvhwttHJhwdhJPddhwJGppmGjgpQgTjQplQpTljwpg +BfzSzRSVVMVNRMDDNBSNSnfBmbrglGQbmNpQggFjpgpbQlQb +ZSBffLnVZdCCPJjhhL +RGCZpWWWFlHQQbgvFssg +jLnMzjnrnjjNjhrjdwbHscsVVgDVQPvPwh +nfJnLMLzjJMtnjNnnBbZtBWBqqbTTTBRpT +nddlhBtqTBqTVSlBtmCmVcRVmZggfWbcZc +jDjvPrPSNPwrDNRWbbgWCjRRCcWm +DzDwSpFrvrvFPQLzQnsqztBthTJnGJqlsJ +gssGmzwgRgsNmTsqgDnDJnbDHHhhzFdDDh +WQVFjMWrVQrVvVVjVctSSLSMZhnJZPBnbdnhbnHZZBDJBh +VCtcccVQLrfvrSlGmfTfNgfmlFgm +DsmfsBbNNZhDWsbmWmNbbPDHLFjcctjjGcnZGzncnctcGH +SwVQJrjVwpgSVRpjpVRrlTMCFFCLCFFcHzzGMcHrtHHH +ppVwTwSwpwvSlSlJTjVVbPhsvvBssWsNfsqWPvWs +BJwqwJtqqDDDrGDnPFzPFfpphD +TgZscCHQLSHgZcfMzpjFFjzsshfj +LcNlTVQCCVLLZTLNvpRtpvBBvRJmNB +bDBGQBBCTTNPGPPwPzcHfVHrDtLWLVrWVjjHWr +gpssqqsqlMFfLZQWftjVpr +lvqqFMRlFcQvbzCNCG +fhhMDdPhWMJMWvhhSfwRSGlzFbSFNlzw +LcqTCqcgZqjTggVjcwbFRwbDBTzbRGRwTS +cHLpZgnCHpQsDdsmQp +jwStJjJhtgJStpgwJMggQWqQTNTfNTWfbNNMCCNG +zRZnFPRZPVncPGVFRlRmGHCTqfCCPCHHfLfbTQCbTq +lnVmFZRZDnRVBFZcrZlhjpggvppthGhphpwprS +lcttSptHHllQbMcsrltSQGpvNBzpgWBBBDDGWzvgLz +PdjPVRFhFqFjRRCjzvRWnWLBLgbBBLzg +hhCCFbPTmjPdhZjhPhZCmTjjMsrJSfHrcmHJrHHmlcJSsmft +WhWnLZSSnSzQQhfLLNSfmDHrCFDDHtpjGGtTGQCG +gJbJBcMVwJlRRdbwvwJBVtjdtHHTmptpHTCtTFrFCp +JwwgvRMJlvJwgqgvqRMcnWWhLPzzsqfnZWnfWWnj +zdwTSvzHMvVSzDCtZhtGmbTGhm +lcBHfFjjgtsmDCgshD +cJPBnqNFnLfHJFPqljclqJzQvSSVWvSnMwvSzSWWdMWM +pNJMcZrsZDLDcbcccMpQffHqvgdwdFFmdmqwvqmgmzsw +hhnWjTTStRCGSMgvvgvdqvdFjvVz +hCTSWhPGttTCGBWMRlTCMSnPBDJpbDfDpNpbbNJfJDJbpJpN +lbcQcSNFchhQNqHLLqhLqrMpqM +WfsnsszPWfBBVpHdprrpdnGL +WTzWfwjtTBzwwBDzmfSSQmmbFZcpQNcbZZbv +PwSJSlmtPPgwgmHhPPvRvGHLRLQRBQGCQVGb +rnsFDnnfGGRWQRnW +dfTTfTFdfrfFFFzQFPJPSSlhqtllNPzgwS +MMbTFZrcrGZMDqNStWScDtzS +dvWmhQggQvCnfnqPqDnDjnfP +lgvdvLClWCQlgdhlrMBBHpGlwbHHGH +CQHgQpPdCQpsCpzRwSVRSzRZwZ +JbNBbcbrJvbJnqVznwwTzrzz +wNbfLvvfDNNBHPFLhddFsQss +VVzqvwzpqvzqNVVHGNqjHpNfSQDWdWwJdPWrWccdQrWrrDdd +nLcbtBRtBhcnWSJQlJSgll +tFbLLLRRhMtsBMtRCRsLCMBVjjvHTNjHHjzcvFFppGHzTT +QCPrPWNPlWjGGZqGmvdPGd +JgpHpSfphhfpVmBSgnTvdtddGvZVdvddDv +LhphBfHpSwSwfHcMgfpmBWWWbsNCjFWsljNbbjlLjb +QJmQbRmdfmdSQRQZSJltTltNvTrtDtrlftDD +wpZcHVwwMgBpWMVgWpHLphztDvvGvDPlnGvDLlNrDPnNPl +McgWFWHHHzVpMgZQFqbjsdjqqRCq +JPhLFfMJDLQnjNCvWWpdjjdM +crSwnwVnwSRBcNBNjjWCdC +GlbTGbsSzrtbmbfhnJQP +fDLSWVDRHHfVWHgPcZlDlZbbQhBcZQbb +jrmFmprTpFztmddjdjrpvBQlQZGhQbTsQbGcQbcbQs +nvqdpmjFnwpLSWlfnVNnWl +nZBRbBJzznNNCnJZwnBSCJMcpcTpcwhcqhmsmWMwFWLL +jQfvjgtfvPlHHqWpvWThpWqWch +VljjjgjQjrTDlDgrHtVCbnJZzNzNbnRNNJZrJR +MQtJnttlMLlJQsNhQrVVrFVWRRbbVFdJDD +vGjvzmjzgHqSjjSzmSGHTWbfDFWrbFzFfdDVrfRWDb +qPRqvTSPggqGgHCmllnCNLtnhcnnsnnw +zrlZsQMFrsgQFMMjMCbjVDCTCW +NqHNRdBppcJJcTpdmRfHThpdDWDtvbWVtbLjWbttWqqCCbLt +mhJpJHTJmBhcJhwhgwzsQwSSlzQQzGlZ +TvsszlvnzRRVTqzVrqrjjZGPfQPFqPqG +mcNhDNchppWmWSNhdSmSCQNjPFjrfGjrgPFCrgFPgPgrLf +SDddWpdMWSwNDmMNwlJRQwJlsVRRvzlsHt +DTtggjsFFFTlPJhvctBqBqSRmSMBSRnmnRcm +fGfwZdrbHVLdbGdHHwwQGVwBBCMMfvCNRNSMMMSRBmmRCN +dGZzGHGVVbvHvHwbzpGbHLrwFDDFTtsglhFspgJshslTDJjT +CbzspssWwCPcvvplrfqfDCJrDqdllB +LjttnjNTNGgQQJdBrffTwB +nVtLSgggjFwtMczhvzpZbSZW +HCzCHHvWthWFHhssWCVmnqZrnqVrmrmgnbrqmN +wPPGBjQQGwGbSlSLwgnpnrBZnBBmnMNnMN +jTTbJlJjPPLPGHHTthhhHcFWTT +qRdvvPDrCpzPHzcdrrcRqtbJJgjhgtWjJgbWJtgCFb +GTwGwNscLllGTZmGSTZGlSBMnhggjbgtgbtbsgWFFMhbMF +ZSQBSmlmzcrdQRqz +cSpTRphwwghRfgSScqPpnDqDCjDjJJJJDvDLCvvn +BVmmQFQBQVNBVmsWlbQFGBBlCHTJznzHLHvvCnjjNLHJDLHD +MFsZZMbBGblbQTmQsFsQMMfPcPcwSpwtStgPphZtctPc +QZbbZBdjPBjbQQbZnSSltlfwWvlvwNtNjwFMMN +DLVqTJqpSVtfsptwfWpv +rcRRVVTSbPQBPrBZ +tjSgSjLFSnVjDWRsQj +lcdqhfFpqZGpZqznrVRWPrnWRVBsVG +FHddNNNHwTHMHvvS +qCSDSQlwBHNbgJrHnLJH +GRpRpRfnmRWWVWgVrF +jhdZjpnvGfTZZQPlCtqQQSsS +FMZSGWWBrZjMBZMrBWMGjjZDnCRqpgPnbRwPbFnvvqFnDR +QHcpfVVslfdVlQclcctqRgqgbsCwbCwPCCCPwD +NLHfLhclmmhdfNNpfQMBmZWBrJMmZWBzMrjj +pBMpRgBMQwzRthmzLC +HPcJvrvDbjvrFDcvWrHfHfWHmdddtdTLztmtdtfllmNdNhNz +DvPFDvnPJLngQsggMGGQ +BbcFHvbhhDbbTSvZmwwgJPPlDlZldd +prCrNLMNgWWJBdrJ +fQMLCfLLtpqsNNMnnfBhcBSVGbhhhcqVbcjc +ZchcZZjmmNpgmJtgmM +RLrHllWrQZQGlBpbGFGFFM +RQnLHrqPLnZHzqjfVPcvVTfCvPTC +fMtwjfMwrbjfGrtrpPGrwpNNVNVqcbdVqHZTFNbcHSNL +mgzvDnJmnJhFJHSTNqZLHncHLS +vRzhzslJFhRffPPQMjGtGl +VMMNjWppQVwzNWrZdrrtMCMZCtMT +ngDScLcvPPgDPDGhGDPGSHVbHTHmZtTSrBHZbZBmBb +LhlglLghnVlplswJjs +bGJQZZTQQLJJbQZlTZLjCGQTsDhWFhmshhvjWVFVVrgtDsst +NScqwHcwwnnzBwqPqqsmVNhgsDDVtsghrFFg +pcrcwnpcffrcBzfbCRLpRLMMRlRLQl +hzCzCzpRgCzzzCctNsNWNqsZqZhPqNPb +TdBwmdrrrDmvwTvqNsSRssPlsWsq +FDBRRHDMTmBfmrmngnpjGgVptMgLCp +ZPLLnSPMFGvFZMSvHhDhqHfqvfqbDW +GgcppCgBcrQBBgplrVddhDqqqfdHgWdfqb +CcCjQszmGBQjrcCwCmCccPwPTPnMPTnMJSMMRZSPJL +LcVVcqqSHRLzRnCfNnGzNW +LZPPdljlCggMjgNM +PTvwlPtwtlJvZTQvbcHppFLHVVTcFssF +fpWzvzNgWJBVfBJzWzBVJNzWbZcbHhlbthjlrrPrjZZPHZhJ +hRDmGCFDwQnStncrjnccHcMP +GmmsGRmFTsFwSCsRQDsCSqqpfvfgzddWggvqdpfBWzVh +wjRBFljJGDFwwlGGpBSjGDtwTVtTgHHHsHHsVTVzsHqq +CPLNPdbWvbMWbcmvPNdLVqtsHqgCqHChZhhsVsHt +PWcPfPvmvNQbbWdWpJjJBDptGnDFjftn +mFFmJpDMmmnJFjWDVclsSpcflSsQwSsc +HrjNNjHNfVwLNSSl +tdZbhjHZHPbdCTvbbhhrGbbHMFmRMvnRRFmmvJMDmgJDJMnq +szJZhshbsfZJjbttchPctdTnWnRWVWMMnBdLRpMnBz +SrNwvDSwrCmnVRvjpWLBBn +ggGmgNFrgSDwmNgrCmtPsZPsjQGsqPcsqqJP +gjSWSjJSWrWzppzW +MCMzHNGNqHfscsFtrtwscVcr +qGHNGNHLCnLmTCHfMMmNTzzldzgJlJZZgJljgTdD +QGTQtQzTmdTsGTLcdFTGzdtBBjtwvBBJDvDMHJgjJvww +lPlqsZWnDJjZvZgV +ShCfCRnWGFsRRRrF +lwGtndCrrmGCwdmhzQrBzrHvLVggPgHv +fjMjDZJqSDJfJqDNDjJffjZLHPHHFvVFzHBLgLFpFpBSgL +MsTZWRNZfJZZqMGVGhhlhhccRnhC +MMvncqvcHcSnsdzzgvdfQjpljpQVTdDQDRTRlVpQ +wLCrNtBFFHHThRlH +bPJtHmCWssqgGPvq +LvTLsmDWvTWqTsmqjRTmjwgdwgnMHMMFgdtHmBmFVn +rlSCJzCSfpGGlhznQdnwFhtHgBFwtV +SGZJJSSrVfCbGJLjPsWbvjRsPTqR +pNqVVDCMVMBpqJVdMNHrccGHrtNtTFFFrQ +hwmllWbvvbnPvbSvtrFhhJzzHztcTztT +WSnbnPbbbvlWlRvnsqqMgLRMjLgVLCJdRV +GphVTGVMtQwtJmtCJP +FRRsBBsFqRNZNNrgqBdRfCZvbmPgmQzJQPnmJbJmQPJPPmwj +RNqsFrRfZZsZWvNqWRFvrBZvWhhCGVplhlWTlTpSCLpMhWMD +RZRjgbZHjjhsSnRsZstDRStsTVpFhBqFphMqPPpTFQVMPFTM +zrcGJwNNdwJrfNdJWvGdJzdTlTFlqTVPFTVFPPBpqNTbBP +WwLdLGfrRLStCZbD +mrmTqJWTvDDppTDb +DGzBfCzNDzdMwnLlbn +FVZPFZFFZPgjmWZsDtsq +TpnFTnFRCgRgldMRnDnRcrcdbdPBHbtPqbVcccrH +WNWLfQQmfhhSNwmrcbSVqPtbZDZcPb +LQhwLQvQvNfJhJRDMGFRlCMDMD +vLFTDmjVvLgnNHPphN +lMClGCmsRdCnPzCccngCpz +dlGZwRsRrRwswGsdSbbZSbVDrVBmDWWWFJrTrFvFTmqV +SGsZRqGLWLLtZRHRRcLHGTlJjzgJpjzTpNTNJNWpTm +MPMPvFFvFBrPPDPMQMPChjgpNpSNTmmmpNlTDljlTz +vnhrvMvnhSRqqLqnfn +mGFrlBmFQNQFljhqqqqbmHMsTPRbWWCsLMWRsb +wnwtvpwVzDVpvzzwZppnctMLtMPWWCstTsWTsTLffRRW +vwDJgZnvZJFqgLBFGqgl +QdGltnWNWqTdqQWvWsMJcrTcFcrgshJRMs +BzPLCDPzzzzCCLLfCBzfSDmLMrDJMglrcRbbhRsFhMrRJcsM +fjSzwwHfSzPzfCVBHlpdjGnZqnZptqQWjGvG +VbJZbgVzvzmhQpQWpQzhDp +tHPPcGcFBlCctCGtGcBBNlDLMGfMLwWfwwqMLLJwQWwp +dCHTPTPJdTBFPdrZjgsjrjnmdgms +JJpBvJQBZVvcFqqnsWdWvjsn +DCfbDbTtbgfCSHqqNdFMPhPDFnPPDWsPjM +bTmzTNCTNmfqTgJQcpLrpZLzVlVL +dtTLntTjzTftnmwnqGGQHNmm +SWbShCPMBgBRRFSFtRZZmm +DlJPCJCgPWhttzpvdjcpVl +WdzsNvWMzNsMHWddWCVffqmSmScLPvLPgLgLPplrrPmL +BtnzbnBhbwttwtZlmmlgcwSrLgmmpm +bFhQtbGBTnjBBbjTtFBbVDzddDDfjdDDqNWVjWHj +ppmtpgLLZLCbMQvQQThdtrvPhV +BBlHBwHRjHqBzzbHHqjjQdDQTDhPQDvnQlrQDQvr +HGjFzwHNczbzRFcGzHGFSJSpspsmpssMLLSZCppmfs +MpGrMMMcTsHMVHcvbwwmmcRSmDmDmv +zCNptqCBQQLCNLCzbfvSvbSzSDRDSmSv +CNNqNgNQJNgQtCqLlllZdZhTrThsnHpVVssPTsGP +jhSGcShDrLcLLFcw +MVzQvQNZVLHvHPdhLW +qzhhQlVbgqjmSjJDsgmR +CFzSPCgcsVVzFgzSCsBJwjdwJtNllnwglJlp +QrvbqWvvLbmvDMMmbdwFWpNNwwwwptjJWn +RZRZZqvvvDbDHCRTGchHFSGG +SszgPSPPVltDlqtz +WfTdTBdQdFnWBBBhBhNjVJtpNsVlDDDHHJWp +hQhrLFsBwdQPggbRgPwRMg +frRppMMDMpDnJfprnZhrrhpzWgvvGCvvFzWFvzvVVWFGJB +TcmLwTsccqwqbPwsdwqdTPSvBvzzztvggVvQCGWQCLBvCv +sswNjscwmqjwSssjdZNMfHHlHhfrnrgnfR +JpBJBdmdzZzzpngmbCnlqnNbNM +MMTHGccLTLvwRMlRnnQnbblnRnSs +vVGtvMcjLVGHfHDrPPWZppBpJpfZZZ +FGJtlttPdPtGFldlPRGpJTVzSBSSggHgJjVmBMHjJm +rhbvqrQLrWqrWLLfqbjjgNmVNSgzTmNgNS +hsffZQqnqCfZzlPPGlRlcwDs +HDDdZpcFwHFRFcZqDctpRDHpwTCVwjrBTQTBLBLBJJBjjQTJ +ldlMzhlPshPbLrrVrQQCMQjB +glzNfWlvbHqSdNNNcF +jZCMtnZZHCZwBWMwCwtMmfPFfvHDvzHFLPmFDfvh +RcrQdRRdGTzGvDGmfgjh +TsQscdQsQNTNqQQpRrRVCCBMMJJWMMVNVjnNJM +zVPWhVzLzWBWHZnlqBllqlpRbGNdffscGNdbDRnNSfcG +MtvSFQQwMcpsGRNGFR +vvTwJJSgmCSMmjVPPJWWhzllWLVV +RjdfnJfmbVvVJVFQcs +rZDZGBBZVvLZLHFW +qPzTDPlVrjNgfCdmPd +bcjmQPrnbmVmsLVrLrjmcHGRWlZHHRwHpZRHWWwH +nFhqzFqJzDJfvfSFqFfGHWZZHGRJRWHZWdpWwZ +hBCtDSSFCTqCCFzSnzMrLNmrMNPTNMQPMmNL +qvNBSJVDJGGVSJbVDDVhDbbqPjpWpWzWrnpWvvWPMjnWnpWz +mlTltwcwMWTPfNTN +CtCwFmCgmcmlRFmFCtRCHgmDJsbBhVqsbBHVDbNHDHJqqb +csBFBsLrBGBWcgLcBvRgpRhbwRwlbQwbwQgD +DCqmDmtTRtRlhdlh +qnCmTNPmmCnSSzmzNzGLzLccGDBzGrBLvvcW +FjfBjHnHzPFwhvFFqh +bjRpGsNsPqQvPclb +NWGGWGrrZVZjsCLmDMMgzgrSnzSm +MDgmmsNCmZMWmHCZLrvnLBBjPLVlPVbW +zcJGQwJdFRnrBVzqzvPr +hTQwhJwcfTFddFdGSfcRQQGFsggsgsHHnSmgsgsmgCnHNZpC +BPfwzfsgsvfszvBRbQpttRVpJbJpVg +LhTmHLbmbcFTFrWCbFqhFHLHVRpVtQpZVVDVprnDMJtJQnVZ +TGWWbTFFGTqlHhqhSdNdNfNSldjjBfjv +zCzpWTccHlWcPzMljMttbJfjmlfm +DqqQVZZqVsqJnbbnmjbJJQ +ZRmDZsSgVmGLsVqsLDFvrcccHrcTWCgWHBCHcCWp +cvGlQMtQlPtQWWMlcGsrFwFdbgdbdGGDCDCwdd +VChVZNBVjTTfhNTFgzrzrJgSdzgzwf +THThZTqZRHZRqNVZNTVLjRCMmQsntQctMnsPmMmMcWtLMQ +pNRHrbNlNnRLNpMMMTrcGcGTcccz +ZttBmsJmZdjsvTTvvdBMjDhfMGWGDfDfcScjfD +CmtTtwvtCsgllNHPPFbLpC +NpQcvwwRHvdfRvQsNfBQNvfRhVmVMqsZMmMshjMMtWZtMmrm +CGHbSSzFLSSHzTnbLnCWMrtWMtjnZMhZrqZtqW +FzCPPzLbPgFJbHSPldNRpgNfvvccgvwf +nSjpnnhNchMQZMSScnshshncJCGwHGClwmHPZlJPTVZCwHJf +LvtzBTgLWgLPlPwHPLPJ +dTBDqRqFzzhQFhshhNhM +HjjdPsjnllHsbnnDnbTBzLBFBZLLpRFRcCHRFz +wqqWwQhQQMCQffqqhtwMGhpZFRRZvzWzFvBvpvmcRvZm +fGfghtNhthqJrQqMqMMSgDdbPjbssDbdSnjCdd +cqPwJJnnffBFqSfJFnDDPVplLdglGgLVjzGLdVSzVt +WHRTWNHsQTNbzsbCbTsvWrWtjlgVdLgLdvdgvmLjpGlgtm +ZMQrTbNHZNsHHrQCZrNDFzhwnMJcfnDhJPPPFh +LRCFbjNjbCZDmtmqmRRmLtFJBgWBBpvJMwBJvGjBBvMBgw +TTrlfHzccVllZhdQgdGMJWvgWgBndwpG +fVSshSVlsfslhsSHHSZtZZNmNFmtmbFCDF +SPGCBPDMtbcbCtchSMccDTTrrrTFTrsrMTWHTHFVWF +JmnzqVmmwwfpJpmdHRTRsdsTrFdrQp +LqwLgzJgnjqLwgGcVbtjDGjcVbhv +PQcMvrvMsvmdSPPVccmSJcSpGBWWWbBHfWWnfttJWnWJpJ +wDzqhjzmqRzDRwqDzNDbWtjWBBBtGbtHpHnnBf +zglRhDqqDZgRNmZQVCdcCPQvvdZv +RpVjRgvFjGBNWtBWFDtt +dcqQwlqMMsCLLfbgQmtD +snlgzsggTzSTSJTr +dLHhDdtlMngFcFsFLFzzsj +vWRGGRVrrWvvGQQJBRsmQzmsqnffqcNfNcfz +vSRVJBVBwTvWTnHphTgDgtMpDl +bvvGnnJbfPmfdgJJSVtwwCpTScVfNpSC +sjsZWDqBqqMRZsDjbWMVwtwNNcNtScRHpRRttp +hzhDqqWDzZzDZzZLQPJPdPnPvlrbGdlnFQ +PwWHTwzFvNHsNzmmMwzNWGQrCqCFjpZbpnGqrqnpbr +gRVRgJRJlDLSJddDccQVrtZnCqjndnrZdnqnqpdq +chhgSSJfQhRRcSSSSBLVfzmzHTNzMNsTNWHMMvMP +lftqSpBSvhlDBDlhBSczQGmcFMcMVVFMmGFWsm +rHLHTNdggsLLnwLHbTTgdrTMPPmMGWZGQQMzQVQFZQGM +gbJnrHHjnbrgLrRrHpBJvSBDDsfJsDtstq +dBTtFLTtVmpdLhMprSRSWMRSMR +QvJvQbjbCgCQRBhzzRsNWNBC +bjgGqQGbQnjGQgnQgbGgjJnDLHLdfPVtdDmLZdBFVVZttdTf \ No newline at end of file diff --git a/src/day3.zig b/src/day3.zig new file mode 100644 index 0000000..019d07f --- /dev/null +++ b/src/day3.zig @@ -0,0 +1,77 @@ +const std = @import("std"); + +pub fn find_intersection2(array1: []u8, array2: []u8) ?u8 { + for (array1) |item1| { + for (array2) |item2| { + if (item1 == item2) { + return item2; + } + } + } + + return null; +} + +pub fn find_intersection3(array1: []u8, array2: []u8, array3: []u8) ?u8 { + for (array1) |item1| { + for (array2) |item2| { + for (array3) |item3| { + if ((item1 == item2) and (item2 == item3)) { + return item3; + } + } + } + } + + + return null; +} + +pub fn get_priority_value(val: u8) u32 { + if (val >= 'a') { + return @intCast(u32, val) - 'a' + 1; + } + else { + return @intCast(u32, val) - 'A' + 27; + } +} + +pub fn main() !void { + var file = try std.fs.cwd().openFile("inputs/day3.txt", .{}); + defer file.close(); + + var buf_reader = std.io.bufferedReader(file.reader()); + var in_stream = buf_reader.reader(); + + var buf: [1024]u8 = undefined; + var pirority_sum1: u32 = 0; + var pirority_sum2: u32 = 0; + var line_number: u32 = 0; + var group: [3][1024]u8 = [3][1024]u8 {[_]u8{0} ** 1024, [_]u8{0} ** 1024, [_]u8{0} ** 1024}; + while (try in_stream.readUntilDelimiterOrEof(&buf, '\n')) |line| { + const len = line.len; + + var compartment1 = line[0..len/2]; + var compartment2 = line[len/2..]; + + const intersection = find_intersection2(compartment1, compartment2).?; + + pirority_sum1 += get_priority_value(intersection); + + std.mem.copy(u8, &group[line_number % 3], line); + + if ((line_number % 3) == 2) { + const intersection2 = find_intersection3(&group[0], &group[1], &group[2]).?; + + pirority_sum2 += get_priority_value(intersection2); + + std.mem.set([1024]u8, &group, [_]u8{0}**1024); + } + + line_number += 1; + } + + + std.debug.print("PART1 Sum of all priorties is: {}\n", .{pirority_sum1}); + std.debug.print("PART2 Sum of all priorties is: {}\n", .{pirority_sum2}); +} \ No newline at end of file diff --git a/src/utils.zig b/src/utils.zig new file mode 100644 index 0000000..e69de29