adventofcode

git clone https://git.ce9e.org/adventofcode.git

commit
d7197dd18e5dc958120047f47f9db05fbbe3c16b
parent
6913c30f67ec131180e60bf8ab3b27ea70007972
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2022-12-03 08:14
2022-12-03

Diffstat

A 2022/03/input.txt 300 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A 2022/03/part1.rs 31 +++++++++++++++++++++++++++++++
A 2022/03/part2.rs 35 +++++++++++++++++++++++++++++++++++
A 2022/03/test.txt 6 ++++++

4 files changed, 372 insertions, 0 deletions


diff --git a/2022/03/input.txt b/2022/03/input.txt

@@ -0,0 +1,300 @@
   -1     1 DMwrszrfMzSSCpLpfCCn
   -1     2 RMvhZhQqlvhMvRtbvbcPclPlncddppLTdppd
   -1     3 tVMQhFtjjWmsFJsmsW
   -1     4 trRtvNhfJhSzzSTFVhQQZQhHGphP
   -1     5 CnLMBWLwDMgMcwwdngdHGPVTQGpTHZdGPGpd
   -1     6 LLDqcDgwqCMnLWqtvzrzbbtJqPjJ
   -1     7 wQQwHNQLmbWQbQRHwHNFBbwqPfjqlzRMGRqzpSfvPlzplM
   -1     8 nCtGCZZtsGsrtDMZpfMpSlMlvlZq
   -1     9 cJctJCgVJsCJnDTsCthGhGLwBWBbbQmLbgQLQQdWbbbQ
   -1    10 ZWnNlTNTnhhQQlDNdmmpwrrrqBwjwjZd
   -1    11 GzvlVRSfvMVMvGlSpdCCdjmfpmBCdsqB
   -1    12 bzlFlLzJWLHHttLL
   -1    13 SmzFhVDzrmSrszVDVhSVbhZcCZdfZNcnMfMbZnNN
   -1    14 PTTRGqwqTqWRwLgTLTZGnCbZbNddZCCtMcNs
   -1    15 sgPqPqgJgWWqjjwgwLLVFBFSVmvmBBrmJJDSvp
   -1    16 CBccfSBhcSBddfgtlJmmmwmPRwmh
   -1    17 FpTzzGWHWprgDtJlDZDPFR
   -1    18 HbbTzWnTrnWtCbQBbQqQbSjf
   -1    19 fPHspCjgwZggSvZQ
   -1    20 RrNhzFZFcNzFLNLNwQlSlLnv
   -1    21 TRFrcDVrrRmrhFRZzVrczqhRpjqjsssCpfHjsCdpsPfpjCMC
   -1    22 ZBnBTMVTSbGbTVTGbCPgqsgPtHtgCcPtBB
   -1    23 ldDrmnnNrzhdhfgcsHqcsfCcsCHg
   -1    24 zFdrzNdzQNDDhFdWldDrJTbZTbLZJVVVpMVWVnLS
   -1    25 pLnpQNhBbnWvbsWm
   -1    26 FrFwjlTPTdTqqrDZWbvmZbpSgmJWvbgS
   -1    27 RqDqRrdGFpGRFrFFdTNzCcHcHLHBzQCcNNGN
   -1    28 bvRCtbtCPfSGtCcvCbPNlglqgqlGZMzTgnlZnq
   -1    29 hrmWWFspsHWrzNwTnFlTMTwFFn
   -1    30 HpjJDWBQmmQdRffbPtSzdJ
   -1    31 GpHjFsjMFpCpMWjMGCqWmmqrWQtmthdbDbbD
   -1    32 fzgLTJwJPSgJgzSzPfhmqmQhQHzQtbQDrrmq
   -1    33 RNlBRwHfRJHLLfHTwLSBppNGvjNMFFCVpVFcvcFC
   -1    34 SfQnfSFHfnvMtQQSnHJtMffsdTlZtdZmtllmTlmlRRbBRLDb
   -1    35 hrwhWWwqzPrcCzwwzmPlRbdmlQDTPPBLDl
   -1    36 CpwCzrwGzNCWrJnMvpMvfJVFvQ
   -1    37 rCRPpgSggcpqrhPrCDDTLsMLDSDGLTMGVs
   -1    38 HdvzmRWmlHzwvWHvRHRvHJbDFsdMssQQVGMDTMDLVLLFLT
   -1    39 JBlBnnWBJlCqZRRqRBpr
   -1    40 GtZllZDlfDpGHZtZBGBZpDmzQzzCSVVFHmmmsPCQWWSS
   -1    41 JvFJJrwvNNcJTnbrTRNRSCzqwSsVPCPQqmCQszVm
   -1    42 JLMnTbLnMgBhDFDf
   -1    43 lffDhtgDJzCJNGGTzWTRRnRvBv
   -1    44 qpbpdwqZwqZSwMPSqdQcQmTRnWvnBnRBQBtVnTvWmB
   -1    45 SccbbwSbZbFPswpSZtgFlClLhgChhhNfJlFj
   -1    46 ClmCjCJBjwBVwJGjlGNFJlVMHSrfpDpTfrHMcHTppQVrHp
   -1    47 dRLZWLvWSHmTccWW
   -1    48 ggtqzmRZnmhghZhZghntdqsvBbjlbNFFBPwNNJNNCBlwPGBz
   -1    49 HZmsFZQpvZsWCZQvWrghGrhtgNzdHddHGh
   -1    50 fWSbqWDJVwcSccNzrNhcBtGcgG
   -1    51 VqVfTJnbWjqTSqbwDRfRvQvFpFLRpZsssQsCQZ
   -1    52 FpFZNfplSTJmbZzddGzhDrWh
   -1    53 LqLPPQjLLRMPqvjLLHQrLqrRWdzHnGhdthttGGbbDWhDDdWz
   -1    54 sMLMgvRLgscrLrRQvwmTNNfpNplglplfmp
   -1    55 MPVBmCmWGWRPPqRhLcnjcvjjcpjMvp
   -1    56 tzwrwsJlrldJsrsrTtrzrTtSNnLJSShnjcncvnvqnSFnqN
   -1    57 rswrzsbdwDHHbWZqVfWV
   -1    58 dVmmMTmBPTrCBRMCqFHSWFFHWzCvCz
   -1    59 jNqfGsDqtsjGjQjDlcJFFFznFtzznvtFpFFp
   -1    60 fNNhgsDcfNflqchVRdgVrRPRdVTRRb
   -1    61 HJPLwgLvjttmgHJFjwHgtlsBbNbbNsPpblspTllThT
   -1    62 MzmcRRrdDMVTzbhNNSszhl
   -1    63 mCDDVqdVcdDrqfcCnrFwtGwvngwvtWJtFjWW
   -1    64 dFDpmttBlvNNgWlglNDBFttmTGHTcSSJJHHnMsJsGGSdqcJj
   -1    65 zLbwMLVQbQRwVsJsSHSsHcJqbj
   -1    66 wfVZLPzfZZmpMZZMBl
   -1    67 PZHZMJSTBWHNWSHzVnhhfnhThhpnpC
   -1    68 jFdBBtrFjpfnjfnf
   -1    69 ccGrbblbGRDQMlvmQBvmBl
   -1    70 PCCTsnbPbHDnlDfDNB
   -1    71 rMjQltgSqtvMjScQggjfVVzBzFHzGfVGDLGBqB
   -1    72 vdtrMSttcdwcpSQSdglMrtWRRPJZCpsRZJmWRRWChWPh
   -1    73 pWzbsPCCPPpbptSMCJJwBQQGQt
   -1    74 cDDmcTTRRqzFRddVTSJwMShMtBwhwQMDwv
   -1    75 HldqVmVlZdLTcmRFdrngNNzrffjWpPLggP
   -1    76 JPqvjJmmqvSLmPtpZdcftdmtfdCC
   -1    77 swwhDRwBBHjFFBtBfZ
   -1    78 RRzNQDwznDsDwWJjLNlrSPLSTr
   -1    79 VQmdRLvDlmqZdFrBBJdW
   -1    80 CMstGsnHnHGGMrMZwMpwBSbW
   -1    81 GnsshssNfjtsnggnHCGhjtmfLQQczllvDRVTTQllQWlQ
   -1    82 dhbNbswbwVdNtVdstBtgbNQTBCCSFTmfmMFmfRqQmmQM
   -1    83 HFljLrvZfMQQQPvm
   -1    84 WrpznLZZrnplpWbgdFcFsNzszgst
   -1    85 LjddfTlMccnBfDQBtBQb
   -1    86 ZRSNchHwhNNCHNSWPQFFFHDBBtnQDH
   -1    87 CNpZshSZgpwJmpdLMlplMc
   -1    88 bTmTFmqzgbBntRVsFvVwcv
   -1    89 CZfMrlZLLLMlfPZRLRHGstnjGwtvGcsSVwtcSGvn
   -1    90 ClZpMLCRMZMrHMLmWpqQBpzpgQzmbg
   -1    91 jDmSSGWDDdWdSqqDDqCqpJzqRRqpJnRsMRcMzM
   -1    92 lPgNPvPrrgNrPhNszFggnRzccbMJgz
   -1    93 ZQTHQvQTZPrrQlBBrNvQZZGtTtGdsVCGsCTLLGDmLsjt
   -1    94 rbCfBrbsvQqRFZRNZC
   -1    95 HLSTcwqwZSQFFgRZ
   -1    96 wdDwjpMHqJDTMTdqjlfBvGBhsbfhbsnb
   -1    97 ZhZcHHHlhgchHhlCZZhLCCbGdrsBBGPNBjGbsjNNjnJnPn
   -1    98 wtJqqwDqQQMQFqSqTzwzVTBnGdsjBdnMdPGBBsBdnrjr
   -1    99 RVzJzmSVZmLLWpCc
   -1   100 gdqjQQrlhhQlQrhsnjjhLgmmvmHBBmTmZRsHJzTBHRJv
   -1   101 NwNnGNbGPbmTGpJzppBG
   -1   102 nDnVDfMDrQqQStgM
   -1   103 MLbgbppMMgLmHgQttGQJgJrBShwNShWBBSNNrwNqNN
   -1   104 GnTFlzCVVwPRrVWhSw
   -1   105 GnDDdvdnZDTdnGMsHbbttZgttLbc
   -1   106 mdmPmjClrTzqttfm
   -1   107 cpFnSbcQQsqNNtqWJzHS
   -1   108 QFpcMMBcZtLpQBjVjZhlPjjVlwvw
   -1   109 spVsPjTZZMpZMVLDjmdSQJCLJSmLzdJQdl
   -1   110 HhRnNrqwMhNhnqnHwGNRFBNBrzSCSdQmQCdddbrQSSclSSbQ
   -1   111 nFNqGRvqBfjMvTssfZ
   -1   112 FjjzjnpFqqzFFqgFSZjBhHfHhnHRDDwfdTdLfD
   -1   113 MmCMGCsMWbtJrtCWCbmsmWWhdLGGwRBwdfdLhdTLhHHTBd
   -1   114 bJmtrRvRjgzFFvVq
   -1   115 RWwWmVQGMFGmMGVCVWRRZSBgDdSdJGlSJpcBGGSlpJ
   -1   116 HHhQThnjBDHfSBlS
   -1   117 bPhNjbsssQzFNQqWmz
   -1   118 FTDtrjqwwqGtDbGnfBlcnLcWBZwlWn
   -1   119 mMhRMvJsJvJnMHCvHmhLZLQlhWQBBfPfLPBZ
   -1   120 HRCCsdNdvNmCvggFStbzjbGSSjjn
   -1   121 sLGddsvvcZmLvrLMGcMsVnTTlqlHCsTHHVVgVt
   -1   122 wRbfJPbpNRffRJMBhpDntTCHFNVgqllFlqggHC
   -1   123 DpfbPhRDJPMJppJwzfpbbDGSjrGZvdccQdjGvQZdvrLz
   -1   124 wTwLNLVTqnLMsBwfMsJmCj
   -1   125 JhlGvcdJhSFvFvvvMfgBpCzjzdCfsMMs
   -1   126 DSlPPJSGWrDcFPhtFhWJZHQZLTQVnRWRbHbZHQQT
   -1   127 TmTgTrPDNLNVlDrmlbgNmrSSGbzjZGMvjpZjvvphWMzW
   -1   128 QtBfdfQcdfHtZcnZnGZzchnp
   -1   129 HQHwRBGfBCGBtsrCNPDTmTlNLr
   -1   130 bfNhjhNJDWhlWhlRRR
   -1   131 SsscnHgnSnZnltqqfWRWrzZv
   -1   132 cnfTMfmMnTnmFGsnTVLLLpQJbpbbjpdTdN
   -1   133 BqwZzqRQQRRPSlFRQDDwdfWwhJphnfgfnpMdJfdM
   -1   134 rcTLrcrvDDChWJhfpTgTJh
   -1   135 DHGbGNVCZStGqSqS
   -1   136 dlfdRNNfVdLwrRnwdwRmhLFsbsJJgLqbgCBWBCsW
   -1   137 PHDppMPMHHDPzmBBCmWJqCmbJD
   -1   138 HzzZHmZzQcNdRRdZwddr
   -1   139 wrlshslPsSRfvrQvwbrslCDghtDgCVhDhBVJCFHddt
   -1   140 mZnGpWpWzGTMqnFqDqJNDNFJVJqH
   -1   141 LjpzGcjMGcTzcmmznWSRsfRPfcrbFQcfrwcv
   -1   142 rWBmmmtNmmtBbtlwnhJJVZbw
   -1   143 FsRcjGdLdvFslZbQJZwQps
   -1   144 GHFGvMccFPjgDNbmWWBTTHNz
   -1   145 GhHzmhmwlpbltGBmBmsZsBZsfCWC
   -1   146 rgrcCCPdsWBgNVBD
   -1   147 RnRMdQPMCqndSdQdcQhblpLLwhJbbpzGzwpS
   -1   148 NNQtStFPpJwhRbRzRbqpZZ
   -1   149 jLnmdJrrdDTdbgWbTbRW
   -1   150 JHvnMCmDnMnMljLCDmMLjHNFGGNBPVtQQFtSNFQtPQBv
   -1   151 BFbBRllFZJnPVJbV
   -1   152 GpGHwgzcLhDcwttwthzzhHcPTjZjMgMVZjgZTMmTnMZWJVJm
   -1   153 GccwhqcDtlrPqQrRNQ
   -1   154 gWHWLgHBHQdFhjGGThTQhR
   -1   155 pZsSMpZMJJSzMszzzqclpfjvrvvcRGGTcTVhbVvRbTGTRG
   -1   156 lnMwsqZqsslpjlSMSsffZqqJBgHNNPNDWdLLgdDgdLHPWwCw
   -1   157 qfNvBCBfBqfNMBqCZZfcnmnvtwScpwFSpSsSwt
   -1   158 HzdVzLWPPGGDdnsswnztsRsnmn
   -1   159 QddWVQgJPPHJTJbjBtNTTq
   -1   160 DdRDDPRGGPGccfcbJwsbJWzsnznlLLWzWTLWhVVVVS
   -1   161 CvCrNCqgFqvmqNZFZqqZvpWlVrlVhlhnTLShlDWnzVBD
   -1   162 jvqpvpvpQNCQQCZZmmNgZfdGddRjJDPRMHcHJDHPJf
   -1   163 ttdtBtPPMqWMdgPPBbVGWfTGTTzSVLfVrzCS
   -1   164 ZpDpvRpZDDcmmjmZfLSrwzRnSVSnwTTR
   -1   165 ZvQmjFVHJFDcQjDlZcDVHdqMNtqNBPtPJtbhhbdbts
   -1   166 dGdwwLLpgwgssJpgssNhpJlnbfjnzFfcbfttGjzjlntf
   -1   167 VQvDvHVVQHrQHDCZVBChrHFtzffnfltFFtncnvFtllMl
   -1   168 VBShSqDVRVSTmppPwwsP
   -1   169 fTFDTLNNzlcNrmDcrMDTFPwCSsbCbPPsnCPwLSPvbs
   -1   170 ttQqhJtBRRGnvgHGnlSnbl
   -1   171 hZBJlQBRjVRBRjhtRRMNFVmFmfDNrfWcFVmD
   -1   172 mcTZFBFmqBjmBgPtCtPprmssStCP
   -1   173 LWDQNqDJfQNJddnWfzhfsPRVppVVsSptftpVMS
   -1   174 NDGnJDDDbzddWdNbGNQQLQbqqFBBFcjlZBlHjlZHGBTvZB
   -1   175 PwDzvphPwVwWBqLLwnJWTq
   -1   176 jdCGCgjmllCrmmlmjrbgmRdgJSSJJFLSSqJfLnqLLLbWffLB
   -1   177 mRdjcMHgDpZhDqMZ
   -1   178 cqLjhhrwZwJbBqZhMwbZZdGWdGSllWFvLFGQdnGFQG
   -1   179 gHHVzzppRVggcgpcGWRQRSvdSvvGWvll
   -1   180 HmNNHtVggHsHPtrhJsbjbwCrCqJc
   -1   181 zqPvzLVvzFFQZzWpRLlmHRDHmRCHDH
   -1   182 dNjnJGGrGdqqMprRlpqB
   -1   183 GsgtjhSsSvvSFqvP
   -1   184 pVrfzzjrjWVWTWjrNZvnJSJZqnnqnpSZZS
   -1   185 bdQVQPRPDdcbRGPFddRVMVlZlMlBqSBBZSvSZwnwvJBS
   -1   186 bFbcFbCPPCbbVHCCdVgWfrzjmWfrWrNWgHfT
   -1   187 JgJqLjjjVGgdqGDZGzlGRStStT
   -1   188 PHrHccmrMrTSMVStRtRR
   -1   189 HWPWffNsrppfPWNsVFsmPNCJwwjdJdvdvnJwghBLJLpdLJ
   -1   190 HtHvcnDSDgDcDHtpLrvwjwjfZMjffw
   -1   191 CPWzdJdqVdWZpnLdwnrfdn
   -1   192 GNCNmTQnPVRRglSlHsSG
   -1   193 FJdhjTPbdPJjTPjTjPtSLsSBWWRcCvCvsBWztc
   -1   194 MfGgrHMDDpMnZGDLCRLScCsBlgWvzB
   -1   195 HnmpmNNHGZZpZZrnMPFFbNCNbFdTPVFFFN
   -1   196 TJrrrJQTqJqmTltfRrgfgtgFFg
   -1   197 jLRzBvBjjcnFBNwWlgBZFt
   -1   198 RMjMCGpGzGznzhRmmPPDPsmMmPQmJs
   -1   199 BZqwQCQZGZcVBczqBHtfbbbWfTqNWfMfPNqW
   -1   200 LLpmFjpvpHrvRFSRDRMWbdbtfPWPbjtMgMtW
   -1   201 SDnrpDprDFnQhZCVnhcH
   -1   202 WTsBBQTfQQTTbJBbZbnfTsRFwFrjwjFlrRqvrrlqvWRV
   -1   203 pGcShcGSLNJNHCLttlpllRFgpRFlRpgRrg
   -1   204 GzcMLScSGJGtCbsbQfbZbMBnBn
   -1   205 NGCLGjVjZjQwTGJRQdWM
   -1   206 cFTcvSrFmnnpSmndMswsRMJWRwMHps
   -1   207 rrrhhcTznqvzmcccvvmhgzqDgbgttlDtjjjlfVCfZCjZZV
   -1   208 ccDMHddWNDnnNWMMzdHJJmSQhfQZfvQZflrZQfdVfLLZ
   -1   209 bgBFRTwFtgqCgpRGFpvpVllZlhjrrlVlvj
   -1   210 wtbBGPTPtRTgbCTBqFgGRwFnsWJnmDMsWMJJMzHPhDmJzP
   -1   211 zsbsMtMMdnffBbzNsBtCCWLpLrCrcNLVDWVVcD
   -1   212 TmPhJRvwmjmhFJwjjRPFPTvJGVCcCGBrDpccpDrCrWCVDVFZ
   -1   213 QvSTvBhqwjPmwddHgtqMnllzMl
   -1   214 gftDtqnpqzGZsFcthbtZ
   -1   215 VlNPrBrRNrLBmdRVFCcGCZTFCsTCsbLL
   -1   216 VdldlljlSNHBsSlqfgqMDDvzpHJHWg
   -1   217 tQDLvFLcDrWrcnsHffCGgGHG
   -1   218 ZRPTPJqhMZJZVllRZJPVZPRHnhCnfdssnCznzGhdgfwCHn
   -1   219 qPqlPVlTlSqbZZVJplqlPDmrjWFtmLtFWgQvtmtFvp
   -1   220 zlZzdNRPgGGzsLGCDBBtCDCtSncScP
   -1   221 vWvHWbqjrFMbvrTWcVnQBBBSjLDcQJcL
   -1   222 wfLHwfFqLFbhHvWhMWqwbwwRspssmzgpzGgmmNfmzmRGRz
   -1   223 rPvLrQBvBLsLLdtrgssgZjwFwlnCFMtMFnlllnnb
   -1   224 mNmmzpWHlzjlJMJb
   -1   225 TVSVTWpqRWpSTqNbTVRBPDfLLPrSLrsfQrrvsf
   -1   226 nRjpQWnQnRQzMjRdrtvvPCfmvGtPfMcCtG
   -1   227 TDbrbhNZVbbbbwhDZDhbTTGfcftqcGVvmmcqcJCcCPmJ
   -1   228 NLhrSwgwgnsLsQWljW
   -1   229 JWqVSpGNPdNNzdZJJpMzHzwLgsMwzwQwMBgL
   -1   230 clrlcvrRfccCtFbHrBWLgwLHmMHsHg
   -1   231 DbfDFjcvRcvchWZVWdNpGZNqdh
   -1   232 sdfvFLfmtszQwLfddRpmtDDBjVNWGMNQVQNMJGWJMj
   -1   233 lccrncTZhqqcqhWggvrjMNMGrJMG
   -1   234 SblShnZCqSbPhhbcbTTSZFdFsFpmdRwPwzvmswLtmm
   -1   235 PGwwHpfnFSvVpWqWCQNNjCbbnW
   -1   236 lmddlhcDRBlLRchdmzbNjqqWTcbNPNWTzz
   -1   237 RBMrRdRhlDtPrJtfwFHpsvrHpFSrFw
   -1   238 hhwlglFFSQndLRFbmCbTTz
   -1   239 NczHMMqzpzPcpfBffcmTrdfGbbRbGrdGrLCL
   -1   240 qNzNPqMjcqNBWWccBHsZPDhJnllwnwvJvQnJhQsgvD
   -1   241 mbmvmvbbprZmlFmZbFgLffgQtFNHNhfqQtNQ
   -1   242 SJcdzjSJBzdBdJDzQhhLQfqzNQQHggRL
   -1   243 jwDwcTTDThvTZPPW
   -1   244 FSVBBBvHvCpVVDDGcGwNNhhctwMvMc
   -1   245 fLLZsZVQmjfTfqQRmQhhtgbbJbGJRghtcGct
   -1   246 qTsTQdqjVfqdVdZZqVLpCpzSpdppBlSpCFdHSC
   -1   247 sQQhWsMmQshlhmMQZFDHDJFjgjzHZgcHdH
   -1   248 LnwnpNRrnrbCqqLpwnqfnLcvFHJFzNcHzJcgJJHgdDgN
   -1   249 wCbnpCfPCVqwwnrrbbPRGMMlSllmlTTmsThVMlsd
   -1   250 pzrprfwgbwtwqzrCWbqCwqSMvddHdDSvtHRlDnRRDddD
   -1   251 zQLzQQjPBPFcLcQFTFsmNQzcMNdDdvnldHHvdvnDnRnlvRnJ
   -1   252 cTZGzzscLcPrqrfrZqqbVV
   -1   253 DcSdcTwDLmcwDwvWssGfJfcJQZPGnfcs
   -1   254 FlHFMgtgNggpsztMHMqpjgBBnCfPflfQnZCQBBCnRPZC
   -1   255 gpVjqNVrHFtjqqzSLDTSmTDwwrmhbs
   -1   256 MLMzJTsZzZMgMLgHMmVmdCVhCBlQwDwwhChD
   -1   257 vtPRQpbqCldwdtBC
   -1   258 bQqFbnQbcFfjPRFPQnTrMMgcJgJrssrzgrgS
   -1   259 mtdGJmQRFmdtQvdvtRtdHzHzqZqpHFzZnCzhZjjH
   -1   260 fPwVlllswMVNPfBDDlNVsMsfcBjchHncqzjZbpzjcqCnpHHn
   -1   261 rlsNPWNlhWTPMMNPfwNWTLQRvQLLmgvSJvRJgTRG
   -1   262 TwnqhqqgvQnGBGmBDp
   -1   263 SMjclJSjjVJgCzCzNgpmdBpmBGspRBmpDDVB
   -1   264 JjMCgMMHMMZNStllZSNHhPqFhFWfqPPqTqhLFqtL
   -1   265 lRQPtjPRlDdStDSlPmvllvLsCphFfCHLHggspgFmsFLH
   -1   266 qwpTNprcbNWVHLrfFssBgFCM
   -1   267 NTWTnzTTWGZZZVRSRRQGpdDtSQRp
   -1   268 gpwTPNPBPTdLLLLVGl
   -1   269 jSHdjzZHMcDVtDvFjtCF
   -1   270 HqfZMHzbcqRRRWgdqPmBBBNmwW
   -1   271 PvSBtdFgvSmBPngFBTBjbSjwwpGjsppMjNpMjj
   -1   272 VZLfVQLzQQQhllpcNcwbssvwwwZj
   -1   273 vHWLVVqWTmTgttgq
   -1   274 CNRmNRFNRCWbWNCrlmfGlWqFLsDZQZBZzgwQZsBsDZZCzczB
   -1   275 MSjdVHvHnDDhHvdwBwssZVzwcgLcQg
   -1   276 HnMMTdttHSHSpHvDddpSHTjWlNWFlmRtRmRbqGfqGGNNfR
   -1   277 fBLTDppznrfTndfnfTzTLPvZvvHVbRbggjvzVbzvbV
   -1   278 mwmDGGlqDhMqthGqhJMWmlNVRZPHjgwjjRZbbHRgRHvv
   -1   279 DmhsJsshWGhSGlmlmrdcLLsTBBfcfnBppc
   -1   280 mbCGFFmGmcdTrCTQdh
   -1   281 MJHfJNLllJffPLRTdBqTRQNcqQGB
   -1   282 fPJHfSSSWfSLDMLWGHDMLDFmznmsjmvZwzvjZjbvbZ
   -1   283 pPvpJSfZTTvCzNZczzQZchcj
   -1   284 svbHWsqsvbsMFtVHgVtcRQcDlQRRRQLjlqjczj
   -1   285 tBsgvHVMFggbgFrgWnwSndfBmmBJfPSfpn
   -1   286 jwbwfjSbwjVSjvZPzWSvhvhQlCsBFgLRLLgBLRClLLFQQw
   -1   287 GdNJHpmHTDnTNJqnFCgBLFLFzFtsQRCd
   -1   288 NpMJHpnMrDpJGTHqTTmJHTPjfcvbWfrffVzvZfVWSbjz
   -1   289 wFwpqWwwpqwtqqrbCFtptDmCcfNhNRzRBZRRJRChVNBZBJ
   -1   290 svlvjHsQlvdlvMLdlvPSSLtzzczcNhJthfNtRcNMJNMc
   -1   291 HvvPLSHjgltjsvqwbbnmWmDpgwTT
   -1   292 zhCmPVwwChdCBtsWnNWswBWr
   -1   293 GJJSfSgFpjJjGgpfpgrcNNstvnBHNnHLtFHr
   -1   294 jgDTfjpMgZMGMGJTMMJRhzZPCzbhVlPqdNCbhd
   -1   295 bDbQQmVDRpDNbRQlfQQZnfwTlllfsT
   -1   296 FChzzBWhVzrgMwffJwlnngnTlJ
   -1   297 MCvqvhFzcHCChjtpNNVLppGmbq
   -1   298 bZZzJnccqdzcLhrcQDLrDs
   -1   299 FfCfWVfjWTFClClfwjWCfGGwhZSDhSLsSSRpZprLph
   -1   300 mFmTMmFjMMWFfZtttflWjmWTngNHJHggJJHtzgnJvBtBgHdv

diff --git a/2022/03/part1.rs b/2022/03/part1.rs

@@ -0,0 +1,31 @@
   -1     1 #[path = "../lib.rs"] mod lib;
   -1     2 
   -1     3 fn intersect(vec: Vec<String>) -> Option<u8> {
   -1     4     let base = vec.get(0)?;
   -1     5     for c in base.chars() {
   -1     6         if vec[1..].iter().all(|s| s.contains(c)) {
   -1     7             return Some(c as u8);
   -1     8         }
   -1     9     }
   -1    10     return None;
   -1    11 }
   -1    12 
   -1    13 fn byte_to_priority(byte: u8) -> u8 {
   -1    14     if byte >= b'a' {
   -1    15         return byte - b'a' + 1;
   -1    16     } else {
   -1    17         return byte - b'A' + 27;
   -1    18     }
   -1    19 }
   -1    20 
   -1    21 fn main() {
   -1    22     let mut score: u32 = 0;
   -1    23 
   -1    24     for line in lib::iter_input() {
   -1    25         let (head, tail) = line.split_at(line.len() / 2);
   -1    26         let common = intersect(vec![head, tail]).unwrap();
   -1    27         score += byte_to_priority(common) as u32;
   -1    28     }
   -1    29 
   -1    30     println!("{}", score);
   -1    31 }

diff --git a/2022/03/part2.rs b/2022/03/part2.rs

@@ -0,0 +1,35 @@
   -1     1 #[path = "../lib.rs"] mod lib;
   -1     2 
   -1     3 fn intersect(vec: Vec<String>) -> Option<u8> {
   -1     4     let base = vec.get(0)?;
   -1     5     for c in base.chars() {
   -1     6         if vec[1..].iter().all(|s| s.contains(c)) {
   -1     7             return Some(c as u8);
   -1     8         }
   -1     9     }
   -1    10     return None;
   -1    11 }
   -1    12 
   -1    13 fn byte_to_priority(byte: u8) -> u8 {
   -1    14     if byte >= b'a' {
   -1    15         return byte - b'a' + 1;
   -1    16     } else {
   -1    17         return byte - b'A' + 27;
   -1    18     }
   -1    19 }
   -1    20 
   -1    21 fn main() {
   -1    22     let mut score: u32 = 0;
   -1    23     let mut vec = vec![];
   -1    24 
   -1    25     for line in lib::iter_input() {
   -1    26         vec.push(line);
   -1    27         if vec.len() == 3 {
   -1    28             let common = intersect(vec).unwrap();
   -1    29             score += byte_to_priority(common) as u32;
   -1    30             vec = vec![];
   -1    31         }
   -1    32     }
   -1    33 
   -1    34     println!("{}", score);
   -1    35 }

diff --git a/2022/03/test.txt b/2022/03/test.txt

@@ -0,0 +1,6 @@
   -1     1 vJrwpWtwJgWrhcsFMMfFFhFp
   -1     2 jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
   -1     3 PmmdzqPrVvPwwTWBwg
   -1     4 wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
   -1     5 ttgJtRGJQctTZtZT
   -1     6 CrZsJsPPZsGzwwsLwLmpwMDw