Compare commits

...

3 Commits

Author SHA1 Message Date
magical d1b96f1324 day 3 ivy solution 2022-12-03 00:41:36 -08:00
magical 7aece65dcb clean up day 3 slightly 2022-12-02 21:31:41 -08:00
magical 5d959e5aad day 3 2022-12-02 21:27:37 -08:00
4 changed files with 380 additions and 0 deletions

300
day03/input 100644
View File

@ -0,0 +1,300 @@
WjmsdnddnmQPZPPJPL
bQllTtpBlgwtrbbCwfZcfSFPSfLCSF
GgVgQrlpphBGrlVGgTtsRHRWVRMzRdVsqdnDnV
MMTcbpnfNGQbMjgsRwSzRptRzz
lPqCCqQdQqQmCPRzRVSwtzgqqwqR
lrDdllPdBWdDFQFnMbDNDn
FldWTldlpBSLzvpnpSTpWbDhbHNDPHhJcNHNDwbH
qVCGQRGrrgMQrJhPNchgvgJhNc
frjGfMrGQMjsRrRQjvQGmrQQszTTpSLBznlzBlLLSBLLSZTn
TPZZZMTTbNTZNtTlTbjPVRVGzpGQLLzdGgmslhzSzgLzQh
wrfwDDvcnFvCfrrSQsmzGGQQdndsGg
qfHwHCqCqCrFJrcBHCCJRmWTRTmVMttjRjRHZMNV
vpbqnzbPmWLFjFLBnjZg
NltQcCClQlcGQGtMTCRdGTGBFZRLZjFFZZhBPLrFHZFjHf
lMtlGMwMsCCNlTwtsCPzzmPmmVpmpWqVWsWz
VmWVSchSrScGtwlVtBnwBVFF
RZZPRNpPCLZvZPZNCLbQPZNBFtttmwBMTMTtttCwtgwBgl
RNNmPvbQQjPRQQNNHpNbhsfzWJqqSJcsGHhHcfhq
dtJvcpccWvLDztRCRRCrCC
qHVslPzPqHqzmPhTzmDFggjrHrSCNFFFSjgR
qPVPMhszZPVhwBZcdpvZJncbcJ
HBNLlBDtvLDHhHLvfwlFjqfQTFqqWfST
ddsGcggJncZVRdGCdZdcWWzSFrjzQFrfTzqfCjFw
VdgscZmbZNBvbDHTbL
GtSZQqpHpHfGHzzqHzHfSbPbnJCrRCnJChmjnJnbSh
DvcTNTDWlNDWdlbnnbjmRhRrCCRd
cclNlwBRvvTNccRlBNRspVLLZzVzVZQqfqqLpzpw
dBSfHdZvMQMdNVpWRmWmLCmmtB
rbTTrrjDcqcrrqrjjJGGclltPCWDmvtpmpPpvRDsCspsLC
vlhjThlqcjrnTvThndddHZngMnfwNQFNFM
tHqfszrgLsvgqtHrHtwVCGBRRjGSCwsCsmmV
MdFMclPmcDQFDlDdlZPmbVpCbFpCbBSCCRGCFpbV
mcDJdDQMcDTZQhhNNPldhhDtvHLgqtzgLvzTzWHWnWfvvz
sVdGlTMMVTGCdsTMHHWWnNBzNWpNWCpW
mPmjFhlwmwmWrpSrSWHB
jhPhjwgthtFFjRwjZgjGdJcdflfqMsZLLsdZdc
CBRsTsBBzLCfLqtqBRPNDQglSttlcgDlgGGt
rJdbrJjrdbVJZdVZCGrNNcgDQlcQrggl
FpFbbppjFCdwmTvsvfzmTnTBfq
cqhcWqqCNjGWqcqhGGZzngftmptLZLGZTn
brJHBbPVHPvSsdHrzQLzZgpfVzpfQtnL
dHFPBPrBJFRzcWNFhWwN
QTBTfQTZsjWDJBJd
FgFWNqWGDPqlPllp
CCvHzSWFrrtvNvNNHLGQQfbVRRfHZcZcVTTTnZ
ZCCHHCVRZzBZQThM
nljDtcqnhcfbwjwltfLQMLLQQppJBMLQJL
qDsqschsqblDqjcqtRmNVVdNsddNNPmFgV
QQRnqGBSpQnMmSGmRQQFtdcbbtHHccjpTFcTfF
wCNPNwNNWNgZHJHJFffqCjbj
ZNPzNWgNrsmzMVqsqs
pVWlMBWjlWWqspWDjdjMpMDCPtmmdbhtQtQtbGPCzChchz
HZNgrHSvHwnFZnvgNvnwLPBGQHmCmtPmtBCGGCmQhG
FrNfvSNSZLZJrJsVlRWWWqRBVTff
PQctSHQDPSQcbShpFzbmFddpmdmR
wqWVwvwNCJRhmdhwJw
nMnWggVqRVZqHBSBsQsQGDSZ
qppwrgZSLsVbbfvZ
hhBHPQQChCDcPcsvvhbGbsllJTfv
MDWmWFCPFWtgpRWjws
bmRjdmrJRjhJdJLZBjTFfHGTtQFTSQBS
wCNVnsspwsnvNDwnsDwSBHtDHHQGTFQFtMrQMS
nWsNvqVgVcqdJrchrz
MZlfqlmblmMRWhWNsjSQfh
CznczgtDFnVtFBNSRNttvhQsNh
SGDFzVrzVPrGHVnzCPVnlZlPwTbpTqlbqLMpbLlq
lbbbGDlwLDLjvDvm
FQfQnLTWVcPChtjmjWSj
cfgzzgfgfVdzTdfNwBpbLbwdRbpZGrdw
mwnWtbmdWdccwtgTmwnQfPqsqLQQJQQLsfQQ
SjrZbhvBZzPHQqfGJfjG
FlrMBSvMZZFBZhShMMdctWDtmFNDbDTmtmpt
ndHWprpqFTnnpdNFlhljzlGTwDGzlhGz
fvZmmVVfJctMZsgMgmcBmsZhwQlGDCzPPZWDGDjCllhC
WsmvmsmRNnpRHdbS
LgZSvhvcsWtcWnjrFrWjjjnPWW
DJDfNlDNRFlpMlFLFP
TmqTqDHdmfwJRwfdQJLHzzSggHZZcGzhtZvcZhzG
lbTpqhhgSlgtlTqSDzzLPPPrLGTTGnLm
VwGfQGBGZWNnmDLPznLB
vQdfZFWvFMMFwWGGhpGqJbpFtgbS
hSvCvFRDwmzCCHrszb
jdMgfTblgjJTLLLzqqGscmPmlqPzHc
bjQLTTbZMfJffZBBWdjBBQwVDntFpRvvDVvSnhppFv
FFnFQndPqzmjHscmJFwc
ZrZrRgDphGGDZgRRBSBNMHHvmwJJSNJHcv
DGrbbthfWWWDgtfffttfpGPVqnmblqPqCdQTlTPCzTll
sHTsGrHpsftmddRRZfRv
MqFcqcMQbMcVPCdFZCzZsRsFzL
qnVlBbcJJbbMcbgQJMMbQlDWWwHWSWwpTsGHGrpDWG
qpmvVVcGvVVcVmDsCfqTHLLJzTjfZzLZ
rSSgwwnSRRBrQrZzZHCQrZ
BFgFRgdNnSBbbnhSMBSNFdsWVtpWmzsGtvpVPvGWVDDN
fBBRfJBzzMRGRzCBgWtbCWtbgHHHWdqt
mvNcDcsDLLnnqfbv
hpTsTsTrDrfpMSFFZjPFMrSP
CNQGGDMFWGnWWvvNMQFPvrgzBLVBLszwgggLgw
mppZVZtZRTbTTpRccVbgrSLzSPSzBrfbPBbSPw
VtZJhRJcTpJTHlhtHZCFFWFjNjGGnFhCqDqG
cppcZGcGgGpdTgSSnmpFMFrFzmwqwmrHwz
RStQJNCNvfBQNjrqmrjFrBMzFB
LJDNNJCDLcdLnSVd
gNrBNSrNNtSjBndzmzlVnm
MbfqfpCLpCsLqsLFSbQLfnMdcdRRcdzldlnljzncnJ
QPQLqZqhSqhvtvTTWrNg
DtrrcGvtLnrrvLrfctfHztrfQpbwwphpdSbbPPPwFSFFRPwH
gggBqTNdTNjqWBlNmCqCmNggQPhpPPPbhhQpSBpJwbSJSQFR
ZglTmgWNgVZMZdsGMcvDcMdMnz
bjtTFsPmmtpvVlQHlQJQnJjn
WzDzwLCSLrrDNLdrSZRCwNzrlQlJMnJQJJVhbcMhgllwnJQh
fRCZzrWRzzGbGvTmBPTf
lVlfJVblPQbllflfLdJdvGpjnFRFqJFnDqpJjnpF
HcwZMgmwWCHHCSwcWCcgSCtCqqpFppGDqvDnRhgnnqFDpjFT
cwCHtGrCssWHCCWZZMbPPNBVbNfVbPllVszf
DSpSnRwrZDPWsJdZ
zjjlQVjlNZmCVCfhCfgFFfFFFqWJbgbFWHJH
lNQMlGjQBZjCmhNMCChGzlVNrpTnccLLwcRwTSppSpprLRcB
vLfvcgglbfLfgqdgNpPtzqDmPzmJTTztPCHT
ZWSQVGwQcWjSshGwVcnSzDJZtPPTzmzzJHCTzDtJ
SjVSrWVhQVQhwrLMcrFbfplcflvv
NgtfSRPnnRrSlgsPhnShDWQlMWpVBMMMpCWVBpCQBB
LLJnvwJvZHZbHTbVCQBppCFJCWWQBz
wHTGZmZvdvLvjLwZdqngNgsGtrDPSDhtNfDf
DwrDRlrwmbSbRgwsSbRwGJvQGqjJqGNTJTNGTSGn
PZdMZzCQFBZWWFQvJZvcNcjqNjjZJG
WHWCFHBBdzzMWhPFtFdMzlRsVbVmDrRVVrtQplwVwD
bpWbJMWpJbprfNMrBfJfprWhPnGtnHnLHjPPjLvsWnHGvGvj
qZdgVVgDQhQZlwcqgDcchldjjmLtntmntPQsmLnLPjssnL
RVRlgcSSdglZczdqbTCrhBrBpNBSBSbF
SgbGvfbnGgmnNnnzqMqqHHRzbZBzZR
TWlssdFwWdtswWPtTtWltwdVHlZZzRHZBZRzrprqHMpqgZrq
dssdCWTFwSvgmDjDCG
pqsDnNzzZsdZSnDSpwjBCBWvgjvWjNFWQgWC
lVGtRtLMGGfbTGTtTbQCQnBQBnBFgFQcgjfc
GPbTbPtnPttmLTGRRbtmdwSDwpwwhZqmdpzDhDJd
MdccRQMJvHdgZggvhjjMgHcHlWWqFFWmGqFbJWzzFLWlLmPm
TDpSsTrtblSzQlGQ
tfVNrwTwtswTssMRjMMQQddNMRCd
GqGqGpFqqgDGFRqDwwqqmzpGTLPvVWMPVCPLJLRJJMLTlCWV
rHrSbrsbQcbtdNHHHfdPlvWBLLWlvMTVlVLCJf
rccbtthHSHsNHrrcttwqpnDFnMmpnzFnFhnF
vQQQbRvlLjNNLLBzNllNHNBqGqhMWhGGhTqmPmqhWTFhRm
tnsZwgSnCDrZSCDsfTMSGpPWmPSWmGmbFq
CrVnfnCCtrCgfrffcrstDnJNlvJdNvzdBcHdLBJHvbBv
nmQsMqTnLlmmpQZmTZcdHwCFSpHJSSWHSJVSWSHH
vRgRRtfPvDjzDgDbsjzRvjfNNWWCSJFwrHCFbrCJWJHCSC
GhsRBztDBgzRPstgzBLZcqmlcLMMlmdLQBZT
CWfvvhfWrlllSSRrdQrQDQGQdTRr
jsNctMZLmMZLMmmmbbNZswZNqBTHPHzBMHHTMGqBRMRPDQqP
jcwjntLngngplgFhgRvJVp
vchzqzwlhzRqzVZQwqtVPZLnLLbDnDFnbGLnDbPLDGWD
pBTHpdpHsrNBBsgdrdCpCpCgRFCMFDLFWWnFWLRRGWbDFGSF
prsBHfggjpjjcRQlqvtw
VDwzLQrDDWrrwWbJrVJwVrVQfMfSCNPMfSlMlPcMmThChf
tsjFdsRsgtRmGZHpHRgBClSlGSClcPhGCfPlllll
qBBFBZZpmgdFHdstjFJbzVwJVqJWWbrvWJDL
mgjZmrqmdsmGtDplglJgRVVc
nPhnLvnHLtLnWzzcNwwcchVJRflhpc
SnnLntLWZsMqZrSZ
jcrNfnrNLNNqFgbDfCSgSQbS
zPPHtMrGGptvTWPVvzvHRgQsbDsSRRCCQbtJsJDS
wHzrWVzPwThGGwMHzTGGPGwhdlZnBndZLljNjBcLdZdNBN
qNPhNqddBNhqvPhFvllNgNBHCrrCQnjpCfPVJnnJQJCjJj
ZZbZTZcmGWWMDWRSDnBVQCjVDffJjnnVCJ
SGBRTTZGGcLSSWTScsmcMbGlhgwFqslhzqggghwhNvwwvw
GCCPwpsBqNSsBPpSCrSshzQzLhTvQhqTnhtTVQcT
JDjFJfMJgWbWWlDJcnvvhvtdLnjnzhjz
FlDflbZfZgJgMgbmgZJfSpGCvvrGrRCpCBrZRprw
HwqhgFGSMgPPCGQQQnvvcpjn
BllbdfRBsBmsmZlBTmQCjTnNWNCmNmvc
lJDlBflDdbbRlLbfsbZBJtbRqrVFPnwwwhVMHwVrgJwwrSwH
LTvLtTFLCddFTTthsbVVmHHcqVHmWRcmHL
lBgwwNggwMwNVbjBCQcCqCRB
nCMCwZGGNGJnGhtrzsdDDndtsF
ZlZdJJplLZBDpJjNJlGjQCLmCQmTwVVCbQQbqWCT
SfgFzftrnRzMnVbPPPQmPq
FfmrRvgShchvFfghzRvgtvFBpJDpcGNGdBHJlpDDDJlDJZ
LdNrLzjdWQnrDHsD
tBZmBZtVZpldVMPRnsRQsnnsHVbRHs
MlfldwMBBFMZTSFTSqLqcvSJ
nJqBlvvBjHhBcqqRrGPrTrGpBCGzTG
MfVCVMLZVZtQCdtLMtQtQSSSTSzFRSRPFpFRGpdTFd
CCQQtQVgfbbQNggsNfQZZbHbcWmnhlhnvlnlHjJWvnhv
SGmmGwVwnmhbhnhwhhwbdMgNNgjmvMDrJTCgmBTBBj
ztFWcWQQfcRzzRFllvjDjggjDDfBgJMBgC
QtzcJtFtqcFQRRWRRQWFzFGpVnVSGLLGZVGVqddbLqGL
tBmdmQtjMMqDLqBtttQMjDdwwgwccMMbffllgzncwfFflF
TPVHTVsRsJVHVrVvHvrRhVJbfCgFbzwbCGgFlwgcCwbn
hssVWnRrTVZSSZZqjLddWtLBddqtQL
WhhtGZtZGQZmvCfCwtvhqgbfdDJdfjlSDlSlBBJDSg
rHnpFHnDrdBggJngnL
HVcTzFPNzTpPPVrzmtwtvvvmNQwDQvWw
dStBwStGGBrNnBdrSSMzvjhgFcvvDcnnvPDn
RLZbCWWJbHRsTHspZWLcDWcPPhzczfjgPjjvjz
ZmLHJqJsLJJHLRsmmmGSztQdQzmNBrBN
JrmRVdvcmvvmvvRTdBVVfjFQLwjqLFLWFMqwcFjz
DDhhttDHHHbHSnsDbHqMqzwQLLFwLsjjLLQf
bSbPthtgGQPNPHnSDChCRJZZJRCZdCrCBZZZZvJd
rqvVqNJpVVNwnqqTwthMMq
jsFRFDQRLQDQmsPRmQsmcQFMzGhwBGBhTzTTzHnRhnhBhRwz
dCccQcQsFCmCQfbJbvZMNZfJrJll
TGjrrTRLHvrQrFDCrmzzVm
NwWqqhndWtzDQhCzVCsh
CSSwNNwqgBBBBbGGvLTTvb
fRBRBHCVRRzcCdZHvRvZVCZLNjtwtNwNTtLjNtTpTNttfS
DZshMssZmTMjwjSLtw
QPrJDDJsPDFmFrFDscHHRzrcvccCZRVzrR
zgqzLLvlvdgpgrWpWW
RnJmNRncnScFmZSScrJQQdbpGdHbWHtPHpBHsdFdsW
JDfRcrSnmDSJcNfrNZNjvlwjhllhMzlDqMqMvh
fDLzSMLhhtDWMvtjCRRZjCHHJjChHN
pmTNpVwPNbPwPBFRqRJqjCnFjZFV
dTwpddsTbgbQBssprsgtvgcNLzWMctfSgcfWLt
fbBsBTsNDhGBGZcLLLJJQffQLQ
MpsCCMHClsHQqZcQWLqR
FtjdCFzVljFlslVCpFrFjPhggBGDgNSTTgbGNmbGTr
HqTfmsCFmPlGHddNVGpLhz
JjjcQQJgjZvZZzzwgpNVGwLGgV
nQnSbDDRbSQJQQpRZtZcZZsPPrFfWCPFWlrFsFPqmqFt
TgTDDrCmqJDGLrhqLmLGqDQRFtttjMbQZJjtdtjFdsdF
WHffcHWnlvvcSSWzPVvHpWWVRbFdQQtQnjwZFMwZtwddsZbd
cBpPplVVPfvVGBDLGCBqmmLM
dlMMmnmjvCCjJrrvMdgHcbcFbqFbzQrFbGzb
tPhRBRZPtZRshTzRsNShRZNGDfGgFFbFQqbGHDHbqfGD
TSPhBVsTwRBTpVtRZpVhZLJjWzLjJlJlJvmwWWzwWn
WcvLLgLcczLTDtccbLcgzMMfPsGwRPjwfMwHMfMvMp
QVmlPQCdJlJJJlFJJJnPQQhlwwMMMnMwNMpwMGwwfswwGMsR
lrSCZZVFhPSZgzgWttWBcc
bwbbZLlbwlJhBzFCgtTGRGQldQRmQW
SSnpHnPHqpmggCWgdT
PPscHHTfcsPSDVfVssjvwFJLBJFjFJJZFJLNLwrL
nLgDSHgwRgGnHjjNfTRhjPVpWV
BstQsvhQZQQbMvCvMPVNWpPcTjfmPmmW
brtCrtvtzrhdSDJDwh
dTQTwgmZQbDzzMQCCl
WLLtntFnfnRHbttnSRRzSMVGDDMGzVlV
JsPhFtfbLWnsLPLqgdJcjmcwTwjcdw
wMwMbMRRBBMLPBlhLRQlhPcWzgJNvJtzWNtJptpgjJgpBj
TnmGGmVnFFNSZsnZqFsWzWjrTJzvzWvWgWtTWz
qnHGnVSsqZCddnGCGCSNdDbLQPcLLQlDhPRMhb
NGsBTBlqsvfQBQqsTLTFltRMmRwmmHmFtPSRhM
gjZWJWCZdDpjggDdgnpWdZZJtFwFRFFRMwbbmRPtShnwRbtt
zZpSDDgpzcDddjVWggJsQGrfQvrQcTGTGrTrqr
hpJchhFWMpRDWHWcDGnCGrnGnwPTwpQnCt
bmgddgmlmjjbfddgmmmNvGQLrtfTwrTtLtGTLQVQQP
qqbmdZgzZbvgPDccHcZPhWWH
VVrdQZZrZSZFgQTTTzggrVZVMlfBBfvcMBCBslMhBvsMBSff
bQwnHwbNpwcsCwjMBw
pHqqPnJHqpPNJFzqTzQWWDQQZq
HgwTDfgBwBgcRHqRRjHqHTzQQClSzvlzPVSQLvbbPC
MnhtNZNnJpWpGhMQbCCPVSPLNmSPQQ
rrhJMFJJZFJpHcjRLFRfHjgj
vGvGMBlttBltvjdgbPsrsDWdjPPP
HnJQHVqNmQHmZsDZPPrDWpgFps
JSqJQVVDqqVfJNfRffGSGMBwGTCCCTlBMSBl
PsFZPfGbDNbtQmCCmCBBbmmL
dcRdhSrCqjThTRcTpLzHQzTmpmlgBz
hhhcqCvwhhVhfPNvsMstZtsZ
VvGwBBwvZtGgfZCqShnFFjSstCMC
NlTRdvpDdTRNzdTHHnMssCnCnCqjSz
LvWvPcWLpGwBwVVgVc
bVVmSrLmLSJzTZMSFTBdMj
QnvqRGGDvWpQWGDpvsRZLBzTRjBTtjRTPtBF
QWGvDpqcvpGWQpGngqGQGwpLhJVNJcrbfrVbfbhHrmlVJHVV
NGRGPZWZpblGcJtfssSSsbffCs
gwRhjvrgjmwgnzvJJJtVCtHJqs
rrmLrhwFFmmTMgFRjNZWNpZlZLppQNcDWP
qsHZsHZrTBtZrHBNFCJGWrMcpcddWGJWLG
mRDDzbPVDVlVDgbgRRvmwCcWdGvJwGddpvLm
PnfDbPbVzDbVfjnnlbzhVFsspBSfFsssHQNTBpFqNQ
gCmtbDqPVVVqggCGqTJjHMpMQfgMpMHQQpcM
zNZnsSLzZzrlRhTTJMHppjfHSpvp
nhdrBsLlRRrdTlsTVmCmGqDVFdtDPGwV
FnqNfdGfgzmPLGmj
blvVvbsRwgnzjCPcbT
RWWvtvphnZQZwMBNdHfNDBZZdq
DMRhDhdvnjhnPnvPMfdZSGTccGJFjGFFpFpFTbTpTW
NVgVmtzVlLBmgztsBNmtgCmqFpJJFGGpGbrcGGsrcpbWPr
zwBztLBzllQPDZvfQZfRfHSR
mFCgPzmqgtPPqMmFWzbMttcRGvRclvHhWGGcZvclRfHh
psSNnhnLGnwZHZGv
hBpNLTNLBhsPmbCgBtPDbM
JsbLLWLJRfQFnccmQhtvvPCP
dwgrVwGpgVhCrrhPDHtC
gpGSjpVdVpVppjjVZBwdCbFRWLzLMSRMbNzfzbWR
DmMQMJmnmGwzGwwG
ZcLcgLgcRsZSctHFWLGfjjBwvbvBsvjpfhGb
GgFPqFtLRHLFSHLRRFRHHtMnJVNCQCrJCJCnMJDdnqDV
tqdqFqdsRdVdtHMNdRZHTZLrHJgrlZQPJLgr
GGwVcpGznmhbWhwcVVgzTrDrDDLZlTLLZQrJ
nhbnbfjcnfMfFNVtBq
QHmPNZvfCLsSwJSm
pDhjpVDFcRBpFFjjMnRcVhpFCzbzsZbSSCtwtLMSLZLLtLbs
FRjrnRchnfHPrrZlHl
bjjMbdChgRDZthpQpRQnwRTprRwS
mGzJsGsHzHGPvvvqvzGzSnglSJrrwQgnlQQSrlQl
qvzHqHLHmHgPsNBdCdZtVBtVVMBFbh
CctrCwrdpTwcpVrdpTpcrcnSJQttvQPHJQNQnQNjvvHQ
zsqRlslRLqfgRmWsRgRzqzQnHjSBSQWJHPhHnSvHnJJJ
GRgllbgfRgbzfRmwwcGdFMcTVPrFCF

1
day03/input.ivy 100644

File diff suppressed because one or more lines are too long

48
day03/sol.ivy 100644
View File

@ -0,0 +1,48 @@
) get "input.ivy"
alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
op vec str = or/ alpha o.== str
# find the first occurence of an element in a vector
op c index str = +/ and\ c != str
# reshapes a vector as a 1-row matrix
op lift v = (1, rho v) rho v
op a concat b =
0 == rho rho a: b
0 == rho rho b: a
a, b
nl = "\n"
null = 0 rho 0
op m parse input =
(rho input) == 0: m # if input is empty return the matrix
i = nl index input # find the first newline
k = (i+1) min (rho input)
line = i take input # get chars before the newline
rest = k drop input # get chars after the newline
n = (rho line) / 2 # split line into two equal pieces
A = vec n take line # and convert them to 1-hot vectors
B = vec n drop line
C = (lift A), (lift B) # make a pair
m = m concat lift C # add the pair to the accumulator matrix
m parse rest # recurse
op parse input = null parse input
op score m = +/ (iota rho alpha) * +/ transp m
op solve m =
score m[;1] and m[;2]
op solve2 m =
m = m[;1] or m[;2]
n = (rho m)[1] / 3
i = -2 + 3 * iota n
score m[i] and m[i+1] and m[i+2]
m = parse input
solve m
solve2 m

31
day03/sol.py 100644
View File

@ -0,0 +1,31 @@
import string
letters = string.ascii_lowercase + string.ascii_uppercase
data = []
t = 0
for line in open("input"):
data.append(line.strip())
for line in data:
n = len(line) // 2
a, b = line[:n], line[n:]
u = set(a) & set(b)
assert len(u) == 1
x = list(u)[0]
#print(x)
t += 1 + letters.index(x)
print(t)
t = 0
for i in range(0, len(data), 3):
a, b, c = map(set, data[i:i+3])
u = a & b & c
#print(u)
assert len(u) == 1
x = list(u)[0]
t += 1 + letters.index(x)
print(t)