Skip to content

Commit bdcee65

Browse files
committed
day03
1 parent 3ae5e0f commit bdcee65

File tree

3 files changed

+381
-0
lines changed

3 files changed

+381
-0
lines changed

day03/Cargo.toml

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[package]
2+
name = "day03"
3+
version = "0.1.0"
4+
edition = "2021"
5+
6+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7+
8+
[dependencies]

day03/src/input.txt

+300
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,300 @@
1+
BccTFfTPTsffdDDqsq
2+
lGGLQwFhDgWdqvhW
3+
wbLNjGjlwLFrpSbllrHnHHRmmJVBmZJRRVcBTc
4+
vvGLllBBLtllJnJFMZNjFcNG
5+
bdhrhTgmhRrpLJMMNJgNffnf
6+
qhRmTpzpzVzmTTbmVhWWWpVvDtsLVlwBVHvSsDCvvBDl
7+
sLlhhthVRndBZzwBdV
8+
PfmsPsqsGFqrSQpqBDDwpddDDM
9+
mFjvSFrjPSvLJWvbRssN
10+
gWnWQtMMDQbQvMDjjcwsvqcwsSSqZq
11+
HzPJTtmtZJJsqfBJ
12+
hCFPrNNPVNzFtQhdQMWRhhDd
13+
sNhmsQZdNdsztNpHGCdjcBcwCvGvCv
14+
brSlRfFFppHwfTpf
15+
MbRlRpqMnqRpMhVtsQQQVWsM
16+
HsdttdfHrHrwdhftMHMSDnJFwlQSgQZQZggZSW
17+
LjCTqBCmmmTqgFQQFQjlnnDJ
18+
GCTLBCmTBDBDPTTzqLCBpVcctcHbtbrcMMsdsdtcPtdb
19+
QnJLdNLfLRQjpLlPflfQnlnswRvwsHVWVHWVVDZwWHcrwV
20+
zFbgtqCBhtgBhsDZVDNHwvDv
21+
zgCGCFCFGtMpJjlGTnlnLN
22+
ZFhJZbvZVmFpFnJbnZFbLnbHPrjjQdBdCrMPQMQHrrrrVC
23+
gTzlqmNlTflmtTRHdDPqMjHDMrjdQd
24+
wcRSwglcNSwgWmNzwNlJZLpphbbnFhvLWhnphb
25+
lRRrcbRfQmwwBLSLlvjjSvvFtS
26+
WbghzhHWbsdHhVtGLVSSvLFJtSGC
27+
WWbWzPHDqPfBqRZrmqnZ
28+
frgLHMcHLrSZHPHcHrPNmMJtTCTCbJfhdwVbfJwwTbdd
29+
DpDWRjQvqjDGFWhdVwQCnJgTnTbT
30+
vvqggRsRpcssPrcsrN
31+
MccbcZjmbbNSbjllbRqrhstVTMtqRtssTW
32+
qJdwCLdCzQQzwHLQLTtsTtsTRVTVWWTJst
33+
GdnpFHzwQCdpvpbccPbSbq
34+
CbQhZpTbTgMMgptzrdGtGzlVNlrh
35+
FWvmmRHSmjqnSjqnSjPqjnmNLGVGJlGWLlLrLWlVrGzNGW
36+
FwvvBjmBnqmVvFnvnVPMDspDQTfZMCMTgDQTCB
37+
VmrsHllHVLTdZtRclL
38+
bjwMNQGCjGjjPwpRQnRLTtRQFvcdvt
39+
MbWgjMDpNLMjNpwGpjbPWgfsHsqsHSrrHHJsgBSBzB
40+
HFlwVhfLBZZLTLFHwqWCqWwQpWwSpqWC
41+
PttsNjdtPtcmcDTnDdtjjDMpCCCCmSmqqGqmvMvbCqpC
42+
jndRrTtPdgNPPnLrVhVLHhVJHffV
43+
NJZVqHNNNJNqCdqZZVjtzCDMtzrtrFhhMFsPCS
44+
TbwgwWRdQgfggQgvMPDSPszhSbSDszFs
45+
QpRmWglwTQgGWTvGRvQRdwnjNNqqqBqVlcqVVNncVVHV
46+
gqBFHLFDNCBClHgbLFbllLggVSTWJVWWpjvJpSSWJjBjZvjW
47+
mczdshQcsGftdmcwcfhdzQVrhJZJTZhTVTDjpWpZvvWT
48+
twGdRtcGnRgDqFRC
49+
fsPjCjgRpwjPpsGgQwPfSZcdSZdWVHzSzcdzHRWz
50+
MBLTTBMvbMmvJTLvTDvczNdZNHdHcJNzNqSZVG
51+
rTlDlbBbrsjCCGnG
52+
FsmBPtzHdmmvcvdWpcWCvM
53+
RMJGjGGJJGLDRNJJnfGRRSvplTDccrTwSWClvCrwww
54+
nnRqNGJLVLRRZNNZzBHMHVFVmzBFbhmb
55+
MmTSpBMBCCMsbbrVvwwSLb
56+
RffNRFRThtqHhHHqZNrLVvwQtsGvssdvvsGb
57+
DThHghZfgqhFWRNHhhRWqMCnMzzznlPnBlgzMpnPCz
58+
GhlMNMdpMZHHhhRLLjqSjjqvvmSh
59+
PcTJDBDcBnBbTFcDwnPTQSLqLrqvWjwWLqRSvsRmWm
60+
PDcDJbQTFBCBcncgQPcDgnHgVmppHVMddmZglzVHdMmt
61+
BqFJqJGpBVnJqnjjmwvrNwVPHPrd
62+
ZMbQmhWstZScWjdswwwHNdzHvj
63+
ZZtQCtgZQWSbMMhmMSWQfGfGDBpRJnJqTFFJBgTR
64+
tVcPGGqwgJPqtJtqZZwcZffsfrcNWBnSWWFrfhWBnz
65+
dRMCMQLvNssBWFFR
66+
pvjjQvmDMpHLdPPtgPPTssTHsq
67+
WDBlFBbGdmBrqWjhWcqZCq
68+
RPSRPtncngwgwzhCwghC
69+
cssVsPpVncQMRsVQpRPnRcfJfTTmTdDBLbFlDblTDDDLJf
70+
CZgCCzgzsCDZDzbbBclgvcjcnnjFBqgv
71+
VLGThLWhWdThlWRHVTLTTjNjjdjrnBNBcrNcqmqqcc
72+
VTRWLhpLWHRMPGRGRplVhSfttJpZzwstsbDtwbJzZt
73+
fqhZRLhwZwVSLbCMCJdJCHQGZWdW
74+
ztvpjtpcvgzppPvjvPlDQLnMlHDGWnQDLQWDdJ
75+
PpsPzjPzgLrjzBgLggzrmrVSrTSfSqFVFmVhffFm
76+
qMFDRLNRRJJphbhSgStpptbj
77+
rZrPZZNCCCGrlfsCzBbgstBwtvbtvbvBth
78+
CfVrdndzZGrfzrzdrGddPnNCFMRDJWRDDnRWDFqFDJJFTJJT
79+
dMDbndBMQWnnbDstnMbMQQwspFgsFFjRrqCCFrrprqrgjc
80+
SlLzZmHZSTVGSPVmSPlSmrpFvFjjpgrpgFcvrcFcWG
81+
PHZZTmNVHSWJlHPNLSzPLLHwDBJtbDbnnnMffDbwtnMndQ
82+
tHBzNCztLBRBtrjvSjfnjvvzfpjj
83+
gQwWqlnqWqJgJnDplfflddjdsfdpFf
84+
gcwwmnDccTPWWgJbZNNbZHZCRRTrLB
85+
ZhjgtrJNfDNpqbhqQmqpmb
86+
cFLcwGGHwcGdwFCQjnnnVcmqmjCp
87+
HvvlzjWHjFWTggWStDrDZT
88+
GPjjQtPQbjwWqrmnsjmnqn
89+
SNGdfLLGdlldZSSRWznFsNqFRnqsWs
90+
DdMpMfZMhfZMpDfbDQQbGQVgccgcVt
91+
hHGGGTlddWGgpRdcvwDCDwzgLJzCwzwgwL
92+
MFSbZSnnFJWwQBNMzw
93+
tSjrSFSfqjqqttPnssqjssbhGmWGhcmvldcmhHRhGRhTRf
94+
qdBjBTNndbnqnLmtZmZvvtLvHd
95+
hDJCpfnGhJfDPzGzzCnGPmpZZVLZvHttZHQLHgZLHt
96+
JDrfCDJhGMhFhPzMrCCnrGSwswswFsblTqRlRwjcjRsqBT
97+
tJPRSZCSJJCnmvvvQMrpqLVwqLqMcCCM
98+
hhGGGfsdfTGlfggjMLVVFsMVwMMbqbLF
99+
hdTGGhGhdhfhhwlgNfdhZnZtHHRNtZHnnZmHHzmn
100+
HlgRZglZDWZgfVbdznHddTvV
101+
MhShhQMSFShFPPQplMPmwppwbzdtVbFtfvfbzVbvbTntzbVT
102+
lMwpmJLLLNGwBrcZCjrGCGrD
103+
qjjWRLjNjtGRRWTCghNwsgwcbwmC
104+
HPMBpVGMPMvvVBPswmhTbCwgmsVThT
105+
vDSMSvflBlHpvMMfSSpMFWZdtZWdGWGddqfFtRqQ
106+
ZmnGQfnZgdmRGQGvgnnmHCbbchhpMLrpcbLpdLpzbz
107+
NBFPBWFsSVNJlFqLDLwcwrPLzzCwhp
108+
qlWJqqWFJJjNqJWsFVsVqqRCggtmvvjQZgQnZQmvmHRt
109+
RdCsJbdsVJtRvdzBzrBcjzMTqT
110+
wNSNnnHhnwhHfBHqHjBDJMJr
111+
GnSPLwlFwwLWSwpNWLSNpVZtvPsVJsmRCmtgsvsRsv
112+
GPMwMMPCBPwBGsCGGWqBsslQhVQFccphvhWpmcFhVLmV
113+
rbNnHLLHfHfZFfQQQZml
114+
DzSDNtrztbgCMMBLLCsBts
115+
rTtrVbrrhbbGGhbbbbRqccdBcdBcvRvBSRRV
116+
fDqQDqLFQgQgZFMlFNRgvCNvRRvHvRBHHR
117+
mfPqmFsqqsbJJtGtbt
118+
vNHvgsSGSFDHvspvtSGwJwJNJrllhwhcnwJlwm
119+
dqWdWfQdqQVWwnfMnlcfwzMs
120+
VqQQqBRTqsBQWLppZLpFSHZbvvDt
121+
gdcldHQlQndnHMzCjvCFrzjSFtbLtv
122+
NJGmZZJZGTDsWWJNmDVmsCrSvfPrvTtSPbFFCFFvCT
123+
BDDsmJZVBJwBRsGGDmZNBGqMdnghhcwgbngpqqMgnpgc
124+
VhhvVwmvmwTPCwPwmDRgDCsgWSnfRMSWSM
125+
ptHZZtlZzqbZttHbzrFqnDSMShMgSRRMngDWgrGh
126+
hBttqBhBzlFhtHvTJQJTcvBQJPPv
127+
FjfzfGjsjBfQfMLBNg
128+
VlrppVwrpVSdScwTjVnCCQLQNCMBhWgV
129+
jvtSrSjjtSZpqtHPDPJqRzGR
130+
ZSmbSDswfCDDHBFFvWHJ
131+
jcjcVjltntQMltnVrdNnNjdQgFzWHqzBWGWQvzHwgqqJGz
132+
nccLllwwhLCCSLTmmRTP
133+
HBSnnJSfHvBfNWMNrvnMrZlblFbsbHwsPFVHTsHFls
134+
VLmDLhRgRbZFRwjZ
135+
zQDmCLLDDLGttGGgtLvvVSfqJBSVftSnrJnN
136+
CgGhbgVMNgVVbjrrtcfTDTfvTscrTvSSss
137+
qqFzFBzsPZHmddmsmvWSnHJnncDfWnDJvv
138+
ZwdPqdqpdPlPwdRlsdBqBMjNQjGVgbQgQhGVCCtgbR
139+
CGFTTMLGPgmPfGfCwTPSSFNQDLNQnscQNccWdQLqvqds
140+
pbJlzhZRHtjrbrbjHHrplRWVNsNvddZNWDQVVcnQVscs
141+
pzJtlJlBhJJHJjHhfPfTTFMDmMPBMSgm
142+
gzCBPDDzgvLvgPLgNThPlVZccJTmrZNV
143+
sndSnpsdMSnRMRpjShhNJZJhJjrVcTljTZ
144+
SRRsdnGwRSpptnfMSSpdQtfdWqvbwFgbDJJzCzqqWqWbLWWz
145+
BDnsPDlmmwcnCLLLwPtFTtTtFRqjRrrSVFqn
146+
dfhhzMGzWJhpMWhHWggTHJVFVSSqbqqjdRRtvqqvFrtF
147+
JMGfHffhQhQTNcTTBLCQmm
148+
bfZBvvRRRzFfFFLRvFzZCcQlScchLlGNhSQGGVQh
149+
mwJqTbsHmjbTNcNhQGGJGcVS
150+
mPTgtsnPjwHHmmmbbRDgfpdgBpzvZD
151+
lSnRStHtTZdjrHjnqJglbqgchhDCPCPc
152+
swFBzvBNLpBBsvszvDJhCzgDDCgbbJQzDq
153+
VswvBFmvpSrShmRRMn
154+
vWBBSrWnZfCWVchwhbcjVN
155+
RdHQQpRPJZLTtJgNcNGgbhGh
156+
zpzDzTdqQRqRzzlRDsBBnBfMmCCSZDBS
157+
ZtGSZVpPDtVbQjbwBDzbbL
158+
WcFvTFnTMnnMcnhmQhmhBbBQzCQjVb
159+
RRWsgvgnfqgpGVNg
160+
WJTrJJCzLqCqBTWLsCCqzmPPQrjwHQQGpwGHHmRPVw
161+
bMvnDFnFSbSlGgnpmGQVpRjV
162+
DZSdFZdQZZclsscWqWLhcBhs
163+
PzLlRRNjjRQzvPNQsvddlZfchhWWZJHSlhChDhHhcc
164+
MMfngVwtpVMqVrwrMBgmtGqCHDWqJSDJWhHHSSSJJHHD
165+
tBgnMTMMrgVmrBwMmGfnNjjsdLbbbTQvjNTNsQLz
166+
ZZBZRmPmgpgZGLWLQWslSWmLQL
167+
DnHJJjzqrJffrDnHzJjnMbQWSltttSbStvFQSstSvCLF
168+
MzJDnfzHwHlljJJnqrMjfPGdBRpRBGBRhwVdGGRTBG
169+
CnZCpMFNnFvvNdpHVrWghgtFVFlLRWhh
170+
cBsSBsGcjGcJZDrggtgtVDVrgWmh
171+
wTBJbcbzffJbZccjSbSjBfccNCNMPqqPPdvnHvTvnMTNdnvQ
172+
vMgPmvQmWDMpGpjBbMMH
173+
CcVJNcdNgdhtCVpjBBRppfRTGbph
174+
sFsgNlcdFlJFFwFstNJcvzDWZqqWvqLqzLzmzDwQ
175+
LLVLVsPPVVPCLLrjCNNNgmRdJNdCdfMJpB
176+
DTZZHTWbwwpWbSWDBmJMSFFNmgRRBggf
177+
ZvzDWqDnDwnZTpzZTzWvphPtqhQsltVtPhPhsQrPch
178+
zDgWmDgrpCLmwgWTrjlJBQRJjbFGrcbQ
179+
hSMvqvHtqsdVHlJDcclMBjRMQJ
180+
sqvHsSstSdqhVVvZdqVHZDgwWpZZLLmfmmwfNfWCgmLg
181+
SQWcTnWVWbZWWBcVPnZVbnrNrMFMdqFNqdMqqFhrDQvq
182+
plGLlLGpJLhCGrRqGDDDrdzNGr
183+
wgflHCCCJmpLjCLHtjjgLCtBZswnsTBPVPVsBcPTbZBBSh
184+
vvlMQvvdjdGtVCTJlVJVfJ
185+
FLrFqwwZgNrFWqZwgqrZBLWcBTtppztVbfRJztJbztfztT
186+
WNmmFJwwrFFnNmDgmjdGQMdHMsPvPjsHDG
187+
hGmZHdSRdMmhMZSHlvbTvRbRlVtCTlCR
188+
znnfzgPPDpPfDcgnZTJvJNCZbJVCcNJV
189+
nrLLfQznprrppgprWrnPzQzLSjGsZmHmhBdsqWhdhBMWhdqd
190+
zhtNFSFwRFLCsNrNNBdl
191+
BmQBPjDpBTDgHllgHc
192+
npBjjpQpjGbMnmPpjPQWpwZhtbzJfhwvwtSwhhFFbh
193+
PZcZbcPlbSprcQbbdCwWRSttgtgvWfjC
194+
TGVLVHHmTVHGDTDnGDhgWjwvCjwwwRLLgBjWBR
195+
CHTGsnHVVcJPPcNsNJ
196+
tTqGSSGPGfVfTpqGTbbcVWJLdjtvdzjJthCjlhdlzQ
197+
wwFBZMmZBmgnjzlCWBBjBLjv
198+
rNMsDZnMMWSfDcDWPR
199+
vLzbsczhLmmnlNvrNQHfWd
200+
SMSFqMwjFFDVSZwVTMDjSQlQfNlRrQRWdQfRrWrqHN
201+
CPTwGZDTFCPSjFTSPSFbPgpLscPczmcBLbfgpb
202+
QnQnpFjsbFcSSvCMNvqVSrqq
203+
WfzfTfzzPgHTfwfWtgRLMJDvjMmMVtvDJJCVtqmC
204+
wfWRgPzdgRTWBBWHPBHHBRLTlcZdhjnbZQcGZGpsnphjshbG
205+
pHzPTsBHzqqtQCZZshlWjf
206+
DFFbnvJMDMljjtQjfCbQ
207+
dgJFDGwgmGlMSggGdgdDDlvLNTzpBzLzzwpTBLzqPBczLT
208+
jccNVNdwnclRwlbwlVjdcpJSpGpSllBHgGHZpJpppf
209+
mDThTmsnDsSBpZfmmgBf
210+
MrFrhCshqvWvnWzTWQtzVbRRQwQRNQjdwQ
211+
tBnLJfnQtzRCffmNjSRjZjNZSRrP
212+
dVdMVMvMghHzPhzZhHND
213+
dGWGgplWGVMdMMzCTsbLtLTCLpnT
214+
ftNfNDdSBdrMTdrjMM
215+
cHgHGHzGgJhrPLqSrrJTqp
216+
mVFnQnhQGHFznFhBBbSDRBlSVBBRfS
217+
VqqPBPcPbQHgfrrpcSDR
218+
tpMnsztnGnthhzTtGTGTzzWgJNDlMfSRlRDgRNRrDRHfrg
219+
zWtTFWzTwphChnCzFhzWZGGvBvLqmVmbVQqjqjmBPqBLCP
220+
ZZgZnhrmwmnmgmvrghPmgTGcTSGSMSldgcCQCSqW
221+
LzFLDBfHzHCCqCFGcSlS
222+
HBjRJDLpHpJsJVJqsnhP
223+
PqrqmvmrwzznnPDpjVpDLfDtPGLt
224+
sdRhRWFhShhFccZZsSsNbsNcjCtLpMVWCjptGCfMftBDLMtG
225+
bVZcsdlhdNSbZRSshRcbbqlmnqHmmwzrJlzzgQlmvz
226+
pnrcNGqmrGqnchGhqdWdTlldtQtlMsTq
227+
DvSLgzLSMfbgggCLCwbSSLLtfsWTQTsWllssdltRQQtttQ
228+
bCCzzPPgDPjPvwSzDbwpVNnpnjjrhpnVZGMhcp
229+
jWbGtDdqCqZjdHwcwZMBVQmcvZ
230+
PnTflPRRrlgLTTRlTzFPPQQBcNvHBncQpHMwHNBMwm
231+
fFFRrFLJgRcJglgRzTzrLqWCjtqGGDsjCjdbGdqdhJ
232+
GwbvGqMsDMbpMGzzgRzgpBLjhcch
233+
WFTFNZTZSCcBggBFcrss
234+
CJWWlsWlCtqGJmMGwJ
235+
CGCVhprTrthCZTCNtVGtZDZNdlPPdPwmmvrcbmPmdQRvQWmw
236+
LfzLzssfgHjLFjFLfjMfHsLHmPwdcQWQQlscwlPdQclbPvlw
237+
LBFHjgMzqqjfJqLMzffHzqgHhhJDZSGVDVChCDDpDNNpNtDW
238+
TbzVlmNTVVtnTSWNwDDrpGcwdp
239+
fQQMFbhCfLgfQCsdDcHpsWpdSDsGrr
240+
ghvPLQMfZhjjvPLhbQFQBZqJlTnnnVzRmtRzlmBl
241+
JCLLLwVDwCQsNwwJHmfrMZpMfMMrfPQSMZpS
242+
WlFlzFRnznthqWRGbMpVMbbMPtMjMj
243+
vTnvzqllhdhqTwVBLcJHmmmC
244+
tczhtcJJJbtclWrtJBWJBtJtpqPRSPfpBRgqRfPmpRqddSmM
245+
HCvnsQLNCQwLnDsNHLwQfPSSpPSMfnPddRMmmGpp
246+
wDQwjNwQNHjTHNFDCNmCFNWtWzhJbWbVrhtWccVFlrlV
247+
sPRpCndBCGpCGHttSdvTbWvgdjST
248+
wcmDwqcwmGDTNvjWtrbSrc
249+
lwlVLVGqZGlLzVHHBBBCHBHRPCCz
250+
wdmhffzzphrjqtzRbrrq
251+
CRgGTGTFssZsllHNBlHsFJRjcrtjtPDPcbCtDrLcrjctrc
252+
NHMRHTlFgGNwpQvMpwVvww
253+
MPLJNPqmFWmDFjGS
254+
nbsZtwbZlbZlGlFDDMpVlF
255+
hvsbbbZtvfhhRZbZsfzMbMZbqcrqdrNrNqLgqhrLhJgddLNL
256+
SnMLpRDGlZSZNlnMZpCwjLwzFrHBWCFWBBBr
257+
TttvvtbtVcsJtRsvtQdzWJrBjCCHBWzrFFhCjC
258+
VmvsQdgPbdgVTvgPMSDfPPZfDRRNDNMl
259+
LjngLCNhDNFNhFDhcMqrqqZMcSZnHTMc
260+
PPJwtGlfszGwWtzwQJBPGslJSqRTHZvgcRRZrMSTMMTtRTTc
261+
llPPJWzQPmWmVNgDbLFCLb
262+
NPFlLNBLprpdmmdPBmJnLrdjMVDjMSdqgggQTVDqWMdqVs
263+
vZTbTZRwvvGRTRjWDqSqqQgDGsGq
264+
vzZcfRRZbwbRHRtwZCChBmFNtJBPLBlBJJLpmFTP
265+
pmvZmmTjQFfnvPPHHv
266+
SczhzfbsLNhfccNFsWFRPrDnPDnVnW
267+
BtBbSdtzLBwSLwBmTZpQMpZmZmfZ
268+
PqPQZqtQQLDqrnqdjqdVwVbz
269+
MGRGWMgJHGlRRHfSwfzCfCVVQzbwjrjn
270+
JsmHmSJJmSMWMlTWQBFhLTvhDFZhBQDZ
271+
sbgbbFGTTFNMbMNFWrjsrvWzHWPzPPpf
272+
CVmhVqSqCZmJQhPpHzvZvtzWHjHP
273+
CnmdCQCdnFTnNgRpwT
274+
blZjhbZWVttjWjWLCLVVZCZQjMDQHsBsBQfMDQwjHDwBHH
275+
NdcJdFcJqgpJpNnDQLMFsBnLSnnS
276+
LJrJdJrzvdrrpcNdNcrVlZWbZzZVRhRtVlPttC
277+
mhRtNNtrtBQQrtrBBmQlZwHHqHZSVHHGshSVDwhS
278+
gpdPMTcsLscMccTpbLdHSfGfqwHZDHHqZqHZ
279+
zbzvMpPLppLzLMjTBQRmssjBWRQjlmrN
280+
VzzvggdvFdmffwmGpd
281+
HNbnJTRTmCwwrRpR
282+
LlTnWhLlhLJmLmtZtPcPcVFFPSZgZt
283+
jHcZjHlHzLHHnSNSfL
284+
pQWRrwPwrRWBWBPWBRrpdPmzhShsSFFNShLhnnvPtvSNNs
285+
dzbmwVwbbBmGcqDbgllJCC
286+
ndnvvzJDHvzHHHjnHjCCSDLgbSFwNFVbFVTL
287+
mcQmQtpWTQGlmpTtMtqtpqTFsLcVSSscNCwLNLbwbbLNwV
288+
pRZTQlhmtGWqqWnPHdnhjHrBjPPd
289+
TtLpNHspTcLNNsLpthhsfmtjRSRlWWbzSwSRGwbWlWSSvlmS
290+
qBJVnZZdJVZrZndbPbWwRzSMVGbbVS
291+
QCdnBFBndBQDnrqrnqqNhpNNLpHthsThjGCTLL
292+
phCgcdrFbPLpgrbFHqQqzzlbGWGqQbHW
293+
SFTvTnVVMRnNTNfSHjHQMDlHwDWlQwDz
294+
TZmTvsFNmvTtsggpdJLBBsCs
295+
PBBWQjvsPsHVsNMcSzNDjcGggS
296+
ZtrTfTrrrrdCqpdtLNnMLLqNcgMzgHLq
297+
CZFmdTrJtbZrBvWHVVvHbPQW
298+
djcrrBljMrTdCTcdCClClMlqRvtNqqSRwFbNbwvNBNpSzq
299+
QhPmGJnPVGVHHNzSqpzFwztF
300+
nhgPFmsnLPGLhPDJhGTcDjMfrMMjMZWfjfWj

day03/src/main.rs

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
use std::collections::{HashMap, HashSet};
2+
3+
fn main() {
4+
let input = include_str!("./input.txt");
5+
println!("{}", p1(input));
6+
println!("{}", p2(input));
7+
}
8+
9+
fn p2(input: &str) -> u32 {
10+
let sacks = input.lines().collect::<Vec<&str>>();
11+
let mut total = 0;
12+
for group in sacks.chunks(3) {
13+
let mut count: HashMap<char, i32> = HashMap::new();
14+
for sack in group {
15+
let mut visited: HashSet<char> = HashSet::new();
16+
for char in sack.chars() {
17+
if !visited.contains(&char) {
18+
visited.insert(char);
19+
*count.entry(char).or_default() += 1;
20+
}
21+
}
22+
}
23+
for (k, v) in count {
24+
if v == 3 {
25+
total += get_priority(k);
26+
}
27+
}
28+
}
29+
30+
total
31+
}
32+
33+
fn p1(input: &str) -> u32 {
34+
let mut s = 0;
35+
for line in input.lines() {
36+
let (first, second) = line.split_at(line.len() / 2);
37+
let mut visited: HashSet<char> = HashSet::new();
38+
for c in first.chars() {
39+
if visited.contains(&c) {
40+
continue;
41+
}
42+
if let Some(_) = second.find(c) {
43+
println!("{} {}", c, get_priority(c));
44+
s += get_priority(c);
45+
break;
46+
}
47+
visited.insert(c);
48+
}
49+
}
50+
s
51+
}
52+
fn get_priority(c: char) -> u32 {
53+
if c.is_lowercase() {
54+
return 26 - (122 - c as u32);
55+
}
56+
57+
52 - (90 - c as u32)
58+
}
59+
60+
#[cfg(test)]
61+
mod tests {
62+
use crate::get_priority;
63+
64+
#[test]
65+
fn can_get_code() {
66+
assert_eq!(get_priority('a'), 1);
67+
assert_eq!(get_priority('b'), 2);
68+
assert_eq!(get_priority('z'), 26);
69+
assert_eq!(get_priority('A'), 27);
70+
assert_eq!(get_priority('B'), 28);
71+
assert_eq!(get_priority('Z'), 52);
72+
}
73+
}

0 commit comments

Comments
 (0)