Solve day03
This commit is contained in:
parent
43c1425903
commit
4e2ea5ee45
|
@ -8,3 +8,6 @@ build = true
|
|||
app = true
|
||||
|
||||
[dependencies]
|
||||
|
||||
[features]
|
||||
first = []
|
||||
|
|
300
day03/input
Normal file
300
day03/input
Normal file
|
@ -0,0 +1,300 @@
|
|||
DPstqDdrsqdDtqrFDJDDrmtsJHflSJCLgCphgHHgRHJCRRff
|
||||
BcBGcQzVBVZcvznTTTvZcGTpCRRRfRCggLflHlhhCZpZCj
|
||||
vGQnQvnzTzNTTbVnzGBqMqwqDLdPtMmbwqqLLM
|
||||
wLRFRqvFsFRjfrHddbdbjzdH
|
||||
lcsnSJPSSVVlGmGrHzbbrGNrdzbz
|
||||
mSmlnnPlmJmncVDSlSZSlmLBCvtwBvtLCqqswsDBCTWW
|
||||
pfqPrPgmmhvqdlsdWq
|
||||
nfjHLJfZcLbVtQWWtndhls
|
||||
CzJJFLzRzfDwrmggpC
|
||||
CWfllmlCDFlZZqMfmFBWmWLJVRLVwNNtRVGPpwtGpqbJ
|
||||
jHndndndcjhscnhHNtRbVtLbGpJbRRcb
|
||||
HSrvnQzQSMDlLzBCfg
|
||||
BQRVbgQQBJBbBtVBSSSRWMQbdNvvRPjZjCCdPLNZNNsNCCzd
|
||||
HwpFpnlGpGZWGvjzPd
|
||||
FTDmFrrwDpFMtmQVQQcWgc
|
||||
VhbPshVDPDFWhWsgDNMMbVtmBjwBffpwBntnmnqfnswt
|
||||
QzzGrTZZdrdlTcCLpRBnmBRRjBCqtptt
|
||||
rJdGlmLTJdJrvZDbSbDSWDNbFJgD
|
||||
qrcqTBHTcHgwWWdHRjdWBglBbGPpGvvPbszGzsbPpQfPLwPz
|
||||
nFVmjhMjFJCSJsQQPQLbLpzCPQ
|
||||
SnMSVVZSJMNMZNDVFtJtNRBdqBrWrRHWZTllrrjgHq
|
||||
ZqdqcrPqqrwnQqnrZqjVcqrQwwmNbzNzwbNLzvFbHLbNmBLF
|
||||
LCDsCsRTfLTDszzNbsbNNHbs
|
||||
gLfCgShfCgMPlPrVcqrQgn
|
||||
QSNSLDQDLfqqPwwBNLqgqJMMmmRRCTzHnCHhRzHmfCmh
|
||||
lGvdbdWdVvsVszpDhHmmlnMpTC
|
||||
ctbdtVsbbvvsbWZFdVQJqPtgLQBDBwBQPJwJ
|
||||
dggSSDCPddRWPnSSPWRDgdSrTDsDQDTzQGGTMbsMMVsQfTfV
|
||||
jmBvtFpBcBhhjljZHphztMsCbsTTCbzsqGqsfz
|
||||
hccpLmhFlcwCrPLrCPnL
|
||||
MMHZnGrCfJnfCPggSSGGSSSgLW
|
||||
qhFhRlDFDlqFsgdvJdWdDdcSvp
|
||||
wVlhqTbbRNFqswlVVRNbZfHCrntMBrTTZnJMCfnn
|
||||
sHGZscVGHJMtmRrqzRqqqTqt
|
||||
SjvvNgjLShWWhhSQNWqmrBzlRllTTgBqnRmq
|
||||
LNQWLfWhSQvLdCddWWPHMcbHHrJcDGFZCJssFM
|
||||
mSDjSVQbVGbmqDVbHmqqJTZzPHTHhhRJhwsRPcRJ
|
||||
tFfFFttFdsNntfpMMppJWwZTzJczJcZPzwWcdJ
|
||||
vNtgCrpgNptptgCCbbmjbSbvsVjSsjGG
|
||||
VCQlZJCTPRWsBsjTTT
|
||||
wvNrnbbvnhdNhLMfGsrGpRFpGpjp
|
||||
dwndHbHbbLqwwhNcLsqSHSCHJClQtJSttQDPSJ
|
||||
ZlrvrdvpGBBhlDrshdqJHRPHqPTJzRPPqw
|
||||
tcftfSgFFgcgLPmPmpnqFwJRHP
|
||||
pWLCcWNNNNttMNgZvlsvrBrsrjWDjB
|
||||
wgdCJgDMDwMCwDMCMJsJJfpffVpVfbfrrrrgjgllZp
|
||||
QFRhvttRthtQzzmpBWbWzWZSVpbSpl
|
||||
btRttRLttGNqvbFHLwCdDcMwnPPJDnDD
|
||||
VhmMNllLqGLJQNhRfZHgSPfgSPTqZj
|
||||
sBwDcwBtsdzvvHZRlPRjDZTgPZ
|
||||
pWvvBBcBCdzNLVQVWQlNlW
|
||||
NsSppvSjSPNBNLJJLh
|
||||
fCGtqQbZZGZQZTbtzbqbCZThddcMBddlJGhdlBMcddgLlJ
|
||||
zZFTqwLtTRFqTQwvmprnRVSsDrnvVR
|
||||
FttFTzzvlVHFzTjpbvzbFSDDdVGhdqLGWGJdVDDfsLqG
|
||||
cmBNCRnwsCcBPMfLLfJGcWhWqfdh
|
||||
BwPmZZMmZMCsnrwMrmbHHbjbSvSbjvrlHpzj
|
||||
sZQHCBFHQQQPGQCCHCHwsHFshhtSnnqjbRSSPngnhbRjqVPn
|
||||
mzLvmDvNNWvNvrzzrMTzJNjqndqbnSnnRgTdtjdbjhTt
|
||||
WzzWDlJLzLDvMWJJlMzmLJWcpHFQBpBgBHGQGBHfwwBfQQlG
|
||||
gdpFrdrmrDsqqswdtccgWWCMlChSbhqSlCzBlSqh
|
||||
TTvjrfjNJPnRQNTQjvNnCSWBVBVbClPSVSbSVhSh
|
||||
HRvnfTfvjjHZTDsmcHDsrDsdmp
|
||||
bFChjhbpbjqsntjtns
|
||||
vdWcfMHfddvrlNMNdWWTNgBqDngBBZBBQZshgSfgnD
|
||||
JlwrlrlhlcJWcWMwhWNVFpLzwPbbLRFPppVLzm
|
||||
DtBtgLvgcHzllsTwzSTg
|
||||
vhhjZrCrZdVdZVSwPMwwTTMGwT
|
||||
nmpfqrnZJbqBBvRc
|
||||
nMvSLvWSWPVPvWnSLShFLBjVbpNVGGbVQbbNcBcBBc
|
||||
sTzJsJszbbQbdQJb
|
||||
DsDrwTtsCTFhLQSShRwh
|
||||
RNFQhTQqHNNGRsNqQFNsHhFCwwPLwPqwzfPrrPBwpJSJJw
|
||||
vMMMblZjddlvWbjbBBfbwCrPPLJppwCL
|
||||
jDmvcDBlBdjVglgddmvDQRNFtFRGtQhstHNsGFHV
|
||||
rhLHmZnMrRsZSstZLLtZnhSCNbbmPJVcblTNNTlccpNTjJTj
|
||||
WFgGddGFFgFDddMblpJjlTJTPc
|
||||
QGWqBBfWgBqWwFwzMGvzDqSSrHnCHsrssCRZrfRhHLfH
|
||||
HHzcWqNPmZcqFHPZGBdMRBMDlllWpRDJMl
|
||||
tTgSvPhbMDJlbJQb
|
||||
SCTtvtSPftswjvPhTgffVqmGZLmqmCCcqZzZHFNznF
|
||||
QNpppRrdZvdgzpQZNpgRRgbSwmDDvFGGqwJSsvSGSqGG
|
||||
HchWBMcBVnnWcHPjHhWcjHTqJFDGMSSqDMwJJbGwSsGGSb
|
||||
tcCVcBjPjhnWlFrCFNZflQNr
|
||||
HsVMrqrPqvvgprSrLG
|
||||
THJWBJDwRFvBgGSzgF
|
||||
DmhfHnmQncMNVMqPqbcd
|
||||
SqZmMJqvHJBhHJLp
|
||||
wsgTVTSsPssjjFVrTrFlhLhCFlBBnHplHLLHfF
|
||||
zgggdwPrRrsrjjgRwVwdwdQTmvMvZqDZbWqqMSNWNbGQbGZN
|
||||
fBDBfLZnTLZVVmmDcQMDDV
|
||||
jPFtJFpHpJqfJFrptwrJdRWRWNpQVmQRMWNVVVNVvQ
|
||||
zHwJgtFrTlslfghf
|
||||
wMwTttCCTTSTfBmPzPVZnPZLVVtbnN
|
||||
ldRRRlRHggGcvcRbZsNzvBVWnnPBWv
|
||||
hdlJHgpcJccJhQdJrcrhwFMpDqCwCMBqjSqjqpTC
|
||||
fJfnwJJnnHJgJHTgjsjDccNjcbgNjm
|
||||
VdLqRRqGVqpRrPpppMBjDNmDctdsBlNjmZdZ
|
||||
PDQvPQSvpGDrTwfJzzfFnTnS
|
||||
MnHvnHHMRMzPTlDLPPRGcl
|
||||
dFnfhFVwhdBPBfGWlPcP
|
||||
JNrQFsnVtwsgvNzvmMjpzS
|
||||
BZVPFpNpcNZpmRRPpzcVNhLLnssDjjDGnqjjLDFDjq
|
||||
mMJbJvtJQQHlJDGCDnjvChDSsv
|
||||
MQwWJHdQwWrJltQrgfNPmfBcBrpBpZ
|
||||
ZWZqDsZZqWsWvWLPwPbpHjdtSbSjSCSPPSCp
|
||||
MFVNMLmFmNzcTTrFrLbjdjbpCdCSbTCShRSd
|
||||
czNzLrznlGNNrMzMwDlJwJWDwJwqJDvW
|
||||
GlgchGGVShlQcQfDhzZrNFnFNFNjFzNFcn
|
||||
dwCtpwHTtPTWpdFNfJJzRzvJNR
|
||||
tLBBmWHftBttPbLwCHWTsSSQVglqgMsMBDSMGlQS
|
||||
RDDDGhGfvPPTTPTThn
|
||||
ZFLMmjpCpfMZzFqmqsCmPjdVBlVBVnWBPNTVbnTV
|
||||
zHqJMCzLvftRQQHG
|
||||
nTcbnvPsvdvFzpczVZmMGg
|
||||
BCCJwSDqhQLJmMMpzGZVFVFB
|
||||
qhrwJwrJrrzJNqwWLsTTnlTlbnsvbstWsW
|
||||
vHRbqPJZvRPZhShJvTZllZtgzwlfBGBlsm
|
||||
VdQjVVCssQVrWrQmTBgBzglmgCBGml
|
||||
NnpQNpcFpNWshPRLsbSFsH
|
||||
cVGmVZVwVVMLdvcRttTdbB
|
||||
ppCQrwzHBtLrttLb
|
||||
hsFJQzFWCpCqjZGVwlhlPP
|
||||
HDGRzgWhgfzVWfRpspwRwbwStSwt
|
||||
ZBPPPmmmTMQMPcZrBmSptSbbQCwtlsNqCwjC
|
||||
TTLMMmZvPTrMZvFMmcmvrTccDDnfGHJgJhHhnhnLfVhSWDJz
|
||||
pNrpjzthZPnGrzzWbJLLLbbJZwgSvZCV
|
||||
MQsFFFDTfMNfRFfBFMdBdwLSvgbSTVCqTgVbbTLvwV
|
||||
BQlQDMFccQsNmWpPGhpcjr
|
||||
CTgGRCRglLlLTllL
|
||||
vMJmhPJcmPBMvhqPDnNNqlWnwDWqsRQs
|
||||
hcBfcJRPFfvvRvJZBrfMPZdpbSSGtSdtdgtzzSZzbV
|
||||
NQLzNzzJcrLrSgZSSGgZrR
|
||||
bTsjqHvcmTHvjgZGDvDpGZRfpg
|
||||
WqTVPbdnMlLJncQC
|
||||
hZLBrqLGLMbzLLBhfMMrnnNJlnNnlnJJNNdCJdzN
|
||||
TWTsWqvtvpTSgRHpVFdjgjCPdgJlCFCFnF
|
||||
swSTsTwpTVRmVRRRqMDMfqfDwLfbrhLr
|
||||
NTQHWNQWrQwSTDWlcPPBHZBZbPgZJZ
|
||||
nmfjCRCfRhndJcjBbcbcbg
|
||||
nsppRfssfzCnqgzTzrwTwQVTWM
|
||||
mFjQmDGmbbGjmChrCwdQBHCHWh
|
||||
qvZZnPvvnngMpnlqpMZnpsTgWHTRCWrVdVDBWRhHBrhHDHhd
|
||||
vqZgnnqgLvqlPllpnjGDjmNjNLfftftLFD
|
||||
rfGsjsMNnFMMFddMsttDMgLHGlmJLCPPmHHGmHPlmm
|
||||
vZcbhQbrRbVZPJLwPTgCLlgb
|
||||
hchzSBqzQvphnWnrjFdWMqff
|
||||
WmfPWfVsfqszRDqPqgpvHhvdwddGMmGghM
|
||||
QtTrtTcSBjtQCctStrTrzhpwjGvGHhngwMHGHvMv
|
||||
TtTQlQFcSSJlcccBbltQQTTRsPZDsWzRFzWFzPNfsssLPs
|
||||
QpNNMrjcNMccGNdvLBBlBsBjnsnF
|
||||
tTSqbbbqCtWWCTWSVTmmCJPwVwnwvFPnsPVnnPfddlvf
|
||||
HmhJTZWqHqCJJJltqpNGRgzZDcQNrgzDGM
|
||||
HcLVRhhTRsLRRVjslTscqNQmVNQQgQttqNwNZtmw
|
||||
nJdBJJhfFPSCbJBJBMbzFbFgmNmtgmvgNgnntNwZQQNNmw
|
||||
bMbPzJbzCBPrJfdfbBbdCrGHlLTTpWjsGhGTTRTRlc
|
||||
sJCCpQJQCrfCfnSCrT
|
||||
vmqgNggzgmZqmPShqBhThfhDhjDhhB
|
||||
RZNzHRzZSQwHwHVVWc
|
||||
jtVtvVHgvjJbHjjQPMZdCcwlMdNbdFlNlc
|
||||
WppSBDzGfBzTBqQWwCFMlwZMwMcZ
|
||||
zBfnqpRGnSSqTfqpTpSnnHQsjJgQvPJshHtHVh
|
||||
qJMRMcPPVzVhmsDWfhWT
|
||||
BglQBNlgZtQBHLHHBnTjWSWmFmwDmWjSsnmF
|
||||
BdHvgHBvBtZbTpJRPCdcdpGrGJ
|
||||
pcGcWGWlvQZpzmDbgFmz
|
||||
HqqnddDdddjzTTggjZgFtT
|
||||
sHqRwrRsJswLHrMLLRJdqNVVrGffPGWcvSSWlDfGfc
|
||||
lttTbgRvqvtQRhjLzGjLVh
|
||||
JJfrHfrdffZJQmZhLLZVVwFj
|
||||
sBjCfSNNTTqnCnqD
|
||||
qMtWjSrHftGfjqrJGMqzVzFmBBrzQQwzgBVQVQ
|
||||
LDChPbThbTcTpCTcnPPQPQzVPvvzQBBWgVBQ
|
||||
ZLspppLpdZZttdHttqdWMf
|
||||
htJcJhpMQQWjhNWdJQSCFCTvFBPCTDlMmDCFlM
|
||||
jjbbsfjwZbLGVVqHCFPvmvDmClTfmP
|
||||
zjVVRwZwnRJtnNQt
|
||||
PCPVSzLMMRqGwgMmHmQmDQ
|
||||
slrrbZZgsfcdsgdhrHFGQHQFwvfwFwDGTv
|
||||
NclhgpctrrNjllcZdcrpZnPPqzLLSSLqJLtJWCWzCn
|
||||
PBLSBPVBwpTVppfT
|
||||
lZCqQQtCQGPJJPtPHHwTwZTTZpwHsfRH
|
||||
mCtGFDqFGDGQjPGqjJMMlqPgdWgSSgBWWcWzLdgvMzgBMg
|
||||
cLBrfchhFBcnrgvqvPGvvwSS
|
||||
QpzpstDDZMwDZqwh
|
||||
WzpbWTjsbhpQtjThsjJFRNLnfLbfRLRBLlFB
|
||||
ngnWWqnfgqtfsrWftqsrFWPSdSSdRCTHRSwpRGTfGmSG
|
||||
VhJhVczJQcvbvvlhBpvlPdmlwHRTGHSRPTSCRGTd
|
||||
zVcBcMhzcVcvMJJJDpWrsqrtrWLWsgZZFtFD
|
||||
fbccrJlrffTwJDJTtBtB
|
||||
hRNNFddsgsFPLLRVVwthMCQTtBwrtT
|
||||
jrsPGLNjsqPlvGbZbcvScz
|
||||
HFPmmgQrQzFgrLVPPrLFPNDJNJzzcGbJTbsSzbGGNc
|
||||
MtvCMhJBdnMhwfhlwnfBfMDCDSjGbqDNGNGqGjDDjsDC
|
||||
wwnhhdtBBptwdlhlRntRldJFVWRFPmWZFmHRZZmFQPRWmm
|
||||
WrHNNTBNTTTBwHHcSTrBnSzJPFnpJfpLVfpDVdJLFJLFdD
|
||||
hRthQvhRQlQmDpfVJFdLlLLj
|
||||
hMZZbCMvgQgBTBGNGDcWbr
|
||||
HvQjMRMTzjsCQzHTCFfVVZLPVvfLfPVpZg
|
||||
GtlbBtSGlSbDdStrhSFCPVDgZgLLgPpPJWPF
|
||||
rmwSbcbcdbrbGljQjCzCCwnHRqQT
|
||||
bbgNSHPPgnmMMZtNcMpp
|
||||
VFzFDFVtCBFDCVFdMlhZMhdhmhmplwZL
|
||||
JVtBjGRFRttFCGDFGJJDQQgSgTWPPfSSfWbQnHvPWW
|
||||
NvdBpwNvGNFvpBGGBmLFblrtVTwDttlhtlblfQbQ
|
||||
SCMMsWCMSRZCqsmWcRWgRRsVtlrtrQbtQftThrQTQtqrtQ
|
||||
WRscMgZJJCJWzZgSWNLFdBNHGzpFGmBFFG
|
||||
qghqRVzhLNRLqzLhVztgQdLFdrccCnSpcZdSZcTS
|
||||
DwvmHDJDsmvDGmHbQBlslMDDCrTCnppTndrdBrFnFTSdCCnZ
|
||||
GGwJHlGwwvMHJljwwDMVtfhtWWhzqVPPjfQRqz
|
||||
BsDMPrqPzsDwwCLGmqjpjm
|
||||
VfFJQlVQcvfwJLJCJppLNp
|
||||
vfcSHCglCgbgbbbFvSlvQfPsrsZrPzZzDWWStPhtZPDP
|
||||
gjMsnFgbnllbjMfSZBHHtpHvvvFwhv
|
||||
DDRZDLdVCLNLJwBCShQHHwwBzv
|
||||
DNJNTLJRTqWmjWZnjrlmjW
|
||||
ZTSVSFZCLTnvzfzqvnNL
|
||||
PfPcJljfMpvtlnztvQtw
|
||||
PsJMMMWpGcgMHMfjRBThrgrTbBSBFdVSTF
|
||||
GccBRWjgtQqsTcVQcw
|
||||
JhJCMJHPLffMChlfLCLHMMrDQsQqDVQsqTDbVvGqDhhzqD
|
||||
dHGlfnCHlJrNmtdptggpmW
|
||||
wnDDSBCSBSDLzLLmHLrlwlmpTTqzGJJfpjfjNpfqbpbdpG
|
||||
MMRhFWWRvZPZRZQhFZMVhVSNqjqpNQffJjbjfbjdTJbp
|
||||
VMMsWcZRWgMPvRSrSHmsrrtwSHnr
|
||||
TQchPTgjBcNgPHhhThtNzQdzdsCmRDJnzCCmCdCm
|
||||
vllVwrfvbSBVFSbVGwlrFGlqRCDzRJCJdzvJRzsdLDDLsdCm
|
||||
VrMrqSWbfqWbBhhpWjNTttpjjP
|
||||
rsfvSHHcvwrMPtcQZgnDhGdvJzngLzzJLJ
|
||||
lWmVlfbCCNFCpBCmTpFFJgzhDLGhmRGhLhmGdgGR
|
||||
pNBfflVTNpfWTWbWWbjNVqBsscqsqrZSwMwZrMPZSZrZrs
|
||||
PJPHPJmhhHhlHPQgCndngTbWnqCWDGTD
|
||||
tSwccFpFqwMcFbGFWvnnWvCW
|
||||
MwLwLMSwpNBBtctSctfhZHJQhhqmlRlZRNPH
|
||||
GNzdZhVGvtGZVVgGgtfHHWhpLPPpLWpWWnHf
|
||||
RjwqRcDTvCrWJWWnlLnnqn
|
||||
DbrDDwwBwjjsrbDTRTBmwgZmgGgmdttvQvQFSQGFtg
|
||||
jRgcZRfhmHfZjPZRgHffLFTzzddBTBBFzLDZzBTF
|
||||
VtsJwSbcStlwMqbtwbvWBWddGGdrFDDWJWrzTT
|
||||
VwsQQvlbVbVlbNllVwbMmmpnjpfChfQpnhfcCCnH
|
||||
dFnFjWjTQTFzFWPWPgqhRQRqgVhRqfRqQJ
|
||||
bStrbpmNGHSrBDmrNBtHBhMVLLqLqVVglrllPVLgPg
|
||||
tSsbBDmBbbGmmSHDbtmHbtNCjnzscZccjnPcTcdzWcvjswFz
|
||||
lFCjDhqggMlDvMhFDgqFFzHHwHwwwTpLBwmwqmmpBpwT
|
||||
GPdPnStGncQGNStZPpBmVZmRmfzTRmVVfL
|
||||
tWtNdPWzsbtMDCbrCbrjrv
|
||||
BJHMgLlcMTBLCtbqmMDGppmmMM
|
||||
ZFPsrrdvwrNvrdNZsvhrrzzRSmJRbJSmbztsmpRSSm
|
||||
NwhfPZFNdFQPVQdvZFNgjglJLTCQngQWllBcTT
|
||||
jGlQQvQvpRQRGfnPLfcfGTnP
|
||||
BMqmdBVBwmFdVMFZdcTPqgLnnggTTLSzPS
|
||||
FVtMMVcbZVrcZMQCHjHWJJCJDvrW
|
||||
rPPwVwbpRbbVlllTLCTRqTLL
|
||||
dNdZssBBCBszHsjhDTQgqLDvlTgDZgll
|
||||
dSsCNNHMdsdWWWmpGfmPFS
|
||||
rzCLrsjgZjwcwSZc
|
||||
wNBNRJpRltHNWWRHBlGlJtRcTZSVBmZDVqZTfBVVTDTVTD
|
||||
NWPtGJPNGWHvpvtwvWgzQvdvQQzhnsnCvCLM
|
||||
HHbJhzddMPbPgnDWbZ
|
||||
BLnjLNvBrrcvvvwnwLrnqrgpPRgRNCWgZDPPpDgRpRWp
|
||||
jtsBqScStfJQnnVF
|
||||
QVFSVgQFZZQlQqQSlgQpRppSbRTSTppJJbRpLb
|
||||
cGwCDwjrnrGvzBzGnwwvDBjnpLbsLTTqRPbsJPMJMWpPns
|
||||
tcGzrCdtGdQmVZqVNQ
|
||||
RtTRhncVMTVccShRTctLdfPdJpLPqJhZphHpJs
|
||||
BzssCmFNWWqWwqwPLH
|
||||
svzvvsmmFBmsggrGlGMVSMtMRRncSQScRRRl
|
||||
rmmqrQQwLbbGrrGr
|
||||
cNJzzzWtWmLCGGbLWWbv
|
||||
cVtMppchzMBVMcNJcMsRwqZFMlgmggmRgg
|
||||
mQsQBHFMrbddbRqH
|
||||
NzhcQNfNNtzvWwZdSrgbrprPrwLbgb
|
||||
zcJVhTtNNcvcfVZmBmQMGMMljTCmlB
|
||||
FlldqjSlCgfvPFfvFF
|
||||
rbnDtVBMbprTsbVVcTDTrpMcmNwgHPgghTmNfLwvfPNLwhdT
|
||||
drMppdnbbtQDBtbnsBbcrrtbSqSSRCjlQZWllllSRlWRGCCC
|
||||
nqdCsqbbwdsrHFVJHcwFTc
|
||||
jPPjtWjPWgRltRLsBRrNpHFDHVFWVVJNNHrD
|
||||
fgllPGQjBffLjtzSsqvbSSzGvnhS
|
||||
zsVBzMfHHnzlwwVlqcJJFT
|
||||
ZzRLvLDzQzTmlWlqWRWF
|
||||
GbQQvpGvSSpjdQjSQZpQZGLfrgBCsHzrdtCsnfCBHsBgdH
|
||||
zBLbLWzqqwLMnMZTnHlnsHTvFlFHNT
|
||||
fjhdcrjjdVdrGSmmdfccGclPvlvPTlGHTFgNvNgqFFvg
|
||||
pmmcrcRrjSVJchqVccjpRwZMDwCJQBbLDCCbwBWLzL
|
||||
TDMBgBgLlcjBfMfcVJVmGnnJjvPVCPVv
|
||||
zzptqHstJqFzzdJJZNvNpvNpnNvGnNZm
|
||||
dHszrWQhdzHQqdztwQBLSfglfDbfJlJTLg
|
||||
VTmvrldtGGwmlvmGDHlLnFDCCplFQHLH
|
||||
ssgjzSzzJCQSSFVVQF
|
||||
WsRWhgVqRtfvwcddhc
|
||||
bdlDwznhnNlffMcPTPfzzQ
|
||||
srCRGRrZCmVTBfBBfTQcZb
|
||||
brSrrGvRVvWmRsrHrWSbjNJwdDFhnNlwtlnSdnhN
|
||||
QQqqRfdQQSdjgPmZfBmmPgRhphphJtLmJhTJJhVbTtLhTb
|
||||
vvlNGzDDDcslcsGDlWHtCFVpcCbThFTtbJFtCh
|
||||
DrMGlzMVwNGWsWMHDMvlzlMfZdQdQPZfSZRfdrPBfqRZgj
|
||||
qVHfHNJCHVvvFFbfFlHHnCQQDhLnhhhPZrZnPZPn
|
||||
mSMszWRMQmhqrnZL
|
||||
GjtzjSSdRGSjsRtdRMttgGgsqqFNfFcGVvVVvlbHFFGFVFwb
|
6
day03/input.test
Normal file
6
day03/input.test
Normal file
|
@ -0,0 +1,6 @@
|
|||
vJrwpWtwJgWrhcsFMMfFFhFp
|
||||
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
||||
PmmdzqPrVvPwwTWBwg
|
||||
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
||||
ttgJtRGJQctTZtZT
|
||||
CrZsJsPPZsGzwwsLwLmpwMDw
|
|
@ -1,3 +1,129 @@
|
|||
fn main() {
|
||||
println!("Hello, world!");
|
||||
#![allow(incomplete_features)]
|
||||
#![feature(iter_array_chunks)]
|
||||
#![feature(generic_const_exprs)]
|
||||
use std::{
|
||||
fs::File,
|
||||
io::{BufRead, BufReader},
|
||||
};
|
||||
|
||||
type Prio = usize;
|
||||
type AsciiChar = u8;
|
||||
|
||||
#[derive(Debug, Default)]
|
||||
enum SolvePuzzle {
|
||||
First,
|
||||
#[default]
|
||||
Second,
|
||||
}
|
||||
|
||||
/// Just a helper to make sure [`find_n_entry`]'s input has at least two elements
|
||||
struct Assert<const COND: bool>;
|
||||
/// A trait for truthfulness
|
||||
trait IsTrue {}
|
||||
/// A correct assertion, of course, is true!
|
||||
impl IsTrue for Assert<true> {}
|
||||
|
||||
/// Get the priority from a rucksack entry
|
||||
fn to_priority(char: AsciiChar) -> Prio {
|
||||
match char {
|
||||
// a..z have priority 1..=26
|
||||
b'a'..=b'z' => (char - b'a' + 1) as usize,
|
||||
// A..Z have priority 27..=52
|
||||
b'A'..=b'Z' => (char - b'A' + 27) as usize,
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Convert the line into a list of ascii chars
|
||||
fn parse_chars(line: String) -> Vec<AsciiChar> {
|
||||
line.as_bytes().to_vec()
|
||||
}
|
||||
|
||||
/// Given an array of size `N` containing lists of chars.
|
||||
/// Find the char that is contained in all `N` lists, if any.
|
||||
fn find_n_entry<const N: usize>(lists: [Vec<AsciiChar>; N]) -> Option<AsciiChar>
|
||||
where
|
||||
Assert<{ N > 1 }>: IsTrue,
|
||||
{
|
||||
let mut found = lists[0].clone();
|
||||
for list in &lists[1..] {
|
||||
found.retain(|char| list.contains(char))
|
||||
}
|
||||
found.first().copied()
|
||||
}
|
||||
|
||||
/// Split the given [`Vec`] in the middle
|
||||
fn split_line(line: Vec<AsciiChar>) -> [Vec<AsciiChar>; 2] {
|
||||
let (left, right) = line.split_at(line.len() / 2);
|
||||
[left.to_vec(), right.to_vec()]
|
||||
}
|
||||
|
||||
/// Solve the first puzzle:
|
||||
/// Which item is contained in the first and second compartment of each rucksack.
|
||||
/// Find the sum of the priorities of these items.
|
||||
fn solve_first_puzzle<B: BufRead>(reader: B) -> usize {
|
||||
reader
|
||||
.lines()
|
||||
.map(Result::unwrap)
|
||||
.map(parse_chars)
|
||||
.map(split_line)
|
||||
.map(find_n_entry)
|
||||
.map(Option::unwrap)
|
||||
.map(to_priority)
|
||||
.sum()
|
||||
}
|
||||
|
||||
/// Solve the second puzzle:
|
||||
/// Three elves in adjacent lines build a group, each group has it's own badge item.
|
||||
/// Find the group's badges, calculate their priorities and sum them up.
|
||||
fn solve_second_puzzle<B: BufRead>(reader: B) -> usize {
|
||||
reader
|
||||
.lines()
|
||||
.map(Result::unwrap)
|
||||
.map(parse_chars)
|
||||
.array_chunks::<3>()
|
||||
.map(find_n_entry)
|
||||
.map(Option::unwrap)
|
||||
.map(to_priority)
|
||||
.sum()
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut args = ::std::env::args().skip(1);
|
||||
let file = args.next().unwrap_or_else(|| String::from("./input"));
|
||||
let solve = args
|
||||
.next()
|
||||
.map(|arg| match arg.as_str() {
|
||||
"first" => SolvePuzzle::First,
|
||||
"second" => SolvePuzzle::Second,
|
||||
_ => unreachable!(),
|
||||
})
|
||||
.unwrap_or_default();
|
||||
let file = BufReader::new(File::open(file).expect("Input file not found"));
|
||||
let priority_sum = match solve {
|
||||
SolvePuzzle::First => solve_first_puzzle(file),
|
||||
SolvePuzzle::Second => solve_second_puzzle(file),
|
||||
};
|
||||
println!("Sum of priorities: {priority_sum}");
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::io::Cursor;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn example_input_first_puzzle() {
|
||||
let reader = BufReader::new(Cursor::new(include_str!("../input.test")));
|
||||
let answer = solve_first_puzzle(reader);
|
||||
assert_eq!(answer, 157);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn example_input_second_puzzle() {
|
||||
let reader = BufReader::new(Cursor::new(include_str!("../input.test")));
|
||||
let answer = solve_second_puzzle(reader);
|
||||
assert_eq!(answer, 70);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue