getting first part right with good edge case covered
This commit is contained in:
Generated
+7
@@ -0,0 +1,7 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day-3"
|
||||||
|
version = "0.1.0"
|
||||||
@@ -0,0 +1,300 @@
|
|||||||
|
hqBqJsqHhHvhHHqlBvlfpHQQwLVzVwtVzjzttjQVSjMjwL
|
||||||
|
gRTRnCRsFNGbTzLjwcSTMmSz
|
||||||
|
dGgsRWPGdWgZJqBBqhfpPq
|
||||||
|
HNCNJHCWJRRLqNJWlfrrrwsmlwGmmf
|
||||||
|
dddvLdLjdDvjvswlmGwlZQtjrt
|
||||||
|
dvcpbLVcvNJJHNPHSp
|
||||||
|
QDprSpLQRLQrQDmQcQFZjbbhZwdRsRFbbBss
|
||||||
|
gWGGPgNvJlgJzDlNGHCGPNZZgFBbsjbFFBwZwfhdZbZB
|
||||||
|
lHTlGMHlGCPNvClzGzJHvGcrMcVtLqMLcrrQVcVDrqrm
|
||||||
|
SrBpJFfldlFNslFJBZwsmwgVGGsCCVmZZD
|
||||||
|
jLtjvzLQMtWjbbQvDZZwGRJGgwggGZgv
|
||||||
|
MzqqjznQPqnnjznnctnFlSddPfHflhfBJFNdHd
|
||||||
|
mPNNGVCRngnSbgNw
|
||||||
|
WqsqlTssgvqvZWZzhsTzWhScdHtfJJnfbtSJwfczdtSS
|
||||||
|
sqTvhpqQvWZQLmDpDGMDGrgL
|
||||||
|
DQRcLQVLbbcbrFPcRtTBBBJnTZrrnmZTrMgJ
|
||||||
|
slGjjjdlhMfvdMQTvg
|
||||||
|
jlzNhWHhhWjHlwwwGLDSDtPQVtRzRbSzpp
|
||||||
|
DzDgfvzfDczfHCHSlgHLCmWG
|
||||||
|
PrpNPJtpPMBssmmVdmSVVr
|
||||||
|
PSRMwPnMpBNtNBTnnZwDqzQFfwhjZZqfhh
|
||||||
|
fzfBwhBJFbCwbwwg
|
||||||
|
strtgtrPgmPgFRsMdRnZRMFn
|
||||||
|
mrmLPDvGmmtSLDgmSqvHchhcHQzcQQJHBfBh
|
||||||
|
NsgwPPDgsPHqsTqqmLbLrDRhmrRVrbVW
|
||||||
|
lFpGFtfFlvSFplGFzptSGSSlhZbhjhfrmWbhLhmLbCZVZjWr
|
||||||
|
ccplJQSGcSSpVFvNqqsqPNqPQPTwqd
|
||||||
|
HFhPNNZGqSZrCDBVZBCB
|
||||||
|
RJTtwczTzCRVQrRHpR
|
||||||
|
mfgblfltwgwwmlJgcHNnGhSbFNnFsFjFqG
|
||||||
|
tSRqNRHpHnMSTqpcmrWWfqfmrCQCrW
|
||||||
|
lhGDtbgVVgDsDbhfldfwrzrfcdzwcr
|
||||||
|
vtDDhsgFBTNZFBHS
|
||||||
|
LcNpLLBNgdmHGmsBCrRBQDDwnwRj
|
||||||
|
hSWfZVhfPJJhfVWbhzbnQqQnRRRqPvCCrjvjwj
|
||||||
|
ztJSSJhzzSTJrZSbzzJTfzbZmLmggdmNMFNpmtmMGFFGNpmt
|
||||||
|
TRdFfLbTnLvZVlZvznQV
|
||||||
|
pgJGprJNhghhNjjPgPNrhNqqlVVlQVVQqQjfzBfQvZzB
|
||||||
|
rmGmSwJPwJprrNDbsfMRsdTDcDWHfM
|
||||||
|
QMpZZTtwMBttJMMbVqPpqLqbVlbqqN
|
||||||
|
rjCFGrdGRwdDHSnqflPVLqqVNllrfl
|
||||||
|
DHGDRvhvwTZhJWBQ
|
||||||
|
LcQCCpLQVhrdcFQCJrmmmwDwvDtJJnnw
|
||||||
|
TsZqqTzMRqZjfsjTTDjsNJnmnStRSHnnSJmnJSNH
|
||||||
|
sMMZZbDjZFdbVCFphV
|
||||||
|
FCcdFFGBsdDrbMNSmSdmQR
|
||||||
|
tVttHVLhvVgfTTtffNSMQRMZSRmMQNmHSb
|
||||||
|
gngvvwJtVVTvVvvvfwvJThhCzGcnsCjmCDmscPcGCsGsmz
|
||||||
|
fsnzRNZswZszPRZSLflPpDhlhvgWHmjWvJjh
|
||||||
|
bVcCqjbdjbcMdBrddrQphvHHmHWlggpWpppqJJ
|
||||||
|
FBTdFQGrTjLNsNtL
|
||||||
|
MSWWgMdgdbWbbfdgsPmddgCmSLZvSFvLQvnLrFNZvZFLlLLl
|
||||||
|
hjpJjGthjRNRptwJJqVBllnvrrlTTQFZqnTZnn
|
||||||
|
tjDGHwhHHjwjjJGpwjwjjJpwsdgffmbgMsmbDNcMcdmCPdsm
|
||||||
|
MlDrrgnTDLlCCmCRFgRSCR
|
||||||
|
HHhbbNQMccQFSNBmmpJNSJ
|
||||||
|
MwbMbshsswVbHQsbcVMcrtDllTlLqfTGVzLGrTlT
|
||||||
|
gSFzqQTpmVpQVpLFLrzJJRthlsQBlPsZsBhZst
|
||||||
|
rwrNDdbHdBhRhZbsjB
|
||||||
|
vvvMHwHcwGCwwNfMVSrqffWpSfSFzLmT
|
||||||
|
RNgMgRCCgCfPNfvNgVQmhPVWWjWjLLdLBj
|
||||||
|
JhJqqqwGDchsBVbdjldmBLmG
|
||||||
|
schZzDwTJzFTsctHFMtfftgMttpM
|
||||||
|
GHHWqWFWfWHqbRWsFZFmqZbhNjNDNppNjrjDcQdbpddhjr
|
||||||
|
wCLCVPfwgVSnPNrQhnDcjcNpDD
|
||||||
|
TPgLlggJLVwPVVPPwgTwvtSCFmzGGqzGZsGRqWBGfFRFJFRB
|
||||||
|
LfFLmGTPHBfpHmzBLdZfBfZTbWWttWSDJtWVDJDtSWJzVCCV
|
||||||
|
RssRRRhrRwQqMQQwnPngQrwvVSjttjJSjSVtWWCWjbVb
|
||||||
|
hQPnnRnQgNcQqqQQcsZTNTLpdZZfpZFHNpBp
|
||||||
|
VTCVVnwfFTvFmTCvWwJHdlhHWBJhJBRWNHgh
|
||||||
|
ZbSMZbctGtScQSZsSpZpPpplhBhtdJDRDJjhdtlRJRjNRj
|
||||||
|
rLsbBQSMBGspPGcMPQvnqmwzwmCVLmqVmwTF
|
||||||
|
GVrrQVHHHQGTllQjPHGrlCQpZZpJFWZFzzjBssDJghzhFZ
|
||||||
|
NSMmWmtqMWqSNbcctdLcdghpgpppssZgbgzpFzJJFs
|
||||||
|
cfLqLwMRdtNLMlQrvflWTQPffQ
|
||||||
|
FjtGflGsbNqjsmjGGGbmqQQQBQBTjdpTpJTWvJBddj
|
||||||
|
CPrVRMnvvLSRHLnBpwdWTRBQwQzBzR
|
||||||
|
SnZMZPcHMlqchsvGGb
|
||||||
|
nnJnswzPCtmZDCpmhphD
|
||||||
|
rSVVLQQQGQjwpdmdNmpS
|
||||||
|
VvBcQvGcQgGLBgWrwznfJsncltJsJnssPM
|
||||||
|
dhbwLStzSGmmmzJJvFgJNvnrgvhv
|
||||||
|
VTsTsRscRsVBMRVTTsjZVPCnDNvfrPfDvNCfBrPNDJ
|
||||||
|
scHHQTpJZjHwzLSHHtqHSt
|
||||||
|
MHmFsBDmGpGTBfmCfWCffhzgvf
|
||||||
|
wcjwnRLPZRVbtCjtNttGCh
|
||||||
|
ZLGVJRrnPPPwQwPppqDHFpBFTpqFDr
|
||||||
|
GzMgVfGRdRVngDjhqcjctrtrzzzs
|
||||||
|
QbQSHwHSLbWwJJFwJPLPSWTQjrhqtjflThccsclCcscCCmmj
|
||||||
|
JFbNSbLvHHLQFLvwQJFWSBVgMNGdBBnBMVfddpGngB
|
||||||
|
sZHNJwMsvHswwvMWqBzhChWPMBzd
|
||||||
|
bHQQQRDHRcRcDljttBldlPBdggBCqB
|
||||||
|
QjnDbDjjjncRjbQnfZpvssZNHnppFNpvvp
|
||||||
|
NdmfPNMHMdNMHcffHBCwwsvsRRllvwlcqjwscw
|
||||||
|
VLhVGLpLShgvrjwFhjqfls
|
||||||
|
pppnnQtVpGZVWtzGgVzgSSfnCCDmdPBMDbmmDMmdNMBmWNmm
|
||||||
|
rrfgCrrMllfnBhBrdCFfWLFmmVFVWQvWwtwV
|
||||||
|
TmSGSqNzvwwTFVvj
|
||||||
|
NSGSmNbDzpmSpbHmSJqqlMgdMndcgdccdpgllRRh
|
||||||
|
bbPtLnLcLJzTjcJbbTcttLcSgwmvWfVvfVvBgfmWVJMJMJMW
|
||||||
|
ZsDNNGDRsrHzpNRwMlgRlgmMWvffWM
|
||||||
|
FGzQpZGGLFjnSFbF
|
||||||
|
DQZVDdWWNBtgWnJCnL
|
||||||
|
SSHSmbHRFqGrmqJrbbGzjmzCwrvgvwnBwnCvprwvpwwPvv
|
||||||
|
qFFFSmsRRzzFjcFsSsjmzJzflhlZTTThdhVflZlVDDhMcN
|
||||||
|
cdvrFddqDtDvqgCDtFtrvvvFSmShPShJVJmMJSJbVBgTlmbM
|
||||||
|
GzjpHzGHHfQNfJSlPQbJBSTJBM
|
||||||
|
HWpspsWjNsGRHfpwNszzLfGqnCnZtdvvcZvwqFCcZqMZCv
|
||||||
|
rhHhDhhDrRNwDRhNRLRqNPHjHSpVpVlljSSMnlHnjS
|
||||||
|
sVVBsFBJBtBSPSjtjPPZZS
|
||||||
|
JmddVTzsffcGNwzCqNqR
|
||||||
|
nQfqFtZWFZnFJWfpGqhDsGLLPLVbrPhr
|
||||||
|
CzjwMTgBgTNSGLVVDPbjbS
|
||||||
|
wMCmgNNdgvzGdRQcFGFdfJ
|
||||||
|
CbqCDnwFpDpCVfBPmPffPfRfpB
|
||||||
|
svcsjlGJGnlnvjvzgQQgGzsZPhBRcRPhWfBZBhPhWRRhPN
|
||||||
|
sJngnjSGGTGzgJGrrbCqLHrCLwSFqV
|
||||||
|
hnRnJrwMHnQRRRwMhRrnJRBLZtBPdPSdtZZjjstsLHBP
|
||||||
|
pBBzzcbTbzCcFzTvlSCZLCtSvvttdZ
|
||||||
|
FWmNzBFNDnRqNRDM
|
||||||
|
lvzlSPRDSpDJmNwNGgFpfsFN
|
||||||
|
WBHrtrLBbhWHtdrFwFFsjzwfFjsdsF
|
||||||
|
HWnrHnTWhWTCTzTBnRZqDDDCqZcclRvSJR
|
||||||
|
qcdVbpcMFQcdMGcMFjjpbCnCGmCnJHDHDGJChzCJCJ
|
||||||
|
wWwlSfBRgRNBDPJnCgCrgzms
|
||||||
|
tBTfTRwlwRLNwTRmWtNwQFZtqcjcdcqpbdQMqMdd
|
||||||
|
jJRzwDdwFdJddcjjFCFvQLvNlBhSBhCC
|
||||||
|
gMMpbHpmnHpWfnlCSBQCPmPllQSs
|
||||||
|
nHWHVfTGdTSjZzDT
|
||||||
|
sCVTsBPltgDSbLvRMMDT
|
||||||
|
WNrjNmWZwmZwfVLvLRbRNvMp
|
||||||
|
mrHGrmnjqVzjGqdmCltlhFFllgsHBPCg
|
||||||
|
wbglgTFRblnMRltJBNrDDWQbtdbN
|
||||||
|
dqCpcjPLGfHZQBJNGGvQDZ
|
||||||
|
SPssjVSqPCLpScfCgFRVmTlRwndlRwTR
|
||||||
|
hWMWMhTTDgWMzGMszQShGWJPCQmPVCNPffPfVJftqNQC
|
||||||
|
nbnHHwLrnswwPVCPZV
|
||||||
|
nsRvFHLsvplvrcsSWDDDddjjDlMTjT
|
||||||
|
HRCnhWZhCddgwRcwhdWZHHQLJzSLsSzjJwSjztsmtzsmLF
|
||||||
|
VlVVNNVqTlMVbTVVMqvqvrDTjQfFtjstJmzftfzsSbtStJQb
|
||||||
|
pQvvPpBqNBccPWWhcWWc
|
||||||
|
glJTndVWCTDDVFvnVndVlCvwmBmqBBwQmwPwmMPggGsPGm
|
||||||
|
NhcSrhNZHhZzRtHcNRrSMSMSFBMGmsQQGLMPPF
|
||||||
|
hcpRzbcHjRhRbZRzZRztzRpJVdCdnfCnlFvdDTnJCVDjWd
|
||||||
|
dqWvjjBdWWqMjdvvMJjWWjMGgcfchhzrhwbrwShwgzSqNb
|
||||||
|
mmmmsVTlVlsLQmnpsNcfgfwNLgczhcGhzw
|
||||||
|
RslpsnGGGlWdCZFMMRWR
|
||||||
|
pfSpZSrdSMVDVVLMMDDZpdgRWMPGqqPGqmqqGGhGHNRN
|
||||||
|
wwQBwtjvvJlvsnbTbvBRHgPmlqhlqWWHqZZgNm
|
||||||
|
JnQwJvjTtzTZwJnbzzfCrfLCfdfdddfD
|
||||||
|
PZcnljZFTVmQdlQh
|
||||||
|
JCLLqBBCSNCCqzJNzStBpStBmsdhVTdmVWsWmdhfLhWVdfrR
|
||||||
|
BpMzzqSzppMMqpJqqgzPFcjZjnTjgcjbPjPDPZ
|
||||||
|
HLHWmqBHHqWbMHFtbgWcdhspPcPchndPpn
|
||||||
|
ZRVSQZRfVZGRgnfsdhLgLndL
|
||||||
|
jzJRwJRSJJvSlZQGRVwlSGZDMqmmCCCmtNbCmtCMzFNLbF
|
||||||
|
fDhlBhhZmQRRfHwLdjHFFWQQjQ
|
||||||
|
ZMTssVVzvbCqJddsLwwH
|
||||||
|
TzgTbgGGzztMbbvzvVbGvSPBrlShRrfnNrnBDlNcRDZRZB
|
||||||
|
bjfqGfvFfcHvRwGFRHjbgQtddlQljWpWnQgdWWll
|
||||||
|
TSPVVSVwSzSDTDlntDndnlWddt
|
||||||
|
hTrrNCBCVrCrrVshThHHbZvFGscwbfFGRJcZ
|
||||||
|
jNhMjcgvMNgWggvttcFtchvPFFzdPPrQrrGGQQszRPQrRG
|
||||||
|
wSCqCmmppbTwPnGHrQdrGCCD
|
||||||
|
LlqwGmGScLcVthVt
|
||||||
|
dGGrWWDqmCnwCCQMQrMbFHbMHsPFgPVZbgFPgg
|
||||||
|
tLRTBwfvTBJcZFNFZRHSHPVN
|
||||||
|
zjJLTvjcwDzqqhGD
|
||||||
|
DzrWszFFrtBBhnhNCClHlnHbSbmlSn
|
||||||
|
ZLwLcVVZcLVpvRwLgMLpLJgPmmQSNSTNbtTvQmCHQCClCHCt
|
||||||
|
cfgZJwwVLJZPPVpRwzhzrrfGGBrGtDrBsf
|
||||||
|
BTsdCQsQnwwdcCqqdCnsFvGFpFBvGzrLLmmzpvfG
|
||||||
|
pjZjgPVlJVMVtgJSWLPvfFFFbNNmNbvbmL
|
||||||
|
ggVplgJtHSSggdCHsscChhdnnR
|
||||||
|
JddZcSlvvGFJNWVWFgQgVtFWhg
|
||||||
|
nDqsHqCszwjCCPMnfhfBhtdWggfg
|
||||||
|
bqppHqqHHbPLjLCppbwDdRNvdmcTmlNZGGbTTcNv
|
||||||
|
lcZDSvztcHHcMSZVHVvMZBqBNNFNhBNTTmssBqBcFB
|
||||||
|
bbGJQdQPpGfQJQdJfLFhmznhzLLNTFhNhf
|
||||||
|
JGpWpPJddbPpPwpjbtZSzltDgWDSgvtrVv
|
||||||
|
lJcNlNjPcmtFzHtHBJFg
|
||||||
|
VPZdwGGWVrsdPWhWwhzzCzzFppDFMBtttFCr
|
||||||
|
wshsLVfWTnGswdhwcmRjRmScqTcjlPNq
|
||||||
|
BsBshRZQQsVdsZQZSdsPDwJDHNNHBztNNFMGGwMF
|
||||||
|
nSTpLjcvHppzwwNt
|
||||||
|
jcqncjjvfmgrCfvqrnZbmdmSsdbVWlsmhRdW
|
||||||
|
FjjqRZjZFZWFqPvNvvPQpmbPDCmt
|
||||||
|
GSnHSnrScncHhrtncGshVbmTmbpVvppCmpCTmTCmCC
|
||||||
|
rHfnddwdfctlzFFgwqlj
|
||||||
|
wBwlBmmhwRVThVBmFHnvHMnfsmFfHq
|
||||||
|
jzwGSGJNZCCssHfsCPfv
|
||||||
|
GJbzbZdbwJdtdQphRVWQ
|
||||||
|
ztFZccVHFWHHLSDBpSBPhhZw
|
||||||
|
fmjsCmqnNTJnvbTvLRPDlCpBSPBpRShl
|
||||||
|
JqsGTSNJGqvqvNvttGQQGdFrQctrrF
|
||||||
|
mNZqjTFrZqrTNTTGSSSbrhrhRFRHcnLCzcCdHcLBdccHLzRC
|
||||||
|
JDDfJswJDWsvgVgwpWnRBlBzGCnlCLBlcCDl
|
||||||
|
vVGpfQWJpsPQMVgvppVwgWPJrqSZTrZqhTQTrhjbjqSSjZqt
|
||||||
|
fMSDzDHzpDDVsStdDgwwFZFrrMPCNngCZP
|
||||||
|
WmLnbWmvvWTTLWWQWRGQvLvrPFZJcgJFCZNrCgGCFCPNPF
|
||||||
|
QLhlqhljWvRQbbqlqnfStnHdBqVVfzpq
|
||||||
|
qWZtSQTSvJJvBfJVBBVFNDNHbbdRVPdpNFRF
|
||||||
|
fGcwwmCgsLhgwLchbpHdrrrphdPRPh
|
||||||
|
gMjllmcjwsLMgcwlMnSWzSqjSZJqZqZfjQWv
|
||||||
|
cdRHPjRFRdFVHGcFfFTHQTHVLSQBsbsqSCLqllBJqqbSqLJC
|
||||||
|
WwWppWgtNrnzzWDmrrmNvWJClJSSbqLJJCGbsCgJbLLg
|
||||||
|
MnvWpmwvWnvtGPjVRcHRRHMj
|
||||||
|
dLMDhdHGrcLTvvvstB
|
||||||
|
nPqgGGNPqRgRSjgmlWjbbTTPPBvpvpTcswwsTF
|
||||||
|
NRGmgjRnWgnZJqllmSqjnqSDhQzVrdQHDfDrDJQDMHDJzM
|
||||||
|
RgmcPmGNQwwNmSRwPPgfmrBlCDlGbvFFvtrCsvlrBB
|
||||||
|
nfdVnjHdMWnTqflFtbjrllrlsCDl
|
||||||
|
TZJVMhnfMnVMHnpRRNRzgJRzSzgwPR
|
||||||
|
nTbsblzlnGllmsNnbDwbcWQWwWBFJBQcWQvPWFJM
|
||||||
|
HRZRdSRdCdLdRftrHHZfSQBMWJMgMzQPFWMJCFWgvQ
|
||||||
|
HVzrLrrjRjLGnlTnlDlsjj
|
||||||
|
RQdTdZhWqlZhTdWTqblhNmTMVnnrQsnnpvgMVMHMgHMrgP
|
||||||
|
fjSSfjcCzGNBjCjsnpMVpnpzvpzsHp
|
||||||
|
GGwLGSccwjwLwBcGLGSqZWmmdLZLWThmRNZmWR
|
||||||
|
ncmBrmfdfcVcfGnQdVWRBRvgqNvDvWqzLRqg
|
||||||
|
PlpPbSbLFPLpFstsbqRqZMqWZqMWSDRzvq
|
||||||
|
sjtjHCwJwlHfdfjccmmLLQ
|
||||||
|
tGMtLHQGWzLHFVQtVfQtMWtbgrZNbdfSbccggrcTjTrfbm
|
||||||
|
swRChnwqhBCCCmSjcNSdcd
|
||||||
|
vnlnqDRlsRnJJqswJvGMFVMMdWtpVJFMQQFL
|
||||||
|
ffcHLzGmfvqqfWfF
|
||||||
|
rJrrRSPCPMCrPRQMNNWJQjJCnqFVVVTStqVnSBdqppBVtpqd
|
||||||
|
jNQQPjQMCRQwwQbRQbjMgwbNhwWZHHmzmlchlHHHDcLmWzhD
|
||||||
|
JzvrRHHJvCRZFPFnPgsQVVQNzQTQDttVsB
|
||||||
|
GSMjpqdbGNppBtDhPN
|
||||||
|
MbmqMwGbZPmPHJmv
|
||||||
|
ggVSVWzCNbbNCbRM
|
||||||
|
DfVhVsVQcQDmpmQTTQLjPjMjbDGNlbRMlNGG
|
||||||
|
sftTFJJccnphcfncTsfBvwZvrzgzZzZvBrVnzq
|
||||||
|
qqlClBNSCNSRQMvdrwFvnBrr
|
||||||
|
GDfhDtszhhsThpTDzsfpprMrFvQvrnnfvQrwHFbfFH
|
||||||
|
VtggWhpsmGVTGJWMjWjNjPWjLL
|
||||||
|
NSnShnjsswSsRPNsrnwcwMHfFwGqbvqCbFfg
|
||||||
|
LDJtzzmgVVlvqGbzvFfzff
|
||||||
|
mlJmQQpmJpZpBJJdjBNhrnnRdTTgNN
|
||||||
|
RtRRvbhDFPHHlhtPhRvPRtqjmzqzzwLjHQHLLLQVmVjq
|
||||||
|
WNNBBZfgfWnqVQwNqzmQcm
|
||||||
|
MZGfzSrTTnWrrWsTWnfSGbGllPCbGlJRvlPllCtt
|
||||||
|
phgcNfqgfpZsjjpdsS
|
||||||
|
brHHnWPbDPDbTPlDJJvJJPrMVVzRSdFzwdZZzFnsdzzVdVZs
|
||||||
|
SbStvJMDQgNmmtgg
|
||||||
|
lzDMDhfFRlfMFTfMGPMbFTlMpBHrmpjjCFjmBmrqBjtCmjjq
|
||||||
|
VvVswLLHZnJJwdndNsSSNBpCpjqjmNgrmCNtmmqm
|
||||||
|
nHcZWcSVsScTDlPPlTPb
|
||||||
|
DFMQSlMDpSpFDtDFccHvmqzvbHZjJmvzmmQH
|
||||||
|
CSgffrPssdgqRbqzzRqZ
|
||||||
|
dsdsfGsrBPsTVcMctMVNNhtStW
|
||||||
|
MDWRDWpgDvWpNptvNMnJCHJHMwHCndJfZn
|
||||||
|
blcrqTFmmcbhLTTTmlBZbjBJdBfBnCbQBdfn
|
||||||
|
TzlnhcnzTmhLRvSDsRzDPzWR
|
||||||
|
nwmmPnnPDjclhhjfFzzzwqbFFNHwVqVq
|
||||||
|
vSQrbpWCvMWQQWQMLgFJVHqzBzJVNqzBFL
|
||||||
|
CvCvQtWWQmcbtntPcb
|
||||||
|
qzvtzCCtLsLLzmQCHqpSsHSmfrnNrTrNWWMNGnWZTMZGBvWn
|
||||||
|
PglVFJwPhbcghVTBpBnWWhWnTMhB
|
||||||
|
FgjcJccVpwDcwFgVDsqzddqLqSDSCQQL
|
||||||
|
PLHsSVGGPvSLTffjMJWJJBjfBL
|
||||||
|
gNhwgTqDcqwpDqNhFpDFhFWfnndjcMJjMWzzBtntJBnW
|
||||||
|
DFhhQRRwbCbwRQChppmTHCVGTlslrsvrrSVZ
|
||||||
|
hHnRfSMmsSVrFvQqrmDPgr
|
||||||
|
jjcBzjZLpWccJLczBjZjWGwCnNzDvrgPCgQvFggvqrQFnr
|
||||||
|
jtZGpLwjWBpBWcfMTttfbHRnHTbT
|
||||||
|
swSHffFTVrJlHFSWrTpMZMPhMNBqBhTvhhqZ
|
||||||
|
bQbLQGGjQLdRCcQjGZBzpzBZqMBBBVdBqh
|
||||||
|
RjQDQGmgmVVbVcjjmjgcnWtJfrwsfrtHlwswnfHSFw
|
||||||
|
bVHbbMFDcbDbcmbbHVRbMRFgzSmdzSSTBtTjBdQTzlSldQjT
|
||||||
|
nqpqCMwJffqQSzTBQlqd
|
||||||
|
wvJhnnfrfsJrCNffvspRrPPFMbPMRRPPMZgZHR
|
||||||
|
FnJZnssHvMdJWJpW
|
||||||
|
mlDlllGrSGmttwlGvZgrzZNWgggzTzdT
|
||||||
|
bCltZCthtRcbcFbjFL
|
||||||
|
JGmHrJwGzzpllRZdzZLRcW
|
||||||
|
htbPSbVtFbbgjhffgPSfTVSDcHDDDLWscRdsZjdZcRssWc
|
||||||
|
vhfFbFvVHbtTVgFPhmJBCvBNrqBBrGCqQB
|
||||||
|
BcNQcvcBchSQNccLLvhTqbJZTrHrrrzzqTZMZMFZ
|
||||||
|
tpHDsnDRslllCCHtwnpsfjRgrJrVMfMmMrFrzVJFzrVZbZrr
|
||||||
|
tnDpjCwPLNSPdhPH
|
||||||
|
qnjvvBwBhSSFPgDQLVVDqgLr
|
||||||
|
WbszTbHTbsbHJWHLLMVZmJPQDrvmZL
|
||||||
|
ctlRbtCWWtvlSfjljjhBnBNB
|
||||||
|
TsnvssDDQlRbzMzjDMqHwq
|
||||||
|
tSGjZCfFZtCFLtVGWGZFbcqwHbhWdbzbwHbdwbdw
|
||||||
|
ZGBFJFZVBLjStZPBBZLRvlmsPTvsgrrnrTllvs
|
||||||
|
PgQdNsQFsdNwWqQBsQrTrTLpbrnTpGngnbTG
|
||||||
|
hCzzMJVDmfzmBDMCfSfhTMGcnpnTcjGrpjbMGjbL
|
||||||
|
CVVfvCflSHNHvPdBHW
|
||||||
|
DwlMjMNjStgmthMghg
|
||||||
|
PTlpHnJJTcZvTTbHZWZTvpqdHhmLgrgdfrhLLsmshmsLts
|
||||||
|
vncqTbPqcpCnbCPvccZbDBCGzzNBwjDlVVGFjjVR
|
||||||
|
QsdGGCztZVRddPgndf
|
||||||
|
DrNNBbwNHNwlbjFbbCNjNwDWWDPPVfDMgfmVMfnMWmmP
|
||||||
|
rvJBbbBNcLCtJZQL
|
||||||
|
NfLlqLhbNPddLPqLhpgHwFFwFHHTwRHWwPFTrT
|
||||||
|
MSMSCnjBnBjCscjVDVljTvHmmWnrwTrwFTrvTWTT
|
||||||
|
JCMMBzDMJcZZCjDzSBDNJgdfdQlqlLNdhgGLhp
|
||||||
+90
@@ -1,3 +1,93 @@
|
|||||||
|
pub mod priority;
|
||||||
|
use priority::*;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
// part one
|
||||||
|
fn get_sum_priorities_errors(rucksacks: Vec<String>) -> u32 {
|
||||||
|
// get a rucksack
|
||||||
|
// split the items into two compartments
|
||||||
|
// note: there is only one error per rucksack
|
||||||
|
// go through the items in first compartment, put in a map
|
||||||
|
// go through the second compartment, check if the item is in the map
|
||||||
|
// if this item is in the map, then we have found the error
|
||||||
|
// find the priority of the item
|
||||||
|
|
||||||
|
let mut total_priority_errors = 0;
|
||||||
|
for rucksack in rucksacks.into_iter() {
|
||||||
|
let length = rucksack.len();
|
||||||
|
if length % 2 == 1 {
|
||||||
|
panic!("rucksacks must be even");
|
||||||
|
}
|
||||||
|
|
||||||
|
// [1, 2, 3, 4]
|
||||||
|
// 0 -> 2
|
||||||
|
// 2 -> 4
|
||||||
|
let first_compartment = rucksack[0..(length / 2)].to_string();
|
||||||
|
let second_compartment = rucksack[(length / 2)..length].to_string();
|
||||||
|
|
||||||
|
let mut first_compartment_map: HashMap<Item, bool> = HashMap::new();
|
||||||
|
for item in first_compartment.chars() {
|
||||||
|
// convert char to &str
|
||||||
|
let char = item.to_string();
|
||||||
|
let item = Item::from_str(&char);
|
||||||
|
first_compartment_map.insert(item, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
for item in second_compartment.chars() {
|
||||||
|
// convert char to &str
|
||||||
|
let char = item.to_string();
|
||||||
|
let item = Item::from_str(&char);
|
||||||
|
if first_compartment_map.contains_key(&item) {
|
||||||
|
// we have found the error
|
||||||
|
let priority = item.get_priority();
|
||||||
|
total_priority_errors += priority;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
total_priority_errors
|
||||||
|
}
|
||||||
|
|
||||||
|
fn read_input_file(file_name: &str) -> Vec<String> {
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
let mut file = File::open(file_name).expect("file not found");
|
||||||
|
let mut contents = String::new();
|
||||||
|
file.read_to_string(&mut contents)
|
||||||
|
.expect("something went wrong reading the file");
|
||||||
|
|
||||||
|
let mut rucksacks: Vec<String> = Vec::new();
|
||||||
|
for line in contents.lines() {
|
||||||
|
rucksacks.push(line.to_string());
|
||||||
|
}
|
||||||
|
rucksacks
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("Hello, world!");
|
println!("Hello, world!");
|
||||||
|
|
||||||
|
let input = read_input_file("input.txt");
|
||||||
|
|
||||||
|
let total_priority_errors = get_sum_priorities_errors(input);
|
||||||
|
println!("total priority errors: {}", total_priority_errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_base_case() {
|
||||||
|
let input: Vec<String> = vec![
|
||||||
|
"vJrwpWtwJgWrhcsFMMfFFhFp".to_string(),
|
||||||
|
"jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL".to_string(),
|
||||||
|
"PmmdzqPrVvPwwTWBwg".to_string(),
|
||||||
|
"wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn".to_string(),
|
||||||
|
"ttgJtRGJQctTZtZT".to_string(),
|
||||||
|
"CrZsJsPPZsGzwwsLwLmpwMDw".to_string(),
|
||||||
|
];
|
||||||
|
assert_eq!(get_sum_priorities_errors(input), 157);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+176
@@ -0,0 +1,176 @@
|
|||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Clone, Copy, Eq, Hash, PartialOrd, Ord)]
|
||||||
|
pub enum Item {
|
||||||
|
a,
|
||||||
|
b,
|
||||||
|
c,
|
||||||
|
d,
|
||||||
|
e,
|
||||||
|
f,
|
||||||
|
g,
|
||||||
|
h,
|
||||||
|
i,
|
||||||
|
j,
|
||||||
|
k,
|
||||||
|
l,
|
||||||
|
m,
|
||||||
|
n,
|
||||||
|
o,
|
||||||
|
p,
|
||||||
|
q,
|
||||||
|
r,
|
||||||
|
s,
|
||||||
|
t,
|
||||||
|
u,
|
||||||
|
v,
|
||||||
|
w,
|
||||||
|
x,
|
||||||
|
y,
|
||||||
|
z,
|
||||||
|
A,
|
||||||
|
B,
|
||||||
|
C,
|
||||||
|
D,
|
||||||
|
E,
|
||||||
|
F,
|
||||||
|
G,
|
||||||
|
H,
|
||||||
|
I,
|
||||||
|
J,
|
||||||
|
K,
|
||||||
|
L,
|
||||||
|
M,
|
||||||
|
N,
|
||||||
|
O,
|
||||||
|
P,
|
||||||
|
Q,
|
||||||
|
R,
|
||||||
|
S,
|
||||||
|
T,
|
||||||
|
U,
|
||||||
|
V,
|
||||||
|
W,
|
||||||
|
X,
|
||||||
|
Y,
|
||||||
|
Z,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Item {
|
||||||
|
// match each item and get the priority
|
||||||
|
// a -> z (1 -> 26)
|
||||||
|
// A -> Z (27 -> 52)
|
||||||
|
pub fn get_priority(&self) -> u32 {
|
||||||
|
match self {
|
||||||
|
Item::a => 1,
|
||||||
|
Item::b => 2,
|
||||||
|
Item::c => 3,
|
||||||
|
Item::d => 4,
|
||||||
|
Item::e => 5,
|
||||||
|
Item::f => 6,
|
||||||
|
Item::g => 7,
|
||||||
|
Item::h => 8,
|
||||||
|
Item::i => 9,
|
||||||
|
Item::j => 10,
|
||||||
|
Item::k => 11,
|
||||||
|
Item::l => 12,
|
||||||
|
Item::m => 13,
|
||||||
|
Item::n => 14,
|
||||||
|
Item::o => 15,
|
||||||
|
Item::p => 16,
|
||||||
|
Item::q => 17,
|
||||||
|
Item::r => 18,
|
||||||
|
Item::s => 19,
|
||||||
|
Item::t => 20,
|
||||||
|
Item::u => 21,
|
||||||
|
Item::v => 22,
|
||||||
|
Item::w => 23,
|
||||||
|
Item::x => 24,
|
||||||
|
Item::y => 25,
|
||||||
|
Item::z => 26,
|
||||||
|
Item::A => 27,
|
||||||
|
Item::B => 28,
|
||||||
|
Item::C => 29,
|
||||||
|
Item::D => 30,
|
||||||
|
Item::E => 31,
|
||||||
|
Item::F => 32,
|
||||||
|
Item::G => 33,
|
||||||
|
Item::H => 34,
|
||||||
|
Item::I => 35,
|
||||||
|
Item::J => 36,
|
||||||
|
Item::K => 37,
|
||||||
|
Item::L => 38,
|
||||||
|
Item::M => 39,
|
||||||
|
Item::N => 40,
|
||||||
|
Item::O => 41,
|
||||||
|
Item::P => 42,
|
||||||
|
Item::Q => 43,
|
||||||
|
Item::R => 44,
|
||||||
|
Item::S => 45,
|
||||||
|
Item::T => 46,
|
||||||
|
Item::U => 47,
|
||||||
|
Item::V => 48,
|
||||||
|
Item::W => 49,
|
||||||
|
Item::X => 50,
|
||||||
|
Item::Y => 51,
|
||||||
|
Item::Z => 52,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn from_str(val: &str) -> Self {
|
||||||
|
match val {
|
||||||
|
"a" => Item::a,
|
||||||
|
"b" => Item::b,
|
||||||
|
"c" => Item::c,
|
||||||
|
"d" => Item::d,
|
||||||
|
"e" => Item::e,
|
||||||
|
"f" => Item::f,
|
||||||
|
"g" => Item::g,
|
||||||
|
"h" => Item::h,
|
||||||
|
"i" => Item::i,
|
||||||
|
"j" => Item::j,
|
||||||
|
"k" => Item::k,
|
||||||
|
"l" => Item::l,
|
||||||
|
"m" => Item::m,
|
||||||
|
"n" => Item::n,
|
||||||
|
"o" => Item::o,
|
||||||
|
"p" => Item::p,
|
||||||
|
"q" => Item::q,
|
||||||
|
"r" => Item::r,
|
||||||
|
"s" => Item::s,
|
||||||
|
"t" => Item::t,
|
||||||
|
"u" => Item::u,
|
||||||
|
"v" => Item::v,
|
||||||
|
"w" => Item::w,
|
||||||
|
"x" => Item::x,
|
||||||
|
"y" => Item::y,
|
||||||
|
"z" => Item::z,
|
||||||
|
"A" => Item::A,
|
||||||
|
"B" => Item::B,
|
||||||
|
"C" => Item::C,
|
||||||
|
"D" => Item::D,
|
||||||
|
"E" => Item::E,
|
||||||
|
"F" => Item::F,
|
||||||
|
"G" => Item::G,
|
||||||
|
"H" => Item::H,
|
||||||
|
"I" => Item::I,
|
||||||
|
"J" => Item::J,
|
||||||
|
"K" => Item::K,
|
||||||
|
"L" => Item::L,
|
||||||
|
"M" => Item::M,
|
||||||
|
"N" => Item::N,
|
||||||
|
"O" => Item::O,
|
||||||
|
"P" => Item::P,
|
||||||
|
"Q" => Item::Q,
|
||||||
|
"R" => Item::R,
|
||||||
|
"S" => Item::S,
|
||||||
|
"T" => Item::T,
|
||||||
|
"U" => Item::U,
|
||||||
|
"V" => Item::V,
|
||||||
|
"W" => Item::W,
|
||||||
|
"X" => Item::X,
|
||||||
|
"Y" => Item::Y,
|
||||||
|
"Z" => Item::Z,
|
||||||
|
_ => panic!("Invalid item"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user