Finished day 3. Annoyed at rusts hashset intersection function.
This commit is contained in:
parent
4a9c8b37b9
commit
5d22d7975a
|
@ -22,5 +22,9 @@ path="src/day02/solve.rs"
|
|||
name="day03"
|
||||
path="src/day03/solve.rs"
|
||||
|
||||
[[bin]]
|
||||
name="day04"
|
||||
path="src/day04/solve.rs"
|
||||
|
||||
[dependencies]
|
||||
regex="1"
|
||||
|
|
|
@ -0,0 +1,300 @@
|
|||
PcPlnShmrLmBnmcwBhrmcmbHNGFGpwdFFwGNjNbGqNHH
|
||||
tzQfRJfWZZztWzVtCTfRzFZjpFjNZjGLHbdHLDdjpb
|
||||
CCQTzRLzvQVVfRzJfMPsnBlglgPmBgPmvSrl
|
||||
RMfvbbszHTsssFPzDQPggpQJPQ
|
||||
NSNcqVtLVGgDlpQBClVB
|
||||
hmStGNNLhjNrpWLGSjWrZssbZTMMvTfMnThbRRTs
|
||||
fTrTPGTbfftWBBmLjrJL
|
||||
DqHwVMqVplDslmlZmpHVwNnShWZFdBBdjWBtWtdtWJSSLS
|
||||
MNslpDvVHlwsmpQRgQgCfTTcvcRQ
|
||||
pBBhRgDsMsswprBhvgRglZtFGFFRqZtZmRtNqtZPPN
|
||||
TdmmzzmdZdqdGFtF
|
||||
nmSccCVmSCpDCswMwl
|
||||
NptqDsQtDTQzCvlzCpRlRp
|
||||
jmZcndmjbZcjrmDvFMFFlwCvzFnF
|
||||
jjgLVLrGcdDBNhWQTgHg
|
||||
mLVhhfSMSTmMwClHGdpjDHjGdV
|
||||
zPrZgJCgbsnrPtZzsCsbpRDjBRHnjGDRldRHppcG
|
||||
JJrbsFrZqrgWbbqbrgWzJPNTwhTNCmmvfWCShhhmwwfm
|
||||
ftgfljvgfgBTNvtggFDDGLGRDnMDzcQzncGt
|
||||
VdbpbVdZwdwrsVVLRrMrDLDBGnBGcM
|
||||
wmpWwWsHWBCCCPPvjvmSqlfTTmSNgN
|
||||
jSqmzmmSSDRjLMLDwqjNcMMLTTflffWCCsRsTHnHVrfHWTsr
|
||||
tdbgZpgBPdgGZGGFTHVpCsCVfVsJpnWl
|
||||
FnPQFvbvhFFFbvBwScjhzcqSLLSzSN
|
||||
bWdgrWwwFWbgzFWzrmNbdPqttChMSRnmqSPSnqtMRM
|
||||
lcPJLDDPPfpMBCRJBtQtMh
|
||||
lGDGjTGLLDHPPGjlPTsswsbHNFsNrFNFsrzr
|
||||
VmtHfVhBLHVtlhphjZMdnQQZZqZmQDdzQQ
|
||||
CPFwPWrvWgrfNgFPCMqZzMDDbznFTqqzDQ
|
||||
NNPsfffPCsBLjpVltV
|
||||
ssdBBJqJhlTJLsjTJqFFmnmmnnrcmpprmmmPcRlf
|
||||
gqtqzSgWQWqmnRPPcNmmQM
|
||||
GqbSVtGzvgvgWbZjjBhTdhBsTZBJBZ
|
||||
jhNBsPDzLjsVhLSNzgvcvbcwbBWFcgtWCc
|
||||
ZQQTTHHnGpMtnpdHpQJfMgrvWWFqbcWWGgrgwCCwwF
|
||||
nHpmMnQQMmHpRnHRmMJnnTShPzljzjSNmSDhLsNSPtSh
|
||||
GdqnBGFdlqzFnwdSCQZjZLLDZjZRvZLDVvgQ
|
||||
PsptsTcftMfcTfhTghVDvvjnRNjVZnvV
|
||||
WtPfJTfftJcMTrMnpccFwlCSCGFGCbCwJSbqBl
|
||||
GjFLGhjRwFjNSjSdJCBBdQJddbBc
|
||||
MVvMMHRzVtHlvlcQBQJHqdpQqCBC
|
||||
vDgVztvvmrgrVRrMmsrsmZzZnWhGnNhGWTLfnLwTLhLTjngL
|
||||
VljjQJSsrjjrCglsCjsgjVVfDLdZGMdvvGdQMzmvzcDQMc
|
||||
HqPBtcpRWwtHbbFwBHZfmfpDfvffDfMfmGvM
|
||||
PwHNbcwtqFqnwtNNqPNPPWBTThjhhVTCSJTThssVnSlJJV
|
||||
GCccNCrrnCrpnzrnCDPcDDrvHHTBqTPhswqhPTBTTwBhTj
|
||||
VfNmRtZgWWHdBdswdjZv
|
||||
SmtQfgNmVFgVLVLVmrnMpcDLGCGLGDMpCp
|
||||
CrdZdZmPPjrQdRPRDqDLBqBLBSWgWgLDzF
|
||||
sQhTNphsVbhhhMJfhNVGqltVSzSllBzStlzFFFWB
|
||||
hsMpwQhNMZmPmrwHRj
|
||||
cNVpSVRpLHRLsVWWfnfsCshW
|
||||
jvqjTgqZPlJZmbPPfbpswsPb
|
||||
vlqdTZdtJvqdZjgqZrtRpQFtLFRQczHGzt
|
||||
JJQndVQnQgTfNvGf
|
||||
ljpbWbmNbDlGTvggGvZf
|
||||
mpmRbMmmNDFDmScpzCsdzrnJrsCzrrnM
|
||||
tNFtNFFzzjjzjBtVNZVbjZGlpSvTllpWwvnBlWGGBGCC
|
||||
fPdcrrgPHrHMMMWlppGJSPwGSnGv
|
||||
fmrqrhhfhdRddHrhQqQrfnLZjLtNttZjjRtzjFtRNj
|
||||
sphRcpQRhfmnmfpptg
|
||||
WVPlGLlSjCjSlGSHJJWZdmbmfvPmmnftbbgDdt
|
||||
LJjjqVNjlnCTRcRhhsNcFF
|
||||
vwwqttFjwgClRNCCvGNmZZMmJsPJjJpTdMpsZd
|
||||
fBLVHHHrFnhHhnrVSTmfdPdPccTTPsMfsJ
|
||||
QzVWzznzFbWNGNlt
|
||||
vjMddVVmnWpdMndjvhhWfNLpfBsfLLZLBBSqqTZq
|
||||
RFlrzQJPSRGzzzzgBZNsgBZTBflfgf
|
||||
cQFDRHFDDGCJShCnvwVnnhCn
|
||||
hgjlpRRLlPJJhTLJMDnwBndSPBNvMqnN
|
||||
FGWVfZsmCbmVzrvtwCSMtMdnDMCw
|
||||
VsVmVZfVQDmVFrrmzmGrHHTJgJjhHJcllglLQJRL
|
||||
rrTVcTBgsjTffmfWHZTv
|
||||
JLdnDlpGlGSLlpwJpHZfFvRZnWzWrHWqFH
|
||||
wQDpDrdSlSCblCdwdSLlwQGBthPMsghNsVNVtCNNhNPjhs
|
||||
CtCMvNhDMHfDDdffqtDtCflpJlBpvmWWJWwlpwFFvjwB
|
||||
rGSbVGZrSsFJjlmBFZWp
|
||||
rbbQgzVGrFVSPPGqfhftfqztNtqHtt
|
||||
lMGZCGphllZDNshNNmHHND
|
||||
PLwjVwJVsHmRrZZw
|
||||
ffSdzjfZSjtjSjLtLLFFFGqFzznCpCnCBblQ
|
||||
CqRnlzHCRWTlHPTZVQrcQtFsQFTcrQ
|
||||
DfJcdBDBcftQjsrsBtjZ
|
||||
JDfdGhSvNGhNfffGSfRznPvcRWcqCqmlvlcn
|
||||
JPhBBBQCnCJCMhnhMZRrRZgbDgrWrNbglDgR
|
||||
jLtSTwtsShwRNpRWrh
|
||||
FLLSHsjGLGczvfPfJdfhddnHPC
|
||||
BjHBNrWmTjFgJngbJhWd
|
||||
vsGttMDtwCMQCJnqqqFJsggqdg
|
||||
GFtDSwwMpTrzSSfcfm
|
||||
rnWDQvpwWpDDcPjFPPHZjVDZ
|
||||
CTJCRmCJcZZZHCCQ
|
||||
LdlmdQJNpnLWbrfL
|
||||
VdTdcVTZwCRGVGGMVmttlF
|
||||
gnrsbngfgQSpBfpMBBBpSgMNNJbmGmlqGDqDNlFFJlGNFz
|
||||
gprgQhgpMMMPsrRTCdPZwCwZZCRH
|
||||
cHlCVGbbWHWqRNThhcNcmh
|
||||
MwQDzpwdJwpBpPDQvrhShfLTTRLfLdjfNRqS
|
||||
JwMBBrPsPDwQMDPPBPQJwMrvWHFbHHlgbsGnnWHnFnRGlblF
|
||||
PQPjPDjRRQSFLSlgSmLlfh
|
||||
zpLdBddbNCdqGbWJGWpJWWlsFsmmFpwfflFgfHwFhgmh
|
||||
nJLdLVnzqqbjRctcPDQVTP
|
||||
JdztScztPdSWLJLtgMbCjhvlbPRbjbMvCh
|
||||
VZrqfQcFQwGVVFqfrTFTNqhljRHDMvMMGhRDRRHGbDhG
|
||||
NZQNVQQpQmrZFQQFwQQVVZgBszJJgznstnmtcztdBSgs
|
||||
nFHLNJzFbLJGGLMlTTRZbZRhWRTr
|
||||
wVmgBBmtmwlqlWTwTM
|
||||
sdvmgcPsCPPQQSMz
|
||||
SccCqmQmgBmppLQmpSMjjlJzzsNPMDRbPNPlJM
|
||||
VHZvwtZwhZHtdTwrVbNsljlRDlJPDhzsbN
|
||||
dZwftVRftmcgpBCmBf
|
||||
NTTlVlgNSflqbphFFhNbFp
|
||||
wmmLmjwzwbWGLjRmtZZdhZLFtQQLQBFh
|
||||
RvjbMjjvMzMWbDWwvzPjvmWSfVfsTlVVPVgTgPfVsnnnsJ
|
||||
BsBsZHZNdWwsNdrzgCrMMqsjzzMC
|
||||
flfhVWFmLrhQzCCh
|
||||
fVbmFSpnSSmtnPZvdWbwvdvdHZ
|
||||
NsZWWWWLsBZPhfsLmPhcFCCHCMMrqfqcvHMfHH
|
||||
nThSllnplGlMpvFRcCqrrr
|
||||
DnTwSztgzlDnVGTwztmdZhmLdJdNDshBdsWs
|
||||
RBBGTFZGglMHvrtcgSdnNgjg
|
||||
DmVcbmbJmwJDJzVVwzJfmfstnztvjnNjvNSpdptvzCnpjj
|
||||
DsLcfLmbhVQssQJQscWRPBZZMMRLHFHZBGMG
|
||||
FVvhVnhFnFhmvFhVcMBHLgcPClrqqrtqCppldrRRTppldg
|
||||
QLWfDNwsQLtlrrCtDdpq
|
||||
sJwZwLsGJWGGwzzWZNbWNLjQHSVhvHSnhcMFcbVmnvcchSBS
|
||||
jTMNMrHBJWWDffRqfDBqfD
|
||||
QmSFphtQqQmVmqVnPnPlpwgfnRnDPl
|
||||
VqFmLFbLhmZhGFGmCmGtZLtJWzWHcJrNrHMccjMscMHzMZ
|
||||
hGPGmbfPzbPfgdMdWGqBGQcqpp
|
||||
nvFTvDrTdNZZlrjnMHHHpBBcppqq
|
||||
rNlZZNLvRdRCRFFwZwhgbmSJPSmPfhfwhS
|
||||
vjdbFWTtFRRvtvZZvdWJWbGjLhCcnrrrNqLNCPqchShNqc
|
||||
QHQVlDsMfmmDMHDBdLdCSLnhNLNNfqCd
|
||||
VQHsMDpHlzMBBwlsmMzmmlVwptvTWdvJdbvJtRTWgGFJJGtR
|
||||
nSScBcnbbFSQVdBFBtWpwtvtPbTZthtTvT
|
||||
pRzHpGjCDGzHGCGsThqqwZwPhCtvhTqZ
|
||||
NzlzjDDpNldBFrlfFQ
|
||||
qJlDlPPWppgppqPlplpfdvgnbMfGbdgCghMdCM
|
||||
QWTWZcSsWbvVvTnhfC
|
||||
tRFLwZrcrWzzlJmtBqlm
|
||||
HMNMvvzzNcmfNmfbhs
|
||||
qVcwCgjCLtWRSLsTPbmPfmTh
|
||||
RtWCJgddWRtCJdWWgdBjwWWwpzMFpHGprcBGFFnGHQZHQGpF
|
||||
gZgBDgDVGDGjmDZRtgjvVvtQdnLrcRcrdfdfCcnlscsJsn
|
||||
WTqzqHqNzpHpwzNhMHNwWPbQCQcCLsnCrLLfcrffNflcNn
|
||||
zHTwwpTPzTTwlFTFzwqzPbwZGgGZZBtmGGvGmBGZVFStFZ
|
||||
znlSSzfzTcmmfcCt
|
||||
PHWWGpqgPShPMwGwqJFTVtwtCVTCmTJcFc
|
||||
qHqqSggLrRLBbvDDdndzRQ
|
||||
WBddBQWZWWQqqQFMWfmrWsJnmVJJNDDVJGsLmHmLDN
|
||||
PTgCjvCCPPPzSZGJVLsVZCHHnH
|
||||
pzwtPTvzTjRTPtwSjPSzRgBbWMBfMwwZfbWrMrZFqFFM
|
||||
BqDwVqdqlDlblQMf
|
||||
ZcCWWcWzvJZjcPjZZZfTHfQJQHThqpMbQQJf
|
||||
LPCcZcczZLgCjvPWgvstjsjmRRBdmGrdGdmSFGnFrtGmqr
|
||||
CBvgQssVzfCBQSgvvvfmrlGrCtMGwthJlJtbrh
|
||||
TpLqLRFpqdRpRTfNPtRmrMMtMlMMmlMJlt
|
||||
PZTjqFFTHZZNZpqcVWzVvgzcWnSWfBDD
|
||||
SVSTpgpVpdNbpcVdfjcNfbcJnqsltcJPvRJqRwQqlQsJls
|
||||
zhWzDLmFHhmrWZmmzHJJQlnswqsvttrstQqs
|
||||
zGtZFGGCmZmGGFhLBWBGGFdgVjgppMTSTgMfCNfVVSdj
|
||||
CzjNJGcnzQJltPHttcPHTP
|
||||
bLVsqLbLmSSVrqmdhVSmsVFFprfrFWrwTTWWWZpFPtlP
|
||||
ssDsMqLqhvmvhdmdvzRCnQgRzzBjgnlNCM
|
||||
TzTLzzSGRlRSjWzlWRzHGTpNhPhJPmdnNPPbhlbPbdhfPh
|
||||
mBCDBVrCqVQvQMBcVcqBrBDsbtJfnZNbJndNNhthZNJfPZPs
|
||||
wMCrqVvBzmzHTGLw
|
||||
NbfwfZPPdVNPdBdQBcmQzrQz
|
||||
nnWqHLWGFMDFDLDjsqnHLsrQGzmJczmQrgJmJGZmQrgJ
|
||||
FFWRsHMHCZCWFwRwphpvlfTTpp
|
||||
PclPlVZvLDNvVZSLSMvvDttmtfzFtzHqtqtzzccCFc
|
||||
jrggQGhjQsTDbrbJjJQqzzCsdtzzFCdHqmBBHz
|
||||
WGDgngwrQggZMNvMWPMRRV
|
||||
wNgpMdMMcdSscccNcLLTbtQJtQJQltJwFtlBlzBt
|
||||
HHGhrLrCvHWHCPhrWDtnBllnQbfQftGnfnBF
|
||||
HvLjWCLHPZvHHHZjjrqVTTZVcppMgNNNNSpS
|
||||
QQrwQmvWQjgTfvBjfffrSDcrqSqDDVLctqqcVd
|
||||
GnHFnGhGplGMlHMNhzBzlLPLVcVNCPDqVNdcqLdqtV
|
||||
GnMGpslMhGsRzzHzGsZFZQJTTmWfBbvfgfgJRfbwbW
|
||||
MRCtSwMhvjCGtvMZDVWpVZJlVccNDlpb
|
||||
gdLQFFwwLfHJWnQlcJJbWc
|
||||
rdqdmqHLTLmsswsFHLFtMPRMCSSRtSjTPMPSCR
|
||||
jmCCnLCLZjZjRjQTLZQhGPGhhzHhDRGRDzwzwh
|
||||
stlJlrlJJcSSfSMMzPfhhGhzpwhpNwhD
|
||||
rbrbBcSlWmdZWjDnTm
|
||||
PNBRNnnqQRNfVfRtVVzgFLLttpSwgzzzmFFF
|
||||
fcWlcbvvCFzLbwLw
|
||||
rlrMrhTJhDcTTfhRNqHRQPQRQNQB
|
||||
TrprpprRVVfpRpVqTVpzDdvmvbbCchhcttqcthSMdd
|
||||
JlnZnFlsMBZnJHlsLsCLbSNtbNhdbbShCScm
|
||||
FlZjjsHHsnQFQwTDzMRRpGRR
|
||||
wHWzwCTTqJhzzvJhWHWhqJWrFsFQrrrFCfFfgjjgjprfsp
|
||||
DBRmZRtZLbnRBGSBmtGSLpjBrrsfrgsTQVrVrrPrgr
|
||||
DLnbcbtLtmNNmbRcGbcGmHzlThNNhqJTHdvqvWlHJh
|
||||
GSNqjRcqflNLnCTTWrWn
|
||||
BmwQtmtJwPwmzMwQtHtVssvrnpWTTnsTTgpVCLCs
|
||||
DBBQHJJrzhzQDDfSljRfhccfcdZf
|
||||
wtgtChCwzqgLzjggqtHtjFHHFcnPfdRDfZZVcPfVZZfGnfdm
|
||||
vBTrRTTWGGmcTDVD
|
||||
SJMbbpWslJblSSNzNsztRChzqRCj
|
||||
gBHHCtVCSHMQlfFTQqCfmq
|
||||
WrpdwjbwbwQGlPqSqblP
|
||||
wWDncWrDDNdWNRjScScjpzvHZtBMZtJsvLVgvzssBsvs
|
||||
VppWpVfmZPBlnmrGBzhttMzMpctLLcChSh
|
||||
FwgLJvRdHcwMzSzjzc
|
||||
QvbgdQLQgDvsqvqRHRDdDQDBWmBGBflnVbZmZmmnBBWrmW
|
||||
SqShwLFCQGpDHCtZCWpW
|
||||
bdHPHjTbJdsMnPHPbdjgtnBlVlBnVgtZpDBpWV
|
||||
bdmPcjbjMNMvvHbTcQRNfRwRwLffwwqwNF
|
||||
zdRHTpQTQHQnpnnQRHTsNNlJSJWmzJmJllNmSG
|
||||
FBbRvLbFRwLqbbVgBVqqLFqJtJNcltsSGmgmGtNtgWmstm
|
||||
FLhhfvvVwvjqfLRBqLVqbwqZQrTTpHMHjdrpnnDPDQCdCrpC
|
||||
JgjzvbJCWgbjgGbJWjRhgNPGHHBMtqBStZZsHMSsBqtD
|
||||
cfQdwQFdQQppnVVnlFLLBsBZMhqPlPMMqBSHDtHM
|
||||
wnQhcnVddmdWgjvjmvRjjJ
|
||||
QpcRtndvsLcVJtRSzWSlWjzSbjjWBv
|
||||
qGZPqCTmGPqgGTCqHgCqZCPFWbbBNBMNBbdBMlWWrbjlMbFl
|
||||
qhHDGhCmPhZHgDmDVQthttRchLwLdwcc
|
||||
srpPMwlMmsrGFGswvDRhRWRDJJJchJ
|
||||
fSgBbCBNnBTTgCNLTCRJhRJVWhTcVVVFFJdR
|
||||
SbBnnLNZCLFQCZjnCnZFjPrzqmlMmmsrpzrlsmtt
|
||||
BBsfDfsBDSWRwlLqmWCpWcllrl
|
||||
nQMgMnnnhdntgMBrCdpNNLNlNqLqLl
|
||||
FnQFHzPQJjJGRBGvfR
|
||||
lRnVRFFlgMCRVwLgFZRnZQHWdcftHdmcJHmmMdzzfz
|
||||
DGBqGQbhhBDbSBpGDBzqdNHJdtmcWdqdmtcm
|
||||
bjbsBvjhSlVsPRgLQl
|
||||
dDLbRdTMRJMbFRzZBfzNSjtNBzBD
|
||||
PmgspqqVrppTVrvrsPhhfQwZBwNjNtNffzqqfwwN
|
||||
mCcmsngrPvpVTssCVsvsPLRRJllGFlnRGbMJMWWlJJ
|
||||
fGlGZHRRbwgPbZRRNCdcSWpncnQtQWlWcWpW
|
||||
JrTLJgVvVLQQvtSvQncQ
|
||||
JrrrmMTBVTmjBMrVjrshmJzgCfzRPCRZPGHfbwNPzbZHNH
|
||||
qqqlDDZzVVnNqHDDFFFNlQpzjrTvsvzTbgJQQggjJp
|
||||
cWPWcCmMfCMWdtPMhMbQQQjGGjpdvjTbjgjr
|
||||
WtMSBCtCwchChMfBWtcPnNVNqZZLDRNqTRnnlwHn
|
||||
mvQQnhBvhmvBmncmZBclTZTQccRFNFFdqFFgVqSRrgFrppNR
|
||||
MjzJPzGPfffMCjVVjfPHLCFRNFStqrdRSdqdNGRqNptq
|
||||
HDJHPjDJLfjbzfwPjCzCWWTwlmQhBnsWBvVsvBvZ
|
||||
RVjcshhscQhrVjhvzjVfDNnzGtftmDHFttFGGf
|
||||
qLcBCCMBJJbTdBDnNtdfnmDG
|
||||
WpZgLLclTclRwgjgsrwsvj
|
||||
shhhltNPcDtlNcNMcsctNtppLZvWWFLTFFZpTZDQgFLT
|
||||
dRgJVzRHbqnLpTWQvLLJfp
|
||||
mCVCdzqHndbqHCrVqRrmbwtNBsmPwNmScPgtPhBclw
|
||||
bDDZMDrFPsrsMcsrbJZJdMMGpSzpSbwRSSRGpCHCGzlhCC
|
||||
BWWNQjBLQVHhlGpSCmwj
|
||||
ffwnNwfgtnNgVVwfNWBWnFsMJTJTcPFJcTFDsrJstJ
|
||||
vQbQLQBpBvbvpHplHNTHWGZDngntZCQGgZhGhtjG
|
||||
rqccPPmcrffRmsmCjVgnrGChChDjgW
|
||||
fqRJsJMSlSzSWTbT
|
||||
brsjjJPJwrJJsrRRlllNQGWQpwppCtfGGtWzGGMQ
|
||||
ncBqqLTDnmLgVDZVnBDmdtVVtMzWWdMCQdpQWdVz
|
||||
hDZgTSSnTzNPNFSFPF
|
||||
VZVJJtWTsfTVVWsJhPWrCjzSBJlHSmjJCRlNSSlz
|
||||
CqMpwccgvvgLnvLbMMRRjBNHzjmGmwNHlmlN
|
||||
gLqqvpCDfVDrTfVW
|
||||
CNMDGNPPNJCGbLnTffsTLT
|
||||
tcBBRlrBdQrtmtWFjjbnrTjjFbjr
|
||||
cTQQhcmvcBRcwDMVDZZPPCJh
|
||||
mBCdgPLgZmLfGmfvGhtRQJWjtjQGQhtN
|
||||
pMwrVwbwHMsqcTWQhQWzggTTWp
|
||||
nnSMwrlrsmSZgvvmDd
|
||||
WNSzpCzNzqzNdmqrRHrrLHFrJH
|
||||
MtPfvnGMPnMcbnRtDHTRFFDrmJRQ
|
||||
PcBsfPPHPGGfcSzZjNjpNZZdCs
|
||||
mDCZVLDhWVSDCRvGtsGgGRHl
|
||||
JjPwPNdcPnjPdcwNltHzzGmgGJzQJJRQ
|
||||
dqfjnNmwmbmWrZMbMrThhB
|
||||
qtBpNZFpBGFNfZNPmZPmQmHrmPPPTz
|
||||
LLwJLvDvlWWLHdwDrVcCRcDVzzVVcV
|
||||
sMMwvgjnMvjvnlsvNFBqfGHFqHGjtSpS
|
||||
MmZZsFgwJTdTMdgmZdZRgFhDHhPQPPnRPhCrHhnnrPDD
|
||||
fBcLlNNpQCDLDJJC
|
||||
jSbWWlWpBpclWlWpNWlVBbWVdgwswFJmFJsGtdMggZFGbZwd
|
||||
CMVQVMLLMFGRCMWQttnqqwQwhqsm
|
||||
pJzlczSpPpPgmsqNhmPGDstq
|
||||
gZgTccZGGpzdpjclGRVMVRFRMFvHRLRdLf
|
||||
FMWMSBtStZqZWQtFtScWWSZmHPVJJVHwwlTgmgbzQwbwTJ
|
||||
jhGLhdjNjsLvLsshzHJPVdVmmbzHzdHJ
|
||||
jvDRNjnDNGRCzjLzZZpqnrFBSccWrMcB
|
||||
zggmthDDghHvtrdgrVWfSBRwTHLWHwsBWw
|
||||
PGGjpCjQnJQGJcJnnQpjFWVSsZWVLRZLBcsWSZBRWS
|
||||
FGQlpnJCbqqGGRCjjnlCqGMtdNmmmvdNmmmzvhbrmgMz
|
||||
TstvBTdgBhqTsdTcPlfCSrNMrNnrCNNSNNgp
|
||||
HwLQwQDZzDjnDbmMhNSnmm
|
||||
FZLVzLLQHRRzwWHjdPlJctlJtlsllhRs
|
||||
fBtPsMDDswHvBmmVdBlSBRcGGnhVhg
|
||||
LWJbrpFqpTLTTjqqNWlhnRGGSnhrcSdlRlsh
|
||||
JWNbbpjJzTbNNNJNJMvmvfZHvzDsHDCsZw
|
||||
LPGnPNLtwGhFFnJPfsqpVVszzpsP
|
||||
TcWdvlrcWddggrDBDDdDMmWzRJqfVQZqmsfZsRQzZfZzQJ
|
||||
TldWrMrDdlDCDdMTcwSLVCSShLNSwHjhGF
|
||||
JGsWWWQsJmPwQWbBPmccbcbqFfMMpFDVCDFVFVCDqqfFwD
|
||||
ZtLnlvLnNtvLndnCmfMVSmVCClfpVp
|
||||
zTzZtjnZNLNmZvdtznntHHZJbBRGBRQWcJGbGsbsJRPQWT
|
||||
MLmlMTPtQtMNlhbqbbqhflBB
|
||||
rcrvjpSvScbRbBvbDBPG
|
||||
ZZJzSHpzPrJzHFmMVMFmHCLNtV
|
|
@ -1,15 +1,58 @@
|
|||
use crate::utilities::*;
|
||||
|
||||
pub fn part1() -> usize {
|
||||
0
|
||||
pub fn part1(input: &[Rucksack]) -> usize {
|
||||
input
|
||||
.iter()
|
||||
.map(|rucksack| {
|
||||
let intersection: Vec<&char> = rucksack.0.intersection(&rucksack.1).collect();
|
||||
assert!(intersection.len() == 1);
|
||||
intersection[0]
|
||||
})
|
||||
.map(find_char_score)
|
||||
.sum()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::collections::HashSet;
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_part1() {
|
||||
assert_eq!(part1(), 0);
|
||||
let input = vec![
|
||||
Rucksack(
|
||||
HashSet::from(['v', 'J', 'r', 'w', 'p', 'W', 't', 'w', 'J', 'g', 'W', 'r']),
|
||||
HashSet::from(['h', 'c', 's', 'F', 'M', 'M', 'f', 'F', 'F', 'h', 'F', 'p']),
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from([
|
||||
'j', 'q', 'H', 'R', 'N', 'q', 'R', 'j', 'q', 'z', 'j', 'G', 'D', 'L', 'G', 'L',
|
||||
]),
|
||||
HashSet::from([
|
||||
'r', 's', 'F', 'M', 'f', 'F', 'Z', 'S', 'r', 'L', 'r', 'F', 'Z', 's', 'S', 'L',
|
||||
]),
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from(['P', 'm', 'm', 'd', 'z', 'q', 'P', 'r', 'V']),
|
||||
HashSet::from(['v', 'P', 'w', 'w', 'T', 'W', 'B', 'w', 'g']),
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from([
|
||||
'w', 'M', 'q', 'v', 'L', 'M', 'Z', 'H', 'h', 'H', 'M', 'v', 'w', 'L', 'H',
|
||||
]),
|
||||
HashSet::from([
|
||||
'j', 'b', 'v', 'c', 'j', 'n', 'n', 'S', 'B', 'n', 'v', 'T', 'Q', 'F', 'n',
|
||||
]),
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from(['t', 't', 'g', 'J', 't', 'R', 'G', 'J']),
|
||||
HashSet::from(['Q', 'c', 't', 'T', 'Z', 't', 'Z', 'T']),
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from(['C', 'r', 'Z', 's', 'J', 's', 'P', 'P', 'Z', 's', 'G', 'z']),
|
||||
HashSet::from(['w', 'w', 's', 'L', 'w', 'L', 'm', 'p', 'w', 'M', 'D', 'w']),
|
||||
),
|
||||
];
|
||||
assert_eq!(part1(&input), 157);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,15 +1,89 @@
|
|||
use crate::utilities::*;
|
||||
use std::collections::HashSet;
|
||||
|
||||
pub fn part2() -> usize {
|
||||
0
|
||||
struct Group(HashSet<char>, HashSet<char>, HashSet<char>);
|
||||
|
||||
pub fn part2(input: &[Rucksack]) -> usize {
|
||||
seperate_groups(input)
|
||||
.iter()
|
||||
.map(|group| {
|
||||
//manual implementation of intersection because doing chained intersections is annoying...
|
||||
group
|
||||
.0
|
||||
.iter()
|
||||
.filter(|c| group.1.contains(c))
|
||||
.filter(|c| group.2.contains(c))
|
||||
.map(|x| x.to_owned())
|
||||
.next()
|
||||
.unwrap()
|
||||
}).map(|c| find_char_score(&c)).sum()
|
||||
}
|
||||
|
||||
fn seperate_groups(input: &[Rucksack]) -> Vec<Group> {
|
||||
let mut output: Vec<Group> = Vec::new();
|
||||
for group in input.chunks_exact(3) {
|
||||
output.push(Group(
|
||||
group[0]
|
||||
.0
|
||||
.union(&group[0].1)
|
||||
.map(|x| x.to_owned())
|
||||
.collect(),
|
||||
group[1]
|
||||
.0
|
||||
.union(&group[1].1)
|
||||
.map(|x| x.to_owned())
|
||||
.collect(),
|
||||
group[2]
|
||||
.0
|
||||
.union(&group[2].1)
|
||||
.map(|x| x.to_owned())
|
||||
.collect(),
|
||||
));
|
||||
}
|
||||
output
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use std::collections::HashSet;
|
||||
|
||||
#[test]
|
||||
fn test_part2() {
|
||||
assert_eq!(part2(), 0);
|
||||
let input = vec![
|
||||
Rucksack(
|
||||
HashSet::from(['v', 'J', 'r', 'w', 'p', 'W', 't', 'w', 'J', 'g', 'W', 'r']),
|
||||
HashSet::from(['h', 'c', 's', 'F', 'M', 'M', 'f', 'F', 'F', 'h', 'F', 'p']),
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from([
|
||||
'j', 'q', 'H', 'R', 'N', 'q', 'R', 'j', 'q', 'z', 'j', 'G', 'D', 'L', 'G', 'L',
|
||||
]),
|
||||
HashSet::from([
|
||||
'r', 's', 'F', 'M', 'f', 'F', 'Z', 'S', 'r', 'L', 'r', 'F', 'Z', 's', 'S', 'L',
|
||||
]),
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from(['P', 'm', 'm', 'd', 'z', 'q', 'P', 'r', 'V']),
|
||||
HashSet::from(['v', 'P', 'w', 'w', 'T', 'W', 'B', 'w', 'g']),
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from([
|
||||
'w', 'M', 'q', 'v', 'L', 'M', 'Z', 'H', 'h', 'H', 'M', 'v', 'w', 'L', 'H',
|
||||
]),
|
||||
HashSet::from([
|
||||
'j', 'b', 'v', 'c', 'j', 'n', 'n', 'S', 'B', 'n', 'v', 'T', 'Q', 'F', 'n',
|
||||
]),
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from(['t', 't', 'g', 'J', 't', 'R', 'G', 'J']),
|
||||
HashSet::from(['Q', 'c', 't', 'T', 'Z', 't', 'Z', 'T']),
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from(['C', 'r', 'Z', 's', 'J', 's', 'P', 'P', 'Z', 's', 'G', 'z']),
|
||||
HashSet::from(['w', 'w', 's', 'L', 'w', 'L', 'm', 'p', 'w', 'M', 'D', 'w']),
|
||||
),
|
||||
];
|
||||
assert_eq!(part2(&input), 70);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,8 +7,8 @@ fn main() {
|
|||
let _structured_input = utilities::parse(_input);
|
||||
|
||||
println!("Part One");
|
||||
println!("Result: {}", part1::part1());
|
||||
println!("Result: {}", part1::part1(&_structured_input));
|
||||
|
||||
println!("Part Two");
|
||||
println!("Result: {}", part2::part2());
|
||||
println!("Result: {}", part2::part2(&_structured_input));
|
||||
}
|
||||
|
|
|
@ -1,6 +1,27 @@
|
|||
pub fn parse(input: &str) -> usize {
|
||||
println!("{}", input);
|
||||
0
|
||||
use std::collections::HashSet;
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
pub struct Rucksack(pub HashSet<char>, pub HashSet<char>);
|
||||
|
||||
pub fn parse(input: &str) -> Vec<Rucksack> {
|
||||
input
|
||||
.lines()
|
||||
.map(|line| {
|
||||
let (first, second) = line.split_at(line.len() / 2);
|
||||
Rucksack(first.chars().collect(), second.chars().collect())
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
pub fn find_char_score(input: &char) -> usize {
|
||||
static CHARS: [char; 52] = [
|
||||
'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',
|
||||
];
|
||||
CHARS
|
||||
.iter()
|
||||
.position(|character| character == input)
|
||||
.unwrap()+1
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -9,9 +30,50 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_parse() {
|
||||
let input =
|
||||
"test"
|
||||
;
|
||||
assert_eq!(parse(input), 0);
|
||||
let input = "vJrwpWtwJgWrhcsFMMfFFhFp
|
||||
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
||||
PmmdzqPrVvPwwTWBwg
|
||||
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
||||
ttgJtRGJQctTZtZT
|
||||
CrZsJsPPZsGzwwsLwLmpwMDw";
|
||||
assert_eq!(
|
||||
parse(input),
|
||||
vec![
|
||||
Rucksack(
|
||||
HashSet::from(['v', 'J', 'r', 'w', 'p', 'W', 't', 'w', 'J', 'g', 'W', 'r']),
|
||||
HashSet::from(['h', 'c', 's', 'F', 'M', 'M', 'f', 'F', 'F', 'h', 'F', 'p'])
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from([
|
||||
'j', 'q', 'H', 'R', 'N', 'q', 'R', 'j', 'q', 'z', 'j', 'G', 'D', 'L', 'G',
|
||||
'L'
|
||||
]),
|
||||
HashSet::from([
|
||||
'r', 's', 'F', 'M', 'f', 'F', 'Z', 'S', 'r', 'L', 'r', 'F', 'Z', 's', 'S',
|
||||
'L'
|
||||
])
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from(['P', 'm', 'm', 'd', 'z', 'q', 'P', 'r', 'V']),
|
||||
HashSet::from(['v', 'P', 'w', 'w', 'T', 'W', 'B', 'w', 'g'])
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from([
|
||||
'w', 'M', 'q', 'v', 'L', 'M', 'Z', 'H', 'h', 'H', 'M', 'v', 'w', 'L', 'H',
|
||||
]),
|
||||
HashSet::from([
|
||||
'j', 'b', 'v', 'c', 'j', 'n', 'n', 'S', 'B', 'n', 'v', 'T', 'Q', 'F', 'n',
|
||||
])
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from(['t', 't', 'g', 'J', 't', 'R', 'G', 'J',]),
|
||||
HashSet::from(['Q', 'c', 't', 'T', 'Z', 't', 'Z', 'T',])
|
||||
),
|
||||
Rucksack(
|
||||
HashSet::from(['C', 'r', 'Z', 's', 'J', 's', 'P', 'P', 'Z', 's', 'G', 'z',]),
|
||||
HashSet::from(['w', 'w', 's', 'L', 'w', 'L', 'm', 'p', 'w', 'M', 'D', 'w',])
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
0
src/day04/input.txt
Normal file
0
src/day04/input.txt
Normal file
15
src/day04/part1.rs
Normal file
15
src/day04/part1.rs
Normal file
|
@ -0,0 +1,15 @@
|
|||
use crate::utilities::*;
|
||||
|
||||
pub fn part1() -> usize {
|
||||
0
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_part1() {
|
||||
assert_eq!(part1(), 0);
|
||||
}
|
||||
}
|
15
src/day04/part2.rs
Normal file
15
src/day04/part2.rs
Normal file
|
@ -0,0 +1,15 @@
|
|||
use crate::utilities::*;
|
||||
|
||||
pub fn part2() -> usize {
|
||||
0
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_part2() {
|
||||
assert_eq!(part2(), 0);
|
||||
}
|
||||
}
|
14
src/day04/solve.rs
Normal file
14
src/day04/solve.rs
Normal file
|
@ -0,0 +1,14 @@
|
|||
mod part1;
|
||||
mod part2;
|
||||
mod utilities;
|
||||
|
||||
fn main() {
|
||||
let _input = include_str!("./input.txt");
|
||||
let _structured_input = utilities::parse(_input);
|
||||
|
||||
println!("Part One");
|
||||
println!("Result: {}", part1::part1());
|
||||
|
||||
println!("Part Two");
|
||||
println!("Result: {}", part2::part2());
|
||||
}
|
17
src/day04/utilities.rs
Normal file
17
src/day04/utilities.rs
Normal file
|
@ -0,0 +1,17 @@
|
|||
pub fn parse(input: &str) -> usize {
|
||||
println!("{}", input);
|
||||
0
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_parse() {
|
||||
let input =
|
||||
"test"
|
||||
;
|
||||
assert_eq!(parse(input), 0);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue