diff options
| author | Syndamia <kamen@syndamia.com> | 2022-12-03 09:49:17 +0200 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2022-12-03 09:49:17 +0200 |
| commit | 39d5d4f3957971979cf65ad3fa505fb93274c2ee (patch) | |
| tree | c134731ab25ef70e55fa3cb42908b7d2e66bd4dd | |
| parent | 15aab5d23ae97f4dd498bf3460be1ef22e31f3b5 (diff) | |
| download | advent-of-code-39d5d4f3957971979cf65ad3fa505fb93274c2ee.tar advent-of-code-39d5d4f3957971979cf65ad3fa505fb93274c2ee.tar.gz advent-of-code-39d5d4f3957971979cf65ad3fa505fb93274c2ee.zip | |
[2022/D03] Solved both tasks from today
| -rw-r--r-- | 2022/Day03/input-po.txt | 300 | ||||
| -rw-r--r-- | 2022/Day03/part-one.cl | 34 | ||||
| -rw-r--r-- | 2022/Day03/part-two.cl | 39 |
3 files changed, 373 insertions, 0 deletions
diff --git a/2022/Day03/input-po.txt b/2022/Day03/input-po.txt new file mode 100644 index 0000000..cb4dee4 --- /dev/null +++ b/2022/Day03/input-po.txt @@ -0,0 +1,300 @@ +rNZNWvMZZmDDmwqNdZrWTqhJMhhgzggBhzBJBchQzzJJ +pHlSVbVbFHgHBzzhQHqg +nVsqGpbbtDtTNmrmfZ +zrBMnbzBchshsttfbMRBgmJggmmCHGgDhDgNDGHL +VddZqQqdvSQMJHJGdCDCDDmH +pZWWllPQlPZQvZvwpSVlqlvtfswMRzBbntzRbzbfstsRzF +NnjjRlnWNSWWbGwccbcchfPfTvfjfTBBpvmdMjTfvB +FVzJtDDJDqTMlmlM +gVQZlFLlzHhLGShGww +rPZtvtFrFPgWjQvCBlcqMzlqQC +QGVDJJnLnVTCJBczqqTM +fNSSnmLDSVLhhhSNSLhGSGfVPjrFHwmQwtwWFRWRjWPHrwgt +SvmlrVrCvmNhSSVZVCrsgqPfbwGFwwwsflbbGb +QHffdnHDDQdMGbgqPwztdPds +DjBjWHfQDfTQWTBfpMBQLVmmmcCCcVhCBBBhhCmC +trLHFFQHTLHJQrflfCnLLHrRfRRPqSRPbPbbsRGqqGqhjj +mcMpNWVVNmNVsSbSJPcGhPRR +NpzNgwzZDVNZVWNpHJQLQHtQrZQHrBCl +JVCMfgJVrJtMBhhrfVVfhVsjvpFGFgjSSgFdSGGqjvjvqF +mHllHlHpmWlDSFqbdSTS +nmZRLzQnWVpctMVpQs +BrvRzWBPWbRwGRjbbRGrtrfqjCJCjCJgJsZJscFCZcJC +MnnnVMVhTMQhsccVfwqFJgqf +mMShHHppQmHrrBzwtSbWwR +pWWGJMJJwlnZSqjWmvSWZC +gtHrLttDtgFjjqRZZCrjpp +bFtbTpHFHLbfLFbHVttccttddJGQdJzTwdTzJlMnMBwwJJ +JhqHFhVMzJPQcdcVncdc +NhgfwSjwCWwltSfnrnRWZdpcPrrRnp +NNhlltBjssNBgwLFFvDmDqLzHqBB +LnFrnddfrLnMFjWzpFhcWpjpFc +ntCwgtNggCqCgCqqPPltvcjjhvmWhmvDzTzDzD +lqlVQgVCSPVllVQSNGMHHrdQsHrJJBnMHHJf +ZGZcRZNWpcHZhJfbbNblrfrgllNr +stBMtzCCsHMfFQjfSSPgtt +qmszdsCzMncdGwdWZGvH +PccqPqbhvSvvvtWNjTtWsWcscp +gRwdDzHJQgHzfdRhgHRffzwsTTjTTCjNjssCpmWWDjtCLW +zdRMwdRHhGJwgHlnGGSFvvSrnSrr +rRpMJtPwrcCTNNQNMZQm +mDWdWVddbbbmBflFhvTHjjQjfZTgZgLLfH +bhBbFFnDVhdddFBhdmpJRrzStJmwnPzcsJ +RjlpRRWzzRGRmGzlCRRlQjCgtvTJTtJrTPttrWTwhFvvVJFT +bSBdLLqbcqcLndLHZNqcZdBDPrVTDDTJSFrJJvVthTwwDS +cqVsnBfHffVdqnZccGMmCsGzQmjsjlljgz +wMzJhLtwbnMWtHcFCCFqFNNbgq +fMlMfjrRRmdmGCGVVCHcVqcVTC +MmRRRlvmQWzpvnZpwJ +gRmgMRMmRwzzmwHbwcTNqPDVBbPTZVqPNZ +fWHphpGFpfJrrhPsNTNZVsNVhT +WGfJdvltJJfHrJpRgvMRMSwRznwMmw +htJFGsGspCppCFCGthCdpmJmgmWZfqqzWzlWcfgZHgzHlg +nwVMjVcVcWlbnBlfWB +wcNDTvPPDMFJLLppDGDD +hjCBgPbvMvmQDzlWnWjm +HrHtgZRRRNwczDWwwDzsQQWW +LpTqNtFtLFqHLHRrqgFHffVVBChvhhVPBCPhbPbp +CwpbCwjGqSjVllpGCllBfhZZRDPNcPPNvLLLDSDN +WshFFWsgTHsdMzQvPczLfLZDZRcLfR +rWsJQTMhWWHdsQTgsFJgllClVpqVbqnGblCppCVr +gRBSGcBDBSJSvPQwrTFLjggQTQ +HMMnHHHZfFVFrrMT +HhlhppCNcJzCTtBT +CCffCCmRLTsQRPHQQMPF +dWdbgcDSNclbbdwdSqHsvHPQPTPJplPMFMGJ +DWbDNcqZDSWSccNTVBCzVVfmBVZnVz +BnsrrvZwBsBSJrrrqSTgJQjCbCjgbCHDJgJFjQ +hLmGlnLmGWcjGDgfFFjQdF +hhWPmhPtczWpNRmppzRhLchMsnwZvTMZvVSwwrsNwSsBvr +tDCCltNVttJhNGlMPSWdqBqSjM +RFQcpcRTpFcnFzdLmLSWjMSSBLSQ +jwzzczpFbwnHcDCsthDJJsNbst +dLRWTHSwTmTwTcTWvQNVVQCvVvNFps +GnBPtBMJBPrjGGJMjrlqChNpNlsnhVFhQsVQ +JtMtGJfrJgDJjPjRTZLdFcRZRmwSDH +VSccPJSBLgZPDLDQ +zfpLMmLsHQGqgQHnDD +zdLLMssmrdfhddcVdJtScB +VvpTVQHSqSHSHqqHJVmRJVHpgDBwDgjcDDDgZjBZBjwBZbRw +PCdssGlstdWslFPfNPrtClGjwBgBJgJNwcjBjBgZwwMBJD +tlJldhdhdsdhTqSTqVQqQq +VGqTcTqbpPwrjfbl +BvntnZNNsLZvLszSnCsvJthlfjTrZwlrjrpPlwlhfwrl +QBtNtJLvTsFdQcqWmQRR +fjcjhmjBvcvcSvcZ +HMwZtRQQpGGRgzMvLnWWnbLlSntlbv +JQPzzJHqQRqGMMQwHwzDZZhmmPfjDjmjsCZhPj +cBlZZMfBrCBMwBMCvQzTwFbQzPnbwjTbTg +WtzpVDzmtthzGFQTbTThnnTQQg +sGWstpHdpGDmdHdmGmmmJNstRMrCcBSfBSzNBNRrSRNMcMMv +mMPDVBZZLSmRdcFpjr +fggGGfbfgQStjjsdbtdt +gNqQgCQlNCCJgJHvnvnHMjPHjv +bLsRQrQsGQbLrbRZMGgbJJBJFtlFFngJphhcfBBq +jjdHCCjfVNmmmNDFcBcpBthcplFDFq +jmvvmWVjjHTCVvNjSbQGLrRzwMWsMRwfGG +sJNCsCFFCNPhCzlrSvRrvwhRjj +MMGMTwpMHGzrGczzlG +qVmwgHtDtmCdWCsNFmNJ +fmhWhjVjNpqRRJjwRw +gnGQGDDCgSsCvPlvPgnPgnPtwqbpHRHqHdJpzpQJJJRJRF +wgPGsDGPsZgGgBmBWNZNfLWWrZ +WdsCVtjWWWHRRqLLHncC +fbSpMSPSZHRRcqlpRc +cGMmJmfMPPPccZMNQPWvjTtdTjvgmdtTsggw +tPBQhHWBtQHgWQCtLwddcGnfpGpwwnbhVb +vqQzTNJJJTvRrTNFJsZrrzFlbbfcnVbbcwmGGGpVzmddcdfd +NSSqJvFFFFFQjQCjQDSDPD +rQZnVVrZmZmgSWqHrSzHPC +LGFLwcMBcllBjFNwGjltggSqSWCCzvNgSqSHtt +wdhqqGBwwqGMcDhcwdFFbbJppZbssbfZQsQsdVQm +lqBZlsjVTbVqmFrSnTFSvwncPP +zQztHfZQtWLJzPFnnQScFcFrvS +ftHJWHhfttHWffhtgLNfZDWbdqBqjbVssBDCqCdCsmClGG +MlbWFTJQFbFFzRdNjNtjdtBT +srwnrsLVHzQPQsjjSQ +gLpnwgnwnHCvcHHcvwgCvGFFhWGmFmqMMbQFQFFhlGmJ +qqNcJgJccdqhsqgsggdgqgcrtfNWNZzVbvVFzttMfzbVMZ +GLlpPpCpwPLDGvrFVWrWWbZt +DlRCDDLSjTjDjSRSjPClwnwSHHHQmmQvTJcQgvddHsqdcgmB +jmRjRbRQLLZbPnbrcTTHHHNn +MfhhmmwtvStrpnJJHc +fgqlvfhvFzMwqfvMfFWlmMvLZsdQsZVdCdLZdGQjRzdQjD +lTPcDlVdTlVVMSDfTJccVzdlmMgGBmppgBmnHGHqHqQqqQMH +ZRjWFPsLNLLrPhWNtnBBvnpGpHGpQmHnmR +CtwssCNLrsZWjrjcbfPzwJJJffDbTl +cjMvvqpJFqhShNCRQR +ldtDgQZDPdzztLZgPTtfbnStfBSbNNSbnbhhSS +TDsrzsZZZTFHmVHjcsQW +BQmQchrmBddcmZZdpSgrpswWWswVsnnnDJVnnZFnGN +TfStMPLTHvbvRVGnHGsNnJWFNV +qtvMRMMPbbPMLqRPvRTRzMjSSmprpQdBchlmmgldgjzm +nRRnvNPhrbZDLjvS +HCszMwcHHcLDrbQDWr +ptszqwdMbnnhPBqN +QbzhhfbFhBbpbzwwLjLJjSjltL +mNndGrSStHJTJLln +rDMMNVWdVpCbSbSp +tDTSTSTTTTJDwqjWqBWttdjg +nNPmVfnGfPNVLmNzfnzPVFMjdpBwWZwZHwBLBqgjqpWH +dfGPfVQGVPhGzlmnzSvsSTDJhTbTTrrSRD +ZfgtZBptBfRQNQggjjrjjwmwsQJPzrwm +TwTGGwTwzzsJzTsH +lFvwqFLhFMnqcLlVLMLfptNWppppDBDbDfbFgW +mjftBfVPjttmjcSjcPttzJlvnrwvTRrTnvwvlRrHHTHRTR +WZDWDNLFWbZbcMDWGZDbNdMCRsnTdTvdnqrHCTrvsRRvwC +DQFZLNNgtBJQcBzJ +HbZQZFVbQVpQplQZGbGchDffltfLtmdgDjggTmtm +zWzRCdnCRBRdJrzDjLhDthjLJTTtjq +CPPnwSrRdRSzCGMcZZZMwFwMZF +WBQqNQnQllwnWQlvBBMlljHTqqFdGfmTdFfcFTFFcqmP +rsRRVrZhrzbtpZRRhFDmPvfFFrfTdFHGvc +VtSCtSLbtsZVtttthCbJSWSlJlwJQggWWglvwW +QfFLWCvRfSLFCtvtFhNcqDDcGVbhGcqh +ZVgrdZZPPZZzPwdjzZhmccsqJGqDdsDDNddD +pzzwpgZzZZTznZnjZZzPVRLQLlvfSlQRSpWlCvtSQv +RtcHhRMcrHhBrrTNDVBNLqLqQqfBPm +wCbWzWbvdWCjbWppmtmNmqmLLsfsNV +lwjWdbztgHTgggnnnR +flBbzbMfbrTlrMvBCcwPggdmcdmg +VDVVRFZRZSFFhQLSGFQhjSVZCgpvPwLCzpdWWzccwdvvvwcC +hDHRGQVHHQVRZSQGbqqfNTlbHzrbbsqb +MTFdTsZpPTcMpFCPdCBmMBmRfRGBmQgQRRgt +vbDSwvhzznnbbhDWnvSzRBgQQLgLQltqtqlmwfGB +jVjhfSnNDNbzzWzjWSjrCFNpcHdpTTJddJFpsJcc +ZrrZPHfChPdDPVVdDq +vFmsbTsmSbbBJssmSBvTmmnTrnrwlWqwVlLrVTLLTWqL +JrFbpsvFBMBmzBzFStcRhjZjfCCpZNCtct +TGgRrTggwwtvtQtdCdQNqN +sJHZJVZHDBpFBZBBNzNdhzdpSzddvqhN +VZcvFsJVFvsmvssbcnrwbrnGMbMlRn +SdcdWzMJdSMWMddZJdVcmBmwrwqrrnVnVNtr +mlQHCfgbjsfQTbfCBNtVhVnntVBnVh +HLDslDDmblgHfvLHPJFSZPpDFpFFpdPS +qNqPNJvcSzGGPQnGQp +bWhbgsshZWBhltthhbWtCsZNjrzpnQnnznnjtQFrjGjVFGnn +bRDNddhNdDsZdNChmvDmmwqqvLqwSJDq +TnSfPnCSmnSgpSTmfLzfMFLWFJJLWWsBsr +jdQjcdqDVVwDcPsPzMRJMLqPqR +PGhGchjhtZlTGTHCCb +ZZRrJJqSqJwNFFphsGsLPJ +blcMCflvTTPFFNpVvsFv +CcTlltTmtmMdmCmnlllBDDSDQSwSjRDQSdswjR +MCCPNsnQFWbvvTPF +CcCVJJhjVJZRtcCclDDlbcbTcGFFDz +HpjtVwVZfpjJVhZgCVtLmrBwdMrLsNNsMmdLqB +TJTDTnrFzzdWgWGJSSMJwg +LhPVttjtLmsPqqqVsVpsjLlgWlwHvGnlHWlgHlGgwvlP +mQshLhmsnsqZcqhZqpshsLVpNTNbBfzTRBQdFRzNNFBTdbzR +ZGqMLGqvJsJsMJmd +PDVQPfPcrrcFrrzrTdgCjSSCzgszmlJjBj +PfRtVfttVcWtVJrfbGqvwqLpRRwvpppH +HmLmMSnnWnrTrnvpqFCHVGfzVFVHQj +ttsstRhhcNwbswNtdwsdNPFfjzQppQPjfGGfQVPCpR +bbsDNtDcbhstsSZLDmSSgCmnSS +tfwBBLcJVrDnqvLv +zmWWJRZhWRRRGRNdgSZGgWTvpnjvrDqvpHjjzrpnrPDnHj +NdJmSGZWRhRNsghWTJmdGfQCtllCcFMwffBftsfMQc +lTLgTghpGZJDBrnGWnnm +VlRwlHttwqmHHbDWHJ +twldzCvsRdsFFtRtSczTjSgMcfSpSzTM +pBpMBTcSlNtMcTfFCmbPDzCDLb +JgrjjJqhGZQrQrZhnJGDDCZfvPDdDzFFdzfmZL +QHhqqnrVJJPhHrnGQgwMNwMMctcWRWSBMNtNsW +FJrlhpcfDCcFWpNpwWwjNQwz +RTTvPdbjWzMbnNNM +GRZTGggGgtvjGcqrBcttcDlFhr +pMRVdVbbMMMSdWWqHpCTvTjnBBBFFGGB +smNfZgcsNrcmzggZszsgRnPGFHjBPTBTjGjPTBNj +RmwgsmgfrzzsZtfgZLQQSVWlwbdMhlwdqQ +mRRjPmLrrSmzSczSzPgVZFpTCpZCMWrZQMQrZJZT +BvdbHNdnJtvBDbqqdBlvwvqpDQMpZQFMCsQCspZTMMCZCF +nBlfbfbndJBHPfLRfmhhhhPL +ScJDFBNLLbVRqVfZ +rWrgmdMgnnBhBtnntf +CwBWWMgCwddCgwsQjsrvNvlTJzSNHwNTHFJHzS +vnddCrNpCgtjLdSdgCgCCvLnWqDhWBQhHqQHDqBhQHDHNNDl +wPTVfVTJmZGJVJGffZBwHMWlWlHlWtbQDqbl +mGsJVVJsTVTTmtJVzzTJjdSjjprzCvpSLSCjdnLg +zLNggsVHmNNsssLmwzLQZLwDRvGQBqGGDDBBvvDBDqPhRG +WrCjbtJdbFhBRglGgjqv +JWCJcWcSdWcctnJCcJJJbcbmzwwznmgLzNzmLHmHZMwsZL +JRRDNNhhszMTzNMwCG +MnHPqmgmHjPnnvjqdmjFLQwLwTLwzTwTdGLCzS +BnPPZqmcfqgqnnZmBmqjqhfWVJlRMlhWlRDlVsssbh +nmTLTqsvqnwqsvwDPnLHdNVrMMHHCBlmVdmGNV +RgRpcJhQRfQZcJbWhQpBHCjVCdjCVGdddMllHp +fczbZhzbtcZfgRRBcWSPPwFsLSDswSwTsSzw +rbFpzFCVBrrBZCjbCzHHBVdJllGDLsLrDtsswswstGJs +QNhNNnNnnQhNWSnRhnJtdpJpJtMDGsGLLtsQ +ScmRvNRNnWWvNvNvfpTccjVZbqgZgVzqHjCjTVTVVq +BTppwCwBpwwBqnjlHcLBTHnbbSbDthsSSJgsnDDRgJRD +FVGzzvrdMGSSsdtZtZgd +QvQtvtGFlBLLjLQL +gsWWsNMjwgPMPWnMjShHHZSZbmZbbmTSnb +rlCvVQrCfqffpVjQRqCCvDDTTTmmZhZTmZhThFmhhZZhqb +CDDVJpVfrJJVJLMNzMwWwLwj +nHrcsZrssPcBPtQJLJtQQCZQpV +GFWzNzNFdNbTMMqbGTqTqzqqdLCpfDQCtRVVCLtdCfQsdCCt +TlNqGTWFNmMMszhGsmFTWGFzwHnvSjgPgvgSjllBvBnvwPBB +mpMggjgMlmtjtGMwZpcSscBlcsSblhsfSdfs +zzPVDRrLrCTQNCzNRTVFNLhBhBSqdQbcfSsJBJdbjJfB +RPTRPTVNTFzVrHVDCrTHmHtwMvwWMmtwmGjWgvGv +rLMcvfHVfMgLFvfNnBBzwRbBwnrGNs +dttJjJCtdjmwzwBCRRCqcs +TddDQDJDtQJtcJFpPQHPQMvfQlFL +LQSqqpqTCSJcsDcqQMMhnnjMjppZhwHZbZ +NRtvtmgmvdBffgtVCBWVRgFbPzHbMHbnwwjMPZfHbPjzPP +RNtvCvNdgtNNmldgvCFRNVLsQLqJcQGJJrccGSlDLDLr +GdwwqqqwGVtjdPvTCplbHTPbPzPTpp +RpLmLLpFfNsgTzclhzClThgH +ZFsWZLFZJsNsnWsnRsRfnfJQGBttjdGJjBvvwjdpjjttvj +tfPzzLrrdrQlTlvn +qJRBhNhNGVRBFRTlnJvCmvmJPCCl +VVPDNchNMVFGRMFcRVBjsZZcttSLSZzzStcWtZ +pTrwTrnjtttjprTSTNTQfcjcgPsPZfPgjdgdsQ +mCmCzvzhmJDHzJDbhFCDPsgddcsfcdsbdgVRpdVs +zqJzFCDhmqvGhMmCvmGhMCGJnSlnllSBLllLMtNpWtpNBnlt +JBhJrFLhGrnJZrlcbffndnggfggf +jqmWMGGSsqCsmpjmsDQzlcHgbtdzjjlVfctjHV +GWSmSCspCsMSpRmSmqMMCBvFLJLhTTwFhRFLLBTwrv +BCdWccqcqpQqrsNgGsWMgfNW +lFttLzzLwnfsLrsNsNLG +zjNlznlwvRPZnltwvPFnZRCbmjCcqjpcpQcqVVdbdVBm +CwTbbCGNFHtHwwjSjJpzjLMdMMzT +rscqqVvWgWrZMjrlmSzzmLrM +WPqqZnPqgncnBQQVRbCDwRHGSFHPwRNw +ZQnZwWjFvdsHwBJltfmfSlsqlJ +gPprhMDTpMpPMVNqNRqNlJhltJdJ +pLGCcCrgppCrVcMpdzjvzvjLwQQzFjwzHF +NmmmvfqcvmLSQhCLvtvL +TVlWTZVJZJsFbwWbQQhtQgLFCnSgghLt +hZJTJZhwZlRJrJWHVlblMBffmqfdNMjdGdBBqqcH +GJJfLfptGqqqnsVqVVjjDnNc +mZPSvPmBCdmwdCLDshSbRnnDDhRL +gvBrBvPBPPZCTLZmwmrgQdwfTJMHGzHfWffJzFzttHWFzW +sBMvmzWzmFmNWJfffZNLfbqZbtZq +jRQVRnhhppnVhjgnDLttLqbLqLQfDLss +jRRgpGVGhwhnspgpRppwSnBvMMcWvGczGJJHdmHJmJFF +VCLHFwHMhLghHHWhFFgWNMMVzmdmbvWdJqBPJPPBppqmBdzm +SRTsjGZTsZZnSnGZGqdBmrqPvmqqqsPpmv +GvQSGtZSQllVhtLMcLLNMH +GsNdWpdVWGSHjFCWCqFFgqngvW +mRQTcrLRmZTPRLPZfqqqHbDDDgFvFnvqzQ +hfZHrwwmcZRwlLfwlmrRjMJJsVjslVNBGNjpVBBG +pllpztRqBBvvGPpG +QQhhZQbVcZQTPMWWGbvvbMHM +cwgCQCLZChQwwLZVzCrzzqNCzrDqdFPF +bgcLPvvpcbdsbpSsHRTCqsRfWfsHRm +lZlQtthrnlVMmTHqqqqHSChB +rDtlzttnlSNrMtQjZVrcgGDLLddcdcpPgPGJJd +jvGbvLLQDSGlRmmSLjlDmRQggFBrMCwWdsBFWBFjdrrWrr +PpTfcPZpNTVNpHzTzzzpPJhBcwrrhFsrMdFcMCBFhgMF +JTTqdtfzfzJpqffNdTTHGtQRnmDQGGLQQlQRbblD +CQQCshCMwgQhMdjWJFBPpbjgmmWj +SNNvcGNSZSTDtGDcczJJBmzbjBJjmppbppms +cDtfDVNTGGGNNrwLLwHdqLhfLs +ngghZCChzhNjjNbbJfdh +slPPRLlBBlVRMvRllLLHvcpcdFfJjvdFpfHfcZ +RDZPZBLmPVWDVrQtnzSTmgTwmTSg diff --git a/2022/Day03/part-one.cl b/2022/Day03/part-one.cl new file mode 100644 index 0000000..874f893 --- /dev/null +++ b/2022/Day03/part-one.cl @@ -0,0 +1,34 @@ +(defvar *prog-input*) + +(let ((ui (read-line))) + (if (equal ui "") + (setq *prog-input* *standard-input*) + (setq *prog-input* (open ui)))) + +(defun char-to-priority (c) + (if (and (char<= #\a c) (char<= c #\z)) + (- (char-int c) 96) ; (+1 (- (char-int c) (char-int #\a)) + (- (char-int c) 38))) ; (+ 27 (- (char-int c) (char-int #\A)) + +(let + ((inpt (read-line *prog-input* NIL)) (first-comp "") (second-comp "") (encountered '()) (priority-sum 0)) + + (loop until (or (string= inpt "end") (not inpt)) do + (setq encountered '()) + (setq first-comp (subseq inpt 0 (/ (length inpt) 2))) + (setq second-comp (subseq inpt (/ (length inpt) 2))) + + (loop for itype-first across first-comp do + (loop for itype-second across second-comp do + (if (and (char= itype-first itype-second) (not (member itype-first encountered))) + (progn (push itype-first encountered) + (setq priority-sum (+ priority-sum (char-to-priority itype-first))))))) + + (setq inpt (read-line *prog-input* NIL))) + + ;; (print (loop for itype in encountered sum (char-to-priority itype))) + (print priority-sum)) + +(if (not (eq *prog-input* *standard-input*)) + (close *prog-input*)) + diff --git a/2022/Day03/part-two.cl b/2022/Day03/part-two.cl new file mode 100644 index 0000000..fcde7ed --- /dev/null +++ b/2022/Day03/part-two.cl @@ -0,0 +1,39 @@ +(defvar *prog-input*) + +(let ((ui (read-line))) + (if (equal ui "") + (setq *prog-input* *standard-input*) + (setq *prog-input* (open ui)))) + +(defun char-to-priority (c) + (if (and (char<= #\a c) (char<= c #\z)) + (- (char-int c) 96) ; (+ 1 (- (char-int c) (char-int #\a)) + (- (char-int c) 38))) ; (+ 27 (- (char-int c) (char-int #\A)) + +(defun str-to-uniq-list (str) + (let ((out '())) + (loop for c across str do + (if (not (member c out)) + (push c out))) + out)) + +(let + ((inpt (read-line *prog-input* NIL)) (line-cnt 0) (encountered '()) (badge-prior 0)) + + (loop until (or (string= inpt "end") (not inpt)) do + (if (= line-cnt 0) + (setq encountered (str-to-uniq-list inpt)) + (loop for c in encountered do + (if (not (find c inpt)) + (setq encountered (remove c encountered))))) + + (if (= line-cnt 2) + (setq badge-prior (+ badge-prior (char-to-priority (first encountered))))) + + (setq line-cnt (mod (1+ line-cnt) 3)) + (setq inpt (read-line *prog-input* NIL))) + + (print badge-prior)) + +(if (not (eq *prog-input* *standard-input*)) + (close *prog-input*)) |
