diff --git a/03/input b/03/input new file mode 100644 index 0000000..4d8bedb --- /dev/null +++ b/03/input @@ -0,0 +1,300 @@ +fzmmmfwDWFzlQQqjCQjDGnqq +tJHJvLJVVttNsvTtTvgHHSVwCsQRQQZCZZMqQMQBnqBMQs +LgThNJhNSgTJVgvgtghPhbpfWzfbwfPmpprb +lDLnSnLZRjmWrlhrFF +PffQJNqJbPZbpmjrrCVNFmCh +qzbcbqfMfZMTfQTqqzzTPPLMHgBBBtHRStvgHRDBnSRL +WPZfJlZZCMwwZPWCwWzVHQhsshVSsfNQHdvQNN +FLGDGGnGdVjQQQDQ +ccFFbggLnRcLFRtFBmnJzdZZzZBMpwJlZMppMp +RZsnCZssCnDccJCnfcQfHTdzMzhdLdMTqdRqpRLwqq +tNrGNrrvGhTThQqw +rrFStPgrFWWgvmPgQjtmNtmJcfJcsJsZblDZfbfHDFHnfl +RdTfgbbPbJWDDqRvsDsmVG +NSQZLQZHpFGLqnLszrJm +ZMSNMHhNZMMSQwhQJWPBJCbhbcgtgfcJ +qZfqPvLnnZGpGpCJlvsMsMlHJJHB +mTWFFFTTtVSJMzzjWgSH +RbVdtdFtcrmbRQDDVHDQTbDNwLPLfnqZnhZhQnNwfNqnnn +nhHfSGHGThhZjnhrrSnsSczdzlfzzdQQVzRNFNcFdl +JJvCDvmCbtvpvbMmDvLbCJpmqdVVVcMcNGzRcNFcRRzRclQd +vwDCwtLmwLBDJmCHHjHHWGZHBnsnnj +QWTMqZhThbTbLwtGBrQfQQNr +jdzSSccVPPcgcLrDBtDVwCfNNC +vcBgcmssccplTnnTqsMhWW +FlcwZhBhGZhFJnGtZZFwlGsWRLHdWqMzPjWRLTLJHHjdWq +vfmrmbpfpMfzjHjfdM +VCSmVpmrNDMZhSMcsFnh +nHqQVtVZGGwwwnSF +fMBBBWCsCfMMbWfbsGmGzFjQGQFCPhFQhF +fbcsWpJRsWlcNVLtqtLLQcZQ +rgNJdfNJpgpJVMMVfmfVJgCtCTqqqzwTqrBsTswcCCss +lFLHGWLvHQFhnQFhbFnbHWWPBtwqzBPTcsPTswZCPBGCTC +QQtbRtLhtjgdfMRMDV +jTRhJpGhQPfPLsDhWh +wVVMbqbHwVwwMplHWfsfNmWcSLqcLmSs +lVCZlHnwHdRpRGvZTBGJ +csppppDDbGLbSqndFHHNdHsH +lVTlgWgjzCzfgvfggZWWlnHPPBHrSCqBmrSBrHHBnF +QFgvFfjTvZjzlvVTWljvTtMbLcccbRRMbwLMMLQLbw +tjhLjLJzpJpwjsqqfQqNrNfRnsRR +WvwGBPwWZZrnbBNrNnnC +PDvGVTgvTMGvZTGTPvWDZVJjljtLzhtmLlJjwJVJLm +WbzpSNswNWszwSLgSNMcrrBfPJJcfsHMrvMv +CFllhlGFDVFRCmhQDlDTBBcvgBCTcHPHrfrHTJ +qGRgVFhDDZmDnDqhgQFGqzwtzSjddwZbzwpLNzjpdS +FlpZrQSJJmQpSpqlQgbbRZCgGCZdDdbNdd +WswHfjfnhWPFDsFRDcbBbR +WjHvjjWTfTvHFjzvPnPtttVTTJVLtJSpmtlltp +tnjrnnnnhNlPBtbbcWpZScpjbZSz +wmsFqfqqqGHTLbzpLLbgzMcH +FGJqsmQGRVFwwQJschPdhPrBndBhtPhrQQ +dRdJRfTnCRNlJjPBDmBJsbBDzm +wSFWSgGVSLwpFhpLhQjzgPzbtDPDbPBsztrP +WMGvVMLLBCclNHHRlM +gfSffQBDBtZvwwpWDHcbwb +JnCmmJCRmztsVPJRFjFchcGGWFWcGcHFvGLvHF +VCPzJnsPVCjtPjdMsMdmVmMBfgTZBTMfSfZSSlfNNgSSfg +lwHJSVZHWWVwJQwbbVVtwWVVdpdPfRfgDLPZLTZLDLgRDTZL +hhBrBqRcnhsFFfddmdmmCmmppn +MNNBBRRshNHbtVMzQJMM +NBsSNtLNTtNsvlTBBRLgFSCbFmbHFCFhgcghSm +WJWWDdVzDZJjDJQcCDHmmhCnmHmHFm +zQVdQZQwqVQHjqzWWWdHpzMwGMBlGLLtTvRvRNsMwwNN +ZCztttSjGSqRZgRPDNQQNr +hLvmHshLmLcFwwhhwLqMVRRRJQQVNnRJMVRDNNRr +HFhTpFqqLcssmqmFftblBSjCjStjbGWBfj +crffjHDfrQfnfpLPgbgP +TmFvFCmFTFFCtNsmMsRvlRTpPbLGMnGSngPppShGpbdgGJ +vmslmwTNmtstzFsCvRFrHBrDZzcQnWqcDDHqQB +LQLPVLGdGrRPRhHgwMhllhhs +ZbSZTNqSZfNqNCtSSmTttbpSWMlzWlslpWHsWgJWhwJzBMlz +bqjqqFFjHqTTTZTmSNbfmdrFQnDdcvVDGQDvvVnQnr +mQdcdsSThlccSWhMgDnQnFtjQPtnjPNvtR +zzsGwzrrHGBfZJGrJpDtNHFjvNvDvVRvNRtV +wZBCGrbrszTbThcTcLcb +gJDDDDcPQgQfNFPhhZGDDcZZSLVtlCqzsMlzqpszlsVtFSql +bBrdwHTrHWTrTtzLlSMCCCprCq +dnBwRvmnbmBvTpbnbWbTjZPQJhhchmJcmcQPfmGNcJ +sjMGBLWGZjsLjJTBCCbvNrBCHC +mpcRfDSSdqDdlRqdwRvFrHFbrHJFJVvDVrTb +qvlgqwpcSQSfLjjhzgnMzsnP +VgmLHHNRNVLNhsNgRHLltjjbCWnCWZbldntW +GGMFPJqPwJGTvvCCdqdqlqCj +rGwGrMQzJQBjJwTVHgDQDHcsfhVhVg +pblwGBlFlWwwlgCSFwbLvQZFvzvZhzvmQTLLzJ +HfqccHzVDNqLmmPmPPQZ +MNtrVdDjHtrzGBdbGWCblw +NNhnnLdnnfhdhVjvThvqVvCj +tHtHBzBGWHBWGtPBSvvpGZVbSsTFjSqqVbscgjCjqqSC +HBtzJHzzpDZpzMWpGPtWHvZwQmNLlmQnmNdfMmNRmwmlwd +QzGqGwmbfTdPBgRRcgmMPC +NtNZhljrNjrSrtltWlCJCJJfcVVRcJcRgPjf +NlWSZZWsHhWWlprSSvZWHrWfQLLQbLGfQpQzzTFQbwzQdd +gcwcSnccnwLRRSzcBQRvZZdvtNtvRbQJQv +CqrCrrPsVstvbfDfbb +TPlPVhWFFMGMnMjbcT +gjjHGvcHgsgbSRQbRFWbjC +ttnBTNSSfwBLzplWPPdlLlMPlMCQ +TBZpDtmnnZNvhJDHggqqgS +zfqzzGwMbllcJFqm +NpHgpRZrRpSrSZLghlTjchNlNbhFmchb +RHLWHgLBggZpHpgHRZrLgZLQCMzCfDWGMCzMQQGvPmvvfC +bBWWlFFBBFdVMLfvsfjrtBvTrr +qZsgNZzcwfjZrfPf +gcnNNcDncsDGzggDnNRJnzHhmlMVSSbhVVVmMbbhVmMlGl +dNNRQszqRhPNfddWltvDltMMNlnncv +ZjZbpgpSpjpJgpCCpbFlTnSDTlzclDnMvnnMlT +GCJpjbgzJCpwZwrHZrgHsRBwBVRRsqdqPhLBQqsP +mnnVCcwGwnsVJntmfnBtBhTDzpzzpDWbDbsLLzpWDz +FcHQdZSRHbhZZWWhrW +dNljMlPPHdMPvRlHMRdjRRNBnwJfCVqwqqffCfCwtcBV +ZGtGzBBGjvdZvLWLcrPVcZcsNVNmVpcH +MnlgngCJMgJbhfDbCDPrHHVcNNrVpbVpVmmcVq +lSPhlClftSSBvdGS +jFhGqVCcPMMdGFqczBltzrtglrsrjBgB +wWgwvfDZvnpmnHwHTfNpDbtRWbzltRlSrRlbBSbbzt +fHJvJvvTwwJPhCccgQCM +BrrrBVgNppDVBbTgDvqWdWZqWqwNmNNHvH +sHsHnHlcJjFwMMFFvGdPvv +HllCQCJQJsnjgtVTbBgpQrSr +JgLPLwbhBrCbLBCJPFFlPFZRTNTZFRqlRq +pmffSWvDcfSfGmvsNHZsTRsWllssbT +vDddMmScdStfzGcpzzwhJwJwnCbLwwLLCwht +sWSSvmsZsdZPWdLPRRsmSrrnlnvJjfnggfrgtfjnjr +VWWWBhhHBBHtljMMfJHrrt +WWqpWVqQqLNGRNZP +QHjjGVBQpffpjqppQsSsQHWJcVVgJFWcFTWgNLggFPNc +bzzmbzzZnZztFTNJWRqmqcgJ +zDZlqMtbwhCBBfppvHDGvf +BNTdfWJmzHNHHzzTdLCfCfCswQjRjljVsh +FbGnrFnrPGSSvGPFZFFPGClLQpjQRwLjLplQhRlsrQ +GbnvvgvPFwbwcnZMMGSFvFHdNHmTBNJNmmmDTJDBmWcT +rBhRPrjJrRtTHtWHWcjc +SDdGqmhdFSqblLGlHHfHWl +DSSmFqhsFqFdzqFgwsVnvBQPPQPQVrnRsJMR +NZcgQdmSwZgdPFPVNFPqqVVF +hlhhjMhGjLhLDGDhCBJDCrRFRrqqpLPfpfPRVPprPm +MlhjlMDDJTCmZddQQSTcTT +zRddrwzwNhrzrtCLtLfsLrqflC +MbSDZvVwGZpJwvHvBVfsqtjqlsPPfsqsfclb +vJpvJvZTVgTdTgwdTn +SZMsTTScDMqwtDDJ +VWrbzFvnrvFQQtnhzdPFmfwGfqmGPfDwmfPJ +rrLbrnVrLvVQpLHSHjsTBBjZBt +bSrpbWpPpfzPRWrWvhJgddrcccgFnFss +ljGNTCtMNLGQjNMjQMGtZJDDggcldcFcvhdFddnhhF +vNCmQMjmvGzpRPPzzmfw +BrbdcqcdSZRLQltNDqFpCpHH +jnTzWsWjWjwTQnzMvFlCzNDhNhDCFGpHpH +wmmvjVQMvwmsQMMwnsTPgVfgJcLcgfSbbBdBbJSdbSBS +bJFbMdcmgFSFgmggJFcGwjRdzPWZWGDDGGRwGD +hrttffCVVCTVlrttQwzRzwWTqRGDGwjTvG +rfLChHhlpHrfHlnWlpWCpQVcMSmMmSJMmggbmMSMLFNSSs +JRMBJfMJQJTcNNdD +LHsLmspghmmpdwwwcwRCpPTT +ttLLlRSlqjrMqFtZ +VjtHVHtvVqttCdnGpHtplcshglNgprrlMhrcNghw +WTWRvRWFZQLWDvDWzwscNfcflcshlshFlw +WQmBQWPTVGnJPnvn +cpRwjcQwVfQzQPQl +BZgGDBZBsgWBDDJzlhfhJVmzVfmThm +FqWDDGrGDFNqFrDZFnplNHnSwtnSRwRplN +VMLVRhRLRfhfgGdfVdZWRdTHNqHCDTrSJNBBBgJNQgND +swlcpsFPcPwzpSlTTDrNrQPQqQBBrH +zsppFscsscmbzsFsbsZbMfRZdVdVMbVSWhLG +NjcjHFjrHHFpjGtVtGWVZW +fwPlsJqdndPnwJfQdfllwNtWGdtWMMbtbmbGWbMWGN +CPlwnCwnwqClTJThTDzzFcHNSShrRh +llqlsNsPNTpDNTDNNf +cnvcWFjSrMSFnvWHTzTggHCcllzLpg +wjJSSrFrrMMJGrFFFGjGvJnFswsRwRdmBdZbbqqsPtQqPZls +jlclpqjcRqpjzjnVPgTmBmjCrC +vGvsFNGGMZNvdGshQNJvJgbVMrnbrHVBgBTTbBBPBT +SvJNGhvvvFdfQvFshSpqPqLzRRPctRcLWwlf +LWSSqLVBbNqqLrWHLSHzWbbqQfFgZtmtJCQZzgtCFCQCCnJQ +PlldGDGdjGsMPhssjPmQZFJQQZQghChZQJgv +jwMcMpsPRRdsRjPwNpTWBLSBqVqTNJWT +hWnMWgTffWFbMLfHnFMNfHgjtBSNRzjBBSzSBBcStdzBtz +VGrVCGcVJswvPqJQjtQppBzpSwdjpt +ZqqsCrmmsfmWcHhngg +vnNnssMcZnlnlMFMsnFcZMGqJCbLbNLNqgLbgLNTCpLgwC +hmjzBzHmRSfBfmqgQwpQQJbQJmwT +WVVtthRtRdsdqtddZd +LhZBLfZpmcsFpFzm +vTRRwTRRPnCTwlFgmsczzLmgLvFs +HVVVNCPPHTTtClRVNSnwLTHSQHBMMHrHWBhrQbJhWMMbZbJZ +WPTnnDPjvPlChhJPcgCC +DRQdBqsDQHQLHsBSmVLBcbwgCClbgCGlJghgmhgw +dHMHQDVVRBsMWTNfWfzWzf +PlgFPFFJGgJhhMGZwGbpBtQjjjStBttptlSb +TTcDzmHvdvnDDzdTVnTDmSspWspQLpWmSsmqppsWtb +CHVdcHvdbrwJCMPRGJwP +BtBfcPfBhBGDhwHMlCmrNSCM +dQdzLFTQnRnQVvgLnNlrCCpFrJCNrHJrwm +zRVLZQRRvQGbwtWfbGZb +PPcWcwMmCwwgnphCCLpjHp +TtZsJTzzJSSSZJsdJtTrpblhRlHHHMngpLnnjHps +ZDrvdFZtJqtStrZfMcGDVwfwffmWmP +wCwSzzsHChhMVMhCPsSVLFWcdcWGPccRdjFdJjDR +wBTTlBfgTlfpQQltmfgGGctRdGJJJFDJDDWdDt +TppwnmlnQQqnlpqlmmwqlpphHqrVrZZSzshzShqzsrZVqs +CCqCTgmdMCCCMMsWgqqnTCmJDGJcGGJfrGNGrSrrQpwFFSwG +vZbDZvhDbzHzwNzwNGFNpNGc +ZjBRVHPRtRLjLMWsCDlmgMdBmW +MMsstRChwbChqRBqDrJNpNDsHdlNlJdr +vLmPLfGGGGcTmFfTSgvPCvpZQlHHZpdrFJplQdZHQdHH +GgPLmvGVSPfmfcfgBtjwCRwwjBbtVWbh +LPPgFPccLPRswfsHfJgDsH +bpbpTnCCrnmCtjBnTfDshHDwQVTwsDhQ +BbrjnjnWCbBWZbPWzLDzDWdNlMWS +pnncvLbcppBHgBRpddGd +MtJfjVMtMmFJDjWSjVWzGdGgNQRBzBGNBMCGNB +ZdDdsJFdDmtJmLTbwcvcbcnwZv +FGsfFdNdhfbDdbhbLMhbNNTPJVCCZTLJnCRVJLPCRTVR +qHjsczptHpmgHZBBVVTrrPzrBP +lmpSlcglQtqWtcWjpQQfWsGDMhGFwdbGGNWhDv +hNNNjMFMwthjFfvZBjFFvNSdnzSGGdGmHzHgGWSfHWSR +ppJpcCVslpQJpJJDWHCHmRHHWWGSDn +QbsrJQTQJVJNMNnZTZNZvZ +NmRNLtGNmfcRrtDtrJCnWHJD +blSzzSBssgfslWCCCJWFWHrsZF +zTzbPBhMlTVSzMlMldlgMvvvvMLGcQRmqLLfvRwQ +nnZsfsPLLfZfHLWdsZWZHdmcSpTcGmNScJTRGsTJmNcF +gqVqDMgBlDbwwCqVbQFpTNFcTRSJNSrqqTSm +jlMVMjljQBjMwhLfWWzhhfhZtmLH +bfHwMvzwFBNpRjfZ +nddcVJpGVpGqPVBBFBmhBhmsNRJs +DWcPgPcPgnqCPlWWVWGMwbzwvQSSLbvgLpHHMz +NMVqtdPVHgVlrfVrpnjCwNjjpCpNNpCb +zhSvfWWzRfRLfvSpQjwbmmmvQvwwCD +LBRRTRcLJSgqqMJlVVft +GpgNzzSMGpGTrgzgMzJTrPgzjRwBdBlBbLRBjdBwVbLRVbSR +sQWCfQcflhtQQcWCmsmlsbLnRdwqqBmmbBVbLVLwnB +fCtQWFWDZFCQhCctFDsftNpzPPzZJpgJJNTgNlPZgH +DqLtMSDLLttjdDSRdjZtdpdqVWFslFWrqWPqhwhfFwwCFw +CvTbNvvTJNGHnVJwPfwFFFwsrh +cQBzGBHnTQGgcNtdMMBpDBtCdtLL +QsNDfdDNQsSTtrQZQtJJZC +lLvRWMVMLzWbRjvVgVVGvmTtCrZBrTFFbmJCmsBCrr +lljvlgpMGgRpsjsRlGGsMdqDdpDqNqfhqqSdncpqdP +sVSJVmmtmsCCwschrbNMbcBs +ZgLLfqvzzqgfdqHQLnTLfQQFhFMrhbNGBwgGbMlNcFclwN +LTzqZrHHQvjLHnHdQTdTQvZQJjCpCJDPmCRRtCpStRRmVtmm +ccQVcVHwnnDqNqSWNnVvqwcgJblgRslgmdGlssmGbQdddb +rpFtPrzrMFZvZTLPpglhdssFshssJhsggG +pTtLtBMjZLfHvNWqcBHf +PZnSjnnsVfjfLLff +crvccpglrtHfNbzbHLzmGN +lptTLFFpdgvttFWltTclplDvhJMSMPhJPhChShPBZBMJhPMT +mPSPdnhznPdhSmPGchJdFDtBhghgFgWpFBQhTBMg +rHNNvbqHHHwZwMGMWtgtQMZQFQ +wRqqRffvvNHwrHqrNqLvCrqvmPnzdsGJsSsSdSsLPVVPnjsn +CzlngWpClJlzRJpDnpmzCndrhBcrhwcsBcLsNcsmLdQQ +qqSjqFGTFbPFSPTVjcBcBsDdQrwBVLrNcc +PtDDtZTvGDvFCMzZlRJCfWfJ +vtQDpvpvVvvcSFrrljZZsVjFrV +RqcTTRddRrlsjZrwrT +zmbdRdMmMgbPDcGhGmnDpcQn +gZqJRZRZdltFVGZQDZwV +MCMSRHCMRHBBVtVCGwDCFGtD +jcHsTMBNSSrBMjmMrcTMpRqpJggllnprqzRPzdlP +mWSWHdmHWZWjBnGs +TvchwtTfcTvhzwVGNtdrbjnnBnsnNr +JTdwghvMzwfdcMVJqPmQFRPpCDJRJFFC +DsHDCrszvvhHsshvsrrsgwdPpdLFgWLpbRpWFfMjWjWF +BVJPJmPmGZVnfbVfMWpdLMWb +cNGtnttqmJHNvNzDPPHN +gpjmMQMrfmMntCSCNmSNCm +vDRqphDhzHSdtqdCNH +LFLLcbJRJLppFQlpMFfF +SnSdvchzZZczndNvwcwnQrGfqrTTfhhTDgRGGLQQ +lVWHWMmWmttsFBMLLqLTRRRqqDBGTf +bsFPbFFssmFjWRmjVFjHbczvpZCwvwZccndpvzpzCP +jzngbHrlHQllcbcTCtHGWtftGCHqWC +JJgmsJRwFqChLGtqGs +SmJmSmDdSPRwSMppJdPPwVvvzNQvjrNMNjMZZrQgZNgQ +PvPlPcZPZFllzNzCDdhhdHjrpHNjHBHB +VmgWtJWrqbQmqGDBdGQjjhBGdG +tmbgggbgnMWnStttgnfnTzrCfPvFnccnPclT +RQQbdSRdpprQSNVqqqfrffjvnjnJnhnVvHhBhVjJtjJz +WGgGgLmLgGZMPDBhDJDHjMBFnD +WPPwPGwlLgZwmWlslCLRNbrsTrfRrNNQqsspBT +dNNpHpchLppdccTNtZZTRRPSSnwPPSbSnhhrhnSJ +qfqsFsqffgQMznJrPznbMrrB +vglfqQCgDgFjglCDCjLZpTHNPHttdcZVVN +FWtDHDStZwrFCDwrgWPFDsWQJZzlMdpZzlNpNjdjjQzNzj +BqnVGVcbTmGfHLGVzvpQpvJvQlflMdJp +ThRRchnHqLTGbFCCCrrSSFhFCs +wJrwdZPnJwqPbJPCnjFZdvHtMvsLsTsDtHsHDDqvpH +RWzNRWjRfgjNMMLvcMcLNt +WGGRQzzRmRmVQSgwrwJjjCbJhnbShJ +cjngcvcwbMwWnbMWjbgvnsjPftsqfthqsBtsJJJJBt +HrGFmDDzpmLTHpDsPfsBNBPfzZNPqN +DDVmDplDrpGSVSTTHGlpLnPwCRnWcvWCdPbbMvcVdW +BVRlBfPBffWswVWQsfwBNNPMFMmmGFZGnWZGtztrzMZMnz +HqSJchHTHbTgHhGhvmRzFmnFtzRF +RJqHTpgDLJDSqLJJPNVjsfPwBVsVLlfN +NDrBlSmrFBlbbJllmtHHwhNNhZztqHVRzQ +CMTCGLcvvtfCdCcCvCnMTMcTzjHwVZVRLjRRjQjRHRwzwjVH +dfGdgGMGPggnvfvgbtDtlSJPDSFJPslJ \ No newline at end of file diff --git a/03/solution.py b/03/solution.py new file mode 100755 index 0000000..3999a13 --- /dev/null +++ b/03/solution.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python3 + +import sys + +S = G = 0 +for l in zip(*[iter(list(map(lambda c: c - ord('A') + 27 if c < ord('a') else c - ord('a') + 1, map(ord, x.strip()))) for x in sys.stdin)] * 3): + G += set.intersection(*map(set, l)).pop() + S += sum(set(x[:int(len(x) / 2)]).intersection(x[int(len(x) / 2):]).pop() for x in l) + +print(f"Silver: {S}\nGold: {G}")