diff --git a/Days/Day3.cs b/Days/Day3.cs new file mode 100644 index 0000000..922edbd --- /dev/null +++ b/Days/Day3.cs @@ -0,0 +1,363 @@ +using Spectre.Console; + +namespace AdventOfCode.Days; + +public class Day3 : Day +{ + public override int Number => 3; + public override string Name => "Rucksack Reorganization"; + + public override void RunPart1() + { + long sum = 0; + + foreach (var line in Input.ReadAllLines()) + { + var middle = line.Length / 2; + var firstCompartment = line[..middle]; + var secondCompartment = line[middle..]; + + var common = firstCompartment.Intersect(secondCompartment).First(); + + sum += CharToPriority(common); + } + + AnsiConsole.MarkupLine($"[green]Sum of priorities is: [yellow]{sum}[/][/]"); + } + + public override void RunPart2() + { + long sum = 0; + + foreach (var group in Input.ReadAllLines().Chunk(3)) + { + var firstBag = group[0]; + var secondBag = group[1]; + var thirdBag = group[2]; + + var common = firstBag.Intersect(secondBag).Intersect(thirdBag).First(); + + sum += CharToPriority(common); + } + + AnsiConsole.MarkupLine($"[green]Sum of priorities is: [yellow]{sum}[/][/]"); + } + + private int CharToPriority(char c) + { + if (char.IsLower(c)) + { + return c - 'a' + 1; + } + + return c - 'A' + 27; + } + + #region Input + + public const string Input = + """ + DsPhSBQQQhqmBDhPDsFwjwsLjlRjlttvjvvtRb + rNJMNNbrHrtjHLHjvwtg + fNbNzZdrZnMnMPnQShFPDmnqFm + QWVCFfQffgQCVZzVVpHsHJBqtpspJFRHqq + mwDbmnnGNlNcwNDDNRbnNDlJTpBJBtJGtPTLsBGqTqqsqp + MlSdnScRnnmmDjSdNSdCzvggWzrgzjvfvrgVzW + gsMljbrjlZlWcWMJrWwTwbmwQbmmLDQQLhwL + CdgpzdgpgnfThHfFRwhfRf + SptgpSpnCNpVSGNPvPGSddcMWjMrjqBsJcWqMcBWcVlZ + JcJLQQFWhQJPJpWcwjHvMQvnnlMvzBHd + tCtGZrmVRmVGTVTtCfRTCHHNNvdNzmdMvMlNzvwdvw + CTGGRftfSGtGTGDLbFchSgSWWWcM + QcMFQrvrQbvtczbVbjbMzZzRpqmDDmqqnNzCDCDC + SHHfPJssGLPSdHThLhHdRmqNmNssnNmNCNnpjmsn + LhLJfTdLJwfgPTdfGccrtjcMrccwvcrrFr + jFLLLqDGjbtqLCChpMMhMBvpwMTmffpZ + ZnJHRncHHgnrsrZffTdMdMBfmMvfvR + NWWPnZrVHrZPCDDQtzDCPLCq + jpFjvBZhDFHZdwcmslcslBLLNl + dVtTVVCzzfrrMPNLLcnVcPLRns + CrzWzTqdWtGCzJtbJCrMjjDFHZQjZSpvFGFgHhHp + JjJqMctnhtDZDQtf + TrFFlrrCCHPwHwlPHFPzDhsffQQDsVfWwVJQJB + HHHGdFlHldTpCCFFlLHdCRJccMnqvqMgnNjjMjjvLMLcSv + cMfFcMFcrqgJLFZdrTDdthPGsGmtGs + WwjNwnjjBQzVVQHwRDnmtPGhPPsPnnTGld + bWHBjWVzpbRzbmScqgZMFcqf + RJjPTBJhTNNjfPhRBdqtlgdbGldwtCPgdb + ZmrHHmzpvSvvpzvmvDVCGlWVwCWtGtWCddggqf + QQpzFrHHQnzHvfTcNshcLRNFJhcR + QrPQDrppBQmCmFQm + TzqzsLfmsfSTfqzVLftNdJJNJGCwwGdgCwSGNC + TVHTfzWsfftsZstnbvrbWbrbppPbrmmP + BQrfqrLtJnttqqtQBJDDtBnDzRgldhVVpJlgzpzhpzsgslhV + TTNcPZCvZjmPFZjvPHLlWdNLghVhzzlllpVd + jcFPbTcZTFcmcjMjjFjbLwbnDBtfqbtBwfwSBnrbGw + SZJNJtrNzjjNCzlBBmqmQDBBmDBBjB + PGPbGwhLsnvwnVbGPVMZsDsTBBgcZgBBDBfDBf + pnnhhvphGVpvRPnJlSFRNNJHZHSdSR + hbmDDmwnnVGbhmjNrrWwLNLsWBrw + dMrgvcQqdjlBLlfW + HzzPSrcHqFHQgzpPcMpQqrtmbbbRhHHVGnZDnVHhVbVZ + RwtvdPRvSlTQmHHBQBRL + FjVSjrsFVnFQnTHmnT + VCVVMrWWjVGgbcNVGCCVdlvfdqfvwbSzwqfwZzwv + fmPDwJPDFRmRgPdwwwDNwgwPzhSQzVSzVTQdzHZzHhzQMQzQ + sWtGCWtpcqqpNnQjjzhVTTVQczhj + tWBGntsCNlqrWswDRfFrbFrPDbPf + dmzmjcbQjjQztFNqsqBcMJqNPF + nlTWnClWwQDTVnTrsMsCRBPZRJRJqRJq + wTrhwpVVvgvlDpTvVWVDdLfzgbLtbzSQLSzzjzLz + RWZdHvRdBRGbbvCjJnbn + pqqpSwzpSSbCwPwjlwjl + gDzzqSVzqrThpDBtRtCZdQRQLrQQ + GRqTGqtmTVdGHHVVNNlhPlMqbNqNDbqW + LzQSdFnfznfwBcLcnFppBBDDMPMPhDbhlwbWPlbWMjrD + QznFnLZFvVvHRgsddG + BBHBfBHFdSltmWJvqtNtHq + TQDrrVMzVDnWnNZDJc + gWzprTCrCMQzGGjjhwFwdffjfl + LLLSSSzBBlBLsszncCBZSPSMMMpdWTdrmmnfVGVmMfmrmm + DghttvwhHRvjJthNJwhVtDHGpddMWdMmrMmfGdppjWTfpq + gbJRthQDDRvwtDhQhDFPcVcbPczLzPBScBBF + sZsZpTtLCsbspZtTwrCwrwtDmNNdJmmqSJfqmfNGNmHqGdqb + nQvjTcjQglFVlllMFMVFqWfNqnNHHHdfSfHqfSJq + hFvvgFcFVzphpTrrwZDp + qJqfhsBpfSpchpqcrqwCDvvCDQndmpwDtnRQ + jWHPZWWjZsCmCWRDmQ + PPzMGHlzMNsPLPlZsllgsNrhNVBqhFVBbBSqFFBFrV + RnRsFFdSzmgwvQsqwc + lbgHGMBHlWWWlfWGGBtGwqDpDwmcpMrrqrQDZrMZ + GGJLBVJbVGjGtHVfJtWGHBLLPdzdCghnRnRnSShgNnhnddhj + VgzLFjjwhhSwFhVZgRhRgHHCCvdZdrqqCTvBCrqvvr + ncnNbGMcPpvHFrssdBHM + cnctcNNbQGWFJctftgVmzShzzwwVwgmwfR + pFWmSSFGQlvTbwWTwH + jdBgNhRgMftNBhPbhHnZHlTTZcwZ + lfBNRjCtCfMjsBfCjgfNBRMppGpJqsJQGrrmmJDpGmDDFG + GznngnhzccVdgjbbVjVjVbVLwwQJmQMrLTZhJmZLQTJWmm + pDBSslPCFPCpvCqvpPBQTlQLrdlJWrLJLmrlrr + psSsBptpCBdjtcjNVcGG + sssppsmchwspFLtvHhQJMtFb + rRLDqRVLNSMvFSSV + WDrLnzrDqzRqRzzfLgRnzrnsssZZZsZBgCwwmBppwBspZc + MtPbwvzzVtzfsqGGVpdSjsLd + DnNRCDJBnHJDHDnrDTRcnNZpZSsSLqjpdqqqSMqdddTj + CFRFRFHgDRnRgMtfFvvwzwvwvzWv + PNpFPncvvchPpNjpFhvPhPLmBwMgDRRwRgMDhBmLzBDD + trHSrdTtslWrSWmfzgmMnfBzmn + JsrQsJHHlsVqTjjpbbNnQNNpGG + sVQCdsmGlnlCmnGmQQhGCJJNvNjpgqhqhvPgpgPqjpcpcW + DMSfSbHLHbSDBBzLNvccWRcddvPjNj + FSwHfTFdFsmJlnTTmV + FctwtTTCScvShFqtwScrcTSCJQGNndGHWJNQHWHZdgJrJgGN + jspLlfPlpfsDjBspfllWgdWHQggZHngHNGdsWJ + lRMpBlPmSFRTcvZv + TVZpRRVvFRVpTZRfFhFvvzGVwrwwwdDBMwQrgcDtMtDDwZrL + jsNsWqWjNQCNWbjPMcBLPgBtrdMwdrdL + SJSsmqlSNljbmlNjsbQVffzGRvzmmVhQpVGz + BFFMvcwMwwpFFfpbDMqPVgLVgmLDPR + JtSsSzJssQJJWjRZzgLnDgqLPZgzbg + dsdtWQWdRGjTRNQNQvGfHCCFpvfGwlCfCp + zzWGqWnqnwWCvCrHffHRpBpBBRSJzRFFDhSQFR + VPVsZMNTLsMvPsmBJhllFpFBTJFQpl + sZtsNsZtdZgjbwggjnbvqr + QpTvrphmDvvddfcJJHTTncMlMG + bRZZPRwjgzzlSSjGlnlSJS + BZzBzssWgwzzwNBsgsPBgszmQptqrrGdvdWmqdhhFQDpQF + FfMtzSqlDlzfMhPFhPtffNRsCgSgCCGspRpRGSsgsg + WTcWLTTVnWmrVdLrcHmNGNCZwCCggpgDRwpCnR + JcdWJHTJWdJdjJccrLvlFltFQQvPFDMjqqlP + NfjFNNZPDQVJVWpCbQpJ + lcmdzlmzBtRSTlTTcncsVSbhpLWpWgsWghgsVS + mBTRRmGccRtBwDbrGPbrMMrF + VVQqlsGrVsMWBNFNMQHF + TfzZfDgjgnLGjjztTncCFwwNmdvNcwwNBvHNFwvd + jzjDgZzjntGJZzCnhrrSlPVsJslpslPq + dVhpjGPdjHhqHgtHJJ + sFzrzllQswDwFbcmBlgvZTCgvqTCfgHQJtqT + nDbBsFzzrrtFrlwzPdSVMWMVVMSnGNLd + wqJCjqChmwMLmMmprNgG + DNTtdsdWcHdNspGQggnrgLnQpc + SZvFftdddDsDTtttTDJNCCwJJZzbbCjwwVPj + VstwZCwslBZQDBjfDDBDfS + rvHnmMRrTzmMrmhRppbhDfpjfbjbctjD + rPFLRLmFvvLvHvTCtqsVVwldGZGPGV + SNZDJGfvwgMgfgmLmLcmBqgWgQWr + hPnPTnVGsPRqLWpTmQqQ + tsbnFhhjhSdGJNCjSf + QSbGgBjfTCMWFNPFFtDghPrP + JqHqJVzZzwJJHLlqQptDhPrctpPDtnLF + zZmwJwdwdvHddVJvZqdzHlfGBbsCmMTsWCBCjsGGBbMQ + gVmLtpWrFTFBLtpcFNbvhNNnTnvnQRlQQv + GHjjqsMqwZZJdqGfZjfZGjQDDhvQNzznzRzRwDNbvgzv + sZGPgssMqHZpPptmCcpCrP + CZCNNLmwzwCGMZQMQsFNWplvpsJBWpFHBp + SPbSbDRRbnDqggnbVbVrbRWHJFTlBBcTvWvsPvFpHTcl + tVgSvqVbnqDdgQzMQMGMmzthCw + mpbPQlblbwSlfSPGBpBGPpBFgMMtLFSHMLVVDVdtHLNctF + WnhZsrJhTnWrgZdZgHNLcLtt + hjCsCWRhjzhTjnWnQBbmPQQPLBGfqjwQ + BFrzdtmRmpFtFwwmjjzNQllPshqHvjNh + fWCLLCMJnCDbgfMJhPsPHvqvqVsssQ + WbLnCZnvprpmZrGd + gjMzTGBjWFBCCSSrBC + bddJJndbdJfwPPthrrSSSsFSSg + NJHbZbbvvWGgjWgT + dpfphMggHdQcwftMMgdtzWGfGWnDBnmvnVJVvfmn + CqPFTZPSNCTsZZZRLzGmcGVzDLGvLWBWJm + TCrTNSScPlplpHrQrQ + lqrCvhWFvMGWgfHPgLfjfdgG + zjmbjSnzRzVVRmzBRtwjVQnNLfdPgfLdfTtNLPHTNNpppf + mbSZRzQRBnnzbQJbmjmSbmVhlslZMrclWFrrqWCWsFhchF + mpfNshshflNthWfJCBBdmnQbQBZQdn + VFVRccgGTqTrHTbWBFjJBCFFJCCQ + PvTDHqHqPPGVqqhwfNlWlDhMltlh + HmLLgWVjJwhwWLgjjhmVHLLLlSzBlBlSvBvBFGvtdStJSSvq + TRRrPMsfQTbRRCZRnTMRZZTCcvSccqBqBBlzdFvBqFsGBcts + bRNPbRCZMCrQNfPLdhVpLDVgDhNHWV + sPJFDsSsVLgHjLHPbj + vCnRQhhRQdVQZlZdbHNMlqNNjgjbpbBL + ChhCCCWTWnnmvmGtztStzScwrcVcFW + NRBTNDBglSSgDwCClQQSFFHdLLsFbPFFLt + McpmWccMWHZPcLstbt + MWnWphVMvvzJzpWJWmVphjrDDBBTRwRDDDRRCnPDnqgg + hsnnhhLljLPTmZwvdZdZjmmz + RQNNDpNMSZwvsmqstN + QFMFRDVDsHSpRpHSMRHfGGGTLhCChBGhBhBFBJ + TTbltCvClzvzCZtwtwLTtQQQgjNgmjgQRRRQSjQLjR + HPpnZHcJsdnnfsdVHHSSqghhmqBSSqSmBfNj + VMJJdnMPrMGVrzvCZwZWCzCt + CcQnBBCfBvRzDlsS + PdbPPCbhGGpDSDlDDhvDJl + HmHWPWdbHnCwCHCr + JHlmJcMWHQcPmlmJMmMZPfwTTRDfgdDBfRtgQgdfBw + zVvFrqGjzWGVrqvjvNFpspvVBgNNddtTgghhRTwgdDwwwBfT + bVFrrvsvjWGVsCsqpSHZmMPJlJnCcLcPZZ + QrrQZFZnRtnFRTrnlFTtRZwpGGwzGszhjzbsGzzhmjjhhmhf + SgvpDSJSgPBSDPDNgpggmsMhMmffsMmzfJmzHHMj + WNVcCPgSSDCddSdWCpNBclCQQFRQQlnTLFLRZQnLtt + tgvqWqzvntdlzNzzHrbPrMhHMhhrVrjPmC + FGTGGRGTffcJRpQcJJwmjhPLhjnCQPrLPVQrMr + SppRSDRwFnJJwwswTDdtzBzqWWzZDldNgtvl + sjzPjLphMSrlppSp + fbGqgwTqgVTFFcgGTTGcQvfHQZRlSrSlSmMNMBRNNNrZmm + MVcFGTFtqjsJLjjtCd + jVJqTRHjjtDjZnVJVVjnNdwfCFPZmPgCCgCZGCFFrrFg + LSLBMBWsbBBCgfdrFd + ShbbzdzQRNNNVhDN + JwbSRqmSwRwcpmbSSVfhNBTVGGRnNNzRNh + ZPfQPjZZrffQZszhzTnVGBvntsNz + rLjggjQgQgFdPQjLFQZgwLMbWccLSwWHqHfSqpwc + cBhzNpztzHNrpHSHQrhZjZqdJRRgPqjhjqqP + bQwsMTswwVjdZMVRJM + vGWCTDCTQvvtlvQQ + mHVmTTsmzRmRHffmmfMGBzSPMhSWWdDWDSGB + VNcnNbtqqJbcbvgvWhShDBDPhjgPhSjB + FrrbCnqJcbCJcFFbnqJlppCTfQmfmZQTLVswRLZp + rWWppSStfRBLfHPdHHDzlldZ + QrTnQmmVCqvrvJvzJZPHvzHsDs + qgMMmrTTCcnQQmCNQNQmgTpwRWRtwtpcBWwjSRSSpttW + SzWQwwqVbQzwGSfVwffVwbqhFGFFMgGLGMlNMcnNgcvlMg + ddZHHsrCdBssDsHmChFLNNnMvmNnnnFncL + rpJJdHZJdZHQSRJbSfVhww + jLtFhNwNNvHnjFVvQLQLHhfbGDMPfffpllpttZMPPZZb + VmrqszVmgCWWggbPGclPlZbcZCbf + JdrTmVTVsqsRJHvQnnhwhBLH + vpdBvsvdVvSPhvQFCgrRmhjqqRgWcWWgmf + tJDGbZHbjRHNrrBj + DnMnzGJJwtzVSzzBzTBSTF + hZMDbQhMhlMDJrDrPMJRRqGJSvFvSwFSVdvGvwSFqq + HjjzcRTnpGVSGGFWHH + pssmjctLzpsRRnhlQbPfPrgDbZls + FJMhPhnTMGmBFdnmlrfqfCcwlwCwCv + pjHLsLbjjRHsHsjDjVsgDRjzCnfCfzqrqvwgflcvcvvgqz + njtpHZnLLQGhTtTWSSSh + NMddMTDrrjNnrnMWMrlnPwNwftBtGvptGjBHgBgpfCCSfgvf + mqRqLFZRVFbtgBSCbGWWHp + LZZRmQhVLLFzZdTQPndPNTTnQW + CprQrcpqhHhpppchpphdcdpLMRMGsVGGsMsLbZbtbfMRmtbG + DzlgTjwPTlSSSCDSlggNmMRtbsstsMfbwtVssMmt + TNCNSBNJJTNPJjCTBDzjlJrvvcQrrhphWBqHhHdqrnrr + ScbcbglMPRSmvclTlzMTdhVHhhjfdsdhrVDzfjrD + LJGtpQwpQBBCttJLGqtqGHhPfDdHwjjhrVrhdrdshr + WCpZQCGqtqQWtQWplZPcvMmgmvPccbvT + tGWqthqGVdzBWwdd + BZvZHFFHZrHZvZNRRHHZNHrMMTzRMTdTzbgDVMVssTDTwg + JnNmrHHNrCGBPPnGGc + wvFvZBmppBdSLcvshcLrgl + bTQqJJHJzJjDQjQtzRVJztDHslgNNVLcgSrsSsWrSslWgrgL + TqHHjQnbHTbbmZBBcFMpmBwn + ZFCqSlCPdCRTLWWTQQLLQS + GjggHcvsggHVTVBLnlcpBQ + hvGhlrtjmjrHHhjsMPFNPdtqMPqqRfCf + cgRwVfVzrgqqwZctTztFMFMTCdPmmF + bWJsSJHpTDRDTWMC + sHHNbshnlJhJjBsjsbnBHbZcqrZZQwqvvZcrwwvRcZnr + ttgVBtMbttngmHJVpzlzZlppzw + cPcsRPmPPQfGcccRQSSZzzvzlflzZHvJppzJzT + sQPSCPPWccWWWqsQqRCQFNRMmnbnjjNbgDdBjhBrdbdDbd + gSsZDSgdQZgWSgddwLDLLfCDBqvlhBlClqtqjhvBhB + RMcsVMcsbVsrPrmJcPHHVvfjjCnvvfCqhlqvqqqq + NFMRRpHPgzszGppG + WmmZZNJCgCBZCzPvmBCmjWjjqFtFqjFjbVwqwjtt + ppDMpdMfSfSSNtlwqbqwwq + dTGDhdnfLMLhfDDpQvZNZgmrmrQJgrLQ + jrqRqfNNhrVvcTVdpTscpd + tGWBlLggWGddTspZZd + JJzWtQgQsDbBgDWsgbFrPrRJNMJMPqMNfHjH + GdvVbbWsWdvWGDvWZcbFBTBZCzCjwzrhPBJjzF + nQPfSHnglfpnMSngnMgJTprJCCwwrwCwpTpCFj + SQQHSttRqggmlVsNcvWdRvbWPN + WLNLCWLsSJgHFrSHrM + gDbzRTcmbzPPgPPdtBctfHfrMMQfGFJrhQnMfGJR + dmmzzqZdDqqTLLwjgZgNljws + TCqsDHssmDsDGVGlVcMccGDV + FLntWWnnFzFgzzbtbznLBtlfjGZmcfFGVNFGlVZcMNlN + PpbLLmpgbRzqpCHwChQqwh + lVBPVgflgBVVrVTTwgwBPmgflDQjnnGvqjGDDFjGlGnvqHHJ + ScCLzdCZdbLSbFdFqvDDdGMQGQ + bchNCLRWSbzCbNRzbWRmsrhQwVVwBhmQpPwpgV + GmfHCCPqWqHLWLCfRJpbrrbQphwZbZ + STVDQzNnzMzNdstMDzzNtZwFhrlwVJJrJlFFJRFwFR + DzSvzstnszMnjQcqggjPqQBcqq + BzNwLTqwTjrBrljWpBlrQpBpsCGGCtpssCMttDtHsttMDCHp + mnrJVmRhhvJVcHtsGHMCnZCPZM + bvSmVbRhbgmmSJflzNLrzqzfWfqBWr + qsZLqqFNhfrGnJFv + DVjVmWlcjVjdDTDlbbTDTzmrCnMmJGnHnmCHfJGfvnfM + lVRdDglTlTgVlVjbWWVzVjvNZqSBsLZNtqRsLBqLqQtL + ffRRfLVHZHfJHVJcMrMZZwwTzGBBzBTBjGTwrwdSCj + qmWbWQbqnbvWhbQPGnGNnpvwSzltpBldtSdzllptCSjTTt + vWsbnbWnNvQQQQvsRRLfJRRVGfDcfV + PpqrvswPvvvPsNqmDLDttCCcHHZVrCtW + hgSddBhghQMdbhbwhgSdQgCCctZcDtLntLttCVLtSLCc + dGzdQMFzQMdgGGlGJMzBgBwRqNNfmmTsvfRfJTpwjmpP + pcphpdrWDmTgHWMtRWqHRVVH + SbGcGGQnvNQGvsjBtVHBLjvqVPVB + lzbQCzbZllSzQslpCJpJJDggcggfDT + ffrTlhrVrfCsDVTsWzGBBZcBRBqRBWtGtZcq + QNFmFHrHNSSmSLJdJrNGZLbGjbcBjBGjqcbgjc + ddQvPnHddnQJHSHSFPdnFfDDTfDMMCrwMlPTwDCsrC + NBnrNHQHBscvhfBM + bbGtgWWWqZFmnZGZbmVCdMzvvShfzfGcdcfMSS + WqbjnmbnjWgmFFgtWVbWZwNTNLjNprNwQLDwrTrHQr + lwwlcjlzQRBcBccbdLCVnNVWJJzfLndd + pZDMtZpSDMZpMZMsPtHVNJVfRCRddVndnJLSJd + mDTZvTqtDDHttRPcqhQlwgGlghbqBh + DTspTqssqTbdmCMwVmnmlfCD + PLPWjjrSjvPzqZvjvRqjLtPwnnHCmWVcncMnnwmncHcHll + RFztFjjqjQFQTbdTbQ + hTFSVSdhMMVMFjjgbthcbzczcg + DvwCJVJWWJDRnfmbDmccfmmgfb + QrJvPGWWnpVMqdZsZpqM + gRLcHbgnfpgpJjlqqp + SFwrTHFBqlZtBPZq + HTzDwmSvCvCmsmmvTSwvFwcfRRNRLcQRWNssNNbRWLWL + PpMgDMDnsWSnjBQnrjbn + LFcVVGChCFdhdVFZVpVCdVbvQbRrbvBBbBjQSJZrrJrR + FNwGNCCFHcVTHcFdHHHTDzMzfsgzwpPWMmPflmtt + """; + + #endregion +} \ No newline at end of file