adventofcode

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

commit
6f6f21d2c95f67ffbc142dcab29e0a863caf37b8
parent
bdd9ab85f6c4d9fc433a70fe0eb03b2af616ec3d
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2022-12-05 20:12
2022-12-05

Diffstat

A 2022/05/input.txt 512 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A 2022/05/part1.rs 41 +++++++++++++++++++++++++++++++++++++++++
A 2022/05/part2.rs 47 +++++++++++++++++++++++++++++++++++++++++++++++
A 2022/05/test.txt 9 +++++++++

4 files changed, 609 insertions, 0 deletions


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

@@ -0,0 +1,512 @@
   -1     1 [J]             [F] [M]            
   -1     2 [Z] [F]     [G] [Q] [F]            
   -1     3 [G] [P]     [H] [Z] [S] [Q]        
   -1     4 [V] [W] [Z] [P] [D] [G] [P]        
   -1     5 [T] [D] [S] [Z] [N] [W] [B] [N]    
   -1     6 [D] [M] [R] [J] [J] [P] [V] [P] [J]
   -1     7 [B] [R] [C] [T] [C] [V] [C] [B] [P]
   -1     8 [N] [S] [V] [R] [T] [N] [G] [Z] [W]
   -1     9  1   2   3   4   5   6   7   8   9 
   -1    10 
   -1    11 move 2 from 4 to 6
   -1    12 move 1 from 9 to 5
   -1    13 move 3 from 2 to 4
   -1    14 move 8 from 4 to 7
   -1    15 move 2 from 9 to 7
   -1    16 move 3 from 8 to 3
   -1    17 move 2 from 1 to 2
   -1    18 move 5 from 7 to 9
   -1    19 move 1 from 9 to 4
   -1    20 move 1 from 8 to 3
   -1    21 move 1 from 3 to 4
   -1    22 move 2 from 4 to 9
   -1    23 move 7 from 3 to 5
   -1    24 move 6 from 1 to 8
   -1    25 move 11 from 7 to 9
   -1    26 move 12 from 5 to 3
   -1    27 move 6 from 6 to 9
   -1    28 move 3 from 3 to 8
   -1    29 move 4 from 2 to 7
   -1    30 move 3 from 5 to 7
   -1    31 move 1 from 5 to 7
   -1    32 move 2 from 2 to 5
   -1    33 move 1 from 5 to 2
   -1    34 move 5 from 8 to 9
   -1    35 move 7 from 7 to 2
   -1    36 move 3 from 8 to 7
   -1    37 move 1 from 8 to 9
   -1    38 move 4 from 3 to 6
   -1    39 move 1 from 5 to 1
   -1    40 move 9 from 9 to 6
   -1    41 move 7 from 9 to 6
   -1    42 move 20 from 6 to 5
   -1    43 move 12 from 9 to 8
   -1    44 move 5 from 5 to 1
   -1    45 move 3 from 7 to 4
   -1    46 move 6 from 2 to 7
   -1    47 move 2 from 3 to 1
   -1    48 move 4 from 3 to 8
   -1    49 move 1 from 4 to 1
   -1    50 move 7 from 7 to 5
   -1    51 move 4 from 8 to 2
   -1    52 move 3 from 6 to 2
   -1    53 move 3 from 2 to 9
   -1    54 move 4 from 1 to 7
   -1    55 move 2 from 1 to 2
   -1    56 move 3 from 9 to 5
   -1    57 move 11 from 8 to 5
   -1    58 move 1 from 6 to 9
   -1    59 move 1 from 8 to 5
   -1    60 move 1 from 1 to 2
   -1    61 move 24 from 5 to 4
   -1    62 move 2 from 1 to 6
   -1    63 move 11 from 5 to 4
   -1    64 move 2 from 7 to 9
   -1    65 move 1 from 6 to 2
   -1    66 move 4 from 2 to 1
   -1    67 move 28 from 4 to 2
   -1    68 move 1 from 7 to 8
   -1    69 move 9 from 2 to 5
   -1    70 move 2 from 9 to 6
   -1    71 move 4 from 4 to 2
   -1    72 move 1 from 7 to 4
   -1    73 move 3 from 4 to 7
   -1    74 move 1 from 6 to 9
   -1    75 move 21 from 2 to 3
   -1    76 move 3 from 1 to 6
   -1    77 move 5 from 6 to 2
   -1    78 move 7 from 2 to 3
   -1    79 move 1 from 9 to 3
   -1    80 move 1 from 8 to 4
   -1    81 move 1 from 7 to 8
   -1    82 move 3 from 5 to 8
   -1    83 move 1 from 1 to 7
   -1    84 move 2 from 7 to 9
   -1    85 move 2 from 8 to 4
   -1    86 move 1 from 9 to 2
   -1    87 move 1 from 8 to 6
   -1    88 move 11 from 3 to 4
   -1    89 move 1 from 7 to 8
   -1    90 move 6 from 5 to 9
   -1    91 move 2 from 8 to 7
   -1    92 move 1 from 6 to 5
   -1    93 move 7 from 3 to 8
   -1    94 move 9 from 3 to 6
   -1    95 move 1 from 8 to 3
   -1    96 move 1 from 7 to 4
   -1    97 move 2 from 3 to 5
   -1    98 move 4 from 5 to 7
   -1    99 move 4 from 6 to 8
   -1   100 move 2 from 7 to 9
   -1   101 move 11 from 4 to 2
   -1   102 move 1 from 4 to 2
   -1   103 move 6 from 8 to 9
   -1   104 move 1 from 7 to 1
   -1   105 move 1 from 3 to 7
   -1   106 move 3 from 7 to 8
   -1   107 move 6 from 8 to 9
   -1   108 move 6 from 4 to 8
   -1   109 move 18 from 9 to 3
   -1   110 move 1 from 5 to 8
   -1   111 move 5 from 6 to 5
   -1   112 move 6 from 8 to 1
   -1   113 move 3 from 5 to 4
   -1   114 move 1 from 9 to 8
   -1   115 move 3 from 4 to 8
   -1   116 move 15 from 3 to 6
   -1   117 move 2 from 5 to 9
   -1   118 move 3 from 3 to 1
   -1   119 move 9 from 6 to 4
   -1   120 move 2 from 1 to 5
   -1   121 move 2 from 5 to 8
   -1   122 move 6 from 4 to 2
   -1   123 move 6 from 1 to 6
   -1   124 move 3 from 4 to 6
   -1   125 move 6 from 9 to 1
   -1   126 move 4 from 2 to 1
   -1   127 move 7 from 8 to 1
   -1   128 move 1 from 6 to 7
   -1   129 move 17 from 1 to 5
   -1   130 move 1 from 7 to 1
   -1   131 move 5 from 2 to 1
   -1   132 move 1 from 8 to 6
   -1   133 move 11 from 6 to 4
   -1   134 move 2 from 2 to 3
   -1   135 move 3 from 1 to 8
   -1   136 move 7 from 2 to 5
   -1   137 move 4 from 6 to 7
   -1   138 move 4 from 1 to 5
   -1   139 move 15 from 5 to 9
   -1   140 move 2 from 3 to 7
   -1   141 move 2 from 8 to 2
   -1   142 move 1 from 1 to 9
   -1   143 move 6 from 2 to 6
   -1   144 move 7 from 5 to 6
   -1   145 move 5 from 7 to 3
   -1   146 move 1 from 6 to 1
   -1   147 move 2 from 3 to 4
   -1   148 move 1 from 3 to 4
   -1   149 move 5 from 6 to 4
   -1   150 move 14 from 9 to 2
   -1   151 move 1 from 8 to 9
   -1   152 move 1 from 7 to 8
   -1   153 move 1 from 9 to 6
   -1   154 move 2 from 9 to 5
   -1   155 move 1 from 1 to 2
   -1   156 move 7 from 6 to 9
   -1   157 move 1 from 3 to 4
   -1   158 move 8 from 5 to 2
   -1   159 move 1 from 6 to 7
   -1   160 move 1 from 7 to 4
   -1   161 move 1 from 8 to 4
   -1   162 move 1 from 3 to 9
   -1   163 move 7 from 9 to 5
   -1   164 move 1 from 9 to 1
   -1   165 move 6 from 5 to 1
   -1   166 move 8 from 2 to 4
   -1   167 move 1 from 5 to 6
   -1   168 move 1 from 6 to 7
   -1   169 move 1 from 7 to 9
   -1   170 move 7 from 2 to 9
   -1   171 move 1 from 9 to 4
   -1   172 move 3 from 9 to 1
   -1   173 move 1 from 9 to 6
   -1   174 move 11 from 2 to 8
   -1   175 move 9 from 1 to 8
   -1   176 move 1 from 6 to 4
   -1   177 move 1 from 1 to 9
   -1   178 move 12 from 4 to 2
   -1   179 move 4 from 9 to 3
   -1   180 move 3 from 4 to 6
   -1   181 move 9 from 8 to 6
   -1   182 move 12 from 4 to 9
   -1   183 move 8 from 6 to 3
   -1   184 move 8 from 2 to 7
   -1   185 move 11 from 3 to 4
   -1   186 move 2 from 2 to 7
   -1   187 move 2 from 6 to 1
   -1   188 move 1 from 2 to 3
   -1   189 move 2 from 6 to 2
   -1   190 move 3 from 2 to 6
   -1   191 move 2 from 1 to 6
   -1   192 move 1 from 6 to 1
   -1   193 move 1 from 6 to 4
   -1   194 move 2 from 6 to 3
   -1   195 move 1 from 6 to 5
   -1   196 move 4 from 3 to 8
   -1   197 move 12 from 4 to 5
   -1   198 move 5 from 9 to 7
   -1   199 move 3 from 8 to 7
   -1   200 move 1 from 9 to 1
   -1   201 move 3 from 8 to 2
   -1   202 move 13 from 5 to 6
   -1   203 move 1 from 2 to 9
   -1   204 move 13 from 6 to 7
   -1   205 move 7 from 9 to 6
   -1   206 move 2 from 4 to 6
   -1   207 move 1 from 8 to 6
   -1   208 move 1 from 1 to 6
   -1   209 move 1 from 2 to 9
   -1   210 move 1 from 2 to 3
   -1   211 move 12 from 7 to 9
   -1   212 move 7 from 8 to 4
   -1   213 move 1 from 1 to 3
   -1   214 move 2 from 7 to 9
   -1   215 move 15 from 7 to 4
   -1   216 move 8 from 6 to 3
   -1   217 move 1 from 8 to 9
   -1   218 move 1 from 7 to 2
   -1   219 move 10 from 3 to 5
   -1   220 move 6 from 5 to 9
   -1   221 move 1 from 2 to 8
   -1   222 move 1 from 5 to 8
   -1   223 move 2 from 8 to 9
   -1   224 move 10 from 4 to 9
   -1   225 move 20 from 9 to 6
   -1   226 move 1 from 7 to 6
   -1   227 move 4 from 9 to 3
   -1   228 move 1 from 5 to 9
   -1   229 move 4 from 4 to 9
   -1   230 move 8 from 9 to 7
   -1   231 move 2 from 5 to 1
   -1   232 move 7 from 4 to 3
   -1   233 move 8 from 3 to 2
   -1   234 move 6 from 9 to 8
   -1   235 move 1 from 3 to 7
   -1   236 move 1 from 3 to 1
   -1   237 move 7 from 7 to 8
   -1   238 move 13 from 8 to 3
   -1   239 move 2 from 2 to 8
   -1   240 move 1 from 8 to 2
   -1   241 move 1 from 4 to 1
   -1   242 move 1 from 1 to 8
   -1   243 move 2 from 8 to 2
   -1   244 move 24 from 6 to 2
   -1   245 move 2 from 7 to 8
   -1   246 move 5 from 3 to 4
   -1   247 move 25 from 2 to 6
   -1   248 move 5 from 4 to 9
   -1   249 move 2 from 8 to 7
   -1   250 move 2 from 7 to 3
   -1   251 move 4 from 6 to 2
   -1   252 move 2 from 6 to 4
   -1   253 move 9 from 2 to 3
   -1   254 move 11 from 3 to 7
   -1   255 move 10 from 7 to 8
   -1   256 move 1 from 7 to 9
   -1   257 move 3 from 2 to 4
   -1   258 move 8 from 8 to 2
   -1   259 move 1 from 2 to 6
   -1   260 move 2 from 4 to 1
   -1   261 move 1 from 8 to 2
   -1   262 move 1 from 6 to 9
   -1   263 move 1 from 8 to 3
   -1   264 move 6 from 9 to 7
   -1   265 move 2 from 9 to 1
   -1   266 move 9 from 6 to 8
   -1   267 move 7 from 2 to 3
   -1   268 move 7 from 8 to 2
   -1   269 move 10 from 6 to 8
   -1   270 move 7 from 1 to 2
   -1   271 move 9 from 3 to 2
   -1   272 move 5 from 3 to 8
   -1   273 move 4 from 7 to 2
   -1   274 move 2 from 3 to 2
   -1   275 move 12 from 2 to 3
   -1   276 move 6 from 4 to 2
   -1   277 move 1 from 7 to 6
   -1   278 move 5 from 3 to 5
   -1   279 move 16 from 8 to 4
   -1   280 move 12 from 2 to 7
   -1   281 move 5 from 5 to 7
   -1   282 move 1 from 8 to 3
   -1   283 move 1 from 6 to 4
   -1   284 move 17 from 7 to 4
   -1   285 move 1 from 7 to 1
   -1   286 move 1 from 1 to 9
   -1   287 move 1 from 9 to 5
   -1   288 move 11 from 4 to 9
   -1   289 move 10 from 2 to 3
   -1   290 move 1 from 5 to 4
   -1   291 move 1 from 9 to 2
   -1   292 move 2 from 2 to 1
   -1   293 move 1 from 2 to 3
   -1   294 move 23 from 4 to 5
   -1   295 move 7 from 9 to 7
   -1   296 move 3 from 9 to 1
   -1   297 move 20 from 5 to 6
   -1   298 move 3 from 5 to 8
   -1   299 move 1 from 4 to 1
   -1   300 move 2 from 8 to 3
   -1   301 move 4 from 6 to 4
   -1   302 move 7 from 7 to 2
   -1   303 move 1 from 8 to 4
   -1   304 move 19 from 3 to 9
   -1   305 move 5 from 1 to 7
   -1   306 move 7 from 2 to 6
   -1   307 move 3 from 7 to 5
   -1   308 move 2 from 3 to 4
   -1   309 move 1 from 5 to 4
   -1   310 move 1 from 1 to 4
   -1   311 move 1 from 7 to 6
   -1   312 move 13 from 6 to 7
   -1   313 move 6 from 9 to 3
   -1   314 move 1 from 3 to 5
   -1   315 move 2 from 3 to 4
   -1   316 move 2 from 6 to 2
   -1   317 move 3 from 4 to 3
   -1   318 move 8 from 9 to 1
   -1   319 move 2 from 2 to 1
   -1   320 move 8 from 6 to 7
   -1   321 move 2 from 9 to 4
   -1   322 move 20 from 7 to 1
   -1   323 move 2 from 7 to 5
   -1   324 move 2 from 5 to 1
   -1   325 move 8 from 1 to 8
   -1   326 move 8 from 8 to 6
   -1   327 move 1 from 6 to 9
   -1   328 move 8 from 6 to 1
   -1   329 move 1 from 5 to 3
   -1   330 move 7 from 3 to 2
   -1   331 move 1 from 5 to 2
   -1   332 move 2 from 9 to 7
   -1   333 move 1 from 5 to 8
   -1   334 move 18 from 1 to 4
   -1   335 move 1 from 8 to 9
   -1   336 move 3 from 2 to 3
   -1   337 move 2 from 7 to 4
   -1   338 move 5 from 2 to 4
   -1   339 move 3 from 3 to 8
   -1   340 move 8 from 1 to 7
   -1   341 move 2 from 9 to 2
   -1   342 move 32 from 4 to 5
   -1   343 move 1 from 9 to 7
   -1   344 move 1 from 2 to 1
   -1   345 move 6 from 1 to 6
   -1   346 move 1 from 2 to 4
   -1   347 move 3 from 8 to 1
   -1   348 move 3 from 6 to 5
   -1   349 move 1 from 3 to 6
   -1   350 move 2 from 1 to 9
   -1   351 move 4 from 4 to 7
   -1   352 move 31 from 5 to 4
   -1   353 move 4 from 5 to 6
   -1   354 move 1 from 6 to 1
   -1   355 move 7 from 6 to 5
   -1   356 move 1 from 9 to 4
   -1   357 move 19 from 4 to 2
   -1   358 move 1 from 5 to 9
   -1   359 move 5 from 5 to 6
   -1   360 move 3 from 4 to 2
   -1   361 move 2 from 7 to 1
   -1   362 move 4 from 7 to 8
   -1   363 move 3 from 8 to 6
   -1   364 move 2 from 6 to 7
   -1   365 move 6 from 7 to 8
   -1   366 move 3 from 1 to 5
   -1   367 move 4 from 5 to 9
   -1   368 move 15 from 2 to 1
   -1   369 move 4 from 6 to 4
   -1   370 move 2 from 6 to 3
   -1   371 move 1 from 3 to 7
   -1   372 move 4 from 1 to 2
   -1   373 move 1 from 3 to 4
   -1   374 move 2 from 7 to 4
   -1   375 move 5 from 9 to 3
   -1   376 move 2 from 7 to 3
   -1   377 move 16 from 4 to 8
   -1   378 move 8 from 8 to 5
   -1   379 move 2 from 1 to 5
   -1   380 move 1 from 9 to 6
   -1   381 move 1 from 6 to 5
   -1   382 move 7 from 5 to 9
   -1   383 move 3 from 1 to 8
   -1   384 move 1 from 8 to 4
   -1   385 move 8 from 2 to 7
   -1   386 move 3 from 1 to 3
   -1   387 move 1 from 3 to 9
   -1   388 move 2 from 4 to 2
   -1   389 move 7 from 8 to 5
   -1   390 move 7 from 9 to 1
   -1   391 move 6 from 3 to 5
   -1   392 move 6 from 7 to 4
   -1   393 move 3 from 4 to 1
   -1   394 move 3 from 2 to 5
   -1   395 move 1 from 7 to 8
   -1   396 move 1 from 7 to 5
   -1   397 move 1 from 9 to 8
   -1   398 move 2 from 2 to 4
   -1   399 move 15 from 1 to 6
   -1   400 move 8 from 5 to 9
   -1   401 move 3 from 3 to 4
   -1   402 move 4 from 4 to 3
   -1   403 move 1 from 9 to 7
   -1   404 move 6 from 9 to 4
   -1   405 move 1 from 9 to 2
   -1   406 move 6 from 4 to 9
   -1   407 move 2 from 4 to 6
   -1   408 move 5 from 6 to 9
   -1   409 move 1 from 3 to 1
   -1   410 move 8 from 6 to 8
   -1   411 move 12 from 5 to 3
   -1   412 move 1 from 5 to 3
   -1   413 move 1 from 3 to 8
   -1   414 move 4 from 6 to 1
   -1   415 move 11 from 3 to 8
   -1   416 move 1 from 2 to 1
   -1   417 move 23 from 8 to 2
   -1   418 move 3 from 1 to 2
   -1   419 move 1 from 1 to 9
   -1   420 move 2 from 2 to 3
   -1   421 move 6 from 3 to 6
   -1   422 move 1 from 7 to 6
   -1   423 move 1 from 4 to 7
   -1   424 move 1 from 4 to 3
   -1   425 move 1 from 7 to 3
   -1   426 move 4 from 8 to 4
   -1   427 move 2 from 1 to 8
   -1   428 move 3 from 8 to 1
   -1   429 move 4 from 6 to 2
   -1   430 move 7 from 9 to 1
   -1   431 move 1 from 9 to 6
   -1   432 move 2 from 2 to 3
   -1   433 move 3 from 9 to 4
   -1   434 move 1 from 9 to 3
   -1   435 move 10 from 2 to 8
   -1   436 move 16 from 2 to 5
   -1   437 move 2 from 3 to 6
   -1   438 move 6 from 1 to 8
   -1   439 move 1 from 1 to 5
   -1   440 move 8 from 8 to 5
   -1   441 move 11 from 5 to 9
   -1   442 move 2 from 1 to 8
   -1   443 move 1 from 1 to 8
   -1   444 move 4 from 4 to 6
   -1   445 move 3 from 3 to 9
   -1   446 move 14 from 9 to 3
   -1   447 move 15 from 8 to 5
   -1   448 move 9 from 5 to 4
   -1   449 move 7 from 6 to 1
   -1   450 move 1 from 6 to 3
   -1   451 move 4 from 4 to 7
   -1   452 move 2 from 6 to 2
   -1   453 move 4 from 7 to 4
   -1   454 move 4 from 1 to 4
   -1   455 move 10 from 4 to 3
   -1   456 move 14 from 3 to 6
   -1   457 move 5 from 4 to 1
   -1   458 move 6 from 5 to 7
   -1   459 move 1 from 2 to 6
   -1   460 move 3 from 7 to 2
   -1   461 move 2 from 2 to 3
   -1   462 move 3 from 7 to 8
   -1   463 move 2 from 8 to 2
   -1   464 move 2 from 2 to 7
   -1   465 move 6 from 6 to 2
   -1   466 move 1 from 8 to 7
   -1   467 move 8 from 2 to 7
   -1   468 move 1 from 4 to 1
   -1   469 move 5 from 5 to 3
   -1   470 move 3 from 3 to 2
   -1   471 move 5 from 1 to 3
   -1   472 move 7 from 5 to 8
   -1   473 move 6 from 6 to 3
   -1   474 move 1 from 5 to 9
   -1   475 move 10 from 7 to 9
   -1   476 move 26 from 3 to 4
   -1   477 move 1 from 5 to 1
   -1   478 move 6 from 8 to 2
   -1   479 move 9 from 2 to 9
   -1   480 move 1 from 7 to 5
   -1   481 move 1 from 8 to 5
   -1   482 move 2 from 6 to 2
   -1   483 move 20 from 9 to 6
   -1   484 move 1 from 1 to 6
   -1   485 move 1 from 4 to 2
   -1   486 move 1 from 5 to 8
   -1   487 move 1 from 5 to 7
   -1   488 move 3 from 1 to 3
   -1   489 move 1 from 3 to 6
   -1   490 move 12 from 4 to 8
   -1   491 move 11 from 4 to 5
   -1   492 move 1 from 7 to 5
   -1   493 move 1 from 2 to 8
   -1   494 move 1 from 1 to 8
   -1   495 move 2 from 2 to 5
   -1   496 move 8 from 6 to 2
   -1   497 move 5 from 6 to 4
   -1   498 move 2 from 5 to 3
   -1   499 move 12 from 8 to 4
   -1   500 move 5 from 2 to 6
   -1   501 move 3 from 8 to 1
   -1   502 move 11 from 6 to 8
   -1   503 move 10 from 4 to 6
   -1   504 move 5 from 4 to 6
   -1   505 move 12 from 6 to 5
   -1   506 move 22 from 5 to 6
   -1   507 move 3 from 6 to 5
   -1   508 move 3 from 8 to 5
   -1   509 move 1 from 3 to 8
   -1   510 move 4 from 8 to 1
   -1   511 move 6 from 1 to 7
   -1   512 move 5 from 6 to 9

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

@@ -0,0 +1,41 @@
   -1     1 #[path = "../lib.rs"] mod lib;
   -1     2 
   -1     3 fn main() {
   -1     4     let mut stacks: Vec<Vec<char>> = vec![];
   -1     5     let mut init = false;
   -1     6 
   -1     7     for line in lib::iter_input() {
   -1     8         if !init {
   -1     9             if line.len() == 0 {
   -1    10                 init = true;
   -1    11             } else {
   -1    12                 if stacks.len() == 0 {
   -1    13                     let n = (line.len() + 1) / 4;
   -1    14                     for _ in 0..n {
   -1    15                         stacks.push(vec![]);
   -1    16                     }
   -1    17                 }
   -1    18                 for i in 0..stacks.len() {
   -1    19                     let c = line.chars().nth(i * 4 + 1).unwrap();
   -1    20                     if c != ' ' {
   -1    21                         stacks[i].insert(0, c);
   -1    22                     }
   -1    23                 }
   -1    24             }
   -1    25         } else {
   -1    26             let k = line.split(' ').nth(1).unwrap().parse::<usize>().unwrap();
   -1    27             let a = line.split(' ').nth(3).unwrap().parse::<usize>().unwrap();
   -1    28             let b = line.split(' ').nth(5).unwrap().parse::<usize>().unwrap();
   -1    29 
   -1    30             for _ in 0..k {
   -1    31                 let c = stacks[a - 1].pop().unwrap();
   -1    32                 stacks[b - 1].push(c);
   -1    33             }
   -1    34         }
   -1    35     }
   -1    36 
   -1    37     for stack in stacks {
   -1    38         print!("{}", stack.last().unwrap());
   -1    39     }
   -1    40     print!("\n");
   -1    41 }

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

@@ -0,0 +1,47 @@
   -1     1 #[path = "../lib.rs"] mod lib;
   -1     2 
   -1     3 fn main() {
   -1     4     let mut stacks: Vec<Vec<char>> = vec![];
   -1     5     let mut tmp = vec![];
   -1     6     let mut init = false;
   -1     7 
   -1     8     for line in lib::iter_input() {
   -1     9         if !init {
   -1    10             if line.len() == 0 {
   -1    11                 init = true;
   -1    12             } else {
   -1    13                 if stacks.len() == 0 {
   -1    14                     let n = (line.len() + 1) / 4;
   -1    15                     for _ in 0..n {
   -1    16                         stacks.push(vec![]);
   -1    17                     }
   -1    18                 }
   -1    19                 for i in 0..stacks.len() {
   -1    20                     let c = line.chars().nth(i * 4 + 1).unwrap();
   -1    21                     if c != ' ' {
   -1    22                         stacks[i].insert(0, c);
   -1    23                     }
   -1    24                 }
   -1    25             }
   -1    26         } else {
   -1    27             let k = line.split(' ').nth(1).unwrap().parse::<usize>().unwrap();
   -1    28             let a = line.split(' ').nth(3).unwrap().parse::<usize>().unwrap();
   -1    29             let b = line.split(' ').nth(5).unwrap().parse::<usize>().unwrap();
   -1    30 
   -1    31             for _ in 0..k {
   -1    32                 let c = stacks[a - 1].pop().unwrap();
   -1    33                 tmp.push(c);
   -1    34             }
   -1    35 
   -1    36             while tmp.len() > 0 {
   -1    37                 let c = tmp.pop().unwrap();
   -1    38                 stacks[b - 1].push(c);
   -1    39             }
   -1    40         }
   -1    41     }
   -1    42 
   -1    43     for stack in stacks {
   -1    44         print!("{}", stack.last().unwrap());
   -1    45     }
   -1    46     print!("\n");
   -1    47 }

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

@@ -0,0 +1,9 @@
   -1     1     [D]    
   -1     2 [N] [C]    
   -1     3 [Z] [M] [P]
   -1     4  1   2   3 
   -1     5 
   -1     6 move 1 from 2 to 1
   -1     7 move 3 from 1 to 3
   -1     8 move 2 from 2 to 1
   -1     9 move 1 from 1 to 2