Day 3 solutions
This commit is contained in:
parent
434fdba208
commit
dfbd28dca3
|
@ -0,0 +1,300 @@
|
||||||
|
RCMRQjLLWGTjnlnZwwnZJRZH
|
||||||
|
qnvfhpSbvSppNddNdSqbbmmdPrwttJVrVPDVrJtHtwPZhrPJ
|
||||||
|
BFpFzSSqSFFSvQsnWgCMjTLzng
|
||||||
|
DbWVcVRRdlLffvtqjTWNgQ
|
||||||
|
mJJMpsmrMrJSHJpsHrFHvBvgHvqfNvzffgTvfj
|
||||||
|
mMhPjmjmFPJhMSGGcDRlwRdcLGPc
|
||||||
|
qFcbmWFJqqWpRJcQWpqsQQQwSPCPrHRHCPdNZtSrSHwrNZ
|
||||||
|
jGMjGLhhhgTvghgtGVjnNCrPVwZSZffSNSwHZZdH
|
||||||
|
DvzDlvvhnjlMlglglGGhDLpqqcJWWtsmszpWbBBBmQmb
|
||||||
|
SPLPHQbJSbPsvTLmfDvVDctvWhcDlD
|
||||||
|
jdRRzzGgJqwrpMRMgdjlcVcWqfWWlfDlmmlWhB
|
||||||
|
rwgRGdpGprNNLQLsbZJPsn
|
||||||
|
GZhTVLztHrSzrRBz
|
||||||
|
MJWjMvsfSCLSnrJn
|
||||||
|
MjglcgWMdccvZGFtTDchLLLh
|
||||||
|
rgDHBgBjRgRTgwzwthBnQwmBtB
|
||||||
|
MsMpSfMsTGTFFLdFFFMFsnNmthNnzhthtwmWnznz
|
||||||
|
pZMpJdvJMGRHVJJTVHjb
|
||||||
|
TQVqZVBcBBdBfbpN
|
||||||
|
zvzrtCshrntCHslPMMMFpZHbNSpb
|
||||||
|
hLWhGLttsvLvrrWvhzVmQgwJZTRcggTjGcgT
|
||||||
|
SqRGLHtSbtNTbhjFTjDDpF
|
||||||
|
WwgJgmdmMdwPDVQQBBhSBFwV
|
||||||
|
JMPlmlSldWZmRqtLsRGRtvls
|
||||||
|
mZvmvPNmlNJPJzzmgNvNgdqqdBSpfHBqSsHqHfwpsffq
|
||||||
|
nhDQDrwLrVVnqfGnsBGBGGsH
|
||||||
|
VjCDMhbDjLjtFhtLhLhQjNZcZPwWWcczmvglgJJN
|
||||||
|
wwqnwZGGZqqMpMprpZqwGlLDtNDffdBdNVBmNGBN
|
||||||
|
TSTchTFbRLfLmVhNDm
|
||||||
|
SCLRvJQvRFTSRjqMqPZrZnrzZzjp
|
||||||
|
cJfqGjgGJcsgsPnghgBm
|
||||||
|
FHHbQQHLWLbPQThqQQRnZs
|
||||||
|
lLLMSCvrlFMwlSlFcNwqDVVpJcfjzVDf
|
||||||
|
cRdRDhsDFzPztwJdGP
|
||||||
|
CVqpCqCgSNfCSQBpjtBwtlBBHLlmGjGG
|
||||||
|
qfQfCVQfgQnVNpQCMqfcrFrwWDhrDnsvcRDsbc
|
||||||
|
nFWWzqWZQSqnJzNJzslJVsdV
|
||||||
|
vBBvsLvbBmBmRlGTNJJvRRTD
|
||||||
|
tBbpmmPwCmHpMHHMrPCCcSnZSgcFcZgWFscSfgth
|
||||||
|
LLssTJrqrpvrvvpJvdjggMlgzVgVggPlFPqz
|
||||||
|
HwZwCZfHNtbMzjgVnFPC
|
||||||
|
RSttfRwZDtBcZwQMQdrQsdTBQQmW
|
||||||
|
lJnNhMJqljlNhSrdWlGGGQHwwH
|
||||||
|
vbTpbCsTFCTmbSmcRfVCfRpwcPdwWQQrdwHwBHrPdwrLLB
|
||||||
|
sVTmDfmCTVmJjgSzzntDtt
|
||||||
|
DQtMjZHZHvMbwwTSpqLtpJ
|
||||||
|
FzVFlsNdVczWPzWcslVfSLqLsqJpSwwsJswLrf
|
||||||
|
dNFFWcmzWFGLWcdcFgvZvvRHQvjMHDMBGD
|
||||||
|
MVPTmPvbMgrTmmmmMRMvPvBwFGhhDCdFFwLCLdJhDGFRhG
|
||||||
|
fqqWfpZWzWsDwhwdhwqGLD
|
||||||
|
ZWSSftStnnplcQLSbVMBvTbrMlbrBvvl
|
||||||
|
FSsHDmtFLbbFbLGg
|
||||||
|
vrvzTzWzzzvppzSzTMnfTggjVgbgjbLjgPPnbGbVGL
|
||||||
|
pdMwrBpfwfSMTTWdMTpBDCBtmsmltslcBDCshDHs
|
||||||
|
RgbmfGtmRVgLLSVSnSrWWSHhnh
|
||||||
|
ccTvlvNppsFnbFnhnWnPHJ
|
||||||
|
pqNjDBjNNjvpZfmtjbCLbCmb
|
||||||
|
qsSVpSVfWqgNrVtWptpmSfqbPQljbHPHlDnljRSlwSnwQn
|
||||||
|
dcGBrMFMdLTGGdlwDwMRHwwMbjHP
|
||||||
|
CFBvhFhTLFCGvFchChBdBTJtsNpWqfVgtszprmVWNqNgvV
|
||||||
|
sjsTgNSNqSjgMmVPmmmrpH
|
||||||
|
RftCcWddRCZfPtCfcQZdcZDcrBllBFpVHprHWlHHpHJJmlFp
|
||||||
|
thPZRtLcDRdDCTTsqbnwjhvNjq
|
||||||
|
TQPtgfgdPcdSQhjwHhHBLS
|
||||||
|
RrqCqVVbJmVRJmsrzmJpWljlSHLSBwSSRWllWv
|
||||||
|
CVrDNbHrJHVMCbrDJsdFdFcPFZngMfFdTPfP
|
||||||
|
NNlZgndqmGVGGVZNWQmWmbhbbhpbbhtCbhtgCpCtMF
|
||||||
|
THfLPTzwJTJrvHRwwsbFbhfbMCpphVtBbB
|
||||||
|
RjrvzHLzPDvLzPHrTJVrwPndZQNlDZGndZWDdNNcmlQq
|
||||||
|
tjDsjDGtTjVVbQVCggvrbg
|
||||||
|
qrWWRBllRFrdlSMCdbSJCP
|
||||||
|
cZcncRnhphpZWRNtrmsrGpHffmwH
|
||||||
|
qpRjdcqTcMbbMRTwtnplnwnhPzhBhw
|
||||||
|
FSFLvNrsPNrsGSLsrFSGfnwBQwZnZwhQQLwwQhnn
|
||||||
|
sWNVmVmCFNWGsCrrjRTmMjRjPRqgJqJg
|
||||||
|
sVCnzVpmFpVSnNFCmnmzwRFDWDdMllDccMdwDMjWjWlWjg
|
||||||
|
BJbPJGGGHPZqZQbpMlWWMWlBljjjgDjh
|
||||||
|
tGQPpZtfTPpqrHsVLSzmRNLtSFsN
|
||||||
|
WCDlBWWlvMFWlQWpmSZdZnNmGfJZFZ
|
||||||
|
LqjTjgtjPcHTTJgLThztcLTLnHnmdSpZdpdffnmZSppfGpSn
|
||||||
|
PtzqzjtqJgggzhqqccqhrQMsMvMwrCwMlBvMwvvsvs
|
||||||
|
NMsJfsHTMVbjnLnVsC
|
||||||
|
htWllhmZcWDWBwhZPcmpVRjnVMRLCCjLFpCwRb
|
||||||
|
PmZMrBtcPmZWhzDWBtMmJQdddHfQGNSqHqQGGTgr
|
||||||
|
NmfnnsPlHnGqnlsNNmRPltRLvrhvrSGJSJjvFFFSSFJLhb
|
||||||
|
PzQZccVPVwgPjrJSJjhFFpQr
|
||||||
|
TdwBgdTVwzdwzlmNfRqPmqqTql
|
||||||
|
BVLLBPmPmWBlMlLJnJlBlFQVgdRDdRZRZHpZjQzdRdZQdzQZ
|
||||||
|
trGTsfbTTgHZptzSZW
|
||||||
|
fsfTNcCqqNhhVhVFVhVBWLLB
|
||||||
|
LJwgJNfbCvwCJCwBCCNhhHmGHWWSMWmWmbMmTmmGdS
|
||||||
|
lzRnnltsstZzzRTfHtHWHGWftfHW
|
||||||
|
ZFFzVFqzqlFcZscZpRZsNphjhjvjfgJhQgQvwvhC
|
||||||
|
HHzcFNcHFjhjZjlrghLL
|
||||||
|
pMZJptpZWCmpttRMCWnnDnBGGDLhlLQrhl
|
||||||
|
MJsMCTZTTpTJRmMCJzfNsNcfNHqzvvfcww
|
||||||
|
ZDtllsDlVsrQBqQqRfWl
|
||||||
|
wvJgpPhhscgvpJFNrRjRrWRjqrRjdjRv
|
||||||
|
zpsNzCsNCJCCPPHSLzznMnDSLGLM
|
||||||
|
rfrJjFWrwjpnJjjjfrjJJnFVTgTggRWRRRPPLQgCgQcPPT
|
||||||
|
sSNbSvqmsSZDZZBtNTTPGgMLMRVcgPCMRb
|
||||||
|
zZDZzNNSmrfpjFCjzj
|
||||||
|
dbbNJPBbbrFqNqttqrGbqDcmDQRmFmwcwSnQSDcpwS
|
||||||
|
ZMMTsHjzLlLcnSVwpRRQ
|
||||||
|
hZTWjWvTZzTTWhszfwbJhrgJqtBbJGdqNPqt
|
||||||
|
rrqgHrgtcHJRRjWZlRvnnWBn
|
||||||
|
QbhVmdFppwbdjnMvlnBwMWZP
|
||||||
|
TpFDdVTFTDfhHfJcSJSzGZGf
|
||||||
|
sqNTNZHsHjjFBBwJMMNMcCJD
|
||||||
|
WGLQPjfWfQWPWmtLSRRRLwBJDbtCCJJCbbwCMBbMBc
|
||||||
|
RnPdLQfPLRdndGGRvfjlgdrTTgTsrgTrZFzF
|
||||||
|
BfHbjVVqSBFfMSlCLCDrGSQssvlr
|
||||||
|
tTpnnzpcPnwzhcnJTDtTPRprGlRGGGCWlQsWvrlvrQGQrC
|
||||||
|
DPwhghDTpPVHqqdgZbZq
|
||||||
|
ZzPqfGPtRtqfqPbqfGgGZbrhMjmjBCpHpHNCmHtHjmBHnj
|
||||||
|
QJwllvFWwDvnwCBBzjwwpC
|
||||||
|
ccJLVQzWFJvVJlVbgrZZLZLRRPSgdr
|
||||||
|
rBGbLbnTfnZrQbTnHldqsMmHsqlsWfMd
|
||||||
|
JcJjCCPzPtjCNHdlGGMlll
|
||||||
|
jjgpRRvcGbwpThVppT
|
||||||
|
ttDfjtqfjtpTWWwfTbtlWccNGRSZNGPGhZGhGhcwRh
|
||||||
|
LbCrHdvzLSSHmSRNmc
|
||||||
|
JCsBvrvBLzFQbbvlVVnpQpDtWlDqfq
|
||||||
|
vvdvJBfvdTvRBflBJPNmmffmgPCMwDgsss
|
||||||
|
rFjqLnMcnqrrtMLtjNgCPCsNzzgsPCGFNs
|
||||||
|
VqLqnLVZqjMZqWnrVtWlZJJSvHvBdRSvBdRvvJ
|
||||||
|
zZBDzgQQZLlcglzjrCrCMFjGZbMsHm
|
||||||
|
PnnJVRfttTtwVnnVFGHVsjCFCjrsMM
|
||||||
|
wPRpRpRnNTpPNlBdQQDdgDNMhN
|
||||||
|
bNQpFpnwgtDHpbnhWtffmfmhvhhfsZ
|
||||||
|
LcdLdwCLPPSVSqqwZGhWdJhGJZhlGlsm
|
||||||
|
TBwSLPSPVRSVqSVqVrcnpMDDngMgnQpbRQFDNH
|
||||||
|
vPSvBJZSSdJgpJJZBDGDGrdqGdllGrGDrh
|
||||||
|
HMtsltFlRVVFtlscRjjMcsWwWChWmrnwDWGwChmjGCWq
|
||||||
|
MQHNlTVHNVHpbbpbTvvBvf
|
||||||
|
VsbPMwhbWhzdpzNNggnBcTBWNngQ
|
||||||
|
RmtZZFZqSjqVHmGQNcBHNLGLGHQH
|
||||||
|
JjRClqCjZlDZmqSqljFZZqRCvsvPfshhMdwsDwbVwzMzhffb
|
||||||
|
bfGtRgfDtVmsMzTbmz
|
||||||
|
LjGZwQLLdjFdHLNMhmzBzMNHNmzN
|
||||||
|
wjQLCFvnnQGdZLGWSjdqWDfPlrRpqRDDRqrpPr
|
||||||
|
pqnBZqjCNCqQqmllpHGMGdTfML
|
||||||
|
PsFgrRvSPsWTwWWQwGHLHW
|
||||||
|
SrvgsFbrrPJJFsrFPtFSCChBDQjqCqtNhDqhCqNC
|
||||||
|
RJZRWZWMWZPZffRCPWMdRdfQQQjJzHQsssjrSQFVschVHr
|
||||||
|
NgpnDgvGTNTVFHFFjVFF
|
||||||
|
jntvgljpGvlnbLtLbBvnLRPlCCwwCfRqMCCqqqddqw
|
||||||
|
PFBMVDSVPHMTThtMtSBMMVNbQprHbNRgNRRgLnvpnjnN
|
||||||
|
scGcrcwlswdGlcqvbQgnnpQnqLjnpp
|
||||||
|
ffwswWzcmlcWWsmcZhrDFrZMFZBMFzhM
|
||||||
|
LMdZGqdRSSZmCZMRfQjnggvlvggRcznz
|
||||||
|
tjjFhBrtpthpslcvvlcQzFnFvQ
|
||||||
|
jrhbjtpJtbZqCLdWLq
|
||||||
|
HBGBfBttZzbGbljPdpFddFqRmqRzRN
|
||||||
|
JDWghDDSDqmmDDpc
|
||||||
|
CLvgMvChCvLphCTSShhMhQsBbfTfsGsrBfjfrljrZZff
|
||||||
|
RgHgDqDzqQqgcdHqcZGTNlGffGBDGZBTGZ
|
||||||
|
LFLPWsmvrbwhwwswrTlTTCBNGFfGlNJZNS
|
||||||
|
vhrLnvhNmWvMsrvwqMdRcptQtztcjptz
|
||||||
|
sLMLsThhjgqLlsnsLgTLtMFcRbcPcJSwJbbSbtSWScSt
|
||||||
|
fvrjjDjvNprdPwwJCCSrWPFP
|
||||||
|
vfZdGzVzfvGGVGpBjnnMglTsgZlqsMlM
|
||||||
|
TCVMfCfBnHHfLLPFWb
|
||||||
|
GgQlGJzNzbzHcHHLlcPLHL
|
||||||
|
tQbNQGgRZZCVtVMZ
|
||||||
|
QFFMzwjwngsvsBjGGJWbBbBWbB
|
||||||
|
QdmVDmVDWRPWVPVV
|
||||||
|
QHtHSdDpLQCCSHrtqrdrttDfLgvnFvFghNszzwgngFwsNF
|
||||||
|
RzzTNpSRBzSBVpSRlHNSHBSSGPcLNGtjhPPcbcGhPPhcrnct
|
||||||
|
CCmmCwwdfFJqDmdwsddhsmvdcMbLfcftttbPnjMPbcjPMPbP
|
||||||
|
mdZQmvssFdqsFZvsZQmvDvmWzgQBWTRzTzHlppWRglHBQh
|
||||||
|
VWmnfQWzWWnHWMfmmMVNMfWjtBtBNSNSrlStlpjJBBlgBS
|
||||||
|
cZZvbwsZsbbZvvscCRdFTTTQrBStdBJgSdhjgBjBjJjpJJ
|
||||||
|
wCFTCbZbFwwCTvFTwsPGccMzMDWVWfzLGmqHnnDHGLQL
|
||||||
|
sNQQHbbhdlpdrQllqpsqSpGjZDZGgDnVcnjjnnDZ
|
||||||
|
WWRLGFvJBJPvzzWjnTncDVZTTPgDff
|
||||||
|
FLRLGRFRJLBWJmJzMRLCvldrMrbbltdhQQlNqtMbsb
|
||||||
|
HZllwlZSlSZwhvmQjcZhTqcT
|
||||||
|
sPzzdgpszpzsBdvvMccvcqPThjhM
|
||||||
|
JDdsDspLzsdzBgVdBGBzCLlwbbwWSnlnnWffHwJcNlHw
|
||||||
|
nzCTCnpqJqfCnvvjZjWjPcZrmcmZfW
|
||||||
|
GNdwgVjwRdRglMrPWLPWZWcNWW
|
||||||
|
dVblgtRwQgSGVBldbQBbBRJnQJTsJHTqnzzJFpjvHnnn
|
||||||
|
dqpQQrdqQpLfqcGSdggQdgRMmwHBMMBVNRNDFFBDBgNt
|
||||||
|
vTzsnZCnlCnshbPlvZJbBzVmmVRDNwtHFBwMDVBR
|
||||||
|
lJCshjTJbVqfVdjjjG
|
||||||
|
WlLCJlHLcZcJWcWZJnLHnPqlFtSthTnFNThVtNhVhvNVzVtF
|
||||||
|
QfbgRsspfDRsgfjqqRRpDbSNSTFzBbTbhttVBhVNBzzT
|
||||||
|
fwgfRdpdfQDqgPHHZJZCcdGddH
|
||||||
|
sbrbmVmfddzJntZZtwtMMf
|
||||||
|
PvhwPRlvvWhFvSRhpFMMJGMFppnBTBGJ
|
||||||
|
RPlCCLDPDClwHbrdzsdNLzgs
|
||||||
|
HZgqtgbqRZvzwzCh
|
||||||
|
BFqmGfrNLQfhzJWBhRJwJR
|
||||||
|
LFqFQjrcrcqFNMmMdHggntDPMnsDbn
|
||||||
|
NmWmPblGnnTTNlFGPmNWfwdchdlHdBdwcfCfZppZ
|
||||||
|
rzqzRjgVrJrzzcFdqdCBFBhZhH
|
||||||
|
VDRsRMjRJJrQsJPTGFNvsbnsnLGm
|
||||||
|
nrbrBLTffjNRzGQSJHJQGT
|
||||||
|
tcZqMcppCmHRQPGGCG
|
||||||
|
pMDcZhpgcpFDfrwNDDrLVjGj
|
||||||
|
LWlmlmWqvrBMWWBlmjLThBrfPJZfZZCwPCJJwPCTcggCsd
|
||||||
|
pSbRHbzpHDVFRQRfPdfnZswgcJcppp
|
||||||
|
SzRNGbzSWNPLWqLv
|
||||||
|
vqslblpspsvqBFSqcrrZZDdTfFPHccrf
|
||||||
|
GWRhWmjwhRcQdCDrPjDP
|
||||||
|
mcWLVnnWJgGRzVSsVSpSSptNpMvb
|
||||||
|
wHTPfdTvHlPHGpdvvTddGfcJLLWWwWWcCWrqrVMWCVLL
|
||||||
|
zhsSNZhnshNSnvZmvsCWWSLrVMcrSCLWJcrq
|
||||||
|
snDnshmNsjnTdHPfDGvdDT
|
||||||
|
CfrnFFMnnsRNrNCwFCrdssgqgqvVZvZqlTWBNWZqlJBW
|
||||||
|
htDhDLhwPWWBqTghgB
|
||||||
|
DPLPzHDtSPStjLGLtzSMwbdMdnCHrRdCFsmfnR
|
||||||
|
nBNWCvJmVPNnCPNDJWbtmSwqTttcQsSqtqTjQQ
|
||||||
|
pMflzLlffRRMRdFlflpLddGdsTjwHqzcvwTqtsStQQjtwwsQ
|
||||||
|
ZhGlphlpvvLLfFGvMLhfrfWNJNNPVPbnPhnDgDbDDNbJ
|
||||||
|
ZCpCmVlZvlpBBwvvMCrJhrfhMfjjWMSG
|
||||||
|
qhstFzFFqzHGzNfSMJSGzM
|
||||||
|
QnHRPRgRQPtPhtnDsqsbDQPBlTcpBwmVmTvbwdwBTVZVpl
|
||||||
|
PHmqHdddqBWMmTvMvTGMBWPdwhssnnHlhgsNwhwNHQzwrswh
|
||||||
|
cSbVcDLtbfLSFzhlhJswgtrsww
|
||||||
|
bSLlFLFFLDZVLpZVjFLdPMdBBqGGPmmqWGdGjM
|
||||||
|
FQCnQwFRbnrSfgQgwFRCnswmPLpMppPdMMllpLMptMLldPSZ
|
||||||
|
cJhhJcJVBJjhfHDvJqThvVDcpdGGqdZGdlltpqWdMqpdGWtG
|
||||||
|
HhzTjJBzJTvNJHvzvvNBzBFnFCNCbCwrbnRbgRwfwQsg
|
||||||
|
jRzDgbDDQDgVqqDGsjttNdwqNJZNwNdTWrpB
|
||||||
|
MHvvvlSHFllMhhMrpWBJtlWdpJrTwZ
|
||||||
|
mFcFFHmCmtcvfvFFHHLDGnRVzjDgnmgmnzGgGg
|
||||||
|
JJhDpDdmsJJdgmhrpPjGjFLPPSNpjL
|
||||||
|
WbznbRGnPfrfRSrN
|
||||||
|
WqGnnVGVMGHtWTCgJvZHggBggZCg
|
||||||
|
wlrPQtZQvwrzlvNfZLMZBjbbqjqLbSBjTg
|
||||||
|
PGJDVdsdhsPVPjbTcLcGLgjqbM
|
||||||
|
VPDRHWRdsRQvpfmmlw
|
||||||
|
pvTZTSpTZvGGphNvvbDpdrMqrjlWdPqqjWdldNrd
|
||||||
|
gmmJmsQfJgcRQJQJJncVQjMWllSnqljqBlPPjPHHHH
|
||||||
|
QVJQRVcwmJcchwpSZLwGbSZZ
|
||||||
|
zjrDMWcjDzQjDlWrnqqRBRNhBJRBhBJqnf
|
||||||
|
TTGPPdgGLwdHGwGPTgLbbvhHtRRNRRSfchqRvSqHRJ
|
||||||
|
TZTccPpdZwPQjllsspjVzD
|
||||||
|
jHLHhHFRjhcblDRRWbWTdtppLTntTnMmGLMvTp
|
||||||
|
BBQBgBBCrrgqJqTtMZMpngdtpvpG
|
||||||
|
QJJJQrsVsQQfQVPCNqsNSjHdhhdRHDNHFHFclh
|
||||||
|
RbCLnvdtnLRLRbmLPpHdQCvmNJpJSZSJlgDzglGlzcclcDGD
|
||||||
|
qBBwMjfsFMjsMbfWbwjlzDZlcWclJczgNDGNDl
|
||||||
|
wqjhrwwhhCvbQPrRnC
|
||||||
|
vpWDDDWZQQNGllwHlwWVGj
|
||||||
|
LCPdqdcdtsvdsCtsddvmVrVjjrBwHlmswmBnmw
|
||||||
|
fLfvSgvMfdCPqzZNThfNNpTJJQ
|
||||||
|
CVVVLbNVmGNQbGbGHHbHbvdwgQlwJDTFgJQdDZDJFD
|
||||||
|
ssWBsBWrjSzWrPtBjnSCTwvFZlDjwZDdgwTDwggv
|
||||||
|
nntPBqBrPsBfnCRCBWzCVcGVHMLNcbHLNmHqGphp
|
||||||
|
sbbwwzdsbqQQbQnnNbPNGbznHHRdLTggMVHFVvRZTRVRHMZF
|
||||||
|
mWffDWfflBpfmcWjWrrJVvgRLlMZVVhMFFTlHhMM
|
||||||
|
rJJCctmjcfvzsqsqbtbqPP
|
||||||
|
HGWjHWzVctQVcJVtjvRsvLTddqDDDsjRLg
|
||||||
|
bbMnlNChZQLZhdDs
|
||||||
|
SMMMMMMNmMllSlrmCczGcVzBcGWFBQGcrt
|
||||||
|
VwQlqcLfdLGqdqDjjgZrjZBdttjd
|
||||||
|
zSPPPJzJGjJjZrCBDt
|
||||||
|
WMTMsTWsccsvGGwH
|
||||||
|
hZvbQrjTTZjZcjWNrjnQrcTRpGMqcRfRRGzHfHfpfRMqRz
|
||||||
|
mDJlFmwCVVwbCVbPBRLMMLpRLwRLHqpR
|
||||||
|
gsCmgJsPDCtCVlvbhgQjhgQbnQbd
|
||||||
|
fSgbhhGPGJGhRDmlhhHcHDBH
|
||||||
|
LsMwQWFswsQMsQMvjslcBcDldBTWfDcHRRdl
|
||||||
|
ZpVFwLQwVLQvCVsMjrJbbCNPbzSJtPbPPf
|
||||||
|
VDzWMCpfCcCRDzqDzqNnvLZnfntHQnPPLQlt
|
||||||
|
sJmdbTBdmmGhFhhbJNNQlJnQlQLHPZNn
|
||||||
|
sdwmwsdrmMRpDRMLcw
|
||||||
|
JpWmSWpCnCbJBZHZVldbdfZf
|
||||||
|
rgdrgNdrjgNPrMjwTssrPdfDZqsVfQHDFlQDDHQVsZfB
|
||||||
|
TRPdNNLgjNwrRTrJpppzCmzmCLSnvS
|
||||||
|
QbtQJHQmbmfmBRvbQRzBvldqcFljsGcFdGdvsqqGls
|
||||||
|
ChCPWhDhWZWJVnZpCNChhVDcMcDdcdgGscjgFjGFlsjjGq
|
||||||
|
WZNTWNhNZfJJbTJTmR
|
||||||
|
CHGCHFcZvCrchrZrhsVtsBQjMstfZMMBgg
|
||||||
|
NNqwDLmDjJgQBmVQ
|
||||||
|
wdWLLTgWRTWcCcbrHCHhGW
|
||||||
|
bTZZvNjNjLgTCHcWhccfhWJdhvnc
|
||||||
|
mnFFmPGSwRPShzVPPWPdhhzr
|
||||||
|
FRtBFGBMFQFttRwtZgTjCTnQNbNLjTCH
|
||||||
|
bJSqrSpDJbSNbFjSFCfPWGcwGWPrcTCfwr
|
||||||
|
tRtLhDsvhQZlHRhRtQQnCnCcdwCPwTwdGcGP
|
||||||
|
HsHvsmBZvmvsmBhHvLssVqDSNgFMDzgbbDVJzbpMVq
|
||||||
|
nSSDHRRRQRBCLCQC
|
||||||
|
qGmfPzGmGlrrrpfrqlzrJtLvBlhQbSCvbtCtlFhLFC
|
||||||
|
zzpmqqJJVVfJfPfMpfdHNndsNwDSMSDDNcsc
|
||||||
|
CscQsVMhCsMsMHhhVthtwmgZNRqzWLBRLRLmBWmZWBND
|
||||||
|
JQJdddrjrLqBgDBq
|
||||||
|
QbFlTffpMbMnsPCh
|
||||||
|
gDdbVbVDddDfVfWQfBRLQZsZLRQQ
|
||||||
|
FCCTrGCMStwGHTtTWLQhLZrlRssRhRhp
|
||||||
|
FSHqtFTmFwmCsSwGTHtMTSdjjcdnVddgzmbVmjmndbbD
|
||||||
|
JtBBMcLWLdfFLhMttcWWhfWLrTRGFsbwTmRGwmwbbCTGGsbD
|
||||||
|
PzQpSQQQvzVvpzHqjvNvQSvGRmmTDVRDmsGsRGsrcDcDGC
|
||||||
|
cQPHSPvPvZHqcZjzpZjnZNtWlLdtldJWfnfhlJJtLdMg
|
||||||
|
nPPssTBnMJPdtHPVHtRhpv
|
||||||
|
bSSgGFWDgWwDFFlmWlcShqdpRqpVcHvvnqpvpRHd
|
||||||
|
bGFnGljgSsjBCTBszz
|
|
@ -0,0 +1,189 @@
|
||||||
|
use std::collections::HashSet;
|
||||||
|
|
||||||
|
const INPUT: &str = include_str!("../data/day3.txt");
|
||||||
|
|
||||||
|
pub fn part1() -> String {
|
||||||
|
let rucksacks = input(INPUT);
|
||||||
|
format!("{}", item_sums(&rucksacks))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn part2() -> String {
|
||||||
|
let rucksacks = input(INPUT);
|
||||||
|
format!("{}", badge_sums(&rucksacks))
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
struct Rucksack {
|
||||||
|
pocket1: HashSet<char>,
|
||||||
|
pocket2: HashSet<char>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Rucksack {
|
||||||
|
fn duplicate_item(&self) -> char {
|
||||||
|
self.pocket1
|
||||||
|
.intersection(&self.pocket2)
|
||||||
|
.next()
|
||||||
|
.unwrap()
|
||||||
|
.clone()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn joint(&self) -> HashSet<char> {
|
||||||
|
self.pocket1.union(&self.pocket2).cloned().collect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn intersect_rucksacks(rucksacks: Vec<Rucksack>) -> HashSet<char> {
|
||||||
|
let sack = rucksacks[0].clone();
|
||||||
|
rucksacks
|
||||||
|
.into_iter()
|
||||||
|
.skip(1)
|
||||||
|
.fold(sack.joint(), |cur, sack| {
|
||||||
|
cur.intersection(&sack.joint())
|
||||||
|
.cloned()
|
||||||
|
.collect::<HashSet<char>>()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fn input(text: &str) -> Vec<Rucksack> {
|
||||||
|
text.lines()
|
||||||
|
.map(|line| {
|
||||||
|
let compartment_size = line.len() / 2;
|
||||||
|
let pocket1 = line
|
||||||
|
.chars()
|
||||||
|
.take(compartment_size)
|
||||||
|
.collect::<HashSet<char>>();
|
||||||
|
let pocket2 = line
|
||||||
|
.chars()
|
||||||
|
.skip(compartment_size)
|
||||||
|
.take(compartment_size)
|
||||||
|
.collect::<HashSet<char>>();
|
||||||
|
Rucksack { pocket1, pocket2 }
|
||||||
|
})
|
||||||
|
.collect::<Vec<Rucksack>>()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn item_priority(item: char) -> u32 {
|
||||||
|
if item.is_ascii_lowercase() {
|
||||||
|
return (item as u32) - 96;
|
||||||
|
}
|
||||||
|
if item.is_ascii_uppercase() {
|
||||||
|
return (item as u32) - 38;
|
||||||
|
}
|
||||||
|
panic!("not an ascii letter");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn item_sums(rucksacks: &Vec<Rucksack>) -> u32 {
|
||||||
|
rucksacks
|
||||||
|
.iter()
|
||||||
|
.map(|rucksack| item_priority(rucksack.duplicate_item()))
|
||||||
|
.fold(0, |cur, i| cur + i)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn badge_sums(rucksacks: &Vec<Rucksack>) -> u32 {
|
||||||
|
let mut i = rucksacks.into_iter();
|
||||||
|
let mut sum = 0;
|
||||||
|
loop {
|
||||||
|
let sack1 = i.next().cloned();
|
||||||
|
match sack1 {
|
||||||
|
None => return sum,
|
||||||
|
Some(sack1) => {
|
||||||
|
let sack2 = i.next().unwrap().clone();
|
||||||
|
let sack3 = i.next().unwrap().clone();
|
||||||
|
sum = sum
|
||||||
|
+ item_priority(
|
||||||
|
intersect_rucksacks(vec![sack1, sack2, sack3])
|
||||||
|
.into_iter()
|
||||||
|
.next()
|
||||||
|
.unwrap(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
use std::collections::HashSet;
|
||||||
|
|
||||||
|
const TEST_DATA: &str = "vJrwpWtwJgWrhcsFMMfFFhFp
|
||||||
|
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
||||||
|
PmmdzqPrVvPwwTWBwg
|
||||||
|
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
||||||
|
ttgJtRGJQctTZtZT
|
||||||
|
CrZsJsPPZsGzwwsLwLmpwMDw";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_splits_rucksack() {
|
||||||
|
let rucksacks = input(TEST_DATA);
|
||||||
|
assert_eq!(rucksacks.len(), 6);
|
||||||
|
assert_eq!(
|
||||||
|
rucksacks[0].pocket1,
|
||||||
|
"vJrwpWtwJgWr".chars().collect::<HashSet<char>>()
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
rucksacks[0].pocket2,
|
||||||
|
"hcsFMMfFFhFp".chars().collect::<HashSet<char>>()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_finds_duplicates() {
|
||||||
|
let rucksacks = input(TEST_DATA);
|
||||||
|
assert_eq!(rucksacks[0].duplicate_item(), 'p');
|
||||||
|
assert_eq!(rucksacks[1].duplicate_item(), 'L');
|
||||||
|
assert_eq!(rucksacks[2].duplicate_item(), 'P');
|
||||||
|
assert_eq!(rucksacks[3].duplicate_item(), 'v');
|
||||||
|
assert_eq!(rucksacks[4].duplicate_item(), 't');
|
||||||
|
assert_eq!(rucksacks[5].duplicate_item(), 's');
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn casts_characters_to_numbers() {
|
||||||
|
assert_eq!('a' as u32, 97);
|
||||||
|
assert_eq!('A' as u32, 65);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn item_priorities() {
|
||||||
|
assert_eq!(item_priority('a'), 1);
|
||||||
|
assert_eq!(item_priority('z'), 26);
|
||||||
|
assert_eq!(item_priority('A'), 27);
|
||||||
|
assert_eq!(item_priority('Z'), 52);
|
||||||
|
|
||||||
|
let rucksacks = input(TEST_DATA);
|
||||||
|
assert_eq!(item_priority(rucksacks[0].duplicate_item()), 16);
|
||||||
|
assert_eq!(item_priority(rucksacks[1].duplicate_item()), 38);
|
||||||
|
assert_eq!(item_priority(rucksacks[2].duplicate_item()), 42);
|
||||||
|
assert_eq!(item_priority(rucksacks[3].duplicate_item()), 22);
|
||||||
|
assert_eq!(item_priority(rucksacks[4].duplicate_item()), 20);
|
||||||
|
assert_eq!(item_priority(rucksacks[5].duplicate_item()), 19);
|
||||||
|
|
||||||
|
assert_eq!(157, item_sums(&rucksacks));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_gives_joint_hashsets() {
|
||||||
|
let rucksacks = input(TEST_DATA);
|
||||||
|
assert_eq!(
|
||||||
|
rucksacks[0].joint(),
|
||||||
|
("vJrwpWtwJgWrhcsFMMfFFhFp"
|
||||||
|
.chars()
|
||||||
|
.collect::<HashSet<char>>())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_finds_badge_item() {
|
||||||
|
let rucksacks = input(TEST_DATA);
|
||||||
|
let result = intersect_rucksacks(rucksacks.into_iter().take(3).collect::<Vec<Rucksack>>());
|
||||||
|
|
||||||
|
assert_eq!(vec!['r'].into_iter().collect::<HashSet<char>>(), result);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_finds_badge_sums() {
|
||||||
|
let rucksacks = input(TEST_DATA);
|
||||||
|
assert_eq!(70, badge_sums(&rucksacks));
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
mod day1;
|
mod day1;
|
||||||
mod day2;
|
mod day2;
|
||||||
|
mod day3;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let day = std::env::args().skip(1).next();
|
let day = std::env::args().skip(1).next();
|
||||||
|
@ -9,6 +10,8 @@ fn main() {
|
||||||
Some("1b") => day1::part2(),
|
Some("1b") => day1::part2(),
|
||||||
Some("2a") => day2::part1(),
|
Some("2a") => day2::part1(),
|
||||||
Some("2b") => day2::part2(),
|
Some("2b") => day2::part2(),
|
||||||
|
Some("3a") => day3::part1(),
|
||||||
|
Some("3b") => day3::part2(),
|
||||||
_ => panic!("unrecognized day"),
|
_ => panic!("unrecognized day"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue