Add 2022/03

This commit is contained in:
kageru 2022-12-03 13:13:30 +01:00
parent 6ced50128c
commit 67f7c4c47f
2 changed files with 356 additions and 0 deletions

300
2022/inputs/day03 Normal file
View File

@ -0,0 +1,300 @@
TZZjzzZLfZbzgzZNNJZjwCVbwMmhwCbBpCMMBCbM
qRQPDqnWFQDtCCBQmQwmGGVG
FPllWPDPrncZsLVrgSZTSZ
RczPzRzvflVwfplrZQglmmJJDGQJ
nFbBWWFZbZtJDjmgmqqF
bnMNZWnWWHTLBBdwcCwcPCwpCSpPLc
CjpMtptpChnpMnCSGjSShMqpTVVWFFTVNVNLmHwmHLTcFnVT
fglsGJsJssBPszvddgTFVTFFFBwwTVVmHVFF
JgJrDgsPfMDhGhCRQC
PSMDSMhwmPwqDMmzrtttNQvNFmFFGFtLld
nRTCCQjcTVJJTVTbggTnFvtNdGdlFbFvbHtWFLNt
gjfTZZCRCnZJjJRRQBCBszDMPppfsPwMzfMqDsSs
LTmnZTgMmbWWGWZQZb
cHCCHHwsPtsHQtWfWjtGlWjbjt
JNQQzzPwwHsRwNSRdnnddqqvSMqMvDqm
CZFNGZfHvgfgZzFZfNfPVJMBrqVhjrrrhvvSjbqv
czlDnlcDWLnlnLQwTbqJqMwqjhVBbhJhJJ
RDQTTWzLWsDGsNHNNgpZmC
rWzbWWMWcrCbfzbwpDrQNqmqNwTNBN
FvsVggVvLGsHQHfppmwTNBfN
VGhsghvZLjPSLshgFVPGFPVJWCtMCJMflJtdJWCMcttljz
bgScSbJwPNqrQLCgLg
BzTsRVGmTDBZBwRVmzGQNZjrMCqLjWrqWNQNnr
GvdRDdzGzdvdDdmTzfwhfFlFPlbfchvlpl
JlqjMtqtSGGZjqSMlmvZZbChRRQbbPhBhCbRBr
dLfzFNVfLLzwznLdFzzwWQBQVBhWbJDrCPVBBBPP
HLgdNddfMjGJJgJt
nZHZDJHLTDnrHrbGpRrRzR
QmsBjdmBmqQzpRbZbp
ttSjjjdWvsFsmBMBfWWMMtwCNCZJvLCnnnJCZcLTvnhN
bbgngMMPfnwPmPgPDPNZMtptHzHtRRvpVHRz
rsWWhJCWqBHBNJNZpvJtzRvF
rWBrjGGsQQWlQcllCDLfwHQTDDgfQPmnDT
lWDFllmGhbWzCglHHlRHMqCq
fBtjwNwfJfZvJJBwBJZjVLNnnnMRVTzgMVVqTLzT
vJQtJrprvrbcdcpmzDDd
bmhbRmhjwddjHMGHnNtHNQNm
nBzVpgFnzVgLpFfHNGqtGfLGGNfH
BTgVVPPSPBSVlTzpzsbWhjWjnhWZlwsWZR
lBQVBBMDTMSTHHCqgLHCzv
ccWcNhtfpFvphspFcttHwwqzmdsCqLgLzLPdLL
tNjFZpnFtJNZJFfjJNpNNFjVbVDMVGRZMGlbQlQrBrbvQr
bRJtJRfRdwRBbwJzhGGcHpwrpCwDclpHDD
hSgnjPVmVVGcWVGWpV
STmFgSnPqQTjNmqJftLszfMqBhdz
WzjrRLWnlRsVRLLwtGmdhNBmbmwN
ZccgcpMfQTpgcpDDvNbtdhhhMGHtdFBNHB
vpDggvPPTvZTfTvpZcPQSZDsqrlrnRGjsrjRCrSlWRljjS
DbZfRRZfPjWDfDntnzggvgMLmVqMMmlLQjFM
NCJCCfBTThBJssSHcgFMlmMvlVHVqVgmLl
rfTJJcJrJdShscSBZbtpnPRDDdnPDRbt
zrTfLGVVLZsrsJcGJVsvQMhdlmMPfjlhlflflbDP
pCWCwRbWBgHlDhPMDPRjjd
pSggBwBCNSbrJLVTTVNG
CNCMSMgQCgQNQhfMGSGSzgfGJhchrHHwBlnJlHPqBBrHwsww
ZVWDptmTtbptpDvZWsPlwblrJPbnHcqnJwrP
pRFtWZVVpVWWZVWtQLzsLQMLzCfFsGgz
MlcpDmgWNlPqcmmqmcgcPdNDRjhLSRRVLjRRShGFjFWRSLLW
bwQJnzbzJTbvMJSHhGGHRjzLGRjR
wZbBwwQvtbtQtBbnvJwbCnwmsMpNcccgDmdPcsqqqsDqCc
zMhMnRbZMpCblpzLlhJPRjDFcQPtJQPcDdWj
mNSGvgdSsBGwwNDvWtQJWjJWPHFF
GmdgGdgfqqNBgVGrbCMhrMfLLflhpL
PVHHPMLMgLQSLLsnHBCZfhzpRfhTpdRppSfdZf
rgmWvWgFrmGlZGGfphhpZG
bJgDFqFcmmWDJWbvJFtMCPQsHPHBVPVCQPcCsQ
VJJHNNmtGqRmMVVwRfTCRfnQpFTFnF
vSvjSvbBzvldhcGwGffFCQCwgrFd
jLhhlGjvczDhLSlDWjLzctHMZtJtHmqHJZqWmVsMqW
LhchvRJtHzhdTTdJjQLQjQVVnjSmLMLQ
NFpClSPqwqNgPPNPNglllrBQBrQVjQjmBQnfBfjQjC
wWGGpSwSZNpNPFDwPDDhzDdvbvJzHHJbhtzv
gtFtNNmlGzQtNPttfDMwwfbbMR
LVcBjsBjFJrLFWVrBrMbbMSSPpDPPqVDfpPb
JrCBnsdWJJrHZdFmGglmmg
BmCCWSLmWsmtCCSppSmmpcpRfMZjjBgJJGGjBwZfgjZjFwJw
TPTPnTPrPVvQTTzTVdPMrJJZwggjfHwJJgjHZrJFwH
NQvvNnQPDPhNcstcStDMWWWS
hntthHVQVbbbSzgjgZjngjRD
TTvJJCldFJTvFFTBFlpTzvvsRgZWGWSLGrlWWRSGLjRGjRDL
TzCcFcvcsCmqPMQwQPcwPM
DltVvVLvbGPDhjRhhjSZjSSL
CffszNzssHCCqJjJnqRnpgRpZB
CszNWdsfDWtZwwDG
DdbmddmzDDNbsqzvzmdzsdsRJLjqtVWWjWJBBVBwVjWJtB
CnFPCcCcPFFFGffjjCWBVwwtRwNwCw
QNZlphpNDpHsDrvg
gdHSCbCTGgQbtNLvgrjwNMMwrr
BnzVRHFZVHvNhNRNMMhW
zFzFcnlZPHlbQdlT
GmddjTrgFgmgWGmFvmmmFFfwSCVpwHVrHpwhwrpCBfBC
tctRcRRCMtsMsMDPlDtDbMzbQJJbhwHVQJhBHJVQHBbpfB
tPDDtcnRRqzzcCzLPMLPRddWTdqgdZqZTZqdGmjFWv
sWvfGlGqsSggNcNcmf
JBwwVccFJtrzpMwtrMMMLTnNnJngJgQNSgmTJgLN
wtPMHrRrBwtPVRHrrHVPZvqDWWWcsGsvqDlZZd
jBjBBJRhCJbjffCjWlDfmbFQmZFgPpmmgpmbSSQF
dsqGrttGhswQmqpFFqQw
THdsdrdTHzLLdLTsTdtHNshlDffDCHJDjfBcBRlJRfjV
lDNlPBQlccQttcNBcDPvFFJmdTwtFJFdTdFgzg
bCWMLfpZLZLVhMbGLLsVzTwmhvTgSJHwHdTvSFSwJJ
RCZZVZLZWLRZpZsfpVsscjzQRRPQcPcDQzPljzPB
tVfCLfRVCGTRCPtRMPftHGqpnnqpdzqNbHGdqzHd
DlDlWmvDWsWJmMmmsWvWDlSHzHpnpbNqnbnrppbbpprJdd
DvhWDFBhvslFSDFPVPVBfgwgfCtMLV
FtlLQqlDnMmFJRPM
hwlpwBphHplpdHfZnjRRjMmCgfPZgJ
BdpwvzcNpBrDbLTslszG
RjPhcnNzRcLcFlsFNlFRfTffdhJhSTVqqSdDMVMf
ZWtZgrgPCvrbHSSfMqJTDWpdMf
vBvHgCmgHtgvtrHbwcLjNLNFcnPBNcPLQQ
FZhtMtddjCGQSVjmjC
qbvcnvPqBWcPVVCTCmSQLVCq
vVBVzBNpDNhgdZDg
lNVtllQFQVnQNrZpCtQCdZZjSbfRbcDjZqSfTqDffJ
HzBJBvPJLWHvwmBwHWRsbsqfbSbzbTbTTRDs
vLwPHLLMGHwGBWBHLvBgBVCgrQQpdprNVttQJrpQdQ
TbZDQlZDCHjwtbjnRSTRTPPTBWWWPB
GhpgpLJFcvgcMRqfBBmSQggzWq
LcFQpGdGsrjDDDHssl
qzpPgTpnNWRfTBBCWf
rLFsVcFltVBfdGClPdGf
vmtZvwsZrLFFFrPDqzDvjzDqJMjv
lDlzzsMPDssjsSGTjlTTsqbbftfqNwJNfHqqbfDmbW
FFgpFndhQLnhnLRpQCLnVrgtHttvfqJmNbqWWbJHNHtb
pBFrVVrmZGSBBZsz
bGMfcMCPPCtcLqPLCRqPZnjLVTdnjjWsVLHVlllVVL
SwzDBmzgwFSFQzvgBrgvwFdVHjHwWHJsjnVsTWVHHWHJ
FFrBNpQWpFrgFSmmSpQmrQQNZPPRRbfGMqCGcCPGtMqqcZ
PBhcVpBRPcqHfnjRRJJl
GsMrsGTszsrMdnsGZmzMsCfDtvHfHqvjJlvdqfHflvtq
gmrGMGGmGgbmsrrCThnBFSQSFVFhSnVcpg
QCDnqdqVPswpJZMLLCHZMJ
RhchlRBRWlLmZzVWVJGV
VrhfhhBgTcRTVhdDFwdwqTDnnnjw
jVsSsLjJJmSLlmJSlPthrhHZGthLpZLdWZ
nqFTFNbRfnDCRzfnzqPBpGcdGHttWHdcZGRrtchh
bqNzTTbFTnwnTmPjvwsVgQVjgl
BBlNWWMlVWQlLPNjVLWWGMQcJCscFSmwRCSnCFJscwcw
bbHZHvHpHgrqSCcwvSsFFRsv
wwbhdfdwZlWljdtNdW
NmlnhSNwzjjswNvqqqbjgddqtgVt
TQMTMrFJHDFTFBrTMDMQDQgdnCVggtpLpvggnQdvdQ
fJPJHrFZFBHTDPrTJHZrFswsWnWGmmGNlwwlRsmSZN
bdntqdNMQCtcnnbqtNtcgQWWjjFDjhSBSjJDWSfDFWBc
RwsZzRvZQPQsGPWjphzpfjfBffzf
GPsrRQvvQlwlMnHHlTgMNT
TnnnQTLnBPQMRMpgGRLGwp
VNcvvjjVczRRjsZvvqgmpMGwZWZmJSqwwW
tzvsdrsVdFndRDbdbC
qSfbWlZVPdWmmcjvjjwrcwQm
TpTTpPJzTBnNsshnnTsctLwjvQMzrLrjjFMtjv
NPsNBhNJhBJgNnqSSZlSdVgVGqdq
pQsgcsdSpmsJctQhrhqDHPjrjNQH
VVGGbfvvMMBZPjjHqVVrTjmC
fZbfnRLBfbZGblbfMZnBGZFlzJcRdttwtJtdzmdswcJJdpRs
TDqDqTZFFqDqdDvSMwtCbjbFjbmGGwCffG
hQQnchQZpQzCfmGtblfLhw
RnNpRPrcpsRsVWHSDZSqWrDJ
gLqgTfgwTCwmgWWrfCcRdvBCGGBZjGRvvZ
MFbPMPnNzFbssQFpQNNScQSdjvBBBSRllBvZvc
sHMHpzsJnpNMNnHsnMJbWLVwmwgVwDdDJwgDffrJ
QGdbSLSzBVbGRQrJfllDbnfpJfltJl
ZMwPCFPwPmFgCFvZgZmcFwcPhJnphhscQnJhJnsptnDNthts
PHZgCmwggvMjZFWjFvQTBzRGHqSRRTdRVGGQ
zJRppmjPMCjJgtBQWtZZgPtg
tTFsltFtVGWnllQBnn
swLfbFSvsmJCCSRCRt
MZVRQzMwfRQgQQDvncrvrSHHdSfS
tWWBhJbhnBsWCWCGdDbvSpvDpcrrcqHq
NBTCBJsCTFJFjzjFMwnzLR
RBhlNZsgrZNdbfrrmFGbjb
ztJLFLzLQDtnnCLLCzSTwzJmqmGGjddPmSPPmGjpdqGMPj
JcLLFVtLJDTQCsZgscvlWBZHgv
hznggMvgwwPCDwhnCMWsDlHjtJPjtjrZlljtPJjZHt
mvvGVVcvHJtppGpS
bVQvQLfRRbfFFwhMsFshsqsFzM
BBRWFZHWSGRZvQtQRpRtHHBjTTcqhzfnBcfzchjTTnhncT
PbwdVMbmlDZmNPTfjrcfnzjf
sMVLmsdmldLVmJLCDHFgSJgZSSGHtFppFZ
SGwFSCvtwjjDvDGDCjjDCNRnzbbnpnBppHBNhbbTpqbB
rBBllQlgslmnmbzqRm
scQsLMZsPMVfMrFwBZtvvCWFtJwS
nlhLFFSggjMnLnLHTPlMTSBfRzrMQBCBCRDDdCdQrzWr
ZwFcssmNJqNNcZGFzdBrRZCDCdCffDrR
mwbwGNcwwpSjPlFgpPlH
HsvNvddbZJDDsNbDqvsqNsqnjtllczmjjbBjzjQzjlncnc
VTCTPGhpwGLfChfGCpTrnrgQrlntrQGQcrcgQr
WpPfLTPWPhMPhwCNdStvSdWHHWHDdH
hjtjnnbLMCwCMhbgfJpfDZpSsGHDHNSmsf
BqBQBccqFrWcPTWdWTcHHNHJpsHpmDDsHHSFSD
QRcPzqWzzzrdzzWvTqQcBcRgnhmhmCbnhtvMmggbLLgLvg
zdTNLLdRdTPFFJFllQSzwJ
mhmBmBBjtjhHmjvvBhvthThnFwQwwSnWbGwlQbQtnnGJtS
cTvHTgjCmVHZgHvhHHdRfMddfLsrRfZNpsPL
lfLnsHhHJBBfBGrBpS
VPjqqwVVqNjqQVVCVPNNVQpGpmppcBcDmGmpsmsDsCrD
QdQNFwQdvjvRqFFqvRPqLgngshhRJsLnHLWgLRhh
dwRwQVNwwJQNnnhmBtZZdCZhFBrP
MMHTvMjsWlmhhBrrrlhm
jWTcWWDWsWMTgjMGsHvGGMsnJzVNpRQQDDpbJVbnnwNrnV
NcRvJCGnWnNMwtMPlMMF
rqRLrVmTrjjRmBqjQLrjzZgMgDHltVPMgFbMFDbPwMwH
fzjrZQSQzBjnvfnsJcGspR
fHPFZPsmffftTpsTqJGhhDjC
bbBdcbcwNGzzbNdBdcNQqJDDTJhDCNjQpRRCJT
VcWBbgBMWbMdzPmPtGWZmLWPFv
zDWFvgCCvWDgVVmrZppPbCPZ
wdqsBhcMdbJJmlBgHg
hTwTQgLNMTsQstjzvSTTWjvfRW
vGGwWsvjpsCShrjTCCrj
CmMCZCtqzmMzNgZgdZzSrzPFrThnrPPHTcrSnH
VVMtQZdgZqLtqLZVMffwwDRCLGWlCsJvwpwlRv
fJfhpVVzMpgczZSqSSnZ
NvPNvRsmNCRsbsvNbhjqgcDZSqSFFmgGGnZZDg
TChvRBBRPsJLTMHMQfwV
CvNPsrfrjvwwfsjwsrNlgDzzBmgmNhlNBHgg
JVmdMJmcMTSqVlnlnnzBHBGg
SmLqSSWqbcbbWqJqqFcTJfPwPwtwWCfrrPrsQvQZZf
hMRnnvfRntfvcGqccDqhHlSLSgjGLWlLHlWPgWPS
bJsssbJFCZsQCsdQFzJWwSPSdSgdWwvwmHWWmj
QBQbTzFzrrzTTtfvffcfqTDM
fdcRNRvdNwczRFLcvNvzRvDSjhlmhclShjSnmMlSmDSS
VtJqbCqqVCfQqVpJHqZfmGDhgmjlMHmDllmggShG
qqtqTpVqJpVPZbffWTNfwzvRrFLL
mmhccmZGNcNhWNmDDGCmvlLWjpjbJRSpdrnzzbRzSjLJpJJz
BQHBgtZQqwTTtfndpSJJbJfbjjRp
THFVBZqQsqTgwtswWWlMclMDNlNclVVM
GPmLbhQmDbbDHfpCQCfdCfTr
SlWVScMgpzFSjgSMtBjTrNNdrfjrHrBd
ZzzsWWnzWFcsRqpJmPhqsw
cfNQdfdRcNHNFcqRcqqdWmLQgMwwMssLggpLLsmm
rTtGGhBTJSThwssmgssGzpHC
VbTTlJvVHbBJthtVbrJRdFnjljqZdfPqPnRdFN
tLtpstBLtzPnQBtFBtMpnpQPhmGGRRhMhGNRRCCmRJmmbvNJ
ffflfqqVVHllVHDVNVZHlTDGSGbGSvhmvTRCCSTjShShCv
DldDlZgWcDdfDZggfddccsnzLWsnNwPFQzPBwLwzzF
FpRCrNpMrCpNRZCrsCpZrCpqvmJnvnLPBwfvfmvzBJnwswBw
DbbVStQgdbJmLbJm
SHlSShlhSHHWcWlghFMNqcRqcZrFpFppTJ
QFPnsjqjtQPWfCZZlZbT
dwrMzzWRVWJVDDlfDlrfDlhl
BNzVdLWwRNmzwWBRVBVzSQQLtnnqSqssFvtQFsjL
TGfDmTcCMMmDsCspRbCCbsMJvWPvSSjZSwhFwwFgjPJZwG
NNHLHBNHrgVFFjJwFJZLhv
BzzqQQnVtrdnVNrtVNBlppbbDCRmdfggRCgmTscf
rmbcvbRbzrsZZCCNQjwdgRGjwGQGLVML
htDnDtHWnWPjVHQdgdNwHg
PFFTlhllffsNsscl
hFSlSlShLppwNlwH
fjSvvfbzBfDjPQvBDqjfsBGdwwLppMHmmHHHbNNwGnmG
SqzVBZDPPDQVFWgrWJTtCg
ghlqSlFhCFRgFsssSqjhlsVsvNPtcNdndctVzdzJPndQPnJd
TwfBmZmLwLZDfWZTbGQPtvzJzdLNcLdrQrcL
GmGwDbZHbmpBmwBWmGDCpvShClvSjgMjRpMqjv
vDDQpzjbqDQDmJvmRFBgNdWcQtdcHcctWcdN
hTfsLlSMCCSCfGCPlhfnGtgBcBHBdgLdVttvNtBBdg
lZvlfPffnZSnMzDjzzmZzDbwqq
cwgNgWWNccLcHnLGnnHD
JRrPNPNlGHPDtzLv
jmBJljNljRZZbpQZBgZp
WWcWLtwHcHLwWRwPWDwZGrCMvvFvZnDrvF
JVVmdbZmCvzGCvzm
ZQgdjVgdjQhJZQbhblbNQqjJLsPSsppscPPWhhWtSctpHsHs
fZtsGZsQQtpFrLqZrLQGZfHmdBjSMNmmRNddbFcMcbmBcc
vnwnlhlTWllgnJVTTgDTnvTwdcjSbRdbHMdcMMNdVdBNjRHj
zDvHnPvTwhnDDCZpLLftqzffst
hdCvWvQQlvlZzgCcGgjCPSLC
HMTHMDRRtmBNtTRDrRmmPcjGPPrdSzcLjjzdfzzL
tqMsNmmVMTNmtMHbZbnJdblZnlwWbV
bzQNPzMbVrfPfLrjrj
ZvZnzsTmnlnTWnJTvSHSsJDvBrdwwwLBtjrBBRtjwHqqrfLf
zpWDWSnnTnJmDzSMNchQcGNMQpQGGN
McCNssGmscnNmmsNzLwwLTSTRBJBBZLFTz
WTbhQbfPvWThFwFWJHBZWwLH
jThbtbPjvDDvDhqjppdcsgcGGcMmNlNldtNt
VsRLrPMPrrNRRDMDNsDMRdGCdGGZZZwljjCCjHCHQwcG
qhmfBgtqlfqzfTtggSWwbHjcwGjjbwwcTQCC
lnSfStzhvfvzFgvqsLJLrpPpFsRsMNPP
mFfWmmTbcFNFZWbcCftLCsCLGLfCGqGV
DQQMlJhjGqtswZDD
BpBhQSSQRSljRJRvQllnTWNHrWccHrNppbNZWp
llSWcPmCDRCSmjPTCCSPHtLrfJnwrJfVBRfJwrqB
FFFgdFdpGVHtVGwBtn
gMbbsNdvbsQgppppvvszvzWTTTlMCnlPDjTlDCWWccmC
fzMlGqVMwzSSPNRBrRZrFrFRGZ
blnlQnlWFZbmFbHr
CgttsQpstcCtnslqfjhPhVzMgMPz
SrSHtjrJQZjBpvNctmnRvnDm
GWPlhPqFfPsGwCqsnsGszWGwNdMLpRvLmRNcNpmRmvDfpMLM
GPCWWWzbbzqPnnCbPZHbQrQrQgVBVJJVJV
ZVhCwqvFZVpwdhLdqLhtvcGBcSNLRSRBGRBNGNSSmN
lTjnlnjgslsjJTgrMrQQjjTSGSpcGRSmDBNSNJcDSBbRmS
zMrjllgnPrlrnlWrQgTgzgvwqpFwZHChHvPwCtVptCVt
RTjjznsTsnnrzRrmTmrNNCMhwMrCNNCwWhCMGN
DvScpDDVfBPqVcSbDpbfHpqwCWGJCwCJhvFdFFwlMGJWCG
fhHPbhZSpDbDTmsTZTjRzzQz
QbVQvNrrdFcbcMvvdNrcGrrczPnPplPnfnpzwpgmlflRVwwP
jBHLRqZWtLLqWDhBLshBCLsHgpfftfPmmpfpwnwfwJgfpfPn
WCRhsLDsDLBChTLWHChFTTMdGTQGvGQcMQNGMd

56
2022/src/bin/day03.rs Normal file
View File

@ -0,0 +1,56 @@
#![feature(test, iter_array_chunks)]
extern crate test;
use std::collections::HashSet;
use aoc2022::{boilerplate, common::*};
const DAY: usize = 03;
type Parsed = Vec<(HashSet<u8>, HashSet<u8>)>;
fn parse_input(raw: &str) -> Parsed {
raw.lines()
.map(|line| {
let bytes = line.as_bytes();
let (a, b) = bytes.split_at(bytes.len() / 2);
(a.iter().copied().collect(), b.iter().copied().collect())
})
.collect()
}
fn part1(parsed: &Parsed) -> usize {
parsed.iter().map(|(a, b)| a.intersection(b).next().unwrap()).map(priority).sum()
}
fn priority(n: &u8) -> usize {
(match n {
b'a'..=b'z' => n - b'a' + 1,
b'A'..=b'Z' => n - b'A' + 27,
_ => unreachable!(),
}) as usize
}
fn part2(parsed: &Parsed) -> usize {
parsed
.iter()
.map(|(a, b)| a.union(b).collect::<HashSet<_>>())
.array_chunks()
.map(|[a, b, c]| *a.intersection(&b).copied().collect::<HashSet<_>>().intersection(&c).next().unwrap())
.map(priority)
.sum()
}
boilerplate! {
TEST_INPUT == "vJrwpWtwJgWrhcsFMMfFFhFp
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
PmmdzqPrVvPwwTWBwg
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
ttgJtRGJQctTZtZT
CrZsJsPPZsGzwwsLwLmpwMDw",
tests: {
part1: { TEST_INPUT => 157 },
part2: { TEST_INPUT => 70 },
},
bench1 == 8202,
bench2 == 2864,
bench_parse: Vec::len => 300,
}