diff --git a/day03/input b/day03/input new file mode 100644 index 0000000..6da1d58 --- /dev/null +++ b/day03/input @@ -0,0 +1,300 @@ +shzsFcPssFhjFssBzdpRcNHNZrpdJdJVJZ +fwvMCntfCCbSbSbtDgDNrDtDtJHZVH +GbCwwbwwnGrLhBzjFFFsWPhL +PpCqRsqqmmtCwMJC +LHFrLLHDSNHlfWNhDzmjzzJlJzPJMvPJjQ +SGSWDNrhZhPDSWDZLgVVRgbRppgpGVnpnn +GRRjbVjmJZlgMRzzrN +FpDptHpfHfnpPTvDFTWpFPnPcMfNCClNrzcVcrMMzVsCZlsZ +TFTQDnvLHPFDtVbLwbjdGjdwwJ +lhljvvhCjjzhjszzBPmnmGVZMGzG +FbTcTwbtSFdtcMPnTBPQVnnBZT +SFMpHDtNDSSbSdwppvgJWjJCJJgWgvlJHH +wzNCWpzCzJnWWpRRNdJrgHLhjfbLrHrchV +lBMStmPmmLQDPQZlshrdhgrfrcrrddgHgs +mvGDGQSvDPBlGMLGCvCWpNvpzRWFwqRw +stBttBThtDZqPWssPWZp +gRggwwggCGFSBBvPRpHZZrHdZLZq +ccFJGCNJmmGQzbTDhnQhBBnB +HJqMqtZbJMmJTqtLtVMqhpfphNdQfhfzzjhhlHll +rWSBrnwFwWCvwWCwBgPgCgzjQccQhhgRzcdQzjfcNfzR +CWBCwCvCvvwssWLMtJJGMdMZJsGV +nFwSFQwsNrrsssSwCrhrCNnfcCRgJRMJTJcMfRzMCMCRvW +DdbGdLZLttllWWvTzgzzgR +ZqGzPdLtDjBjDZGPZVmnhQFwqrFQhVFnss +sNNpCjttjsJjSpgpWjslCTnqqSVffrnhSfDhmhrhfm +dBwcGzbPBHbbwZcwJbcTTFDFFFDVrdVmFdnDqf +HzGcczQPHGwzPzGHRctWlvRgtvJlvNlJvRNj +cFNCFdvcCHvFBCZcwBfRSpttGhDmCghGShmSRt +QjLnTTzQVzTTnLMqhDgPhGDDSjGPrgSh +TTJGnJJlLQdNWZWJNBJZ +WHBpHcMDZHLDbHLtGCnmRmLNGmRqvsCC +PzTFzPPTJzrSbGsvnmqfsqfqRz +dJSQQdVFQgjTrjQPWcWHbBVcZVccZtWp +JDtnRtJzNzTTNlHc +rQPJFrLPGMMwrGPFwjFMVLjSTWHdWBTdSWdWZlcWTHlZ +MGFrCvLLwrwPFVVhvLMGGtnqfsmRJgDnqbRgfbqmfC +jnTtFjcSSvctJjznzvFmpqqPMqQDRVpRqPzqQzVQ +bhHBfrWpfHsfGNllRrRCPqDCqPqq +gsGZZpbWgbwHWGNgfZNjvLSTTjtnTgjSSSSJmL +RLQNdVNnRQdQHVVLGpspNqvtsqptqpTtsp +MlRWwbRBBFMFjCTFTTFDvj +WmlWBmBwwmrndnmLRHRQ +WnftJWlfnWSHGCjWWWSCFqFGBDqBwMcDmmMmGmqD +pTNhpTrPhhhRPzbhrppLhThLgqDmwccwqPBmMMqnFBcwwmBB +ZrhQTpzdjSVVtnvZ +jgtnJtBjtlTdJBZJVQBngQGDCGWpPGCcPWCbWdWMbcpP +wHstNNttSHPDmHcMCp +rrFFSvLLNfsFtNSqrtfrhsNjjVTBVgVvnTBvTQvjTgjVZz +qhZwlqFqFwlJwrDHqHcDvgcNzv +RCCTQmjCbQTBtRTbjJRDpBrgDHPPpPDvHccDPc +VmjVWstQJhlJlGVJ +GggpGwZmgvgJMvbJFQQDbDFbBbFCQDCW +rtrLzNLtNSPnNqDSQDcQCWlqBQ +VtzdRPtztLtVRtZmmMTRwCGZpMwp +vtvqjsCqtshfjcWFHWGjGFJj +zGrnzDDMpPcTHcSTVTJP +DbDwMbZRDrZdBBnMznZMGZDfwtlgQhsqCttClsqvsLfCff +JLzLtLsrzsQdvrWRwMHwcc +qPmCTzlPjljjFTZmWwcwwvHMMRWwHvMm +PFqZnVCqTCNjCzNgQsbGBLzLQQ +CBnppDHllVpPCBshBHpjDTSmZcSrfwvmJcDDTJfw +dFRLdLFQzNSTBTSNmBJv +FzFFzRMBFWtQlPlsjjPVMnhC +CVCfwnfdVvBdBbTNTT +LNzsHPNWsDjTZqDHqT +PtLgQsGQLSzWLstPgGWcgQLSNrpplffrnrNhpVCwlGVlrwMn +jPPVqPsHffzVnHzvSgMcCJGGMSVCll +pdbpDpBLNmNNppJgcvgSllGjDSGQ +hrbBwLpjLhhhNZLhNrhZZLHzfsztFzzsrtHfRFnFfRHf +tdjBdbmSfdHBdHHmZlWjFrnlWQlqvMFvFn +pDNDJhLhPVPLLLJphJLwNcwnQTcWWTqTrqMWTZvqMrlvFM +gpVLhNwpgZJCghCLDNwphgmsBdzHHHmSstmfggzdbR +TfMpfMBVftLMDBSjWDHgzHbgwLgHHvdzggzs +QJnZcFFnZRHdHjJvwgdg +RjjRRnmNmmZNjZqZnQcVffBrWqVTqrtffTSTVV +fZTdTVcVjrjdBzdTnGtgnnGSHHNFGn +thMWPtPMslmGnWnNnS +thvbMvQMRphhLCjrzBjZVdcQfC +MpmgZFgMGdrFrBCVnJ +JsbJlTTlvLQbVffRRvBBRVjd +LWlbhHlJhLTJmmGcMMHNmNgN +bhvmhPrbhqNqQRRGzQjVvvRL +wTwBZDBTwwggfnngcDfdsVVFQCdzCzDVRsFdQs +pngWMcgzMgpZWncnMpWNrbNHrNbmHhltWlbl +nPndBjLPscWSccBVGnScsSzMdhMppMthdMgpMgrzvhhp +CCFTFDwqZqCCJmhvpDzztVzDNztp +qQFJTbRVbmCfwTwfmnnssWBGnLnWlRLSGn +JRlJDSvLRRCdvmDSvdlbZNVBSWZGNgWsZGNgZBVs +QrjPMqMnLzzjLjFnNNgBpsgtgGGGVZ +hrjrFqjqFrQfMHPhQzDvvCLJdwwwmvbJbwDH +HDGrDDDpNsGQNdZQ +jpjgtgjSjpjllfZZtZsvNdtshqqq +cbgMfjclWTJcMwjWJfpfmVPLPBnVBHnmVbnmLBbD +rPrMZNsNrsvrwqvFFFdgQWNzLJJzRW +pStppStHmcmHpgVSllVcbVbWWDdLFhdbzdRRFhJFLLRF +cltCHmCBmtSlgjpllgGvTwPZPMfZvPsCMCwZvC +FRQQMdlFMDWRFQRQMQQDWdFbSSSVJSBbJSlBVVBnPJnzJL +rsftPfhsrgwznSzzHSLgJG +fhNsjrjhvsTTvdjcCRMRMRPcCW +tRtJttHFrjtDQHHBQMMBgMBSghhZQb +vqWPLpLvqrmPdmqwvqfmPhNBBBlSnbwbgnlnlhNSZZ +pGpdfzLLspddmqsqPvfvvPpGTVcJJCDRjHrccRtDjcRDFD +GJMHCdTMWJRhSTlhhSPllt +fVvqpfBFrqvqNzzgVDFrpDPmSVtQSlSmhjwltlRtmVhn +pzpBNDBzfDrsNsDRJJRdCssMLdLZWZ +hFfvWWvdpCwwcwFhphpcZCMmllHLfmbQlbrQLBJmGgQrQm +nVSNGjGzzSVNTsjzSJrbSrHBSHlrrmQHJB +PttTNsTRVnNjNqRnzRzRWCCCcpMCWGPMwwFZvFwW +DvZbFnDDsqDBwwRQgNBm +HhWpWWRMWChlChdHLlGlGtQtggSNPSSpgPmNgPJQtw +CMlWGMhhCVHlLCdHTHdrGHdbzjVqnzcvqqjRjFbbzbFFqR +ZZgCNqqBmjZsNgZCqJgNBdrLFHbBrWlPdHWFbPnHPW +TVwTDfzDwSDzmcSTcrzdbllnHPHdFlLzbF +tvDQwVtVvDVmtRsNMgRpJg +BBpDCpNJnmnpnDDmDGGmtTzqHcGTvTTjTbGjHLVcLb +swNNhPwwHzTVwwHw +rPRlPRhSQmmBDpnNfl +pbRhffPzcPDmfcNTpVBLpBjMGBGjZLLg +ssrCsqrszgJjZMqZLQ +SzCwnsllCrssvdrvwzPmDmPPbFRbSThPTPDD +QWLfcfczQQpcDTpLPfdZRRvRRVqbFWvZbvtqvv +NsGGJBhCmNdZVqsbdssZ +rMwwwBBJMrdzPfQMpzMnLQ +rdtCQhrCtQQprtTWQCHFjPgGBPdFPgvBqRRPqB +lsVsSnVSbLmmgBcgTLTFGgvq +wTTDTszsbzMDppJrJhDQ +ZlmsGLBVCBBZFCFFHqcHVvQhqVQSSHpH +dbbTRMrRwwzDfrTbFtMvcptvHFQQpqtc +gdJTDWgfwDwTwmgmNPnNsgFBlZ +PWhWhGFzzzrLdHCPccbJQJcHPD +NRpVTpTgRWVlHJNHMcHQMb +pSRSpVSZWRSTZjgTRTWnFLdZLrrndhdzZvtvzn +LgctLgVBVLhlPjqRhBLVcVlhbDDcGnNGfwCrbNDnrGbGCJNw +HmppHMWWmQmMqZZHWQrDDfDCffJrDGJrCb +qpWZsZZZMZWTLPhTRgTtThRP +hfhQfFQWzBfhfTQdmzdLDtDjtvHLjt +qsgpcqMNRmgpqsCwpCmZDvjwvdddHZHvZDtrrd +SgmNmqScbTSJbhJQ +dvMTQvTnZJsrQdbbSvMVZMblDwlflfDGgwwHcfGjPfjjrG +FqBLpBpFpFzRzqNFmgjGlDRHcwPPGwgcgs +tLNtWshsLLqWMJhTQVVbhvJd +bgZLMZgzbbLCcPCbMZbcNMgBqSTqSWVtSzvvTTBTqBvRBW +FhQpJQnGrlhGlrnTqRtTRJqSwDwtVR +FqlnnFnqFHnGHHdNZdbZbCNMdPLMPb +HHFnbftcfnfbbTbTnHTNVZZzJlPQlFrFzVJFZsdr +mvpGCBgwqCvLCqvMQWWzsQQWlPzwzsrV +hpGSGgqSvqbHcnhfVfct +lGVrnHsGcnVHzscrlGjHcrHqqWPlJCPJClTLLqCSPLPdqS +fRbwbtMQZtMMRFMSqfJTTWCTJPJCmd +ggdvtvdbVVGnpDGg +BnBjTcbnvhjjlMnNJJfnDnQDGdNDfP +qwFqVSWwqLpWFmFVCSqFpDDCJNJRQTRfRDGPfdfDQN +zwHwWVVWWFSqqwWTLqzzztHMvBhlcghblMlcttMllh +PFFNPNPmlFllbctNLmcjBstrsVrQHJSSHHSnnB +fddfDhdwGhTWWTDMwMggssjsjndsBsjsnSrVqSVV +MCvvTWvRMwCvGPpzCcmbplpCVC +thTqlPPTNbGNhGdqRRhRrNtFWnDnvvFZDpnFvfQDZtvWvv +HcMzVcVVcHrgHzcMcmmgfQvFQnMjnWDjfnvjQFfQ +VSmHJLHBJrTrJTlT +NjnsHjLLjNRddNdBFBSR +ftsbqfDcDqsrDtqsfSVBhJVFJgdBRVFS +wvDqwtDlsDDczjzjHvLzLQQM +qDwstwDtRfpJfVhBVZBMvnlRvv +zSFzQHFWdgZBVTZhTzrp +NHdggjGjWHQFPWHNPPbpJfPDtCwCtqDqJfbt +pvnbqHvnTvlCCpjsBsMGBGWWPp +RJSJhJCRVJmJwScrhSJdfwFsBGhZBjhGFFFFGgFPGhZW +cdRrdmwtfcdSmLtcSCQlvQNqQTlqqvtTlv +rnSlSrgWjVGpTTRhSffpRd +HtgHPsNNgNHszPcTBphMdhHhBcTc +JNNbZPZZsszNmtDbPgsmJlwFvWVnCwrlmWlnjnGvCC +WrVBVgVGGQCrSTTqvVjDqDjv +FmwRRwwRQhhLFMjFMzdqSSzS +RcJtbnnLtQWrGHcfrP +vpzssjmVjVZWNZzzQwtQwccpQhgtQCct +qDdfLMnMrrTbBLqTqltlTfbGQnghgRwggGgRnhhccCJJcG +MtdLfSSSddMftlrjjzsSWVSjFvjNvs +qTRPpRPzJglzGJzpGRHWHljwDtbwffjtbhjfwNfHmwwf +SZLVdsvrrdFdBcdZvsBdDCNtbmftNwfNbNhCNvtz +MLzzddLsQRppRlQGPq +PDDpdJgtpppGgttgdGdgJFzLjVcvVnnCTrVrRPTLvwnTTC +ZSbHBsSNlZcsfNnnvRrnVjrHwvCC +NmSmsfsfhmzcDmctJW +NbrLfrrLqpqWQHtBzbFttJgcgB +CmwjPPjjjShPvljwvwwjPBFttBtcHzFJcHTRHJRRmT +CCljjDGhvPCVdVSCdPvrrNfnnQsGqMpqqMqnFW +bdPdbcDZlddsZbHjrrgrmZmCZhCGjv +BffLfLVFVMMBRfwMpfzhFGFhGWvWvrhNvvNj +RMBpRSnffBJjSbJqdPHsDcbqtl +BgwGwDDZttDDTNND +WzNNnFRWFtTFlFsh +WJjPpPqqzWRbrqnNqvVvgvvdcBwgdrVBZG +FFbMVMFPvJppgvcvrZMjHlCJWHmHHBlqhCmqChCl +RGQVdVVLnLsQnQnnqWBlBmDRBDWWlhBD +SftLzQndGfVgFfjvvM +npvLlFLTWWqdLnJCmBmmpjQjjmjB +tfgDwzwVVVVtgtrsJtrbjSPQjQmjNBCNBNhPHDHC +ggVzVtMRgzMrvJLqFnnRnnRT +gZFZssWgNZTDwHDWzsFwWDQMMpqqpBPMjFtMPSQFqqqM +vrmvhdnVvQpftStnMN +JCdLddhhdJdcCdrrmCGhlgNsWDWDwWsgwHgHLZHW +vSsSGjSPvjvRSGpFprFbqFpppRfp +ZdmlndtBZbwrwfpWFn +JmdHdBBHtgllZldBhJZldLLBjPVQTfvGPNzQQSjjzPgTGNTs +TjTjBjVrTsLRRrMBsMMgzLqGGqgQHQdCQGgpgd +nbZcmNnPNcbNftvhlhZpgQgCqdSpgCHCqPFzSH +WfcNvtmmNmQlvNcbsWWjMwMVMRDVMDJM +hHHnfZSwHDgHcfclSGSnvrnvBCvWWntvzvzbWWVq +dTJTmspFTsFdRRLvtvLzvvVqtPVtrb +VFMNFpRJNTppTpsJVRcMGgfGfgZwghgGfcGh +lLGvwsMJLCMVnTrCrVdHRd +tbzqtDNNBpNWBtqzfRrFFnrVTTdrQVSVGp +tztfzmfzzPDzgWNNBbhGMlJLsvhJJjGJhGmM +rHrVJQVQVJLggDQQLbTvdCCSTdWLLLbCbS +pNtnwPthmZGRpmPFtqbMSzqffFSdTvbSzW +GpvvshwtmwsZDljjssHjVBVj +SmhJdtJhhzQSrzVhtQbtBRNfnFNSnDNGRfFGGMgR +lHwqPjqwTjLHCWLvPpvNrNMvnNGNfNGNBffGRN +lCrPTrwpPZWlqPlqpWWqZjsmJzbzVtVhhdsJcQdddZVJ +QqpCWHdQdVQlWcQCqcfRjnZZZPDnSPqPhhqZ +tmmzgWGgwJwwStSZZDRnZssR +GbFbLLvgmMMwGgmLCrppQrWVlWrFTHHd +qdqCgSVdVSVqfwsdZhpJspZsph +RjZBbmRlrlmmJwLNNNhLpwhB +vZlRrtTZCzCMfSPT +JBjhCNwjrlJlHJJRsscZrTcvLLgTsLPP +dDztmntCSgbLgqTzgc +fGVWnSMFtVGMNNNQllBjWHJC +dSDhVVdVZtnSgHQGThQvFNQQqF +LcfLRpMpcBpbrJfsbsscBNWRNPRGHvqPdTGPGqPWFH +spmrCcrdJJpLLmcmLLLDlzSzCCjVwZVtgnSZzn +ZJtgPTHtZPZQGbtNzzprVWWVrbrpCD +BRlfcRmBhSMVBqSVfBvNWrDrjWCjjzprCDCl +LfMRSmfqfSLcnnMqVSfccnhZwJFHZFTGZQGFLggwZTZGPJ +BChWddRRRcfmDbfhDP +MgpMFFsvMfGwvLgPjQPzPPmDcztDtw +NFgJpqvpLgqFnWWVNSfnNSCR +zMMMRmMfJpfhpzQJLMVtjtjPntgBtlZlVgJP +SdNbZvZbvbHTNbZbSWTdrTVBglBDlWBjDPDgntPqBDPt +rrNcrFwNdSrfzwMzZMLQQs +JPmCSfHTGJdTCbHgpgqLgRhghhffhg +ZWSSFVSVFQghQvwpphgh +lsDtZjVMMSdCNdbGCbjb +PBQPvDvVVRvQDqLDzJTlzwjz +tGcZTcdgGcncdrFrsTjzJSJqJqqwHSzzSZwq +CgtgdFgcFCMnMgsGFGGQWPQpQTCBvbNpNVVWVT +FHVFWMHMgVhnLWWMpnppfcdZNcPplnfn +RSvSCBSqGgDRjqCpPlPpppTpPjlcNP +zRzsGgJDqJwLVWVFwM +ThhWhNthVWTWqbWbFWbTdBtWSdMlHSlGlCGCdsCMClmnSlMn +DPPpvvfDHfLgDHvzpvPDsssMsmmzsMcClScMMcGG +rgPLHHJJHgZfvvZQQZfrpfFqBBwFBTNTBNBwtthQwVqt +JJgSWDSmSDQCFrhbRLSwLS +VznqzVNsMsZLdqslbRChtbHdHRrwHb +LVfNLMsLTmWDpBpf +cbTsnNpcnnchllFQlMRgJhRP +WddmdMVSBMWSBWjwCJVCPRwPFCQRRC +DWSSfjdSrTpDnHHMbZ +fgsVqqwQQtHhCrDfJH +pvbnBZWBbvWbTdthrJbDmqrmHq +TvZSNSNNSvFMBpqpnLnTBZBFGQwlQFggcFzcVGRlswsRll +zfMcQHzPtRNvlllc +BLnMhbZMLJLNNVtCdNgZgt +BJGFpqMBhBLLMqnwBhbrbhLssjFzssjfDzsmFmjmQFQPjT +JPBJPnpBFrqBJHtjlCjHJcCthM +wQZggQWQGfZFVmmGfDRjlvvNcvlNDhcNttlctt +SfmWfwVFwVGZWQVGSTdTbBpTPSqBbLnnrn +RJqBRJbqpqqJGvqHMmcfczfcjvHQfm +llgVnSWSlsssTnlWjhTcsZMcZcZMZMcccMNmcH +TnFhhllnWCnVCTllLnhhVSrbDDPrdpjRRqjBPRBBpbFJ +mRwRRNDjNTqwDNjNnNRTsQLcQWpQWZJLlLpQWs +PMFGCSzzgbBVzCGShVQZcgWsQLLftttQtlZZ +SlGVldCGGbBPMhPCVSBrNNdjRqjDrNmDnmrRwN +mqGGqGHnqGBCMrnGCbbbLgTTFFNNghHNTj +SdRfcsDPPcDdRzWPWltSlscwTSbShhgpQhgbFLbTQFjwhN +DPWWZzzztsDDtfzlscsPdcWZnVMNVqqGJnBrVqCrMrVvZnBJ +ZgglFCrrrlrWCJswHmwRVmFSwSsP +zhzqBLcjjnpzMzjhTtcqnVGbwssVRmqbHNPbwPsVNH +ftBjzLtptRWdvZlQQZQf +nGpsMncVRMGSnfsBllZdppwrTljZrQ +gcgHmtbCthHWhwBFBWZBlWlWrd +bCDDqHhcqbbtqcqtvJMzsGRsvVfPsfnzJV +TclPvSGZsPZRjhjWDgjp +JtnwHFtJqtwfQfgWgRWhdhjtgdRM +JBwnHwgFFqVJrsGmPvNTPsVvSN +ZJnfZNnDNZJLzNntDtDNNzNWTVBPrrvRRGdBcVRfPPcvfdMr +CFgjFmggQSQQmSggVMMvRdTvBVRjrdrc +mbsqQFqFgwwmgmSbwQWWLDWzpLcLnzZzLbLL +PnwSFSLSTwbbHdtstW +RrDZVVfJNZCmDCfVDVlblZHbddtHScbWbMjt +NmzqhzCCqmzffhCCqrhhLLnPvpnTPPgpGTTBSL +ShhfLSDDFMPQddpMrDgNbjzffqqqzgcjbqZR +sCstmwJwVBtmTltVmTVbRbcbcRvqvrZvBRvZbR +VwCnwnVrrrWShWPHHDdQFL +pbpDpWjZMmFCmmmb +jTjtJLJgJncCFmnJFC +LvhvhTQhBSdRNtLNsSszlGrHSGjZDlGf +JrhvTNJJhhCrtVtcrNLwDBSBwqzDwQVbBLQS +RnCgHmHHGMdPsGMfDlDqlSQbQnQQDbzD +RdPMPsmWHmjfMffPcCWrptcprpFTFrFp diff --git a/day03/solution.rb b/day03/solution.rb new file mode 100755 index 0000000..ad0dfc9 --- /dev/null +++ b/day03/solution.rb @@ -0,0 +1,25 @@ +#!/bin/env ruby +require 'pry' + +def item_priority(item) + adjust = (item == item.upcase ? 38 : 96) + item.ord - adjust +end + +sacks = File.readlines('./input').map(&:strip).map { |sack| sack.chars.each_slice(sack.size / 2).map(&:join) } +items = sacks.map { |comp1, comp2| [comp1.chars.uniq, comp2.chars.uniq].flatten.sort.join.scan(/(.)\1/).flatten[0] } +items.map! { |item| item_priority(item) } + +puts "Part 1 Solution: #{items.sum}" + +## Part2 + +elves = sacks.map(&:join).each_slice(3).to_a +elves.map! do |group| + group.map { |item| item.chars.uniq.join }.join.chars.sort.join.scan(/(.)\1\1/).flatten[0] +end +elves.map! { |item| item_priority(item) } + +puts "Part 2 Solution: #{elves.sum}" + +#binding.pry