diff --git a/3.py b/3.py new file mode 100644 index 0000000..6e71c74 --- /dev/null +++ b/3.py @@ -0,0 +1,8 @@ +with open("input3.txt") as f: + a = dict(zip(map(chr,(list(range(97,123))+list(range(65,91)))),range(1,53))) + s = 0 + for line in f.readlines(): + line = line.strip() + d, f = map(set,(line[:len(line)//2],line[len(line)//2:])) + s += a[(d&f).pop()] + print(s) \ No newline at end of file diff --git a/3pt2.py b/3pt2.py new file mode 100644 index 0000000..1370eac --- /dev/null +++ b/3pt2.py @@ -0,0 +1,11 @@ +with open("input3.txt") as f: + a = dict(zip(map(chr,(list(range(97,123))+list(range(65,91)))),range(1,53))) + s = 0 + h = [] + for line in f.readlines(): + h.append(set(line.strip())) + if len(h) < 3: + continue + s += a[(h[0]&h[1]&h[2]).pop()] + h = [] + print(s) \ No newline at end of file diff --git a/input3.txt b/input3.txt new file mode 100644 index 0000000..1496b62 --- /dev/null +++ b/input3.txt @@ -0,0 +1,300 @@ +MVWpzTTrTFNNLtssjV +hRJncnJCnhPCnBSbCQRhhQRPFHmsbHLzbLNHsjNNFmGGGsGF +lSBQJBBBBcnccnQvBnPQznfrgwlrTZfDwTfWqrrpgMpw +sRPgrzSgrSbfTrgspBPsDWWTmdnvdZWZwTmwvdmd +tVGpCGqCGjlHcNGVNHZDmnZMWdWMWCdZDvnZ +HqpQptLlclLGtlpcjHNhQqfRhrSBrrbfbrSRrsPfBSgg +JpjLbQbFPBjDBBJLWltglfBfhhlcctht +vNFmsdFsnmzGtWvgzhzc +rqwRCCqmCTqHCnqRNTNFsJVMQSjLRbbVVbjQVLbLSV +mLNNCNDwBwDnmCwnJwLRvdlqZclRccsgvcZndc +QWMtVWbpVlgHHcgMHs +VsTVWhThsVQWzjtQPpVWjWbpwJNCJDCzSNNCCCSfmfBCSGLL +NbSfHnwDvwwfHwwQsHbWPgrsZsZjRPLRgLWhWP +lmMlTGFzVmzqjGLLZWWGhrCh +qFclMprqmrvbcnwDQtNQ +tWQZFvvtWQWbqQQggZZLvpLrpzDrmGDmmDHPzPzHrfnHTG +NMlhlTMccTCVBlRNHzJnzDDmnJmnGGBf +NMMSSSSSlNVMdjdNSNNhFwTbvbLqjbtLwWQwZqgg +jPwcJwRmmhJpbhNJVgDbrHzzzQzzBQHg +tdZqlCnnnlvZCqlnlCSqZdFCHGDBgzsDzssBtHGLQtrHsssL +TZZFSdrdlZMFZRMwMPmNcwNmwm +nsdhzmDBGQWQPvJPjbbW +gCgBqCNpMHTwgwqMPRJJTtWjbFRJFJvP +ZlCwBrwgmzhGzDrd +sTBHfcnBTnqHRvqPgFFbLtrQTPLjjm +GWzpwSJSpbwbNNGJPQrrtrrrrgzLtjzm +NNSlCCdplWwplCwSndnssdZfqVbHvfqc +rrfHgqnlllRrDgrCbQfszMPtmzPQzFsFMQ +JJLGVGjcwVcPQNNNtRPmLM +WThVJJWJBdGwBpBTqDrSRCCggShqbSCb +TbCqzqzmbCffzDbHRddLbdRFRS +ZmvZJPjPwwWNZJGtWSDRRDFWSLhhhMVVWL +ZwplGwmptNjZnjvnGGPjJlZppTrTsCczfggBgfgfggCsBrqr +gMBBbfBbBMfnMsvRvWJhDsQW +ZZqHLzczjjsLzlpjqTprNJvhQpRvtRJJQrtQtJ +llZlzZZzPZZqsTZscHczfnSwSPSwwgSBwwSnPwnf +chMtcPPgQtthqgvczhMTcCSBLBlGpsFnBnnsGvLplSFG +bhRmJWDRmHSmFGBnGBps +jdDZWbrDdDbbdbDrRRWwRjZRVqztCzqtcThcTQtgqVMMVzjq +flNmNHgcZwTzRLzMLRPlzz +nntqBJtFbbCbBVCnBtFjJjhVhLzLvRLvgRRvPvpMpvpp +CgJWjJQDjgBtnGNGfcssNfcwNW +MrMpMrGBznjPMGCmCrrjdwndfJLQNfdLQNdNggdL +sJVcZqvhZtVqhDFFsDJslcdwgwvwQwwQNbbTbwfLLTgL +RDDRcsSsstJstVDDqctszzmRmGjpjBRHPmmGHGrj +tdplZtlrBGwTlLQQ +sfsPPvNhWLQBhGQG +zPVfzVbbMcscvVfzzNgcJHnJZgtrrndJqjJqndrL +nglLjRCCHLLCnNCLHQnFNQmmVMbVmwMwlMwMMMWwBTsT +cqtfcqZpzhSvvBfWwbvrbT +PPqpDSqcSJPdPhtPtqZcpPtGjFRFFFNLJFGRgjFbGRNbHn +gjtRSLMqLdSgLMCltTSDQcQQqhDcfcfrWDhWrr +GwFZCwNzFJsPmFFmZmPPNhvDDfDWWmpvQWWfVDQppW +swNGZbPBGwnCgBBlBljl +BsrDsnQGwFFQQtfNTBNSffBgBt +VJlhWVLlRppLQZTCbtZTttgJ +ppLqqRhQdRPhqPVhdPjhljqHFnGnzFrjFFDznHFHrmwwnH +CJMmmJLmlshCCdmzjHjPWztgdnjttt +GwZvGwrgTcFpzHWjnT +GbqrvrRwbrbGbwwZBbgfhmJMmsDJhNRfLChhCh +CfgfjCLCgfgFgBhBsccswQwtsQHvBBtc +SbSMGbnmDMGJWmRmDmvzwtcscWtQzsrPsvHc +DbJdNpJSnMSJmpSSNVqgqgTTFVQTFqdZLq +MBMCmlllPSSlmmPPjCMpPgggJcnZgntJsDvHsDZt +hrNzhrRNbrhbGRbfpVLRGNqqngvnttngJctgDZJGcZvHvZnc +LTTzVqppSmwdTmQW +mmlBQmLbsbmRnFnwlqqprF +dZScZSZSdHcNMDcJwLqRfppzpzfTpHfF +JLWJLJJJdMmGtgCWjQjt +PPMzpVDblwGVMMzDLLjrcrjdzjdTzLjd +RRcCJRcNQRBqtCFBRJJsZWBWrjLWLHZZWndBLWjh +qQQtttNqsqqtJRgqQfcpcgDcbggplGbfMp +QmmSTQPmLSmjpczMJtwPzg +BHHHdwdvDpllvctjZv +HdrDHNfrrBDGGBhBNfHNsLFqmbRQSwqmGTLnTbSF +gcMmgRQPqqPPsgjFSvctCHvHllSSHcvd +JTWfZwhTwzbWwTFTrZnTrDDlDSVtVHLVShtvSHvlHL +bWbWBfzTfwrWJNbTrnzfTwJFpmMQgqsFRsQGqRMggPmPBG +GqCWpGGLpmpWjbSDGjGGmwCzZlvMBTrCvsrlwwswCl +FPFHFVdJgQHJZnslrgvsTrwMlNgw +hQVchcdcZZpZqcDG +JbBRgBsRffgPPFQttQvQQMvG +dmNZgmZVtGTNtNGC +ZqqndLZnccqRbsrgpggsBc +DDvMVmTjwFWPBBTzBF +cqnggcbNNCqbQQqbZbpfQpqgRWlFhLRBhRzRPLFJhlJBfPLh +dpscpcncbbqcpMVSvSrPDMsrjr +hGCGZmVRRcMVsGMtmZWssmFLzbFblnnzfmqbfnzNNb +wjrSPBJdSjjDrggpSJpdrSnlFNlzLTnqNLqqpbqqfMln +dMwPBHPPJHDdvrBBhshWCGcsQRcHRZGV +vdHwhqdtLdVnHBZbFBFzbBPS +TmNCLNDpWfCNmpCgTWNTDMMZlzSggBMzlZlMBlBbZZ +NQfWcscDNQrhqvGLrdhVjh +lZLqzzqvgrCRcQcCLD +HSVVwNTJzwVNTDQrRrrdrBwdhd +TpNTzsfSTVsSpHVppzFpgvvlqZWZPMvMjPPGGsgP +BCMLshLdLDDCgwFRwHHqqRqRWd +QnSqQlGSfpQzTQJNTPNwNPFRFcccHc +mfJJmztnQpGpvnSzGrsqgrhrBBhqjBrthL +BSlmzmlvdNnlQlQQJnJHRVFVFVVqMtqRMfSfCw +WBPsDPBBjfssFHMRRq +DLWpGhbPjbhZrhZDnBQgdNZmQNgmvdzg +WWvgBFgHWChBzgBFbjbtPtnPrsHlsRMrwRrMRR +SGfNpfdGfVpVSGGppSDdwRwclMlfPMwccsntPqPw +TVdpQDSpQZJpVpDQQFBbthvmWzmgvhbjzJ +VVCCbzqdbzhFHvbdhZFPmhCPSNRNGSrPJfTNRSGJfGwPST +LngtBnlcnDvLcTTRfTTwRtGNTG +DpnBjMpLlLDQWDgvpLvbqzmbjzVjVHqbFFqbFq +SbzMbNQQSDdmvqqzdSlWFpwZnvpFWWllpFww +CjLPTPjjLCPtBCLJjBLPLBTFsFFgfwwpZgplpgFnWWRl +nPncrBHGnmrbdmdmNN +FnlblGlTTbNVLVtRvQQvgqRQBCvgNr +DPMDMpMHmnzjPqDhQWvvQvhghq +zMMcddznsjFTldVGlFGT +cLSNGLhmRRVmlVCq +HvzbQBzBMQMpQDpCSlSVZRSCqV +QwWznWnTbQSMMJQHnvwbWjrhNhLFgsGNNrFLNnFNhd +dBrWNQWWcTNqqnNN +bPlmgRgRghlCVlbhwZccCZjZqvmqvmTTvGqmJTvqnGTGvLLJ +DCDZhjllcpDMrSQS +ddtNNTFTwRzGRGCwqnBMjlqMHMfqnB +hDpPsQLLSprhnHVhqhVfHM +QWLWDQZpgpWbQgfspGGRdcGcCcCcztTGZC +GGHFdGwFlswcFtnvTfjMjBFfNBjNBZ +JWmSJLPSRprWWPWVMMVQpZfBvvfQtj +RzPSPDbDDhbhPDLRhCgGHHccsqGCqqtHzG +dbSdptWddDMNtdFvttFclqMTZJlJTlMZqJTJTqjC +BzfwRzrwPzfzLNGmZZCZBTGBqqlH +hVNVQPNQQQVLPwhRrQwgWWvFdDsFWSbdWgdFSFDb +hhSnmhtZSFSqZBJSSqqmJJRHPPLgHtPcGGGcWGtvvHwgvG +fCMpfTQjTrzrzCQMsQdHGHvPGPwLppPRvWPLLc +MdTzCsCMzNzDCTjlmNhRmRnZBllRVh +RrFglccgBVVvFNvCvWlgmDbbDfQDtCdjjDbDwmZD +STnMqSLHJhHHnqLqtnBndbBdfQQZDtZD +GHJPTBsTSsMMSpSBHJFNlWzcvFlzsVzvzgsv +lplNdrVrVrWMMVcJfcDDzbqCCpDL +SSSgvBRSjggPgzvTTRHTvFnfJLbcLsCDLnCLDCcJBsJq +GmHjjRwvHSjHTRjrlZrNMzVMhVrmVW +gdtFtgStSbHCbHMPZrFLPLrVlrVZrP +hQnjMGfDqTvzvpBjVVjPRLRRjJ +QmsQmhvvMtssHtWw +RNjTGSCLJCGdRqMRFvMrfzMvzz +ZpcWcVDpWBmWQMZZpZDpwBcznrshtntvfvhfFtzmvnzvhf +WHHHcVWgQVCbCllbgMLN +ZjjdJHSdSzvcZFMhhhDqDHtthw +rNTlNqVWTmRPlshsDPDlph +WbTNGNmQBRQbRNQgNGmCLdvvjzcCSBqLcLnScL +bZwpSpBvSHCBqNzpdFffqQft +nWRnGRnVnljmlDnzdPfQfdcQPWWfNq +dmRDGMMlDmnVjgMlhBSwCbCgwHbBHhvv +NwqLgLBLgnwNNBGpgsQsddhhpQQg +JcztcZnzVtZvnVcJMTvTJtWtppsQHGdQhhHHQsPhWdPS +fJTJnMmvZvMvRDqFblNBNNjlBf +drZVzZzzNWWzwwTWTZrjWcLCqnRqNnLNLqCqnsPPRL +JhlBgvHBBLnwMBqDwC +GmGFSHmhJSGJwgFJmwJhJhgQVWVdbSWZQzZTrWtZzjzjTz +wPGRPpnzgwwGgLddFBFrnrnJdc +jCsVclQWmCTrJJddrdFs +lWjlCqfmlWccpGPPSgcf +hCThCzTdPcPhzqTzMfVfHrhMMmhVHgVM +lJSJNqwJsZBSsSBFsMprDmFmFDfDDHgHDf +JNGQsSSNGsbZZZSBwZLPtdLjttnqPCbtPbjC +vnlWNpbrNrpShhQDLRLB +MzCjPgffVTVgCJSRQhBdRdJS +VPHcfcBfTzVMTttMzMfgzMfHvrllWvlnvNvlmGwWNwwNmw +BwwsqPJqwBssLlFqLRCDzWwzDGRGGWfSRG +vTtmmthvpphpnNgNvvpvRrDCddDQrCQCzCDrCfnf +pppccNpTVVlqssHHVzBH +HWHphZWVWvMZNvpMtfJZgssffsjJgBlslJ +RLmrFFnGFrFFrrFCRwCrLNPwqfjSJjqJSJBbsqjbbsblfq +LnFLPPGLrGNRQPmndLzPmPmpcDcMHhcMhVHvczcpHHchcV +zwqqvNDVggwqVfNQRlszFBsCCJFtFlFPsz +MSrrGTZPGSSMSjPbTmtlHBBFrFHFsHlsJsct +MnmMPMSZZGSZWmSjnWgfqdgVQDvnqvRDggDV +SQCSBShsQnSsSJswsNpVppPPMVpGpnDVgg +WWjHvmtWZrwvtzzjTTRPrRRrMVNVVGgVGpGR +lTvWjWLfWwbJCQqBSlbB +cjPChhswrNVtMZJjVM +pfvTFvTzLBFndGTlJmVJZmNlCMGtCJ +nfvFTfpbBFdSFpTLswsWDbchwHCWHrbw +lNdNPLJJLHHHlpPJcvtVcsBBrrBvBqrVrC +wDTbwTQRZTMWsVWtmWhhTr +nzRMbSZtMQDnpzzJHLHNflHP +HrwwmwcRbmwcbrrTbwwcrTJWLlPshllhLccqLhnnlljhZhjZ +GMFMSNSpCBSFSdGpNFpBznLlzzhzshlGhhqPhGGL +nFFSCCSSfttBdddDQNDBQpSSrbrmWJwrHfJHWJrbVwWHrgVr +SdddNNCmpNNDhMswhsmbhvHM +frtzqqqFjgrWfgfqtthsnvRHZRRvFlhnvRZb +rtrgqzzrbWtqLGLLtBWzfGcTNCCVGpSNDppTJJVddNpPSG +WWJvJvBgpHSHScQRQSVQLzqL +ddZTlZGZVfQhZRLLMqsR +rPfwrGGrFjjNTGNCCVBggDJHmNDvbmmpmNJJ +bbGrJPRVPtfsVfFlMjBV +WQzhQQQNZQCWNnQDhzWdNjFZggmlHjjmMmMFjFHpMs +CzQCSWDTWhNhzWhTGJwtRRqTblwcclvP +HLDvZgZldDTnLLsswMpVLn +FNVQzQSPznCMmpBwCF +SqfJPfttqffjJPVlhvhZZtvdVDRZ +jVsLvHvvdrSjpJFsGzmnmltnml +nTNTRCTBTmmmFPMJ +CQnCggWQDgBrrSqHjDDfSS +ZpNlrZNcmctZbcZlmcmZhhpPvPHvwBMHJPMTMHBTFJvJ +zmdCnGzGRnLDjQnzPvMFVHMVMLTVwMJv +GGjqssqgzCnCzQsshcffmrbNrrNZtW +DNpTwhpLlWMDWNMhbJjGttJFHgDcjtjG +wqQrdCdqbFtCtJtJ +vffdrwfPrsmqVBBWRVlRRlTSTWSTlR +ZqTCTQQTFvsDSsBDvWBd +hfBLzRLtHHLDDWRRWWDNbd +pHhhnPzLfJcJhzHLzZjcmwCTqTQgwBqqwg +WJHgqgFqrVrqgqCHwsJHHVFZzppZFGGfTtpcfbdpzzpd +RvNMQlMBhwMdMfcpbM +LLRQNBDSSNSwmDDBQRBRBCHsgrgHLVnJVqLsJsnCPJ +BFhGsDsDsBtsPGtQDrrMdbdrffrffbJbRt +cVVqScVSWWvVWgVZjnrHJgLfdrLrnrLLLQ +WmvqNZzzzZSvVzqvcccSzSmqFGCDTGBPQGDhwCDhNDCwPBQp +RqTlHHTTrQqHlTqsrVDqHbrZFZwhpBhphZBFhZpDpLLLfB +nSzGCGdvzdGNPBQQBfhLZfFwFN +WPPPCJMtJSQMJQCCWMJslRrrRgrMRbRqVqqTRR +BMtfLsLZfTPmCtGWZrZqJNJqvpZdWr +bRwgHhhRhbbSRbjSglcgwHHJWPcJdPrnNWrnqnWVVqpdnq +bgjlSgDljHhjgwMPCLPFDMFPGGBC +zJWjczcWjSWghZgzgSSSZflTqwlfqTTbnQwhdTnMdl +NrGVCmNpHFPsrJFbFQMJbJdQTn +JvrtpHHmrCGJCJmNvNpVCsHVgzWgWDDcjjgjDRStWWDLSgzz +HzdFsBBVsfnTfsPmPtDcZqtMhDDz +wrjjRQLlwwwrJQLQbCrbwlJDSlcSDtPZmPSDclWDtcDqWh +RwgprLbNLrLbCCpRCrJLRLFfsGTNNZHBZnnBvvfffnvd +MlqqlWZclnPtZtDSSvwQQjgQpNQSRM +rLJTsBrsJBhshTNNwSQBWNvNgNSg +JbbbChCHsJzHzbWdGHThlFnnPqlPlGPPGncPtFlD +WcMVvwNNvjRcwTQwVcpNRcspPCFtbPztbCTFmtPtCJtbCzmz +grrgDhrnDLnLrdfdLZlLZhmCqzlCbtJlSSStFmttqsJJ +GHHDdgnLDDhrrrgZrZgLNVVVVcRNvcwjWvpWGcRs +qhGhPSJtGhGtJtvNjnJjnvmNQQmj +sRBFlbZsrdBRRGbVGBDwDMDQwQwMNDjjjVNV +CzCflffbBszdBCbdbrtLcfhhgHLGgPccLSPh +zShhHFzgJWFVFFHFHhRPNjwqPLPtLbtrbwVjjr +ssnvTmvCDfpCZTnsfCqwNLNPwbJqNJPwrjZw +vDvpmcnmnBDnsnJTJmQWMHMWzScFggRFRFSW +nnVHHPLrnpssLnrpLRnHtHrjJcCdzCjcDzMzdqwRdjdDcJ +WWTGQQzSGWlTmBbDJJjwMJjcvvlDjw +TGTWBTWmTbgzghZhgzBgpVNrZPPfntfNrVLNNnZP +TqhQnqqLnnqddttNqQWdtqQmppSSFFClRmzmFZFLSmSlFF +BcHjGclVPPBrVrcjrGGDrMgcmmRJbRCFzpZmSDRpRZJJmRzz +ccGjMgvPvsHMgvBHWlhQdqwtllwNdThs +WjddwRGgHRRdMbrwHRwWjHDtDZplslnJnZrsDvCprJPJ +QSLLFqQBffCFststlFnn +CSSmSqzmVVjWMdMjVWgT +lTfQRhVpRzjThpRQTTTlvHrvBvHnPMHgHqHJvn +cGDctCwCdDCGSFcJsFJsFBvgnMBrHvvrqngHgmgssg +SCbSDSFScNpfbRVVJf +RrwmdwMVjMjMTghDWNTJDpWfWG +SbPvNbvbSsPbSvZsPJtJWhHpGGGgJWgJ +lSFvsLNcqzqLrwnFQMnVdmnn +FgCJFTWntWTFtPLmJmmQJmCMMpljWZBwlGMljjjlwvwBvZ +SDSbVbdScSDzbLZMBrjlZpVrZp +ccsSDhSDffzbLNscfcfDcgqhPgTntqmnQmCgtgQCTJ +VnCnrHnPPrCwHmVWtqfMQQqzCqffCZ +DDbDcJJJbpJDGppFpqGZRWfGfddzMWtfWM +tTTglDcgFjwNPHPPwHlH +bMGbqqgPqqVVMGnbVqSMmRfPcJmCTPDDLJDTCmDm +FFjjZvFRsFCctmtvtJWD +wwFhHjQjwQhZrFjQbngglGbRMnSzgbRH +GPTTJSgTPrPPmcTPpdJsGGGjqbRvqlztqlRqMzGjRv +LwnfWLNwwHHQwHnjbbMMjWttqtMmMj +mhwfBDhnQTpJBcBJps +HQQHwMfwlltzMlVljQhVjjHPPPFGPFcCGprPTPPfDrDcGf +pRLdvRvJgqLRBSJCcvFnCDTPTcTGnT +LBLSJbRSLSqbSdBdgJRRqRbwjHHblQttlwtwhzpjMlwhpw +NWLNSNSDtgSgghgdcwccmwGntwclnT +FRCQzJRsvfVVjvzFJfQnffwCcmdwmHmmHmTwmCmdGBcq +sjfJvjfzPRPzvPPVFMssvSLhSSWrMZnSDNrDDhSLZZ +FvLpSLtCfPCWhRSZZMZJSW +jbbjwbHjQmHjHsQrQFMnwTnJznwRzhJRnNTM +gVrjqGqjgrgsFGLDtDBLLfLB +cgTvRWWLVScRWflNJJDfVJmVlG +nPPnnmqjmZHCHBHFdfwNsDhzzfJznhsfhw +bddmQqQjpdFCQWtLQMMSvMMQRS +wjnmPwCgjPnRlwnmvmvvPnTwbSSLLvsLDWdbbWzvsLzWbzbz +NqrGqFHqJlfhhJGbszdWQzzLNtQDzz +FfHFpphrJqJrpGBffcTnBjCnVTMjMRCnVljT +SrfSJGJpSgMprMHdhBGhsdsshdGsmm +nRTRPvQllQlblwvCjTwLTnvBqdhmHDPVsmDmdqshDVhNsP +lbRFHvRwlnlLbnbjLbLjLCzggSpWfMFzSZpzZFJJWpJr +vNLlFldlvPtHFPHQRt +jcpRsScDgshzjqzfVStntBTPMTnmWttntMpp +fSssgVjDsbqSVbCJClLRJLCZRZZb +wnHmCJccDDcrNnrNMRDtTzpTlMpTzpBp +PjSPPGjWjLzTjjMtzzMj +hWvLLFWvHvczVcVn +jgtngnnhMthcnLjMgCZvChDsmdNCvNNZDN +bWqFPbFbLzRFfZBNDNNPZsNd +RbJzGpzVLLLWHHQgTMwcTptQ +sJBhsMWQnhhrFBsFhlQQMfrDCDpLlVCddjTdDDpqDLTLdj +tZHHSRmNHcgmNzpDPJtttqjLqdpL +HbNbZmcHQJbsFWvs +VgPNWGbgSjGjfhRRFfzThtmtzF +qLCQJBqqcPPmLHhHFz +CcJvplQswNgZlNPSbS \ No newline at end of file