From 78d1a4a28c116af75d4f5aa20453c334d22ae560 Mon Sep 17 00:00:00 2001 From: TobenderZephyr Date: Wed, 24 Dec 2025 22:36:50 +0100 Subject: [PATCH] (update) 2022 day 3 part 1 --- 2022/03/example | 6 + 2022/03/input | 300 ++++++++++++++++++++++++++++++++++++++++++++++++ 2022/03/main.py | 43 +++++++ 3 files changed, 349 insertions(+) create mode 100644 2022/03/example create mode 100644 2022/03/input create mode 100644 2022/03/main.py diff --git a/2022/03/example b/2022/03/example new file mode 100644 index 0000000..9919ffa --- /dev/null +++ b/2022/03/example @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw \ No newline at end of file diff --git a/2022/03/input b/2022/03/input new file mode 100644 index 0000000..4e04556 --- /dev/null +++ b/2022/03/input @@ -0,0 +1,300 @@ +rZTmmqbBrmBvSTCwDDtlwjqnqnnq +dhgQHhPfVgPlPdFzFzFgdptCQjtnwCntjsCppRtRND +lVdVHWGPvTvmrrBW +GmJBqwPLhfPBfJfvfffFmwtjDprpzVpVMpcDrVjzzcjpML +HgWnRnWggWbNTWbCnPCgCnsjcVDrjMrdzjprMMrzcHDrDr +SsSsRsCSPSPBvtJt +BLtwwTBmLSTlMsjdZmFZZP +hzbzNNrbqQbhQDDrhCprbhDCpvFJJPjMZJZgjjPdlvZjZvvl +fbNrqrVDfdfGzqcHTBTVHwcTSHcH +lcDdcrCDCRHJHBllPR +tNGQwQhtzLhJBRHbPMBMjGBj +NZZZpVqqFqpQpCTZcTnrTrnJJC +BSNLNzbLLsMGSDLSsSBdVwTVQFdTVTtqgTwNVN +lRjplvmWpgrqwlVFFr +mfRCpWwvChZCBGSzZG +mDSlGBGwhGhmLHCQnMMVMLMVFJ +WTNfjNgzNdgNWfsgsWWcWgfrVrnnFHQbrHvFrVVdHMrnCr +FpcggcNttFfqSqDtwBDmhZ +HzNsHbGsddQHPrsNPNsTnNjMbjVbcVlMLjMjLtlttjjv +CQfBZDQfWJlJlLJhvMMv +WwwmWRfFwmCmwwzQzzzrdGNHFzNT +JDvhJfdZZTdCTnmmTH +qbPcsqbjcbstjbgnvqpRCBTCmgCm +WPbPtbtVjWQsPvSVzSZLMDMVfLZJ +NjMbTZPjHjbdBqNBqFqDFz +LCcLSRLStRrLHShCtRfcpCtpQVqqDFDFqDdFpBddDQQFdB +htCGtrSJLfScvwJvggbgwHgW +hmPTmfFPwBFHhsBstJldltstVDSVrrpD +CjzNGQjnRMMvMngMLGRVRBltVrVppqptVSqlVJ +cLBjgjGGGCgvLLnhZThwcfTHPTcPmw +SzwsVwcGsTVTmzmgjsLsmWWnGJZbbJbZtZqnDJntGq +NHQvpvNRflHvQpPMlbtbZqbFDnWlqVrD +dpPQVdpHMPRBpfCszCmsLsmcjdSg +wZZGGrnGVvZGPTcTnGvVCVpmpJSgCJtNpWgWVgmC +MdMRqqzMLDtQDQmzJg +HBMdRLLBLBdbbBLHlRjLrHPPnTvGtTcwhGrhZtvh +fcbcPWmvPvftWbDNVJJDrrhsJs +wQvzqvpQQzHQwTTNVhrBGJTJ +ZCMvzHMRCqggmWmndPngnn +VjvVJvjdgjJNTVgdpjRttsTHSsbFqqRHSbBR +nrfZLZCZnLnCCncZCrCQLSsFHHqtsSsSSBcHGtHsFh +nQlLMrmwZtmwCMmMwZmtLLggvNvVjjNJglpDgzNdJJvN +bCjQbTzCBlCvpqPTbZphtWWRhtddmDRRdRhPhh +sLJsnJFcsnJcMMjNnfsjDDcDWcRgggtmwVRtVmhh +sMsJLFfGrfFnrSNJjHzlTCCCQzpbBpzQzSBQ +gWRzWwcrzWcgZHRzHmcpTLTgTLhQDSgFFLTpLD +bBJfvJCssGJNjvPmbbmbLTQFTLQp +jsCqBJsVsGBqCfNcWMmrRWlWqmwMcz +cLjncLlQbllRhlnQTRblwtndsgpWdqgmnWNWmGpvWzdgzz +DrFJBFFHZrrDDVJSNmpsWdzVpmzdqqzpzq +FJPPHfDJPDPCZSZHFSDPCJtwRjClttNbwwjQLjcRhLlb +tZZRtWCRtsspLRqSVqbPDfVvlfFDqV +dgvMcccHHDHNrrbf +wGwdgBBhhcBhCvTZvtCppp +LRRNFfffFzzcrGRffNfcGNzJnrnhjdDMHHnrWdlmhddHnjrh +BvStvwSqqCZVqtvpZBWMMhhFhWdmdMWMhm +TTvqSbwqTPpZPzQsQRffsFGQ +phZZpGbGVmqDbPTF +tlNwlncnzwddcrGPlFmjlTTlfmjD +zntnczBMdvBnnvnthHHZMJhCLpZSSRGQ +ZwLLnbCDfClLZzZwDzCCZDbmNNdNtdBVNTNdNWMFtTFzTVFd +vlPlJRgRhQcPQQjpcRQJBBthNdtddtthtFMNWqMq +ppJgsgrJpJgslgrgRSPDDDLZLnHbrLHbwLbHfb +sBrNSTsrgDDMSjpPWVVqhppbsbtz +HTJfHwFwRFCnCPbzbzVzbVWq +QTcvvcmHnwGvvnRNrLglNNLNDZcZZL +qNNHSSFgbhLHHNfBwlJjQwwBcwQN +WZnVrZrMpVvZmVjwBvzBQRflJJcz +pWVGpWnmrmWjDmtnWVVZmtPFPCSbPgqgLSqtHCgTHgHH +QcQHqhpqQGbvbqHNqfhsQfHczZMlBZdZBlSFFZpZlFMDRFBM +TPVgmmrjtWjwrtwgLmTwLPMDZlMDMnSzzZgglzldBlgZ +PVtPrmPddrPCVTNqcHvQbHsCQNGh +PnsrrsdsSrnCvJCJBVwNqcHPRwNLWHwV +pjTQlgGWMjZBbRHHHZcbVV +htpThhlMjFdWrtDrfrsn +GZjHFHgjpbZQbgpHdgpjjBMTQsMJWzWRcsLMCRWzcz +ltwPlhwPSlwmmDhfrMwlzLLTSWJRssCBJWzsccCc +nfrnrntPnDmDDnPrwmvlVGdGFFNqjVHNjbGFjgFNMp +BjHBvHHqnBHrnnvclqjqplRRRQSfRpJQwPswStJsJQSt +wVFGWdVZVhWVDzVdZDSfRJtLLZJPtJRJSfJP +TDhCdWmNwzTWVmDBvMlrHmcqvHBMng +HpDpHvjvCjDHZHVWJSCrnrJgnNwr +rtQhssBTlRMblLBTtNnJFVSnnwVVwVWNnb +BhrchlmBBszfjmzzffDf +MMcJtJmVmnppVmSSpbCRvDvDRLDqvBRRCCMC +GWNNGGGfrjlHHHNZZZLNZt +jGrgfFjQrdhlhhgQFrVpnpVgmStPSJSPzJPP +wvJNJNtfGGphQQjFdGWj +DzSLzPczBrqzPrLMjSpjWMlSpQgwWd +zPHRqBLqqHzPcBDPsznZCwJsnfVnmZmtVntC +ttVWftWgGlWGfgtLtNddrNDdNvsLrdLdNm +JCcFSnbBqbRbSBCBqTFSQCmwMjRsrDRNNjDddssNfDrr +cBHBTTQFJJCCJQcCbCcqnSftHtZhHzWghPzVZpPglVVW +ZfSGFQdbrHQSbFFqlwLjCjLPlqwj +gmWJgNppJrgMcchzhmzNczqRsVRCjVRVsWjVRLRqqCVq +zDTchzJJJhgJJmBJhBTJBggtQHGrdbfnHHDHGvftStvHdf +LdRCgCDvCbCdnLnCvpGtQlhffNlhtSlQNtQlhb +BTJTVFJrqMVmBmdTMFNHNVQQQSHHffQhNlHQ +MqcBmqPdFBdjPPBTJqpZDDpgGDpgWCcvGCLp +gzFbjgqljdqblbbddBZTMvTBdMsVvm +SHpGWBCtSPhNpPSSSpwSNGNSTLTVVsZsLrvRrRvVLLRCvTvm +NwhHwPhDtSGpbDcBQqczbBBj +BhzLDSflLlTTRfqGpJZZQsqfNF +ndCmMHHRPbCjCwVPVmjtwdMVsNGJQpZQsJqJqNJdFqJZFrNq +CtwbRcRbttHBSgTcgShvTz +pffmzCtppTSWtzdhbJdZvvHVnvdHVV +WMlLWRGGQWMGrQJcVbvbHnvQHbhv +LFwRFDlqFPWfTszp +sbfFTbbbzJzfbJZSbnsnfTchGWWJGlhWvvBGltgVttgWgg +LLLDpHwMDLmNjmChVWWBwthrGQvgQl +dLMLDMLBNddPHmpMPfqPcPzcsSbbccqb +MNGMPvHTnfTfgSFrSMMgwFMw +QQRpjBsqhRQsldpqRQQQmjZFtrrzSFFccvSWwwjwFWZS +smsBbQlRlmDpDBqpqblpLbLLfTfNVPVVGnTvTLbb +gsmFlVCShjVwNNDNgWBNHg +dMtQvtQRrtbLMqMnqqsq +GQfGQPRtrPddPtvcvcQZRvRpJlVJFTlpZTVJpFJsSCFJjh +LFmpcmhNfhhnjStshM +qWTCCQrqlQBQcJCqrJdlHDdnRtngRStnPjgDSgSsjM +CZWrqTbllrClJZWbVfmmZcvVzmGZmfpv +qJLCqjwjjJnFqnDQQfqlQMfMQlMg +zmHWPhGGZVGpcCWMsWRRfBBRDs +bdpCcGmZdNFTwnSjrd +TttqjWvQjZTtzwWtdBCMdBMqdGCBRnhR +bpJlcNFVzbcBhCMMCChbMP +cJVgrplDcslrlrpFzwTHQsSTWLQtjWvLWj +hWlmVhlpcNpScSVtNbjrbGqdHGjgQrdrRdqG +LPBDCvFszTCzFzFzBBffHrJrrGHRHsgRjsjrjJqc +DTCMMzzvvnDvLvLDTTBTCMFBpWpthShmwmmWmwchptnhwWWt +dfHqNQSQQNQBHHZJfJCMCfVcRJCZ +GjLrDjgvFrFzjDgPGvLzgmmjCslRZMMCststJMlRcPVTRJJM +vjmmvrnzDDLVzrdSWNBQnWwdhHhH +jTmMBMNBTVSqNgBTjgNMqMTgWZttCmLfpQQZQWtLCdCGGtWC +zzVVbhFcbzstWCZpsftsQZ +whwhwPnDhHRhbRVHcSNllvMnNnjMjSBJMl +nSvQgHWtZvHlgtvqgqngjSFFFDNSfsbbbjGfcsSr +PPVRdNwRLhdLLCCwbscBBfGfbLjjjDbs +zVPPhMhMmhhVppRpMNRPhMQnHqZtHZvgQzWgQgvnqnnq +JdFHDSShfgDNMhGTBlwGGJqjjJTr +PCnWnsvpzPnmLvmsQGRGWrwlWbljwTjFGl +PtnLzQCQLfSFctdNhN +cTrjrCNrLjTFCTrLCdSVNVlJVSVVGJftNp +swQHQDsQGRZGffQV +ggffMhhvgswDgDnhhfCcTjrcTjWBWCMmcjjc +wGHvHCvWlMLlhGWwvvwlNnRBRdDNDBLDRVVDFdBD +MtJJTPTTQNFRNFRfTn +crSsmmJjmtgWmMhwWMCw +sQQHWGsWcWWrZQQshNtHFNBCNBqHFwHB +jSLbMSdfjSjFtFghNtFBMt +RSdmtLmSLLzSLdjjdTTbVvsVVsvZcZQzWPWcQrrW +PCCTzTgDgzVZZLgcgcdswMMMgs +hSrqdqRQSjqtNqcsGWcGLwMGMf +tlQJRJSRjpJjZPdpDTdHbzTn +pqBGDDtQBDLVhfCtCZVV +bTNFcljgbdlFjbldjFdTTcfZqZVsLhgfVLhVhZVHfZwC +McJjFbvTWvmRqGRr +JRcsJDfgncfHnqSBqGSTGQsTTz +vlBlLlpNWpPhVmTQpQSzqbqQ +CBPvjFNMlFhCCRtZJZZHfg +RFQQTdQQLtThDhfRcHdLfFcHJCWtbbPnJWJPNJbnJsvstvJv +ZmMlMlwwMrVzwVqrSqmZrqbplpNWFbWJnvvspWWNslNs +gwwmFrgMGgFqGTHRhHjDRTHH +dNfQvLdQsvSLsHsLBgNWVggJJCWCDJgnJJ +ZTGcflFlFRfhbwhbPcbbbWVWrMVMnDJCCWmVnDJCmF +lTfZTpjjZhPhRcqtBtsdSQpqQvtv +frfccJzjTBwWwcJwjrwcBVCVTRCGnpsGGSmpVSSpDH +hhhvghZvZlZvghPbdtqGpGVCRHGGmsRmpsvGRV +MdPCNqdtgZdZgcWMLzcffBcWzM +LdsfZNRsRWvvfLSsCpSgCDJbPcCp +MqTVtHHThllGMthlBHzcSzGGSFppPgbJDFbF +nVHwVlHmlhRWdjjjLvwD +whhWFjjzhGmGCrFFFzvtZsLZVStNZWLNpvtv +nqPMBdMQBqJnnfqdsSNfpvtZsSNtNpLp +HJHnQHqQlhwLlhzmGh +nMlmnfHmfjjmflLlLdzJTrsrBLJJLBbBSJrJ +pZRpFFDWctFPNtWvbbrTqrszTbqbcBqr +RpRGNPPvPFsNvflmdfwMGHhmmH +PjPzphfpJFPvFRHDbP +QlLlBcvBvnWCWcVCnFTTSnFDNdSRRRHN +sVtlVcVtmqjMJphrfvJs +dRRHRfrdRHHlCTTprlNCvhVVvhzpQhVvtmntmhtz +JMDJBLwQMBDDwZgJnhSzhmWStMvzbbmm +PPwJwGqPGQcDcHHjCqRlRCjrCN +GgGgbGSGzGbMBBzGDVFbDMRpmcWWTTfcFTchsJdcWJchTsch +NCqCttLZrCPQtNrtWqfhWJJqscmTJwsc +ZClvLCLmPjnPllPvCLrmnDRjpDzGpMRDRRDBGBgSzb +tvwCtDMQvJJPJtvQprjrjrvBjsTZTWTj +gFzgldFZSlSbgFlZmGmcFqsppjsLqrBsLBrqqWWjdB +FlcbhhNNbmHmcbSSzzggwDDQDwJnVCVHPtMVnnZQ +hrCnnrFrCvFHzVFdmmFm +GDTBsSfDDBRwfDsQbSdjHHVlqpmpgqWqpH +TBDBDBQBwcsPsPGQswPcZvJMrJhnrNhrNNnHJM +CztfzfZLBjMqZZWZgT +VPcblQhJvtgbvbgb +wwFQwVRPRchwcrJcPzfRpzspBfzfnSCzmt +FMnmnQnFNdQFRtmFmfNsCsjfpfrHHfVffV +DlLqDPwGlbVCdVbddbsr +GPDzLhqwLqDMFdFJRWzQzd +CSDSrMqnVSCTsPGPZpnPPGvP +jhBhhqBQQlhgjthBhlhJpLlwLLPwsswsGZpWPLvP +dgJQzgFjzjJFzzdHFzzzJMmNHCrSMSCSNbRqDCMCmR +cvSPvzWwzcTbVWSPbppWVjsGjdHdQSlNsQSdNGqsHZ +MRmCfmFBfRJfjqrdNMZHZQjQ +qgFtChDCFgmCnppPnczPbcLpnL +RllsdrhQvcVqmVzQcm +gGgnrZZMrFWFpZcccVmHqjVmHHnJ +ZrMWTTbbGMpbtgCTTZgZCWCLhwdsLvhhhPhNSldvPwPNfNlR +ffMqqznPPMzHfdfcdBJGTMVTGjRmMMTBjr +vtDwSwpmDsmQZswWSDhhDQGrjTgJBglRsjTTjVRBVTBl +ZthhQStwppSSvbvNDtWwnnbffmPnHPFHqmzFbLFq +CcHPmPcTJTqNCPqbqJqLgNJrjWtrftjrrnBnsWtjtBsfTB +ZRLwhzwLRlhLpdlpjftBBnBjWsBBvn +QhzhlwDdMzwFSwRLMJqqcSmqNPgmqNHNVP +WzTWppwcQNppbQrJHhhrJfcdfnsr +MDMLlLqjvqSBvVCLGJhnJsrDnnrDdhDffZ +BLMCBCBlLlGSJvSPBMLqGJVwwQzPpNRWmTRzmzpWWFmTbQ +WpWpWsfcBFjwGgqqtTQrTpgg +JLHNPPvLJRZdnNJZHRzGGTzjrtMqMJlQzztt +vHHnbDnLnHRCRnvdZdbHLNPfBfBhcffmcSSsDjcVwVBmcS +DDZlblRRLQcNpJNhpL +VPrdJfBFFBBWBrdvJPCBBdfhqcFhchNQcpNgzqcjphqFjp +mWVPfMWWfBMWWwPrWvJHDbZGZmZRtDbsDbSb +PDwwBzvRRzPCBPgnrwvvCDsSSccWscFTnSshWnZsSZcF +GJtNGHfLbQtQQJQGhhhShgSZWVWJjSFF +tmHlfGfMlBzrRDMggz +gSBNwDNJglSwlDMtTCsZzStTsSCC +hhfGdGcFhrqFmQddrhvvrdGRRtQMTHMCsbZbZtRTsbZsQs +mrmrFqqqccdhWjGcnLpBDWgNWpCBlgLW +WgmBsqMBnLLGnGnJtFgbbTwHttTwHF +cQjcfpVQfCCPSMjCcCPSPjVwbtTlTtwJbTvJJHbzHFFJ +PCZDCZffCdpQCdDWrGGsnLqWhnrM +gppVszSgMPMPstzNpPMQpnGfDJhfnGLLGnfLfQlLfh +rBFcCcrbmbJJJWhbhLVL +wqcmRFZqmcvvCZBcRvcVwNsztSPzHstSgzMNSgpS +qzLJRZfpRZtNNMSfftFN +QDnPHCCGvbQnnCwMMlcFgsgHFFlNlV +rPCMQnbdhRLqJLzhzB +dfdrfqBqBtRwBsFR +cDczzSMzDcSGSQbCfFjRFZtZCZmtwZRt +bVcJSbVbSDllNrrWWNdvWf +WSPPWlppCQlZPGqPjhcjfs +JJrJrRTHNTNLbbNLcfzzSfSzGTjsqZsj +FVRFNgVRbDbdwlWpSnvQnVQM +znJTCRCSvRpzVBjWJdBBBVNb +gggcfGDrGDZqwhwfGBjbHVSVdtdjtBShWj +ZrgmqmGDGfDPmrfwPmsqZPfCpsFFnFvlSMCLLvpSRFFMvL +qhhfgzzSGDSZSgfrcjhcjCCndnbjdr +FPTTTwBHBPJMJVJBGwmjvCmBdjjNNcrjncNc +GwTttMsTtHFtVFtDplSDzgRpDqsfpD +vzwsPlvFFdJGjQwdJw +HHNbpDTbVMvTpmMHvddtRtJJjjJRdLmLGj +HbqHcbMvlWrqzWFW +hMJMJBhPTnDMJJTGmmGmwDpRzRpFWz +lSZPPNvbNllPpGRFwwzRNGgm +bHZCZbvrttlZClqbHbsrbnQMThdJBQhVQBPdscnPQB +ZRNZfffHLfDLgfNlHWwhChWzzVdcVH +jpJmJjvnTtSjtJvQWldPWcBdPSdWzzcz +jGGsGsFFFGnJtTvvTszZNqqNgrsDLRDqLqrL +rrblpnfnVVfspgrppnMrpsrGdGdzgddzPFCjCzjzzzjtDC +TRWTJwThJhRvwZWvJBZvqDzQzGBPCzdHGjdGGGttzj +JSZmTZZwWvqhwqrrVnrLnPmbsbPr +MdhjZhZZDTdPDcgCSLfgCpCL +vvwtnwnssznwJnwvBbBBHHRSSfLLcpWfSWWzcLRTRWpf +snJtHJHmbBsrswNtsnjhlhqZPqTjjTjQMPGr +gmSnWMMzvvNWCNWCJJph +QfqjcbcRGGjcwhNppNqMptdNHL +rGPbflPfwPvlFFvTTMlg +trTdMJvtlLntbCRN +GBZsGFGBcRbZCRNR +SSGFmFjqVNFVssjSVjqjvMMQvgTmMgMMQWMmTdhJ +GcNcdNdwMZSqNZSSScSdqGwDrCmJMVrCmHmVVCFVJDrmFV +jTvsRsWbjjbQQfvTThFVZVTVDJVHlCFr +BjnBPfRWBnRsnvBsRBQQSSGzpZLdgwcLZqzgzPLg +clNrNpjbNpbRrCpsRlrVtjwVZwttttZVgMHwZS +FJBBDhJDTQFThqssvPJBBvHMWLwgwSHtWLZMwZgwSg +qQJfdJDhGsBBDFJBnlzGmmnRzbCpcrzl +ZPbfgBvcZPPZPWWWWBFbQllndnqdnlpwdSNfnwdN +LzLrzDhmDRRJpJzptDhCSCqHMHqnqSlHqMSQNHQS +zTsRzsDTJszzrrLRstrGJLsPpbVVPbcgTBcZvbPVFggbjP +THpVHSrLZrzzvPtJdtsqLssdLW +fbfCCQgQllWwwwFmjRsPcqcPsJJJdscPdmsP +RNQlQgCFfgwVppWTNvGrvn +PqFwwcqzDlFJDDQVMjQmMBjG +ZgTZZndCpBMVNTvvQc +pHgtZdtRnnLhcshdhWzWSFlbsJsqzzzbSb +zjfgjMhhgMJdfHQHWdVQvR +CrmpmpZpHQptHHHQ +CnwcFbNCqQBFwwFFsPslJgsjhMlMcDJP +HpnStLpnQnHnqQLQqpMSSWWZbswNcNqwbNsfwqGGZc +dVRRTCTVJNLcfJcJFb +gzjTRCddgLDdzdjCCrBjjdhhBnQPSSBhvlSBQvMhQMnt +lFTlwMwZlblSjrCpVvvsptspZpps +nHRPPnqnhPRqJHhqqhfdPqLCHvBCvvscvVNczztCCvsvtm +RJDghDhRhhGPPqGhsPhhFSbbwGSFjGQlWTrbwQbW +RRjgNPTRFhglgNNjTsmGqCCGZfzmHCnZGnZCqq +SppWLbtbCzZMpHMZ +dSDbbJdVVlHFNlll +dtZdGmqqtmzhtqZtZswzSnSjfNHNVjzCWCnCffHz +LgpMFMvlhvRMhhDDlvvQLFJCfSCHnFVJnSnJHNjSnj +rRBLcQcpQcrZbwsZshbs \ No newline at end of file diff --git a/2022/03/main.py b/2022/03/main.py new file mode 100644 index 0000000..14c4e64 --- /dev/null +++ b/2022/03/main.py @@ -0,0 +1,43 @@ +print("a", ord("a"), "A", ord("A")) + + +def getitems(items: list[str]) -> int: + # Source - https://stackoverflow.com/a + # Posted by georg, modified by community. See post 'Timeline' for change history + # Retrieved 2025-12-24, License - CC BY-SA 4.0 + + seen = set() + dupes = [x for x in items if x in seen or seen.add(x)] + + print(dupes) + return sum(list(map(lambda x: ord(x), dupes))) + + +def tr(char: str) -> str: + + return char.upper() if char.islower() else char.lower() + + +def gitems(items: list[str]) -> int: + # print(items, len(items)) + n = int(len(items) / 2) + l, r = [(items[i : i + n]) for i in range(0, len(items), n)] + # seen = set() + # dupes = [x for x in items if x in seen or seen.add(x)] + dupes = set(l) & set(r) + rv = sum( + list(map(lambda x: ord(tr(x)) - 64 if x.islower() else ord(tr(x)) - 70, dupes)) + ) + print(items, dupes, rv) + return rv + + +with open("input", "+r") as file: + t = 0 + for line in file.readlines(): + that = gitems(line.strip()) + + t += that + # print(line.strip(), that) + + print(t)