Skip to content

Commit 4356a7f

Browse files
committed
Year 2022 Day 3
1 parent dd8584e commit 4356a7f

File tree

6 files changed

+358
-0
lines changed

6 files changed

+358
-0
lines changed

input/year2022/day03.txt

+300
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,300 @@
1+
dtddvvhwttHJhwdhJPddhwJGppmGjgpQgTjQplQpTljwpg
2+
BfzSzRSVVMVNRMDDNBSNSnfBmbrglGQbmNpQggFjpgpbQlQb
3+
ZSBffLnVZdCCPJjhhL
4+
RGCZpWWWFlHQQbgvFssg
5+
jLnMzjnrnjjNjhrjdwbHscsVVgDVQPvPwh
6+
nfJnLMLzjJMtnjNnnBbZtBWBqqbTTTBRpT
7+
nddlhBtqTBqTVSlBtmCmVcRVmZggfWbcZc
8+
jDjvPrPSNPwrDNRWbbgWCjRRCcWm
9+
DzDwSpFrvrvFPQLzQnsqztBthTJnGJqlsJ
10+
gssGmzwgRgsNmTsqgDnDJnbDHHhhzFdDDh
11+
WQVFjMWrVQrVvVVjVctSSLSMZhnJZPBnbdnhbnHZZBDJBh
12+
VCtcccVQLrfvrSlGmfTfNgfmlFgm
13+
DsmfsBbNNZhDWsbmWmNbbPDHLFjcctjjGcnZGzncnctcGH
14+
SwVQJrjVwpgSVRpjpVRrlTMCFFCLCFFcHzzGMcHrtHHH
15+
ppVwTwSwpwvSlSlJTjVVbPhsvvBssWsNfsqWPvWs
16+
BJwqwJtqqDDDrGDnPFzPFfpphD
17+
TgZscCHQLSHgZcfMzpjFFjzsshfj
18+
LcNlTVQCCVLLZTLNvpRtpvBBvRJmNB
19+
bDBGQBBCTTNPGPPwPzcHfVHrDtLWLVrWVjjHWr
20+
gpssqqsqlMFfLZQWftjVpr
21+
lvqqFMRlFcQvbzCNCG
22+
fhhMDdPhWMJMWvhhSfwRSGlzFbSFNlzw
23+
LcqTCqcgZqjTggVjcwbFRwbDBTzbRGRwTS
24+
cHLpZgnCHpQsDdsmQp
25+
jwStJjJhtgJStpgwJMggQWqQTNTfNTWfbNNMCCNG
26+
zRZnFPRZPVncPGVFRlRmGHCTqfCCPCHHfLfbTQCbTq
27+
lnVmFZRZDnRVBFZcrZlhjpggvppthGhphpwprS
28+
lcttSptHHllQbMcsrltSQGpvNBzpgWBBBDDGWzvgLz
29+
PdjPVRFhFqFjRRCjzvRWnWLBLgbBBLzg
30+
hhCCFbPTmjPdhZjhPhZCmTjjMsrJSfHrcmHJrHHmlcJSsmft
31+
WhWnLZSSnSzQQhfLLNSfmDHrCFDDHtpjGGtTGQCG
32+
gJbJBcMVwJlRRdbwvwJBVtjdtHHTmptpHTCtTFrFCp
33+
JwwgvRMJlvJwgqgvqRMcnWWhLPzzsqfnZWnfWWnj
34+
zdwTSvzHMvVSzDCtZhtGmbTGhm
35+
lcBHfFjjgtsmDCgshD
36+
cJPBnqNFnLfHJFPqljclqJzQvSSVWvSnMwvSzSWWdMWM
37+
pNJMcZrsZDLDcbcccMpQffHqvgdwdFFmdmqwvqmgmzsw
38+
hhnWjTTStRCGSMgvvgvdqvdFjvVz
39+
hCTSWhPGttTCGBWMRlTCMSnPBDJpbDfDpNpbbNJfJDJbpJpN
40+
lbcQcSNFchhQNqHLLqhLqrMpqM
41+
WfsnsszPWfBBVpHdprrpdnGL
42+
WTzWfwjtTBzwwBDzmfSSQmmbFZcpQNcbZZbv
43+
PwSJSlmtPPgwgmHhPPvRvGHLRLQRBQGCQVGb
44+
rnsFDnnfGGRWQRnW
45+
dfTTfTFdfrfFFFzQFPJPSSlhqtllNPzgwS
46+
MMbTFZrcrGZMDqNStWScDtzS
47+
dvWmhQggQvCnfnqPqDnDjnfP
48+
lgvdvLClWCQlgdhlrMBBHpGlwbHHGH
49+
CQHgQpPdCQpsCpzRwSVRSzRZwZ
50+
JbNBbcbrJvbJnqVznwwTzrzz
51+
wNbfLvvfDNNBHPFLhddFsQss
52+
VVzqvwzpqvzqNVVHGNqjHpNfSQDWdWwJdPWrWccdQrWrrDdd
53+
nLcbtBRtBhcnWSJQlJSgll
54+
tFbLLLRRhMtsBMtRCRsLCMBVjjvHTNjHHjzcvFFppGHzTT
55+
QCPrPWNPlWjGGZqGmvdPGd
56+
JgpHpSfphhfpVmBSgnTvdtddGvZVdvddDv
57+
LhphBfHpSwSwfHcMgfpmBWWWbsNCjFWsljNbbjlLjb
58+
QJmQbRmdfmdSQRQZSJltTltNvTrtDtrlftDD
59+
wpZcHVwwMgBpWMVgWpHLphztDvvGvDPlnGvDLlNrDPnNPl
60+
McgWFWHHHzVpMgZQFqbjsdjqqRCq
61+
JPhLFfMJDLQnjNCvWWpdjjdM
62+
crSwnwVnwSRBcNBNjjWCdC
63+
GlbTGbsSzrtbmbfhnJQP
64+
fDLSWVDRHHfVWHgPcZlDlZbbQhBcZQbb
65+
jrmFmprTpFztmddjdjrpvBQlQZGhQbTsQbGcQbcbQs
66+
nvqdpmjFnwpLSWlfnVNnWl
67+
nZBRbBJzznNNCnJZwnBSCJMcpcTpcwhcqhmsmWMwFWLL
68+
jQfvjgtfvPlHHqWpvWThpWqWch
69+
VljjjgjQjrTDlDgrHtVCbnJZzNzNbnRNNJZrJR
70+
MQtJnttlMLlJQsNhQrVVrFVWRRbbVFdJDD
71+
vGjvzmjzgHqSjjSzmSGHTWbfDFWrbFzFfdDVrfRWDb
72+
qPRqvTSPggqGgHCmllnCNLtnhcnnsnnw
73+
zrlZsQMFrsgQFMMjMCbjVDCTCW
74+
NqHNRdBppcJJcTpdmRfHThpdDWDtvbWVtbLjWbttWqqCCbLt
75+
mhJpJHTJmBhcJhwhgwzsQwSSlzQQzGlZ
76+
TvsszlvnzRRVTqzVrqrjjZGPfQPFqPqG
77+
mcNhDNchppWmWSNhdSmSCQNjPFjrfGjrgPFCrgFPgPgrLf
78+
SDddWpdMWSwNDmMNwlJRQwJlsVRRvzlsHt
79+
DTtggjsFFFTlPJhvctBqBqSRmSMBSRnmnRcm
80+
fGfwZdrbHVLdbGdHHwwQGVwBBCMMfvCNRNSMMMSRBmmRCN
81+
dGZzGHGVVbvHvHwbzpGbHLrwFDDFTtsglhFspgJshslTDJjT
82+
CbzspssWwCPcvvplrfqfDCJrDqdllB
83+
LjttnjNTNGgQQJdBrffTwB
84+
nVtLSgggjFwtMczhvzpZbSZW
85+
HCzCHHvWthWFHhssWCVmnqZrnqVrmrmgnbrqmN
86+
wPPGBjQQGwGbSlSLwgnpnrBZnBBmnMNnMN
87+
jTTbJlJjPPLPGHHTthhhHcFWTT
88+
qRdvvPDrCpzPHzcdrrcRqtbJJgjhgtWjJgbWJtgCFb
89+
GTwGwNscLllGTZmGSTZGlSBMnhggjbgtgbtbsgWFFMhbMF
90+
ZSQBSmlmzcrdQRqz
91+
cSpTRphwwghRfgSScqPpnDqDCjDjJJJJDvDLCvvn
92+
BVmmQFQBQVNBVmsWlbQFGBBlCHTJznzHLHvvCnjjNLHJDLHD
93+
MFsZZMbBGblbQTmQsFsQMMfPcPcwSpwtStgPphZtctPc
94+
QZbbZBdjPBjbQQbZnSSltlfwWvlvwNtNjwFMMN
95+
DLVqTJqpSVtfsptwfWpv
96+
rcRRVVTSbPQBPrBZ
97+
tjSgSjLFSnVjDWRsQj
98+
lcdqhfFpqZGpZqznrVRWPrnWRVBsVG
99+
FHddNNNHwTHMHvvS
100+
qCSDSQlwBHNbgJrHnLJH
101+
GRpRpRfnmRWWVWgVrF
102+
jhdZjpnvGfTZZQPlCtqQQSsS
103+
FMZSGWWBrZjMBZMrBWMGjjZDnCRqpgPnbRwPbFnvvqFnDR
104+
QHcpfVVslfdVlQclcctqRgqgbsCwbCwPCCCPwD
105+
NLHfLhclmmhdfNNpfQMBmZWBrJMmZWBzMrjj
106+
pBMpRgBMQwzRthmzLC
107+
HPcJvrvDbjvrFDcvWrHfHfWHmdddtdTLztmtdtfllmNdNhNz
108+
DvPFDvnPJLngQsggMGGQ
109+
BbcFHvbhhDbbTSvZmwwgJPPlDlZldd
110+
prCrNLMNgWWJBdrJ
111+
fQMLCfLLtpqsNNMnnfBhcBSVGbhhhcqVbcjc
112+
ZchcZZjmmNpgmJtgmM
113+
RLrHllWrQZQGlBpbGFGFFM
114+
RQnLHrqPLnZHzqjfVPcvVTfCvPTC
115+
fMtwjfMwrbjfGrtrpPGrwpNNVNVqcbdVqHZTFNbcHSNL
116+
mgzvDnJmnJhFJHSTNqZLHncHLS
117+
vRzhzslJFhRffPPQMjGtGl
118+
VMMNjWppQVwzNWrZdrrtMCMZCtMT
119+
ngDScLcvPPgDPDGhGDPGSHVbHTHmZtTSrBHZbZBmBb
120+
LhlglLghnVlplswJjs
121+
bGJQZZTQQLJJbQZlTZLjCGQTsDhWFhmshhvjWVFVVrgtDsst
122+
NScqwHcwwnnzBwqPqqsmVNhgsDDVtsghrFFg
123+
pcrcwnpcffrcBzfbCRLpRLMMRlRLQl
124+
hzCzCzpRgCzzzCctNsNWNqsZqZhPqNPb
125+
TdBwmdrrrDmvwTvqNsSRssPlsWsq
126+
FDBRRHDMTmBfmrmngnpjGgVptMgLCp
127+
ZPLLnSPMFGvFZMSvHhDhqHfqvfqbDW
128+
GgcppCgBcrQBBgplrVddhDqqqfdHgWdfqb
129+
CcCjQszmGBQjrcCwCmCccPwPTPnMPTnMJSMMRZSPJL
130+
LcVVcqqSHRLzRnCfNnGzNW
131+
LZPPdljlCggMjgNM
132+
PTvwlPtwtlJvZTQvbcHppFLHVVTcFssF
133+
fpWzvzNgWJBVfBJzWzBVJNzWbZcbHhlbthjlrrPrjZZPHZhJ
134+
hRDmGCFDwQnStncrjnccHcMP
135+
GmmsGRmFTsFwSCsRQDsCSqqpfvfgzddWggvqdpfBWzVh
136+
wjRBFljJGDFwwlGGpBSjGDtwTVtTgHHHsHHsVTVzsHqq
137+
CPLNPdbWvbMWbcmvPNdLVqtsHqgCqHChZhhsVsHt
138+
PWcPfPvmvNQbbWdWpJjJBDptGnDFjftn
139+
mFFmJpDMmmnJFjWDVclsSpcflSsQwSsc
140+
HrjNNjHNfVwLNSSl
141+
tdZbhjHZHPbdCTvbbhhrGbbHMFmRMvnRRFmmvJMDmgJDJMnq
142+
szJZhshbsfZJjbttchPctdTnWnRWVWMMnBdLRpMnBz
143+
SrNwvDSwrCmnVRvjpWLBBn
144+
ggGmgNFrgSDwmNgrCmtPsZPsjQGsqPcsqqJP
145+
gjSWSjJSWrWzppzW
146+
MCMzHNGNqHfscsFtrtwscVcr
147+
qGHNGNHLCnLmTCHfMMmNTzzldzgJlJZZgJljgTdD
148+
QGTQtQzTmdTsGTLcdFTGzdtBBjtwvBBJDvDMHJgjJvww
149+
lPlqsZWnDJjZvZgV
150+
ShCfCRnWGFsRRRrF
151+
lwGtndCrrmGCwdmhzQrBzrHvLVggPgHv
152+
fjMjDZJqSDJfJqDNDjJffjZLHPHHFvVFzHBLgLFpFpBSgL
153+
MsTZWRNZfJZZqMGVGhhlhhccRnhC
154+
MMvncqvcHcSnsdzzgvdfQjpljpQVTdDQDRTRlVpQ
155+
wLCrNtBFFHHThRlH
156+
bPJtHmCWssqgGPvq
157+
LvTLsmDWvTWqTsmqjRTmjwgdwgnMHMMFgdtHmBmFVn
158+
rlSCJzCSfpGGlhznQdnwFhtHgBFwtV
159+
SGZJJSSrVfCbGJLjPsWbvjRsPTqR
160+
pNqVVDCMVMBpqJVdMNHrccGHrtNtTFFFrQ
161+
hwmllWbvvbnPvbSvtrFhhJzzHztcTztT
162+
WSnbnPbbbvlWlRvnsqqMgLRMjLgVLCJdRV
163+
GphVTGVMtQwtJmtCJP
164+
FRRsBBsFqRNZNNrgqBdRfCZvbmPgmQzJQPnmJbJmQPJPPmwj
165+
RNqsFrRfZZsZWvNqWRFvrBZvWhhCGVplhlWTlTpSCLpMhWMD
166+
RZRjgbZHjjhsSnRsZstDRStsTVpFhBqFphMqPPpTFQVMPFTM
167+
zrcGJwNNdwJrfNdJWvGdJzdTlTFlqTVPFTVFPPBpqNTbBP
168+
WwLdLGfrRLStCZbD
169+
mrmTqJWTvDDppTDb
170+
DGzBfCzNDzdMwnLlbn
171+
FVZPFZFFZPgjmWZsDtsq
172+
TpnFTnFRCgRgldMRnDnRcrcdbdPBHbtPqbVcccrH
173+
WNWLfQQmfhhSNwmrcbSVqPtbZDZcPb
174+
LQhwLQvQvNfJhJRDMGFRlCMDMD
175+
vLFTDmjVvLgnNHPphN
176+
lMClGCmsRdCnPzCccngCpz
177+
dlGZwRsRrRwswGsdSbbZSbVDrVBmDWWWFJrTrFvFTmqV
178+
SGsZRqGLWLLtZRHRRcLHGTlJjzgJpjzTpNTNJNWpTm
179+
MPMPvFFvFBrPPDPMQMPChjgpNpSNTmmmpNlTDljlTz
180+
vnhrvMvnhSRqqLqnfn
181+
mGFrlBmFQNQFljhqqqqbmHMsTPRbWWCsLMWRsb
182+
wnwtvpwVzDVpvzzwZppnctMLtMPWWCstTsWTsTLffRRW
183+
vwDJgZnvZJFqgLBFGqgl
184+
QdGltnWNWqTdqQWvWsMJcrTcFcrgshJRMs
185+
BzPLCDPzzzzCCLLfCBzfSDmLMrDJMglrcRbbhRsFhMrRJcsM
186+
fjSzwwHfSzPzfCVBHlpdjGnZqnZptqQWjGvG
187+
VbJZbgVzvzmhQpQWpQzhDp
188+
tHPPcGcFBlCctCGtGcBBNlDLMGfMLwWfwwqMLLJwQWwp
189+
dCHTPTPJdTBFPdrZjgsjrjnmdgms
190+
JJpBvJQBZVvcFqqnsWdWvjsn
191+
DCfbDbTtbgfCSHqqNdFMPhPDFnPPDWsPjM
192+
bTmzTNCTNmfqTgJQcpLrpZLzVlVL
193+
dtTLntTjzTftnmwnqGGQHNmm
194+
SWbShCPMBgBRRFSFtRZZmm
195+
DlJPCJCgPWhttzpvdjcpVl
196+
WdzsNvWMzNsMHWddWCVffqmSmScLPvLPgLgLPplrrPmL
197+
BtnzbnBhbwttwtZlmmlgcwSrLgmmpm
198+
bFhQtbGBTnjBBbjTtFBbVDzddDDfjdDDqNWVjWHj
199+
ppmtpgLLZLCbMQvQQThdtrvPhV
200+
BBlHBwHRjHqBzzbHHqjjQdDQTDhPQDvnQlrQDQvr
201+
HGjFzwHNczbzRFcGzHGFSJSpspsmpssMLLSZCppmfs
202+
MpGrMMMcTsHMVHcvbwwmmcRSmDmDmv
203+
zCNptqCBQQLCNLCzbfvSvbSzSDRDSmSv
204+
CNNqNgNQJNgQtCqLlllZdZhTrThsnHpVVssPTsGP
205+
jhSGcShDrLcLLFcw
206+
MVzQvQNZVLHvHPdhLW
207+
qzhhQlVbgqjmSjJDsgmR
208+
CFzSPCgcsVVzFgzSCsBJwjdwJtNllnwglJlp
209+
QrvbqWvvLbmvDMMmbdwFWpNNwwwwptjJWn
210+
RZRZZqvvvDbDHCRTGchHFSGG
211+
SszgPSPPVltDlqtz
212+
WfTdTBdQdFnWBBBhBhNjVJtpNsVlDDDHHJWp
213+
hQhrLFsBwdQPggbRgPwRMg
214+
frRppMMDMpDnJfprnZhrrhpzWgvvGCvvFzWFvzvVVWFGJB
215+
TcmLwTsccqwqbPwsdwqdTPSvBvzzztvggVvQCGWQCLBvCv
216+
sswNjscwmqjwSssjdZNMfHHlHhfrnrgnfR
217+
JpBJBdmdzZzzpngmbCnlqnNbNM
218+
MMTHGccLTLvwRMlRnnQnbblnRnSs
219+
vVGtvMcjLVGHfHDrPPWZppBpJpfZZZ
220+
FGJtlttPdPtGFldlPRGpJTVzSBSSggHgJjVmBMHjJm
221+
rhbvqrQLrWqrWLLfqbjjgNmVNSgzTmNgNS
222+
hsffZQqnqCfZzlPPGlRlcwDs
223+
HDDdZpcFwHFRFcZqDctpRDHpwTCVwjrBTQTBLBLBJJBjjQTJ
224+
ldlMzhlPshPbLrrVrQQCMQjB
225+
glzNfWlvbHqSdNNNcF
226+
jZCMtnZZHCZwBWMwCwtMmfPFfvHDvzHFLPmFDfvh
227+
RcrQdRRdGTzGvDGmfgjh
228+
TsQscdQsQNTNqQQpRrRVCCBMMJJWMMVNVjnNJM
229+
zVPWhVzLzWBWHZnlqBllqlpRbGNdffscGNdbDRnNSfcG
230+
MtvSFQQwMcpsGRNGFR
231+
vvTwJJSgmCSMmjVPPJWWhzllWLVV
232+
RjdfnJfmbVvVJVFQcs
233+
rZDZGBBZVvLZLHFW
234+
qPzTDPlVrjNgfCdmPd
235+
bcjmQPrnbmVmsLVrLrjmcHGRWlZHHRwHpZRHWWwH
236+
nFhqzFqJzDJfvfSFqFfGHWZZHGRJRWHZWdpWwZ
237+
hBCtDSSFCTqCCFzSnzMrLNmrMNPTNMQPMmNL
238+
qvNBSJVDJGGVSJbVDDVhDbbqPjpWpWzWrnpWvvWPMjnWnpWz
239+
mlTltwcwMWTPfNTN
240+
CtCwFmCgmcmlRFmFCtRCHgmDJsbBhVqsbBHVDbNHDHJqqb
241+
csBFBsLrBGBWcgLcBvRgpRhbwRwlbQwbwQgD
242+
DCqmDmtTRtRlhdlh
243+
qnCmTNPmmCnSSzmzNzGLzLccGDBzGrBLvvcW
244+
FjfBjHnHzPFwhvFFqh
245+
bjRpGsNsPqQvPclb
246+
NWGGWGrrZVZjsCLmDMMgzgrSnzSm
247+
MDgmmsNCmZMWmHCZLrvnLBBjPLVlPVbW
248+
zcJGQwJdFRnrBVzqzvPr
249+
hTQwhJwcfTFddFdGSfcRQQGFsggsgsHHnSmgsgsmgCnHNZpC
250+
BPfwzfsgsvfszvBRbQpttRVpJbJpVg
251+
LhTmHLbmbcFTFrWCbFqhFHLHVRpVtQpZVVDVprnDMJtJQnVZ
252+
TGWWbTFFGTqlHhqhSdNdNfNSldjjBfjv
253+
zCzpWTccHlWcPzMljMttbJfjmlfm
254+
DqqQVZZqVsqJnbbnmjbJJQ
255+
ZRmDZsSgVmGLsVqsLDFvrcccHrcTWCgWHBCHcCWp
256+
cvGlQMtQlPtQWWMlcGsrFwFdbgdbdGGDCDCwdd
257+
VChVZNBVjTTfhNTFgzrzrJgSdzgzwf
258+
THThZTqZRHZRqNVZNTVLjRCMmQsntQctMnsPmMmMcWtLMQ
259+
pNRHrbNlNnRLNpMMMTrcGcGTcccz
260+
ZttBmsJmZdjsvTTvvdBMjDhfMGWGDfDfcScjfD
261+
CmtTtwvtCsgllNHPPFbLpC
262+
NpQcvwwRHvdfRvQsNfBQNvfRhVmVMqsZMmMshjMMtWZtMmrm
263+
CGHbSSzFLSSHzTnbLnCWMrtWMtjnZMhZrqZtqW
264+
FzCPPzLbPgFJbHSPldNRpgNfvvccgvwf
265+
nSjpnnhNchMQZMSScnshshncJCGwHGClwmHPZlJPTVZCwHJf
266+
LvtzBTgLWgLPlPwHPLPJ
267+
dTBDqRqFzzhQFhshhNhM
268+
HjjdPsjnllHsbnnDnbTBzLBFBZLLpRFRcCHRFz
269+
wqqWwQhQQMCQffqqhtwMGhpZFRRZvzWzFvBvpvmcRvZm
270+
fGfghtNhthqJrQqMqMMSgDdbPjbssDbdSnjCdd
271+
cqPwJJnnffBFqSfJFnDDPVplLdglGgLVjzGLdVSzVt
272+
WHRTWNHsQTNbzsbCbTsvWrWtjlgVdLgLdvdgvmLjpGlgtm
273+
ZMQrTbNHZNsHHrQCZrNDFzhwnMJcfnDhJPPPFh
274+
LRCFbjNjbCZDmtmqmRRmLtFJBgWBBpvJMwBJvGjBBvMBgw
275+
TTrlfHzccVllZhdQgdGMJWvgWgBndwpG
276+
fVSshSVlsfslhsSHHSZtZZNmNFmtmbFCDF
277+
SPGCBPDMtbcbCtchSMccDTTrrrTFTrsrMTWHTHFVWF
278+
JmnzqVmmwwfpJpmdHRTRsdsTrFdrQp
279+
LqwLgzJgnjqLwgGcVbtjDGjcVbhv
280+
PQcMvrvMsvmdSPPVccmSJcSpGBWWWbBHfWWnfttJWnWJpJ
281+
wDzqhjzmqRzDRwqDzNDbWtjWBBBtGbtHpHnnBf
282+
zglRhDqqDZgRNmZQVCdcCPQvvdZv
283+
RpVjRgvFjGBNWtBWFDtt
284+
dcqQwlqMMsCLLfbgQmtD
285+
snlgzsggTzSTSJTr
286+
dLHhDdtlMngFcFsFLFzzsj
287+
vWRGGRVrrWvvGQQJBRsmQzmsqnffqcNfNcfz
288+
vSRVJBVBwTvWTnHphTgDgtMpDl
289+
bvvGnnJbfPmfdgJJSVtwwCpTScVfNpSC
290+
sjsZWDqBqqMRZsDjbWMVwtwNNcNtScRHpRRttp
291+
hzhDqqWDzZzDZzZLQPJPdPnPvlrbGdlnFQ
292+
PwWHTwzFvNHsNzmmMwzNWGQrCqCFjpZbpnGqrqnpbr
293+
gRVRgJRJlDLSJddDccQVrtZnCqjndnrZdnqnqpdq
294+
chhgSSJfQhRRcSSSSBLVfzmzHTNzMNsTNWHMMvMP
295+
lftqSpBSvhlDBDlhBSczQGmcFMcMVVFMmGFWsm
296+
rHLHTNdggsLLnwLHbTTgdrTMPPmMGWZGQQMzQVQFZQGM
297+
gbJnrHHjnbrgLrRrHpBJvSBDDsfJsDtstq
298+
dBTtFLTtVmpdLhMprSRSWMRSMR
299+
QvJvQbjbCgCQRBhzzRsNWNBC
300+
bjgGqQGbQnjGQgnQgbGgjJnDLHLdfPVtdDmLZdBFVVZttdTf

src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ pub mod year2015 {
1515
pub mod year2022 {
1616
pub mod day01;
1717
pub mod day02;
18+
pub mod day03;
1819
}

src/util/scaffold.rs

+1
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,6 @@ pub fn solutions() -> Vec<Solution> {
3939

4040
solution!(year2022, day01),
4141
solution!(year2022, day02),
42+
solution!(year2022, day03),
4243
]
4344
}

src/year2022/day03.rs

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
pub fn parse(input: &str) -> Vec<&str> {
2+
input.lines().collect()
3+
}
4+
5+
pub fn part1(input: &[&str]) -> u32 {
6+
fn helper(rucksack: &&str) -> u32 {
7+
let (a, b) = rucksack.split_at(rucksack.len() / 2);
8+
priority(mask(a) & mask(b))
9+
}
10+
input.iter().map(helper).sum()
11+
}
12+
13+
pub fn part2(input: &[&str]) -> u32 {
14+
fn helper(rucksacks: &[&str]) -> u32 {
15+
match rucksacks {
16+
[a, b, c] => priority(mask(a) & mask(b) & mask(c)),
17+
_ => unreachable!()
18+
}
19+
}
20+
input.chunks_exact(3).map(helper).sum()
21+
}
22+
23+
fn mask(s: &str) -> u128 {
24+
s.chars().fold(0, |acc, c| acc | 1 << (c as u8))
25+
}
26+
27+
fn priority(mask: u128) -> u32 {
28+
let zeroes = mask.trailing_zeros();
29+
match zeroes {
30+
65..=90 => zeroes - 38,
31+
97..=122 => zeroes - 96,
32+
_ => unreachable!()
33+
}
34+
}

tests/integration_test.rs

+1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ mod year2015 {
88
mod year2022 {
99
mod day01_test;
1010
mod day02_test;
11+
mod day03_test;
1112
}

tests/year2022/day03_test.rs

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
use aoc::year2022::day03::*;
2+
3+
const EXAMPLE: &str =
4+
"vJrwpWtwJgWrhcsFMMfFFhFp\n\
5+
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL\n\
6+
PmmdzqPrVvPwwTWBwg\n\
7+
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn\n\
8+
ttgJtRGJQctTZtZT\n\
9+
CrZsJsPPZsGzwwsLwLmpwMDw";
10+
11+
#[test]
12+
fn part1_example() {
13+
let input = parse(EXAMPLE);
14+
assert_eq!(part1(&input), 157);
15+
}
16+
17+
#[test]
18+
fn part2_example() {
19+
let input = parse(EXAMPLE);
20+
assert_eq!(part2(&input), 70);
21+
}

0 commit comments

Comments
 (0)