Skip to content

Commit ec4a9ef

Browse files
committed
Add day 3
1 parent ebba4e3 commit ec4a9ef

File tree

5 files changed

+380
-0
lines changed

5 files changed

+380
-0
lines changed

day3_input.txt

+300
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,300 @@
1+
lflZfgnSnlmmlgGfjGthQPtLNsQhvbHLLpSS
2+
zrCVDVFMJTCTcCJMwCThWbtbpbWpPbtbHPLQssLsHP
3+
rBFcrwFzFwwVDcDrzTzJfnRGjllBdGZnnZfhqmdn
4+
FjpnFRDmbRtnbJrFJmSTsGShWVhGqGVVsmqs
5+
ZwPvNPdzNZwfzBNLdNNNNcLvhnQhqMTVsTGSWSqGqTdVWhMT
6+
vgLZHfvLffNLPbggnrbFpJnCbC
7+
hzJzGjGfqmGtDQtDSvVV
8+
plpcMBNBcCTlTgCMbvtrsSVsVJDJlrwDQr
9+
McHBMMcTTHgJnWqnRqjzZnnRzR
10+
ppvsGZhDGprrSjSllwfZ
11+
TTFMMFJMgMHmHmdqdSvNqlSSSNJv
12+
mgBPHTRWFRVcpvsVttppbv
13+
ZZDssfMDMtqqppZLLJzmzSTwNJplTSgpgm
14+
BdCRRHFRbccWWBvBHCdcJVngNVSvTgVNzgNNVmnz
15+
QHFFrBdcGtqPmmQh
16+
qLvQFRgLSSNgqQvRrqLTQvLttwDBFWDwjwFttDdlBBwBwM
17+
nbsmZnbmHbZVCGPVmHWtwlStBDtwBMtwWHMj
18+
CnCbhGCPpPCSnZmrgRNRqNRrLNgrzh
19+
vgLWWHRNLnWwLggWzwLFFzMmBMRMhMhTbhsmmsbbmQTm
20+
rScpJJDDpjtSDPPPJDpjqPCHBBtlTdblmmlhBsMMmTsbmtsl
21+
GHZHCPprSSwgvWNVwVZv
22+
dMrCMJMqvtdFwcjczjQzThtm
23+
gGbLblLpZlHvllQhlQwcjT
24+
GHRWvPRbPHPRvNGbvdRBqdqBBfRqBqnrfF
25+
VsHcljlbhmHbHHlcjVcVShJSCdJCfMrMMQDfRNFCfMRGfNrQ
26+
tGtvLtpgBTGvDMMRdMMgdCNM
27+
pnGnGqGtvtzTLjWqmSSjHhWhWs
28+
NJTDntDNDVjNnjBfjjjcCZCZcVqCSCLqcSScCc
29+
zvhgRgQvvdllgQbHghlvHrRHSScBCRqqwCLGqSMCZCGGGqMZ
30+
pvvrHzdgvlgzQphQsDFmnsNTTtjfjJJmPB
31+
ScnSZSZZlmjmHjjWHHWZftJVJpppwtVVnLJtnptnwt
32+
CFFlQBbbPQqrBwJrJJrGJD
33+
PgTqRddFzgdRPFFbFgqQFgsSjfHWfSHmSMWcjZlmZmjTZM
34+
lzBRtctbnBRBRBBWnDnDWjlLVvwGMrvwrHHQHGmDvHQvHGrV
35+
FsTgFCTSgsCNspzhCGMfTHQVwVMfMmMmrH
36+
hSdSFgghhqpRbLqjntqnPz
37+
DCDnNGFFDQdQmVDNdFVNFccpJLHWSvPLrvvvPtGGhSttLv
38+
sBgTzzZqrBlfljslWBhvHSvPBhSBJSSL
39+
lRlTgMzlzrwRrnmbCMCFnNVMnc
40+
MJQJMJHBrsdrHwts
41+
dbbSVGgbjVqGTVfqddCTpmWWcprgNgWmcWwWswpN
42+
LPdGGdVGPCVdLBlBMlDRRRMD
43+
vdcwZLTdTFFRDHVgmpppMmqZ
44+
jGPzCnQPjlsDVqDpqDHbgP
45+
BjWJrlGQQzrCzBzlzBCGBznzwNRNcwLJdwTJFTHRSTvtLcNN
46+
ngrgqTjJJZnjFJpnqnnVTLzBbbHbLQdLHLHbrdHdHG
47+
lNcltCCtvftfWssPbMQdMBzhbbcBDLdh
48+
PRtWsQCmWsmSsCNCSvCSWlspwgqjqmqjTpnJZwnZVpFwgq
49+
PjWjGDCjmrmWPNmvWDWFmgCNfVJRLfJRfLDLJQlfHplpRbfR
50+
MtZMtcSbccZshTtQTVVTpzHlLRRQLV
51+
cZhbwMnwqsqnhnqtMBnvNFrnGPNPPmgPGCgW
52+
WBjWjWjqZwQJnJZCZZbf
53+
StHSDRPHHcTrTrJpLCCMbrqnJn
54+
RvTTvGqcqTFvSvSRDHvRjlhgWBWBdhjwjGgNjhlj
55+
FSbCqcFsbCPtrcrqhCScbshMjHDGGWBLHBnjGLPBHGGBGnHj
56+
flQdlsgQgGnQHBHjDn
57+
vllgRZdmvsvpgdwZgzJdwRmprqccSFcSShJbTSttqMCrCCch
58+
GwwgCtvHgwcHVVDqpWdfnqVv
59+
sllBsSNBjSrLfqhLgjfqhL
60+
ZbQbZQzgQQPSblBggNQRHGZHHCmwmHFGGcwtJm
61+
CmGVGBTVTmmTWTNLLCVgCSFvDQppQQDDnDQDJpMggfnQft
62+
RrtdqtldPbHzRbnjRfQZjJfMDnMj
63+
wcwhccqrdrrlFmLGCwCtSwtL
64+
pzZznZphZnpcNWSwGwVVPzrPrG
65+
lgFllLLltgbDsrBCwrjWGmwmtw
66+
MgJbDLlMQRJccchrhc
67+
wbbjzZhdGDwLzZSBWqqHmZgssCWqFtMZ
68+
VRJccfvPlTTlQlHQCWQhMMhCCHqQ
69+
RlVfVJcPTVTfvvvJfNJVlcBjGjwhSLdBNGGnjLLBwzGb
70+
bvpqHMVTTpZnqnWRQQQw
71+
tfhFFdSFggfhbldhhZcnRscRcQmnRs
72+
DPzgFJzFLfFbFSgPFgdPglMHpvBpHTCMGpjvMMpLvvNG
73+
JggGLQgQpLpSPRJgGPSnGlFTDBjjRFvRjtBFjWvFjqRj
74+
cmHhZcMHcWjrTBjrvm
75+
dbHwdNNHhwTNThZHdlwQJJwngpgnJGnSPw
76+
DbZjVfjVLhZDLpWPHpMZPmmGNp
77+
lFcJJGcFqnBFqwJCHHMmNHPsdCNp
78+
BlwccRQtBwBrwLGbGhGggzLgzR
79+
RBhZPjlWqgbNbgGLBr
80+
MzSmSzpFdHwpswzzHnzjnvLCbgtrtLGLbJLLJNtJtbwJ
81+
MsSHdmMdpFfmFjpfcPWRhRVZfWQThZ
82+
mqmssPCFhhsJccVg
83+
FTttfwdjjHznJgfngpnc
84+
dNFTjQNRtRNQldRNrRdHMRrlPZqCGlGBCqqZmmbPqDmDCmGW
85+
ZJVRRZZJRcvmPhCJrvhm
86+
PPWQDTfWbnnstlCGvjGrWMGMvr
87+
TbbwddndsnsfDpwFqZFVHBVPqc
88+
tFmpJmgJJgmFDWgRgFrrlGSltSQvZChMtCMM
89+
TLcZHsjLVNBwGQCCGlsCShvh
90+
nqNdwwccBwVLwjjDznZzppbgzFZfDF
91+
qsTqCCCszjlqTssBShlQSSZFgZZhgB
92+
LDPmVgDDJdLPrPgLgPZSFZQfhQGGBQJcSFJS
93+
mvmVbVvtggVtvgdLVvtmptCsNTtjRnpRTTjpsqCp
94+
BdNPLnmFvLFNgnmBmnFGnwSZZZWwqWgqjwWssTHWSS
95+
bJhMzhbVMbDCcVpZtjHMqTMwtttSjH
96+
hzclfCppVqQfbzQVbpzPQLNFBdrvdNGGBnmrmP
97+
nLVLzBDJCCHqdLncqVJgSsDlGsbssmvvvbvbff
98+
jMNHFWNTZZNwMPrPWrrPMMrrvSllbgsllfgbgvQsvGmglZbv
99+
RjPjrjRPtNrwHhBtncCJtJtL
100+
jbhhjhNjvqNbmjMjqhtCFdmPFdlzJzfFfJQJfR
101+
GBBZWrZWgpSsnSngrrSgHzFzFFdClzfFQFlRZftQPR
102+
TrGTrGWHpHWGHWVWsngprHpLbLLVvcqMcNbVNLhwVNbtNb
103+
sQDvDmDLQFDRsdchzhBczLhhPhVz
104+
MbGGMjjGZSjvfHvHSbfwBqcPnqqcPVhPNnqnzjcn
105+
ZwMMHrWvSHbfJfTrbJwSMMfMsQDtsFRptlpdCRpWmptQDRmC
106+
TwMHdcTznLqzTrHdzzzHTdgMRQWRhJhNjjvgQvQQWNjl
107+
tbfsVbDCVSSDtSPQJWPvRNhQtghN
108+
FVGBpGCVFCbfCbVbZCSHqmwqcqLcdHJGwHqqTd
109+
lTlGfjLGwHNMggscsDRwsC
110+
MrFtrzZZPZrtVQtnrrFdQhhDPDSphgDRhDcsCCgWpW
111+
ZJmJVzVVJFHfGbqJGMLv
112+
zsFZVjzlHPfTzGfLGt
113+
mdrrmdMMcBcmNqNbPqfRDLPWPlqTWD
114+
BNQhmmrBrQghgSmNBQQSmvwssjZZSJHljJFFHZJvZV
115+
rLZCsZdMJfdNCsfZMrLdFmssnwgTRQgBBwgRwcngTNVRVQjV
116+
StqDHlStDPgRTqcwjT
117+
GlDGDhbpHhvSHWlzbWlhpzhJdrFLrCLmvdmFZsmJJjJfdv
118+
pJHJMJsJjSMFdHhszFvMhlmmGNlSmmBGllWmVlwcTw
119+
ZqZRDrZCZDtPDPDrCngrnnPQGVmGHVBWGWtGmWVwVlmTlGNl
120+
ZQPgRqrrQPqLnrLMvLphHdvdjpJddb
121+
NwbBjljFbcjtTcccqW
122+
RHZrPHPpNgZTzTqc
123+
sfrPdmPdpsmPPPrfQPVGlwGVBwbGVnFlNQCG
124+
hQdNTlzhdTvrhdnTBqcWBLsBHgWQgBPg
125+
zwzRDbDfqZBLHDLB
126+
wFbFmjjRzfmjGGMGMfmJwwGCCnvNhpvSCNnrvJvCprnnSp
127+
zshNNJbwGFJfGJzzzNRnHGnCnRHcRPgTmPmn
128+
LMDVtZLStrrZClBrVDllLSBWRPTPPRRPmgWPVmPTPHTWgR
129+
SDSqLMlrtLlLtrBqBdlMZjvffCNzwvhjvvzhdfNhvf
130+
SLQmGBmhLSLQTBGBGwdwpJjwwQjwcVpJZJ
131+
sNrWrWPNbHghrbgnNNzbWbFWdZpMpzVpdMZMzMMVZcwwJdwd
132+
frrPNNWshWhhHDvDGDRSBSRvttqv
133+
FJqpgvhJJRjFjZTqDsMHrzwjsSsSszMrMm
134+
PPPQWGtnbbfBmPsFswwsMrcc
135+
QfBtbldtWQfbWbnfGlFqZppvpFZZLhFlpq
136+
ZqSMZHHCMpHTZTWmFTFZPZQJBgVGVJQvVVSDBvBtcBBG
137+
RNsndwsNjsbsgGCgjQBttcBg
138+
NRszRRNzLNNNwNfhCCrfdmTqFZllFFHFFpWhlTmWpq
139+
llbbzDmSspGRpHpzsldzRRsVtFBBFJMMVVFLTTTMVtLTDM
140+
cqgjqvNgvqCjQZqgGGnhMTnMJVLBLMtFhhVFWB
141+
PfGGvQrPCjvjZgGCCCZZZbSmmmHlRpprlHrHwssSRr
142+
mRmpFpWpfMMgLnmS
143+
CdCsqzdRzqStLjSqfMnL
144+
wQRHdTzCQbzCwsTrZBlFZGpVlpFGQD
145+
qnMTnTVSTPTHTHcMZMvVpmppmFmVzFLLFLlFpG
146+
gBjDsjRRwhDDghthwwWZwLmpmwWWLWLbGZ
147+
NhZtZtBgPTNJJNTS
148+
jLjjmpHvzvZrfzQjmfHHWrfbqblLsSlTsqsgqPJbPqVglb
149+
FBcCwDwtwgcgnCwcGchtJSsRqVRVJPPqDlbSDRPq
150+
MBhthFNtMGCwhcwnpQfWjNrQprpvzpgQ
151+
RfCnWfnhCbwHgWjzBgzB
152+
PsVqDsSTshsgszpsph
153+
DPDvTVtTShhSZhmqSvLlQJFnQJJZnbCnlCCZ
154+
pRRdJngltnwwvTNSWqWffqgBqD
155+
HQGcsdrjzMDDBfGMGG
156+
FLhsdbzCLLHjhntpVnRPRvZV
157+
gZNwQHHNRlGvhvhGRvRb
158+
dpSSBDrzdCfcSzfrzZrfCfMbthWWWPttDthvMFWvvvPj
159+
ZdpBpZCrssBJZfSJBzBdCTcnmQwmnVVlmqTQTTQlHLwNnN
160+
ssCpTttVVVpzZDVvRpCsRtDgWBWBBFBJvvJHMBghGghrMJ
161+
lwLmNNLwSblbmSQLfhJHZgHrHhhJJhHHmW
162+
QLSdbdPqndlNlLdSLNQncpRtRTcRVTPPZRCjVCcc
163+
wzzJclzcTThvWSSCqRlQSsNN
164+
rDpVjpVVDpsQSRDRfQmm
165+
GLbjrLpFbgLVLLgdbjVpchcFZhvBwJvtvtJcZwRB
166+
wPgZgLVMfWVTgmTZZZftJjtfjtJCcdpjdCqc
167+
zGGbQQnQGvBBhGQvvvBBSBvQdhdqqCpdddDmJlCcDjCtJdmJ
168+
HszzHBzQBSmGSwTWgswZPWTVgZ
169+
GDFvzCFdrszSdNJrFfjjfqZjRfsjpqmcwZ
170+
WbbVtVnBPWMgBLMBnQQnBQHcjfjpZRwqcwMfcNTZRqqNmT
171+
WQQnVVPHtggLghWWhHnPVQbvlJhSlrvJDlFGJDdDCzGNFF
172+
dVhTBjBHtTVqWRJZRqhJZQ
173+
brSDTbDfcCwDzfCSbwMQnlqCRJnMgWWnZngM
174+
DFwNSrwNwbDzbFTTFtjmBpVdGpHs
175+
dPQfdfTzDrFDmFDBgBFj
176+
RlJRclcswJRvnwPcpjbjbbCZjFjbBmsbFZ
177+
pqncGlcRJpHGpllGHhvPhRTHrQrttVVfrdQzfrTdftfV
178+
RCzTzRMTfCfRRDzRfhSmZZlCslBbZZBVtZBZsqBL
179+
nvvJPpdcFnPcWnFnVZvBqVlZMbZBNVlV
180+
FpWPMdjdPhSTmwfSjD
181+
NDJjNHLLNWjcLLWCLJLZjLDtRqqtgtMqgtqnRqnSRgggtZ
182+
BwrlfFwmQwhwfPBFhsBdFmbQggCgqQVtbRSqttqMngnp
183+
llPPwsPlGshBJGWJLcHvCzNv
184+
rBvTmwdTSbnrvVWsWVftGfJQGT
185+
gNRLLjlPRWnFVRFDFW
186+
lpCpPNZqZCdvdppnSnBr
187+
ShRdCrJgHClZJtZDGMMz
188+
LvqVVTTNbVPLQNFTnwwMtzFZGDDwmtnM
189+
VLbNvpPvTNVqVbbNpbVPGNLPrRWrcRCWdSrCjWSHcHSdWpCh
190+
tNmZnLSZPFLDnLTmhJMWczQdhmWhWH
191+
bGqbgrpsCsWhcChNQfJz
192+
vwlNbppsRGRRSSSDvjTjLZjZ
193+
zgMZhgfBtftSZQQmLHpSWH
194+
cdqcqnrJVGjjqPVjrPnfpJmsQHQQpsSsbsSDmm
195+
NNnrNqNlrNcPTlBvBvgggfMv
196+
llPrrLHBHCrRRBjrHCjBdrPmvJZzZgZbmgJlZmZhMhhmvh
197+
pNDstVtNtGFNSDFScQtfwzzFJwmJhgqzbMwqZJmh
198+
fpNsptGtQcTsSTccprddCWPrWdTRBMMCMd
199+
TTtDVqTsTcJFgbCqmbCq
200+
NWZQnllzfBFZPBGWQGzFPFRNNgHbHrrwbNrmCbggJRHR
201+
nBZjGFjMQBMPZnjfWjstpcctttvVtcTttMpL
202+
qphVCCwnHqhnRVznFwvLtBTLDTWZtwLWWS
203+
JmdlsdlsjfJfrtjTcvtctDZSSB
204+
rsmfPGbrPbPJfPmrsgMrdJdlFTHhFCqhNqVHnNHHCFznhphG
205+
JsWFMJJzrhSSdFdldmmdmdQc
206+
qLLgCVTgLbBvqsQPVdQGcRRmQmdc
207+
bBCBgCCDbLDqTvqqjpShHfzrzMfjtHHSHsfz
208+
nvFSBFlvvgQFFBzQnlQglmRRzqwsrrMJJMrsMqrfrwzf
209+
CjZNCNhLDNbPZZLZZhwVjpcfrqRhsdJqdsshRTTdqJrJ
210+
jNNDDppjpjDWNVLCVVDpGVVPBFtlSQFWvvQvSSQHSgwQnvtB
211+
WhrQWBRWwhzgmpnSpH
212+
LqMVsJVvFMJLJMsfNjsTJvCgFbSmzgpSHzmngHbGPCbm
213+
jvMjjtqVjTRnwZQwBWwt
214+
jfTWSGSTTWhgcngQfbtJfNzztBQBzz
215+
pVVwsdppRVPLVmPsVVHsjPLPzQdzBzQFzFBNNrJZZQBzbbFF
216+
VmsqHmjHmpvGDSWDvlclSl
217+
PNZfTFSFfTFGCHqqmbFm
218+
WjzRWrjVgnjzplrWWjJVppgGPGsgstmPCCtcmssQqGQt
219+
pzjzJVvnzJjWvpPlnVRVrvnlTDLNNhwfdNZLfMZLwLhTNvTw
220+
QFrQZMFVrVpVszzcNTdMRCCb
221+
SvljGmlvLfwLhLLLHlHdNzsRthhbbRccRCRNbC
222+
LfwlDmlvGBSjjlLLgpPpFJqgQndQgZBJ
223+
RBjPRHdjPfqQcfhcdv
224+
SngFcJZJlcnctSlhhsQvGsDGDsDnfs
225+
pSmFgSWNJFNtStrmNtpCCjPVcbjjHbcWTBHBHL
226+
vGjqCPqNPGFGNftLwmZwfQNTLp
227+
hrdBCSHcCJJcCBShJswmLQpLbbQZTLLJmmZp
228+
BdHHSzrBWdzchzzCcdzHddcDVWFnjPjllGggVlWljPFFFWPM
229+
hBtZZnpbhbPZJbnhDtPnpBtpfjfNNzrrCzjFzFzFTjfjjWzJ
230+
gHllMqRSmqcqMTdggMqHlcFzRrFQWNfvrRvzQrWjWvWf
231+
gwqlgHmmdsgwlwMHZtpsbBbtDBThbBht
232+
CsDLFFLFCvczsCsJrCrJJLRgbQQgmMmPbDDQbPnMgMmg
233+
VlwNBNVhjNVNWBwWjtbRMRZzPmQnfQMPnlZP
234+
VWWSSwGTwtwWWNVwwpqJJrcJGvzqCJCqJF
235+
wLwSSbzwCvddlvvlSj
236+
THnQnnHttcvpQzrZRllZ
237+
sTntBHTnVbPbgzsbgL
238+
FwHgrHvFQQwpHhNhTBLdpNNNLd
239+
fCGqCVtszfSslCSzSGsfCssjNTqLTdmjNLBLdnTTTMTjTg
240+
DccfslfgRSSVVzlcSVtzDRVHwQZFrwwvwFWbbbRRWwrFJb
241+
CwwWwwFNRpFFpZQHtsmfqbQDTQTTqb
242+
VcjzLjGjzGjGjVjLdzqmDqHrsmsqGRrHqGqH
243+
RjdVlgdnljlBnSgPCpNwwMWwMM
244+
tCCtqtbPGzsSQVzQTq
245+
mzMmHMpRsRQTsFFV
246+
DpzDwgdMzMLppNmNpDpfgrbhLcGtPrbtrbrbhnbBcC
247+
BvsQBBBLvDQGjDvSQLTvrHprHlRpVlVllgRbRbHPqq
248+
MMMMCpfJFZZMmCzwpVPCWRtHgqWgqClgtt
249+
FwzmfzhFFdFcpvSDSBDThs
250+
fQrGQbFFFrHHtlHPclzzPLvc
251+
mTnwpNCCqMqjmCThpTpSvvtBczstlLznvsztsPPP
252+
mCpTNhmmpCqCmjmpTjmLCpSJQZVfFVrDVfffFFgfgJQFdbgG
253+
GmWjRBSfttcGfRcSclVVJqsTMllsgJVMVZwV
254+
pPFNpfNCdNzCVMTTNqVssqJN
255+
dzPfHCLLhdjjLGRnmnmr
256+
GPhPfGWgggfslffPsVPGsqJMzLQJtBprwQJJGQwLpQrw
257+
ZNdmvbDDbNvHbmZCcJQwMmzMwWWQrrwttp
258+
bvdDNdnvNbnHDdnDHHRSbnqhqhWfjWFVTVhRVjfjFTfP
259+
hTThfWNCDRfsVCDhpgzgbpPZZwbnZQns
260+
GSjGGcCBGmdjdSlGBcmZwzJzpPpJzwPwQbzgPd
261+
BGmcrcStcMMMmrSLmSMCvFVRFDhfFhhNDWWTqFqTvf
262+
ZmjDTTbmqQCCQQSwvhsL
263+
FGVJPmPmtRVRsCvvRLwwhC
264+
JgdHJgmfbjzTpTMf
265+
fTbsVCsssgLNrfNrgm
266+
zQvzZlRvddvpNLpZrMNNLZ
267+
HLvWFHHlFQvzHnnlnvQqhzWvstBwbGVtstjGqjjwqGGCcwGq
268+
JNpNdzzdJhNnfNGBZLqZqlhvSZSG
269+
QswtcmmwwmTmwwcwZSLlZLDSvSvlBZQD
270+
FsVFBbFgFsPwtVBTwgTPcsmpzdNngfzfpCzJdzCJzNCndn
271+
qcvrLBppgpWWWgLcpzPfhNDqdzqwDDzwhV
272+
MZFjFnHFMHbMntMtnwStfddPhDffDfzDfS
273+
QmnjMZnlHjmnMGFnFlMmjlZWzLgsGgcrspBBLCBcgvgBRC
274+
sdfWHjZfrZrSPMCQ
275+
zqtWRDDDRMbrQJPQ
276+
zwhwzmqwzmFpWzvFqBmFvjNHlHfgVLBgdfVfNVjLsl
277+
lRlBTlvlZfhtbGBWtFBz
278+
cqCNjjqjrNrcNjwDqNPCVrSQStSWshFhtQhbQzGzmFCG
279+
HjPPzMcdNqjcNHMqPjdpgpZflfdgnTfdlvlJ
280+
VpwQJVRtHplnnwtppHhqWBCfVdNNPqPBPWsBDq
281+
jzLZCrvvrZjZvqNffvDNDcWDWd
282+
LTrZZLFZbgTzgjZZjFClJhTHTplQpmnQlpmpQR
283+
JGJnSWLGSpWHVHwGGJHpZdwPdTTPMdTMDdlzccPMPv
284+
gqrrmtbrbgggqgBtqmRSrFgNCzvMDvlMPDdddvzBcPMMMDBd
285+
gjrmRgmtRggFtqjbhgbjrtnJJHWLHQWZZLhZsLLGHhSL
286+
BtTDNggLRPdWQHqggg
287+
wrVpVVlCJVGMMJVdHWSdPSqqRwSQSP
288+
vCVrpvvGjlphBRmZBhmBhBND
289+
lqDcZGcSSqSqbDnccSLJgHgLRfnvvJRLmvWJ
290+
FVCFPChQzVhmsFBgddRgJBfdNfJdfv
291+
FzCpmTQzjQCThppTSttqDccMTDGcDG
292+
QCSGBGCrCsMBTCQwMGSfvvLNNnnVLDlNVNDdVdlr
293+
ZHtPffjWbqgtmnNdvljFnFhdVv
294+
JRWbmgmRJtmJMGGwSBBRRRfQ
295+
LqNrCfCQQhtgnPnc
296+
JWBrWrVlbWgbbtcb
297+
VwvTBprdrVJVNLNMNNqfqpjN
298+
bjVqdHrdqVHPsPNbqHbqNdjFGRwRGlttRtMtRtFFGMLHJw
299+
cfSpZnBZWQBZJlGRJJcwGMGL
300+
WWBhTMgDTZghVjgjssbrbddd

day3a/Cargo.toml

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[package]
2+
name = "day3a"
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]

day3a/src/main.rs

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
use std::io::Read;
2+
3+
fn main() {
4+
let mut input = String::new();
5+
std::io::stdin().read_to_string(&mut input).unwrap();
6+
7+
println!("{}", input.lines().map(|line| {
8+
let mut sack = [0; 48];
9+
let mut sack_len = 0;
10+
11+
for (m, c) in line.chars().enumerate() {
12+
let priority = if c.is_ascii_lowercase() {
13+
c as u32 - 'a' as u32 + 1
14+
} else if c.is_ascii_uppercase() {
15+
c as u32 - 'A' as u32 + 27
16+
} else {
17+
panic!("{} was not ASCII letter", c)
18+
} as u8;
19+
sack[m] = priority;
20+
sack_len = m + 1;
21+
}
22+
23+
let mut in_first = [false; 53];
24+
for &priority in sack.iter().take(sack_len / 2) {
25+
in_first[priority as usize] = true;
26+
}
27+
28+
for &priority in sack.iter().skip(sack_len / 2) {
29+
if in_first[priority as usize] {
30+
return priority as u16;
31+
}
32+
}
33+
34+
panic!("Found no duplicate")
35+
}).sum::<u16>());
36+
}

day3b/Cargo.toml

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[package]
2+
name = "day3b"
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]

day3b/src/main.rs

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
use std::io::Read;
2+
3+
fn main() {
4+
let mut input = String::new();
5+
std::io::stdin().read_to_string(&mut input).unwrap();
6+
7+
let lines: Vec<_> = input.lines().collect();
8+
println!("{}", lines.chunks(3).map(|groups| {
9+
let mut in_sacks = [[false; 3]; 53];
10+
11+
for (n, &sack) in groups.iter().enumerate() {
12+
for c in sack.chars() {
13+
let priority = if c.is_ascii_lowercase() {
14+
c as u32 - 'a' as u32 + 1
15+
} else if c.is_ascii_uppercase() {
16+
c as u32 - 'A' as u32 + 27
17+
} else {
18+
panic!("{} was not ASCII letter", c)
19+
} as usize;
20+
in_sacks[priority][n] = true;
21+
}
22+
}
23+
24+
in_sacks.into_iter().enumerate().find_map(|(priority, sacks)| {
25+
if sacks.into_iter().all(|x| x) { Some(priority) } else { None }
26+
}).unwrap()
27+
}).sum::<usize>());
28+
}

0 commit comments

Comments
 (0)