adventofcode

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

commit
b8abde72fc085b81597438e99fdbd8dad857d85e
parent
e7a01cfebac1aea02cfbfdf4912e1741d6c49365
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2023-12-13 07:22
2023-12-13

Diffstat

A 2023/13/input.txt 1356 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A 2023/13/solution.rs 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A 2023/13/test.txt 16 ++++++++++++++++

3 files changed, 1461 insertions, 0 deletions


diff --git a/2023/13/input.txt b/2023/13/input.txt

@@ -0,0 +1,1356 @@
   -1     1 #..#.....
   -1     2 .##.##..#
   -1     3 ####..###
   -1     4 #..###.##
   -1     5 #..#.###.
   -1     6 ####.....
   -1     7 ....#..#.
   -1     8 #####....
   -1     9 #####....
   -1    10 ....#..#.
   -1    11 ####....#
   -1    12 #..#.###.
   -1    13 #..###.##
   -1    14 
   -1    15 ##..#....#..####.
   -1    16 #.###.##.###.##.#
   -1    17 ##.########.####.
   -1    18 ..##.####.##....#
   -1    19 ..##.####.##....#
   -1    20 #..#.#..#.#..##..
   -1    21 .#...####...#..#.
   -1    22 #............##..
   -1    23 ###...##...######
   -1    24 ....#....#......#
   -1    25 #.#.#....#.#.##.#
   -1    26 ###.######.######
   -1    27 ...#......#......
   -1    28 
   -1    29 .#.#..########.
   -1    30 #.#.#.#.####.#.
   -1    31 .####.#..##..#.
   -1    32 #.##.#.##..##.#
   -1    33 ##..##........#
   -1    34 .###.#.#.##.#.#
   -1    35 ..#............
   -1    36 .#..#...#..#...
   -1    37 .#..#...#..#...
   -1    38 ..#............
   -1    39 .###.#.#.##.#.#
   -1    40 ##..##........#
   -1    41 #.####.##..##.#
   -1    42 
   -1    43 #####.##.
   -1    44 ......#.#
   -1    45 #####..#.
   -1    46 .##..#...
   -1    47 ####..##.
   -1    48 #..###..#
   -1    49 .##..#.##
   -1    50 .##..#..#
   -1    51 #..###..#
   -1    52 
   -1    53 .#.##.#.#..#.
   -1    54 ....#....#..#
   -1    55 .#..####..##.
   -1    56 ..#.#########
   -1    57 ....#.....##.
   -1    58 .#####.#..##.
   -1    59 #..#...###..#
   -1    60 ###..#.###..#
   -1    61 #.#..#.##....
   -1    62 ...#.....####
   -1    63 ..#...#......
   -1    64 ..#...#.##..#
   -1    65 ..#.##..#####
   -1    66 ..#.##..#####
   -1    67 ..#...#.##..#
   -1    68 
   -1    69 #...######.
   -1    70 ..#.######.
   -1    71 ####.#..###
   -1    72 .#...#..#..
   -1    73 ###.#.##.#.
   -1    74 .#..#....#.
   -1    75 ##.#.#..#.#
   -1    76 ##.#.#..#.#
   -1    77 .#..#....#.
   -1    78 ###.#.##.#.
   -1    79 .#...#..#..
   -1    80 
   -1    81 ...#.#.#.####.#.#
   -1    82 ..###..###..###..
   -1    83 ##.###..........#
   -1    84 ....####...#..###
   -1    85 ...#.#...#..#...#
   -1    86 ##...##.##..##.##
   -1    87 ###..##.#....#.##
   -1    88 ..##.##...##...##
   -1    89 ##.##............
   -1    90 
   -1    91 #.##.##..#....##.
   -1    92 #..####...#..##.#
   -1    93 .#...####.##..###
   -1    94 .#...####.##..###
   -1    95 #..####...#..##.#
   -1    96 #.##..#..#....##.
   -1    97 .....#.####..#...
   -1    98 .##..###..#######
   -1    99 .##..###..#######
   -1   100 .....#.####..#...
   -1   101 #.##..#..#....##.
   -1   102 
   -1   103 .#..#....#..#.###
   -1   104 .####.##.####....
   -1   105 .#.#.####.#.#.#..
   -1   106 ...........#..#..
   -1   107 ####.#..#.####...
   -1   108 ##..#.##.#..##.##
   -1   109 .############.#..
   -1   110 
   -1   111 #..#....#
   -1   112 #..##....
   -1   113 ....#..#.
   -1   114 #..#.#..#
   -1   115 ...##...#
   -1   116 #..##...#
   -1   117 #..##.#..
   -1   118 ......#.#
   -1   119 .##.#..##
   -1   120 .......#.
   -1   121 ####.###.
   -1   122 ####.###.
   -1   123 .......#.
   -1   124 
   -1   125 #.##..#
   -1   126 ....##.
   -1   127 ..####.
   -1   128 .###.##
   -1   129 .###.##
   -1   130 .#####.
   -1   131 ....##.
   -1   132 #.##..#
   -1   133 .#....#
   -1   134 .#.###.
   -1   135 #......
   -1   136 ##.#.##
   -1   137 ##.#.##
   -1   138 
   -1   139 .###..####....#.#
   -1   140 .#....##.#.##..##
   -1   141 .#....##.#.##..##
   -1   142 .###..####....#.#
   -1   143 #....##.###.##.##
   -1   144 #.##...#.#..#.##.
   -1   145 ######..######...
   -1   146 ..##..###...###..
   -1   147 #..####.#.#..#.##
   -1   148 #..####.#.#..#.##
   -1   149 ..##..####..###..
   -1   150 
   -1   151 ..##......#
   -1   152 ##.#.#..#.#
   -1   153 ##..#.##.#.
   -1   154 ...##....##
   -1   155 #####....##
   -1   156 #####.##.##
   -1   157 ..#...##.#.
   -1   158 ##.........
   -1   159 ##...#..#..
   -1   160 ##.##....##
   -1   161 ##..##..##.
   -1   162 
   -1   163 ...#....##.
   -1   164 ...#..##..#
   -1   165 ###.#...##.
   -1   166 ##..##.#..#
   -1   167 .###.###..#
   -1   168 ###.##..##.
   -1   169 ##.##..####
   -1   170 ##.#.#..##.
   -1   171 .....#.#..#
   -1   172 ..#########
   -1   173 ##...#.####
   -1   174 ...#..##..#
   -1   175 ....#.#.##.
   -1   176 
   -1   177 ##.....#.#.
   -1   178 ###....#.#.
   -1   179 ...#.###.#.
   -1   180 .###..##..#
   -1   181 ####.#.#...
   -1   182 ..#.#####.#
   -1   183 ..####..###
   -1   184 #.##.###.##
   -1   185 #.#.##.#..#
   -1   186 #.#.##.#..#
   -1   187 #.##.###.##
   -1   188 
   -1   189 ..#..#..#..#.
   -1   190 .#####..####.
   -1   191 .##..##.####.
   -1   192 .#.##.#.####.
   -1   193 ###..####..##
   -1   194 ##.##.###..##
   -1   195 #.#..#.##..##
   -1   196 ..####.......
   -1   197 ..####..#..#.
   -1   198 ..#..#.......
   -1   199 ##....#######
   -1   200 ###..########
   -1   201 ...##........
   -1   202 
   -1   203 #........
   -1   204 ...##....
   -1   205 #.#..#.##
   -1   206 .#....#..
   -1   207 #.####.##
   -1   208 .#....#..
   -1   209 .#.##.#..
   -1   210 #......##
   -1   211 ##....###
   -1   212 #..##..##
   -1   213 .#....#..
   -1   214 
   -1   215 ..##..#..#.
   -1   216 .###.##.###
   -1   217 ##.##...#..
   -1   218 ..#.###.#..
   -1   219 ##.....##..
   -1   220 #.###....##
   -1   221 #.###....##
   -1   222 ##.....##..
   -1   223 ..#.###.#..
   -1   224 ##.###..#..
   -1   225 .###.##.###
   -1   226 ..##..#..#.
   -1   227 ..#......#.
   -1   228 ###.#.##.#.
   -1   229 .#..#.##.##
   -1   230 #...#...##.
   -1   231 #...#...##.
   -1   232 
   -1   233 #..#..#.#.....#
   -1   234 ####.####.##.#.
   -1   235 .##....#.#...#.
   -1   236 .....#..#...###
   -1   237 #..#..#.##.##.#
   -1   238 ####.....####..
   -1   239 #####.....###.#
   -1   240 .##.##.###..###
   -1   241 #..#.#.#.#..##.
   -1   242 #####..#..##.##
   -1   243 .##..#......#..
   -1   244 #####.....#..#.
   -1   245 ###########..#.
   -1   246 ###########..#.
   -1   247 #####.#...#..#.
   -1   248 .##..#......#..
   -1   249 #####..#..##.##
   -1   250 
   -1   251 #.##.#..###.#..#.
   -1   252 .####..#..#..##.#
   -1   253 ..##...##.##.....
   -1   254 ..##...#...###..#
   -1   255 ......#..###....#
   -1   256 ........#..#.##..
   -1   257 #....##.#.#..##..
   -1   258 ..##..##.###.##.#
   -1   259 ..##..##.###.##.#
   -1   260 #....##.#.#..##..
   -1   261 ........#..#.##..
   -1   262 ......#..##.....#
   -1   263 ..##...#...###..#
   -1   264 
   -1   265 ...####....#..#..
   -1   266 ####.#.##...#.#..
   -1   267 #.#.#..#...#.####
   -1   268 ...#.#.#######...
   -1   269 #.####.##.#..#...
   -1   270 #.####.##.#..#...
   -1   271 ...#.#.#####.#...
   -1   272 
   -1   273 #..##..
   -1   274 #..#.#.
   -1   275 .##....
   -1   276 .##....
   -1   277 #..#.#.
   -1   278 #..#.#.
   -1   279 .##....
   -1   280 .##....
   -1   281 #..#.#.
   -1   282 #..##..
   -1   283 .#...#.
   -1   284 .....##
   -1   285 ####..#
   -1   286 
   -1   287 .##......##..
   -1   288 .##..######.#
   -1   289 ####.#.#....#
   -1   290 .....###.##.#
   -1   291 .##.###..##..
   -1   292 ....####.##.#
   -1   293 ....###......
   -1   294 #..#..#.####.
   -1   295 .##..........
   -1   296 .....##......
   -1   297 #..#..###..##
   -1   298 #####..######
   -1   299 .......#....#
   -1   300 .##.#.##....#
   -1   301 .##.....####.
   -1   302 
   -1   303 ##..#..#.....
   -1   304 ####.##.##..#
   -1   305 .##..####.##.
   -1   306 ##.#..##.....
   -1   307 #.#.#...#####
   -1   308 #...#.#.#.##.
   -1   309 .#.###.......
   -1   310 ..##.....#..#
   -1   311 ###..#...#..#
   -1   312 ..#.#.###.##.
   -1   313 #..#.###.....
   -1   314 #..#.###.....
   -1   315 ..#.#####.##.
   -1   316 ###..#...#..#
   -1   317 ..##.....#..#
   -1   318 
   -1   319 ###.#....##..
   -1   320 ####.#...#...
   -1   321 ####.##.##..#
   -1   322 ..#..##..##..
   -1   323 ...#...#.#.##
   -1   324 ..#..#...####
   -1   325 ###..##.#....
   -1   326 
   -1   327 ##....##....#
   -1   328 ...##....##..
   -1   329 .##..####..##
   -1   330 .#.##.##.##.#
   -1   331 #.#..#..#..#.
   -1   332 .############
   -1   333 ##....##....#
   -1   334 ###..####..##
   -1   335 .############
   -1   336 ##.##.##.##.#
   -1   337 #..##....##..
   -1   338 .############
   -1   339 #.####..####.
   -1   340 #..##....##..
   -1   341 ##.#..##..#.#
   -1   342 #..##....##..
   -1   343 #............
   -1   344 
   -1   345 .##..#.
   -1   346 ###.#..
   -1   347 ....##.
   -1   348 #..#..#
   -1   349 ####.#.
   -1   350 .##.##.
   -1   351 ....##.
   -1   352 .##.#.#
   -1   353 .##.#.#
   -1   354 ....##.
   -1   355 .##.##.
   -1   356 
   -1   357 .###..#
   -1   358 .#...##
   -1   359 ....##.
   -1   360 #...#.#
   -1   361 #...#.#
   -1   362 ....###
   -1   363 .#...##
   -1   364 .###..#
   -1   365 ###....
   -1   366 ....#..
   -1   367 ###..#.
   -1   368 ##.#.##
   -1   369 #......
   -1   370 ##.#..#
   -1   371 ##.#..#
   -1   372 #......
   -1   373 ##.#.##
   -1   374 
   -1   375 ##...##
   -1   376 #...##.
   -1   377 #...##.
   -1   378 ##...##
   -1   379 ...###.
   -1   380 #.#....
   -1   381 .#.....
   -1   382 ###...#
   -1   383 .....#.
   -1   384 .#..#..
   -1   385 ..#.##.
   -1   386 ..#.##.
   -1   387 .#..#..
   -1   388 .....#.
   -1   389 ###.#.#
   -1   390 
   -1   391 ##..######...#.
   -1   392 ##..######...#.
   -1   393 .####.#.##.#...
   -1   394 ##.##.#...#....
   -1   395 ####.####.#...#
   -1   396 #.#.##..#.#####
   -1   397 ##...##..#.#.#.
   -1   398 .#.##..##..##..
   -1   399 #..##.##.###.##
   -1   400 #..#####.###.##
   -1   401 .#.##..##..##..
   -1   402 
   -1   403 #....######
   -1   404 .#..#...#..
   -1   405 ######..#..
   -1   406 #....##.#..
   -1   407 ..#....##..
   -1   408 ......#....
   -1   409 #....##....
   -1   410 
   -1   411 #..##.###
   -1   412 .....#..#
   -1   413 .##..##.#
   -1   414 .##..#.#.
   -1   415 #.##.####
   -1   416 .......##
   -1   417 #..##..#.
   -1   418 #..#.#..#
   -1   419 #..#.#..#
   -1   420 #..##..#.
   -1   421 .......##
   -1   422 
   -1   423 ###........######
   -1   424 #.#........#.#..#
   -1   425 .....#..#.....##.
   -1   426 #.#..#..#..###..#
   -1   427 .####.##.####....
   -1   428 ..##.#..#.##.....
   -1   429 .#.########.#.##.
   -1   430 #..#......#..#..#
   -1   431 .##..####..##.##.
   -1   432 
   -1   433 #.#..##.#..
   -1   434 ####.#.#.##
   -1   435 .#..#.##.##
   -1   436 #..#..#..##
   -1   437 #.#..###...
   -1   438 ##.#####...
   -1   439 ##.#####...
   -1   440 #.#..###...
   -1   441 #..#..#..##
   -1   442 .#..#.##.##
   -1   443 #.##.#.#.##
   -1   444 
   -1   445 .#.#..###.#
   -1   446 ####.#...#.
   -1   447 ######...#.
   -1   448 .#.#..###.#
   -1   449 ....###..#.
   -1   450 .####.#####
   -1   451 ...#######.
   -1   452 ...#######.
   -1   453 .####.#####
   -1   454 
   -1   455 .##...#
   -1   456 ....##.
   -1   457 .##.#..
   -1   458 .##.#..
   -1   459 ....##.
   -1   460 .##...#
   -1   461 #..#.#.
   -1   462 ...####
   -1   463 ####.##
   -1   464 ....#.#
   -1   465 #####.#
   -1   466 
   -1   467 ###..##.##.####
   -1   468 ..#.#..##.#..##
   -1   469 ....#..##.#..##
   -1   470 ###..##.##.####
   -1   471 ##..#..######..
   -1   472 #.###.##..###..
   -1   473 ##....##.....##
   -1   474 ....#.#..#.....
   -1   475 .###########.##
   -1   476 ##...#.##.#....
   -1   477 #..#.##..#.....
   -1   478 ###.#...#.###..
   -1   479 ...#.....##....
   -1   480 #..#.#####.####
   -1   481 ###.##.#.#..###
   -1   482 
   -1   483 #.##.#.#..#.#.#
   -1   484 ......###.#....
   -1   485 #######...#.##.
   -1   486 ########.###...
   -1   487 #....#.##..##.#
   -1   488 ##..###....#.#.
   -1   489 #.##.###.##.##.
   -1   490 #.##.#.....#...
   -1   491 #.##.#.....#...
   -1   492 #.##.###.##.##.
   -1   493 ##..###....#.#.
   -1   494 #....#.##.###.#
   -1   495 ########.###...
   -1   496 
   -1   497 #..#..##..#
   -1   498 ##.........
   -1   499 #..#..##..#
   -1   500 ..#........
   -1   501 .#.........
   -1   502 ##..##..##.
   -1   503 ###.##..##.
   -1   504 ...########
   -1   505 ##.#..##..#
   -1   506 .##........
   -1   507 ...##.##.##
   -1   508 .#.########
   -1   509 ..#........
   -1   510 ..#########
   -1   511 #..........
   -1   512 
   -1   513 #......
   -1   514 ....###
   -1   515 ##.#.##
   -1   516 ##..#..
   -1   517 ..#.###
   -1   518 ..##...
   -1   519 ...##..
   -1   520 
   -1   521 #.##.##
   -1   522 ..##.##
   -1   523 ..###..
   -1   524 .#..###
   -1   525 #.#....
   -1   526 #..####
   -1   527 #..##..
   -1   528 ###....
   -1   529 .###...
   -1   530 
   -1   531 ##..#..#...#.##
   -1   532 #....##..#.#...
   -1   533 #...#.#....#.##
   -1   534 #..##.##.......
   -1   535 ..###...#.##...
   -1   536 .##.###.#..#.##
   -1   537 #..##.#...##.##
   -1   538 #.##.......##..
   -1   539 ##.#####.###...
   -1   540 ...#.#####.....
   -1   541 ...#.##...#.###
   -1   542 ..##..#...##.##
   -1   543 ...#.#.#.##..##
   -1   544 ...#.#.#..#..##
   -1   545 ..##..#...##.##
   -1   546 ...#.##...#.###
   -1   547 ...#.#####.....
   -1   548 
   -1   549 #.##.#.##.#..####
   -1   550 ##..##.##..###..#
   -1   551 ......####.#.#..#
   -1   552 .#..##...#..#####
   -1   553 ..##..#.##.#.....
   -1   554 #.##.#####....##.
   -1   555 ######..##.#..##.
   -1   556 
   -1   557 .#.##.#..
   -1   558 ###..####
   -1   559 ###..##..
   -1   560 ..#..#...
   -1   561 #..##..##
   -1   562 ##....###
   -1   563 ...##....
   -1   564 #..##..##
   -1   565 ###..####
   -1   566 ##.##.###
   -1   567 ...##....
   -1   568 #.#..#.##
   -1   569 ###..####
   -1   570 ###..####
   -1   571 #.#..#.##
   -1   572 ..#..#...
   -1   573 .#....#..
   -1   574 
   -1   575 ##.###..#....
   -1   576 ##.###..#....
   -1   577 #.....##..###
   -1   578 #.#.#.#####..
   -1   579 ####...#...##
   -1   580 #.#..#.#.....
   -1   581 ###..#.#...##
   -1   582 .....#####..#
   -1   583 ..##..##..#..
   -1   584 ..##..##..#..
   -1   585 ..#..#####..#
   -1   586 
   -1   587 ..##.####.##.
   -1   588 ...###.####..
   -1   589 ###.######.##
   -1   590 ....##..##...
   -1   591 ..#.#.##.#.#.
   -1   592 ....#.##.#...
   -1   593 ..#.#....#.#.
   -1   594 ..#..####..#.
   -1   595 ...#..##..#..
   -1   596 ....#.##.#...
   -1   597 ###.#.##.#.##
   -1   598 .....####....
   -1   599 ####.####.###
   -1   600 
   -1   601 .##.#......#...
   -1   602 .......##.#.#..
   -1   603 ....#...#.#....
   -1   604 ####...#...#..#
   -1   605 #..#...###..#.#
   -1   606 ####.#.##.##.##
   -1   607 ....#.##.#.#...
   -1   608 #..##.#..##...#
   -1   609 #..#.#.###..#.#
   -1   610 #####...#######
   -1   611 .....###.#.##.#
   -1   612 #..#.#.##.#.#.#
   -1   613 #..#...##.#.#.#
   -1   614 .....###.#.##.#
   -1   615 #####...#######
   -1   616 #..#.#.###..#.#
   -1   617 #..##.#..##...#
   -1   618 
   -1   619 ###.##....##.
   -1   620 #..#.######.#
   -1   621 ..###..##..##
   -1   622 ..###..##..##
   -1   623 #..#.######.#
   -1   624 ###.##....##.
   -1   625 .#.#.##..##.#
   -1   626 .#..#.#..#...
   -1   627 #..##.#..#.##
   -1   628 #.#.##....##.
   -1   629 ...#.#.##.#.#
   -1   630 .###.##..##.#
   -1   631 .#..###..###.
   -1   632 
   -1   633 #.#.##.##.##.#.
   -1   634 ..#.########.#.
   -1   635 ...#.#.##.#.#..
   -1   636 .#.#.######.#.#
   -1   637 #...#.#..#.#...
   -1   638 ...##......##..
   -1   639 ..##.######.##.
   -1   640 ##.#..#..#.##.#
   -1   641 .....#.##.#....
   -1   642 #.#.#.####.#.#.
   -1   643 ##.#.#.##.#.#.#
   -1   644 ##.#..#..#..#.#
   -1   645 ##..##.##.##..#
   -1   646 ....#......#...
   -1   647 .#..#......#..#
   -1   648 #.####.##.####.
   -1   649 #.####.##.####.
   -1   650 
   -1   651 ....##.....#.
   -1   652 ##.....#.##..
   -1   653 .#..#.##.#.#.
   -1   654 #####...##.##
   -1   655 .##.####...#.
   -1   656 ...#.####.#..
   -1   657 ...#.####.#..
   -1   658 .##.####...#.
   -1   659 #####...##.##
   -1   660 .#..#.##.#.#.
   -1   661 ##.....#.##..
   -1   662 #...##.....#.
   -1   663 #...##.....#.
   -1   664 
   -1   665 ##...#.####.#..##
   -1   666 ##.##.##..##.##.#
   -1   667 ###.#...##...#.##
   -1   668 ...#..#.##.#..#..
   -1   669 ##.#..######..#.#
   -1   670 ....###....###...
   -1   671 ##...#.#..#.#...#
   -1   672 .....#.####.#....
   -1   673 ##.##.##..##.##.#
   -1   674 ..#####.##.#####.
   -1   675 ..#.#.##..##.#.#.
   -1   676 #####...##...####
   -1   677 ......######.....
   -1   678 ......#....#.....
   -1   679 ###...#.##.#...##
   -1   680 
   -1   681 .##....
   -1   682 .####..
   -1   683 #.#.#.#
   -1   684 .#..#..
   -1   685 #.###..
   -1   686 #....#.
   -1   687 #....#.
   -1   688 #.###..
   -1   689 .#..#..
   -1   690 #.#.#.#
   -1   691 .####..
   -1   692 .##...#
   -1   693 .##...#
   -1   694 
   -1   695 ..##.######.##.
   -1   696 .##...#..#...##
   -1   697 .##...#..#...##
   -1   698 ..##.######.##.
   -1   699 ..##........##.
   -1   700 #......##......
   -1   701 .#...######...#
   -1   702 ##....#..#..#.#
   -1   703 ....#......#...
   -1   704 .###..#..#..###
   -1   705 #..#..#..#..#..
   -1   706 ##.#.##..##.#.#
   -1   707 .#..###..###..#
   -1   708 
   -1   709 ####..#...#.#
   -1   710 .##..#...##..
   -1   711 .##..#...###.
   -1   712 ####..#...#.#
   -1   713 ####.#..#.###
   -1   714 .##.#.......#
   -1   715 #..#.#.......
   -1   716 #######....#.
   -1   717 ....##..####.
   -1   718 .##.###.....#
   -1   719 #..##..###.##
   -1   720 
   -1   721 #.....###.#
   -1   722 ..#..#.....
   -1   723 ###.....###
   -1   724 ........###
   -1   725 .###.#.###.
   -1   726 .##.##..#.#
   -1   727 ##..####.#.
   -1   728 ##..####.#.
   -1   729 .##.##..#.#
   -1   730 .###.#.###.
   -1   731 ..#.....###
   -1   732 ###.....###
   -1   733 ..#..#.....
   -1   734 #.....###.#
   -1   735 #.....###.#
   -1   736 
   -1   737 #.###..#...
   -1   738 #.##...#...
   -1   739 #..####..##
   -1   740 .##.#.#..##
   -1   741 #..###...##
   -1   742 #..#..#.#..
   -1   743 #..##..#...
   -1   744 ##.#..##...
   -1   745 ..#####.###
   -1   746 #..##.##...
   -1   747 .#.####.###
   -1   748 
   -1   749 #.##.####.##.#.##
   -1   750 .#..##..##.##.###
   -1   751 ....##..##.......
   -1   752 .#.#.#..#.#.#.#.#
   -1   753 #....#..#....#.##
   -1   754 ..#.#....#.#..#.#
   -1   755 ..###.##.###....#
   -1   756 ##.#......#.#####
   -1   757 #####....#####..#
   -1   758 #####....#####..#
   -1   759 ##.#......#.#####
   -1   760 ..###.##.###....#
   -1   761 ..#.#....#.#..#.#
   -1   762 #....#..#....#.##
   -1   763 .#.#.#..#.#.#.#.#
   -1   764 
   -1   765 ..#..#..#..#..#
   -1   766 ..####........#
   -1   767 #..##..#....#..
   -1   768 #......#....#..
   -1   769 .#....#..##..#.
   -1   770 #..##..#######.
   -1   771 .#.##.#.####.#.
   -1   772 ...##...#..#...
   -1   773 .######......##
   -1   774 ##....##.##.##.
   -1   775 #.#..#.######.#
   -1   776 ..#..#..#..#..#
   -1   777 #......######..
   -1   778 
   -1   779 .#....#..
   -1   780 ..####...
   -1   781 #..##..#.
   -1   782 ..#..#..#
   -1   783 #..##..#.
   -1   784 .#.####..
   -1   785 .##..##.#
   -1   786 .#.##.#.#
   -1   787 #..##..#.
   -1   788 #......##
   -1   789 #......##
   -1   790 
   -1   791 #..####..
   -1   792 ##.##.###
   -1   793 ##.#..##.
   -1   794 ..###.###
   -1   795 #.##....#
   -1   796 ###.#.###
   -1   797 #.#.#.###
   -1   798 #.#.#.###
   -1   799 ###.#.###
   -1   800 
   -1   801 .##...##.#...#.
   -1   802 ..##....####.#.
   -1   803 ##..##..#...###
   -1   804 ####.##.#....##
   -1   805 #.##......##..#
   -1   806 ..##..#.##.#.##
   -1   807 ###..######...#
   -1   808 ###..######...#
   -1   809 ..##..#.##.#.##
   -1   810 #.##......##..#
   -1   811 ####.##.#....##
   -1   812 ##..##..#...#.#
   -1   813 ..##....####.#.
   -1   814 .##...##.#...#.
   -1   815 .##...##.#...#.
   -1   816 
   -1   817 #......
   -1   818 .#.....
   -1   819 ..#####
   -1   820 #.##..#
   -1   821 ...####
   -1   822 ###....
   -1   823 ...####
   -1   824 ..#....
   -1   825 .#.####
   -1   826 
   -1   827 ..##.###......###
   -1   828 ##...###......###
   -1   829 ##..####.####.###
   -1   830 ..#.####..##.####
   -1   831 ....##.##.##.##.#
   -1   832 ####..##.####.##.
   -1   833 ##.##.###.##.###.
   -1   834 ##.##.###.##.###.
   -1   835 ###..############
   -1   836 ..#...##.####.##.
   -1   837 ##...####....####
   -1   838 ....#.###.##.###.
   -1   839 ..##.............
   -1   840 
   -1   841 ###...##...##
   -1   842 ##.###.#..#..
   -1   843 ######...#...
   -1   844 ...#.######..
   -1   845 .####.###....
   -1   846 #.#.#######..
   -1   847 ###.#.#..####
   -1   848 ...#...#..#..
   -1   849 ...###.###.##
   -1   850 ..##.#.##....
   -1   851 ##........###
   -1   852 ##........###
   -1   853 ..##.#.##....
   -1   854 ...###.###.##
   -1   855 ...#...#..#..
   -1   856 ###.#.#..####
   -1   857 #.#.###.###..
   -1   858 
   -1   859 ########.#..###.#
   -1   860 #..##..###.#...#.
   -1   861 ..####.....##....
   -1   862 ...##.......#....
   -1   863 ##....##.....#...
   -1   864 .........#####..#
   -1   865 #.#..#.##..##...#
   -1   866 ..#..#..#.#.#.#..
   -1   867 .#.##.#....#...##
   -1   868 ........#.....#..
   -1   869 #.#..#.##.###.###
   -1   870 #.#..#.##.###.#.#
   -1   871 ........#.....#..
   -1   872 .#.##.#....#...##
   -1   873 ..#..#..#.#.#.#..
   -1   874 #.#..#.##..##...#
   -1   875 .........#####..#
   -1   876 
   -1   877 #..#.###...
   -1   878 #.##.....#.
   -1   879 #.##.....#.
   -1   880 #..#.###...
   -1   881 ..#.#.##..#
   -1   882 .##.#.#..##
   -1   883 ...###...#.
   -1   884 #.##....#.#
   -1   885 #..##..###.
   -1   886 #.#####.#.#
   -1   887 ##....###..
   -1   888 #.#.#..#...
   -1   889 ...###...#.
   -1   890 ###....#.#.
   -1   891 ###....#.##
   -1   892 
   -1   893 #.##.####.#..
   -1   894 #######.###.#
   -1   895 #....#####..#
   -1   896 ..##..##.#..#
   -1   897 ##..#####.#..
   -1   898 ######.###..#
   -1   899 .####..##.###
   -1   900 .#..#.####..#
   -1   901 #.##.#.#...#.
   -1   902 .#..#..#.#.##
   -1   903 ..##..##..##.
   -1   904 .........#..#
   -1   905 #.##.###..##.
   -1   906 .####....#..#
   -1   907 ..##....###..
   -1   908 ..##....#.#..
   -1   909 .####....#..#
   -1   910 
   -1   911 ##.#.#.#.#.
   -1   912 ....#.###.#
   -1   913 #.....##..#
   -1   914 ..#...#.#.#
   -1   915 ##..#.#.###
   -1   916 ##..#.#.###
   -1   917 ..#...#.#.#
   -1   918 #..#..##..#
   -1   919 ....#.###.#
   -1   920 ##.#.#.#.#.
   -1   921 ....####...
   -1   922 ##...#.#.##
   -1   923 ####.##.#..
   -1   924 #...#.#....
   -1   925 #####....#.
   -1   926 #####....#.
   -1   927 #...#.#....
   -1   928 
   -1   929 ..#.###
   -1   930 ###.###
   -1   931 ..#.###
   -1   932 ....#.#
   -1   933 ..#.##.
   -1   934 ##.#.#.
   -1   935 .....#.
   -1   936 ##..#..
   -1   937 ..#.###
   -1   938 .#..##.
   -1   939 ...#..#
   -1   940 ##.....
   -1   941 ##.....
   -1   942 
   -1   943 .#####.
   -1   944 #...##.
   -1   945 #####..
   -1   946 #..#.##
   -1   947 #..#.##
   -1   948 #####..
   -1   949 #...##.
   -1   950 .#####.
   -1   951 .##.#..
   -1   952 .....##
   -1   953 ..#..##
   -1   954 
   -1   955 ##.##.#.#
   -1   956 #...#....
   -1   957 #...#....
   -1   958 ##.##.#.#
   -1   959 ###.....#
   -1   960 .....###.
   -1   961 #.###...#
   -1   962 #.###...#
   -1   963 .....###.
   -1   964 ###...#.#
   -1   965 ##.##.#.#
   -1   966 
   -1   967 .#.#.#..#
   -1   968 #....#..#
   -1   969 ..#.#.##.
   -1   970 #.##.####
   -1   971 #.#.#.##.
   -1   972 #..###..#
   -1   973 .#.#..##.
   -1   974 #.#......
   -1   975 ###......
   -1   976 
   -1   977 ##.....#...#..#..
   -1   978 ..#..##..#.####..
   -1   979 #.##..#...#.#..##
   -1   980 .#...###.####.#..
   -1   981 ...##..###.#.#.##
   -1   982 #.#..#######.....
   -1   983 .###..#.#.#......
   -1   984 ##.#.....########
   -1   985 ##.##.#####..#.##
   -1   986 ..#...#..#...####
   -1   987 ####.#..#..##....
   -1   988 #..#.#.##..###...
   -1   989 #..#.#.##..##....
   -1   990 
   -1   991 ..#....
   -1   992 #.#....
   -1   993 .#.#.##
   -1   994 .#.#.##
   -1   995 #.#....
   -1   996 ..#..##
   -1   997 ###.###
   -1   998 
   -1   999 #....##..####..##
   -1  1000 #.#.....#....#...
   -1  1001 #..#....#....#...
   -1  1002 #..##....#..#....
   -1  1003 .#.....#......#..
   -1  1004 ...####.#....#.##
   -1  1005 ##..#.##########.
   -1  1006 .#.####.######.##
   -1  1007 ....######..#####
   -1  1008 #..#.....####....
   -1  1009 #.#.###.##..##.##
   -1  1010 
   -1  1011 ##....#........
   -1  1012 ..##...##.##.##
   -1  1013 ###..#.#.####.#
   -1  1014 #.##.#.........
   -1  1015 ####.#.........
   -1  1016 ###..#.#.####.#
   -1  1017 ..##...##.##.##
   -1  1018 ##....#........
   -1  1019 #..####.##..##.
   -1  1020 
   -1  1021 #.###.####.###.
   -1  1022 #.###.####.###.
   -1  1023 #.###..##..###.
   -1  1024 .####.#..######
   -1  1025 .#.#.#....#.#.#
   -1  1026 ..#.#..##..#.#.
   -1  1027 .#.#.#....#.#.#
   -1  1028 #.##.#....#.##.
   -1  1029 #.#..#.##.#..#.
   -1  1030 #..#.##..##.#..
   -1  1031 ..##...##...##.
   -1  1032 ..#.#......#.#.
   -1  1033 #.#.##....##.#.
   -1  1034 .##.##.##.##.##
   -1  1035 .#####.##.#####
   -1  1036 .#.#.#.##.#.#.#
   -1  1037 ###..######..##
   -1  1038 
   -1  1039 #..###.....
   -1  1040 #..###.....
   -1  1041 #..#.#####.
   -1  1042 .#...###..#
   -1  1043 #.###..####
   -1  1044 ####..#####
   -1  1045 .#####.###.
   -1  1046 ..###.#..##
   -1  1047 #.##..#.#.#
   -1  1048 ####..#.#.#
   -1  1049 ..###.#..##
   -1  1050 .#####.###.
   -1  1051 ####..#####
   -1  1052 
   -1  1053 ..####..###.#
   -1  1054 #.#..#.###..#
   -1  1055 #.####.#.##.#
   -1  1056 ..#..#...#..#
   -1  1057 .#....#.....#
   -1  1058 #..##..###..#
   -1  1059 #......#.#.#.
   -1  1060 .#.##.#...##.
   -1  1061 .######...#..
   -1  1062 .#....#.###..
   -1  1063 .#....#.###..
   -1  1064 .######...#..
   -1  1065 .#.##.#....#.
   -1  1066 #......#.#.#.
   -1  1067 #..##..###..#
   -1  1068 
   -1  1069 ....##..#..
   -1  1070 #..#...#...
   -1  1071 .##...#..##
   -1  1072 .##..##..##
   -1  1073 ####.##....
   -1  1074 #..##.#.#.#
   -1  1075 ####.####.#
   -1  1076 #..##..#...
   -1  1077 .##..#..#.#
   -1  1078 .##.###.##.
   -1  1079 .##.###.##.
   -1  1080 .##..#..#.#
   -1  1081 #..#...#...
   -1  1082 
   -1  1083 #..###...#..#...#
   -1  1084 ..#.#...##..##...
   -1  1085 ...#####.####.###
   -1  1086 ##.#.#####..#####
   -1  1087 ...#.#...#..#...#
   -1  1088 .##....##.##.##..
   -1  1089 ....#.###.##.###.
   -1  1090 #.#.#...#....#...
   -1  1091 .#.###.#..##..#.#
   -1  1092 ..#...#..#..#..#.
   -1  1093 .##..#...####...#
   -1  1094 ..##.#....##....#
   -1  1095 ...#.#....##....#
   -1  1096 .##..#...####...#
   -1  1097 ..#...#..#..#..#.
   -1  1098 
   -1  1099 ##.##############
   -1  1100 #.####.##.##.##.#
   -1  1101 .####.####..####.
   -1  1102 .#..#............
   -1  1103 ###.#.####..####.
   -1  1104 .#..##....##....#
   -1  1105 #................
   -1  1106 .###.############
   -1  1107 ..###..###..###..
   -1  1108 ##.####..####..##
   -1  1109 ..#..##..####..##
   -1  1110 ....#.####..####.
   -1  1111 #...#.####..####.
   -1  1112 .###.##..####..##
   -1  1113 ..####.##.##.##.#
   -1  1114 
   -1  1115 #.##.#.###.......
   -1  1116 #.##.#.###.......
   -1  1117 ###.#.....#.#.#..
   -1  1118 #.###..##.####.##
   -1  1119 .#.#..#.######...
   -1  1120 .....#.....##...#
   -1  1121 ##..#..##...##.#.
   -1  1122 ##..#..##...##.#.
   -1  1123 .....#.....##..##
   -1  1124 .#.#..#.######...
   -1  1125 #.###..##.####.##
   -1  1126 ###.#.....#.#.#..
   -1  1127 #.##.#.###.......
   -1  1128 
   -1  1129 ...##..###...
   -1  1130 ###...####..#
   -1  1131 ##.###.#..###
   -1  1132 ###..#...###.
   -1  1133 ....#..#.#...
   -1  1134 ######......#
   -1  1135 ...##...##..#
   -1  1136 .....##..##.#
   -1  1137 ##.#..###...#
   -1  1138 ##...#.#....#
   -1  1139 ##...#.#....#
   -1  1140 ##.##.###...#
   -1  1141 .....##..##.#
   -1  1142 ...##...##..#
   -1  1143 ######......#
   -1  1144 
   -1  1145 .##..#####.#.
   -1  1146 .##..#####.##
   -1  1147 .##.##.###.#.
   -1  1148 #..##...#.##.
   -1  1149 ######.##.###
   -1  1150 #..##.###.#.#
   -1  1151 ....#..#.#.#.
   -1  1152 
   -1  1153 ###.....#....
   -1  1154 ##.#....#....
   -1  1155 ...#.##..####
   -1  1156 ####..#.#..##
   -1  1157 ###....#..#..
   -1  1158 #..#..#.#.###
   -1  1159 .###.###.####
   -1  1160 ####.###.##.#
   -1  1161 ###.##.#..#..
   -1  1162 ##..#..#.....
   -1  1163 ##..#..#.....
   -1  1164 
   -1  1165 .....##..
   -1  1166 #...####.
   -1  1167 #...####.
   -1  1168 .....##..
   -1  1169 .##.#..#.
   -1  1170 #.#..###.
   -1  1171 ...#.##.#
   -1  1172 .########
   -1  1173 #..######
   -1  1174 #..#....#
   -1  1175 #####..##
   -1  1176 .#.#.##.#
   -1  1177 .#.......
   -1  1178 #.###..##
   -1  1179 ..##....#
   -1  1180 #..##..##
   -1  1181 .##.####.
   -1  1182 
   -1  1183 .#.#.#..##.##....
   -1  1184 #.###......##...#
   -1  1185 #.#####.#..#.###.
   -1  1186 #.#.#.#.##..##.##
   -1  1187 .#..#.####.###..#
   -1  1188 .#..#.###..###..#
   -1  1189 #.#.#.#.##..##.##
   -1  1190 ##..###..#.###..#
   -1  1191 .###.##..##.#..#.
   -1  1192 .###.##..##.#..#.
   -1  1193 ##..###..#.###..#
   -1  1194 #.#.#.#.##..##.##
   -1  1195 .#..#.###..###..#
   -1  1196 .#..#.####.###..#
   -1  1197 #.#.#.#.##..##.##
   -1  1198 
   -1  1199 ###.#...#..#...#.
   -1  1200 .#..##........##.
   -1  1201 ###..###.##.###..
   -1  1202 ###..####..####..
   -1  1203 ###..####..####..
   -1  1204 ###..###.##.###..
   -1  1205 .#..##........##.
   -1  1206 #.#.#...#..#...#.
   -1  1207 ###.#.#.#..#.#.#.
   -1  1208 ##.#.#.######.#.#
   -1  1209 ##.....######....
   -1  1210 .#######....#####
   -1  1211 ##.#.#...##...#.#
   -1  1212 #####...#..#...##
   -1  1213 .#.......##......
   -1  1214 ###...########...
   -1  1215 ####..#......#..#
   -1  1216 
   -1  1217 .#.#.###.#.
   -1  1218 #..#.#..##.
   -1  1219 #..#.#..##.
   -1  1220 .#.#.###.#.
   -1  1221 ######.####
   -1  1222 ##.#.###..#
   -1  1223 ...##......
   -1  1224 .##.#.#..##
   -1  1225 .##.#.#..##
   -1  1226 .#....#..#.
   -1  1227 #..##.##.#.
   -1  1228 #..##.##.#.
   -1  1229 .#...##..#.
   -1  1230 
   -1  1231 ###.###..#..#.###
   -1  1232 ###.#..#.##.#..##
   -1  1233 #......#.....#.##
   -1  1234 .##..#####.#..###
   -1  1235 ######.##.##...##
   -1  1236 #####..#..#.#....
   -1  1237 #####.....#.#....
   -1  1238 
   -1  1239 #.##.#.#..##.##.#
   -1  1240 ##......#.#....#.
   -1  1241 ###.######..#..#.
   -1  1242 ##..#####.##....#
   -1  1243 .#.#....##..####.
   -1  1244 .##...#.##.######
   -1  1245 .###....#########
   -1  1246 #...########.##.#
   -1  1247 #...########.##.#
   -1  1248 
   -1  1249 ..###.#..#..#####
   -1  1250 ########.##.##.#.
   -1  1251 ###.#.######.#...
   -1  1252 ##.#.#.#.....#.##
   -1  1253 ######.#...#...##
   -1  1254 .....##......#.#.
   -1  1255 ####..##.....##..
   -1  1256 ..####.##..#..###
   -1  1257 ...#..#.#.#..#.#.
   -1  1258 ...#..#.#.#..#.#.
   -1  1259 ..####.##..#..###
   -1  1260 ####..##.....##..
   -1  1261 .....##......#.#.
   -1  1262 ######.#...#..###
   -1  1263 ##.#.#.#.....#.##
   -1  1264 ###.#.######.#...
   -1  1265 ########.##.##.#.
   -1  1266 
   -1  1267 ..##...##
   -1  1268 #.###..##
   -1  1269 #.###..##
   -1  1270 ..##...##
   -1  1271 ##.#...##
   -1  1272 ###...#..
   -1  1273 ##....###
   -1  1274 #.##.###.
   -1  1275 .....##..
   -1  1276 
   -1  1277 ##...#.####..###.
   -1  1278 .#..###.#####..#.
   -1  1279 .#..###.#####..#.
   -1  1280 ##...#.####..#.#.
   -1  1281 ##...#.####..#.#.
   -1  1282 .#..###.#####..#.
   -1  1283 .#..###.#####..#.
   -1  1284 ##...#.####..###.
   -1  1285 ###...#...###..#.
   -1  1286 ###.####.#.#..###
   -1  1287 .#.#####.....####
   -1  1288 ..#####.##.###...
   -1  1289 ##.##...#...#.#.#
   -1  1290 .#.##.##...#.....
   -1  1291 .#...###.#.##.##.
   -1  1292 
   -1  1293 ####.###.
   -1  1294 .......#.
   -1  1295 ##.#.#.##
   -1  1296 ...####.#
   -1  1297 ##...#...
   -1  1298 ..#.###..
   -1  1299 ....#..##
   -1  1300 ...#####.
   -1  1301 ####..#..
   -1  1302 ###.#.###
   -1  1303 ##......#
   -1  1304 ##......#
   -1  1305 ###.#.###
   -1  1306 ####..#..
   -1  1307 ...######
   -1  1308 ....#..##
   -1  1309 ..#.###..
   -1  1310 
   -1  1311 .##.#..
   -1  1312 ....##.
   -1  1313 #..#..#
   -1  1314 #..###.
   -1  1315 #####..
   -1  1316 #####..
   -1  1317 #..##..
   -1  1318 #..#..#
   -1  1319 ....##.
   -1  1320 
   -1  1321 #.##..#.#.#
   -1  1322 .#...###.#.
   -1  1323 .#..####.#.
   -1  1324 #.##..#.#.#
   -1  1325 #.##..#.#.#
   -1  1326 .#..####.#.
   -1  1327 .#...###.#.
   -1  1328 #.##..#.#.#
   -1  1329 #.#..##.#..
   -1  1330 #.#.###..##
   -1  1331 .####..#..#
   -1  1332 
   -1  1333 #..##..#######..#
   -1  1334 .##..##.#.##....#
   -1  1335 ##.##.##..##...##
   -1  1336 .#....#..#.###.##
   -1  1337 ..####...#...##.#
   -1  1338 ###...####...#..#
   -1  1339 ########...##..##
   -1  1340 #......##....#.##
   -1  1341 ..#..#...###...#.
   -1  1342 #.####.#.#..#.#.#
   -1  1343 #.####.#.#..#.#.#
   -1  1344 
   -1  1345 ########.##..
   -1  1346 ...##...#.##.
   -1  1347 #.#..#.##.#..
   -1  1348 #......#.#..#
   -1  1349 ........#.#..
   -1  1350 #.#..#.#..#..
   -1  1351 ..#..#..#..#.
   -1  1352 .##..##.####.
   -1  1353 #..##..####.#
   -1  1354 ###..####.###
   -1  1355 ###..###..###
   -1  1356 

diff --git a/2023/13/solution.rs b/2023/13/solution.rs

@@ -0,0 +1,89 @@
   -1     1 #[path = "../lib.rs"]
   -1     2 mod lib;
   -1     3 
   -1     4 fn parse_input() -> Vec<Vec<u32>> {
   -1     5     let mut patterns = vec![];
   -1     6     let mut rows = vec![];
   -1     7 
   -1     8     for line in lib::iter_input() {
   -1     9         if line.len() == 0 {
   -1    10             patterns.push(rows);
   -1    11             rows = vec![];
   -1    12         } else {
   -1    13             assert!(line.len() < 32);
   -1    14             let mut row = 0;
   -1    15             for (i, b) in line.bytes().enumerate() {
   -1    16                 if b == b'#' {
   -1    17                     row |= 1 << i;
   -1    18                 }
   -1    19             }
   -1    20             rows.push(row);
   -1    21         }
   -1    22     }
   -1    23 
   -1    24     return patterns;
   -1    25 }
   -1    26 
   -1    27 fn turn(pattern: &Vec<u32>) -> Vec<u32> {
   -1    28     let mut rows = vec![];
   -1    29 
   -1    30     for i in 0.. {
   -1    31         if pattern.iter().all(|x| x >> i == 0) {
   -1    32             break;
   -1    33         }
   -1    34         let mut row = 0;
   -1    35         for (j, x) in pattern.iter().enumerate() {
   -1    36             row |= ((x >> i) & 1) << j;
   -1    37         }
   -1    38         rows.push(row);
   -1    39     }
   -1    40     return rows;
   -1    41 }
   -1    42 
   -1    43 fn get_smudges(a: u32, b: u32) -> u32 {
   -1    44     let mut x = a ^ b;
   -1    45     if x == 0 {
   -1    46         return 0;
   -1    47     }
   -1    48     while x & 1 == 0 {
   -1    49         x >>= 1;
   -1    50     }
   -1    51     return x;
   -1    52 }
   -1    53 
   -1    54 fn count<F: Fn(&Vec<(u32, u32)>) -> bool>(pattern: &Vec<u32>, check: F) -> usize {
   -1    55     let n = pattern.len();
   -1    56     for i in 0..(n - 1) {
   -1    57         let pairs = (0..=(i.min(n - i - 2)))
   -1    58             .map(|j| (pattern[i - j], pattern[i + 1 + j]))
   -1    59             .collect();
   -1    60         if check(&pairs) {
   -1    61             return (i + 1) * 100;
   -1    62         }
   -1    63     }
   -1    64     return count(&turn(pattern), check) / 100;
   -1    65 }
   -1    66 
   -1    67 fn main() {
   -1    68     let mut sum1 = 0;
   -1    69     let mut sum2 = 0;
   -1    70 
   -1    71     let patterns = parse_input();
   -1    72 
   -1    73     for pattern in patterns.iter() {
   -1    74         sum1 += count(pattern, |pairs| pairs.iter().all(|&(a, b)| a == b));
   -1    75         sum2 += count(pattern, |pairs| {
   -1    76             let mut sum = 0;
   -1    77             for (a, b) in pairs.iter() {
   -1    78                 sum += get_smudges(*a, *b);
   -1    79                 if sum > 1 {
   -1    80                     return false;
   -1    81                 }
   -1    82             }
   -1    83             return sum == 1;
   -1    84         });
   -1    85     }
   -1    86 
   -1    87     println!("part1: {}", sum1);
   -1    88     println!("part2: {}", sum2);
   -1    89 }

diff --git a/2023/13/test.txt b/2023/13/test.txt

@@ -0,0 +1,16 @@
   -1     1 #.##..##.
   -1     2 ..#.##.#.
   -1     3 ##......#
   -1     4 ##......#
   -1     5 ..#.##.#.
   -1     6 ..##..##.
   -1     7 #.#.##.#.
   -1     8 
   -1     9 #...##..#
   -1    10 #....#..#
   -1    11 ..##..###
   -1    12 #####.##.
   -1    13 #####.##.
   -1    14 ..##..###
   -1    15 #....#..#
   -1    16