aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2022/Day03/input-po.txt300
-rw-r--r--2022/Day03/part-one.cl34
-rw-r--r--2022/Day03/part-two.cl39
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*))