- commit
- 2f2633d5646d51dd6806032cf152e70c7957278c
- parent
- 30a31e74f232471c33812cbc4bd989fff377aadd
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2023-12-19 09:11
2023-12-18
Diffstat
A | 2023/18/input.txt | 630 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/18/solution.rs | 72 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/18/test.txt | 14 | ++++++++++++++ |
3 files changed, 716 insertions, 0 deletions
diff --git a/2023/18/input.txt b/2023/18/input.txt
@@ -0,0 +1,630 @@ -1 1 L 7 (#080f92) -1 2 U 8 (#6345a3) -1 3 L 9 (#8646f2) -1 4 U 6 (#34e153) -1 5 L 4 (#0f1112) -1 6 D 15 (#441d83) -1 7 L 5 (#259752) -1 8 U 9 (#1a63b3) -1 9 L 2 (#7d6642) -1 10 U 6 (#471dc3) -1 11 L 15 (#0b2432) -1 12 U 4 (#179b23) -1 13 L 3 (#4f3500) -1 14 U 5 (#7166d3) -1 15 L 11 (#36b9b0) -1 16 U 8 (#2a4fb3) -1 17 R 11 (#2a9d40) -1 18 U 4 (#7776d3) -1 19 L 4 (#1f5af0) -1 20 U 3 (#610911) -1 21 R 6 (#513130) -1 22 U 5 (#38d451) -1 23 R 6 (#25d420) -1 24 U 6 (#07e921) -1 25 L 12 (#049d20) -1 26 U 3 (#579443) -1 27 L 5 (#2cfd52) -1 28 U 8 (#67b1d3) -1 29 L 5 (#0fc502) -1 30 U 5 (#1aac63) -1 31 L 7 (#7dd532) -1 32 D 9 (#0183c1) -1 33 L 7 (#3647a2) -1 34 D 4 (#35f4f1) -1 35 L 8 (#714d12) -1 36 U 6 (#27e461) -1 37 L 2 (#227ba2) -1 38 U 3 (#688731) -1 39 L 12 (#3d6ba2) -1 40 U 2 (#594ea3) -1 41 L 8 (#326992) -1 42 U 13 (#399cc3) -1 43 R 8 (#48d190) -1 44 U 3 (#6515e3) -1 45 R 5 (#48d192) -1 46 U 3 (#37a513) -1 47 R 6 (#1ecf82) -1 48 U 10 (#342493) -1 49 R 5 (#6df562) -1 50 U 13 (#39bae3) -1 51 L 7 (#116512) -1 52 U 13 (#49af63) -1 53 R 7 (#1b61d2) -1 54 U 6 (#437ed3) -1 55 R 14 (#703f32) -1 56 U 8 (#250693) -1 57 R 4 (#30dce2) -1 58 D 11 (#2e4181) -1 59 L 6 (#446470) -1 60 D 3 (#822d51) -1 61 L 8 (#331170) -1 62 D 8 (#082d21) -1 63 R 14 (#1af7d2) -1 64 D 7 (#584861) -1 65 R 11 (#1af7d0) -1 66 D 11 (#5656c1) -1 67 R 8 (#6c6962) -1 68 U 6 (#81b131) -1 69 R 5 (#0b0c82) -1 70 U 13 (#0871a1) -1 71 L 5 (#6171a2) -1 72 U 4 (#0e40f1) -1 73 L 12 (#3e21f2) -1 74 U 3 (#501bb1) -1 75 R 11 (#12af92) -1 76 U 7 (#04a483) -1 77 R 13 (#4d2822) -1 78 U 9 (#5ebfa3) -1 79 L 13 (#4d2820) -1 80 U 5 (#62fc63) -1 81 L 11 (#2328f2) -1 82 U 4 (#0183c3) -1 83 L 7 (#077c92) -1 84 D 6 (#815a33) -1 85 L 4 (#440a12) -1 86 U 6 (#0fd693) -1 87 L 10 (#2813a2) -1 88 U 6 (#13bea3) -1 89 L 4 (#688d32) -1 90 D 6 (#54f993) -1 91 L 6 (#688d30) -1 92 D 12 (#3d6313) -1 93 L 9 (#2813a0) -1 94 U 4 (#1694b3) -1 95 L 10 (#440a10) -1 96 U 4 (#5e3943) -1 97 L 5 (#2a8f52) -1 98 U 7 (#34c963) -1 99 R 15 (#2a8f50) -1 100 U 3 (#3705a3) -1 101 L 9 (#00b952) -1 102 U 9 (#6e5ef3) -1 103 R 5 (#63c4d2) -1 104 U 4 (#405243) -1 105 R 5 (#80f640) -1 106 U 4 (#4dd323) -1 107 R 11 (#05e080) -1 108 D 8 (#1ea993) -1 109 R 3 (#86d6c2) -1 110 D 5 (#0f1583) -1 111 R 12 (#4f5302) -1 112 U 5 (#06d053) -1 113 R 12 (#69d392) -1 114 U 4 (#645c53) -1 115 R 8 (#59a5e2) -1 116 U 6 (#317593) -1 117 R 5 (#600892) -1 118 U 7 (#2e9d33) -1 119 R 8 (#452812) -1 120 U 6 (#415bc3) -1 121 R 9 (#03d492) -1 122 D 4 (#50e883) -1 123 R 2 (#1f1412) -1 124 D 6 (#1674b3) -1 125 R 11 (#482570) -1 126 U 10 (#64c201) -1 127 R 12 (#15ece0) -1 128 U 10 (#3e4b71) -1 129 R 11 (#20a590) -1 130 D 5 (#42fcb3) -1 131 R 9 (#5ef040) -1 132 D 4 (#6010c3) -1 133 R 8 (#38b750) -1 134 D 6 (#205343) -1 135 L 7 (#82eac0) -1 136 D 2 (#371d03) -1 137 L 10 (#7cf2c2) -1 138 D 6 (#4c6dc3) -1 139 R 8 (#7cf2c0) -1 140 D 11 (#56ce93) -1 141 R 8 (#046250) -1 142 D 4 (#12ef83) -1 143 R 6 (#501950) -1 144 U 4 (#214f01) -1 145 R 5 (#54d0d0) -1 146 U 5 (#1a5851) -1 147 L 6 (#969010) -1 148 U 5 (#41da71) -1 149 R 6 (#14c1f0) -1 150 U 7 (#3aed41) -1 151 L 5 (#376ac2) -1 152 U 4 (#34b961) -1 153 R 3 (#529e22) -1 154 U 15 (#34b963) -1 155 R 7 (#214922) -1 156 D 10 (#34d9d1) -1 157 R 10 (#673ec0) -1 158 D 7 (#6430f1) -1 159 R 7 (#6c3120) -1 160 D 5 (#0f0d01) -1 161 R 4 (#17a740) -1 162 D 8 (#5aefa1) -1 163 R 7 (#178970) -1 164 D 10 (#3990f1) -1 165 R 12 (#2fbc90) -1 166 D 7 (#2e35f1) -1 167 R 8 (#8b7710) -1 168 D 4 (#492861) -1 169 R 4 (#8b7712) -1 170 D 8 (#2d6701) -1 171 R 10 (#5875b0) -1 172 U 12 (#1d44a1) -1 173 R 5 (#47de12) -1 174 D 3 (#5397b1) -1 175 R 15 (#47de10) -1 176 D 5 (#532ac1) -1 177 R 6 (#5875b2) -1 178 U 8 (#512811) -1 179 R 3 (#364932) -1 180 D 8 (#407bc1) -1 181 R 8 (#364930) -1 182 D 4 (#30a4e1) -1 183 L 5 (#739de0) -1 184 D 5 (#76d5b3) -1 185 L 10 (#315880) -1 186 D 11 (#480321) -1 187 R 10 (#42c7a0) -1 188 D 3 (#4e5751) -1 189 R 5 (#42c7a2) -1 190 D 10 (#3749e1) -1 191 R 12 (#89fcf0) -1 192 D 6 (#02f443) -1 193 R 9 (#0ee550) -1 194 D 4 (#320553) -1 195 R 5 (#89da30) -1 196 D 9 (#369de3) -1 197 L 10 (#03c382) -1 198 D 11 (#49d2b3) -1 199 L 4 (#94fc02) -1 200 D 3 (#183a33) -1 201 R 7 (#33a150) -1 202 D 6 (#669da3) -1 203 R 7 (#546cc2) -1 204 D 3 (#0ad4c1) -1 205 R 13 (#973832) -1 206 U 6 (#0ad4c3) -1 207 R 11 (#0351d2) -1 208 U 8 (#35d693) -1 209 R 6 (#06e6e0) -1 210 U 5 (#098233) -1 211 R 6 (#5277e0) -1 212 U 6 (#959b53) -1 213 R 10 (#3917c0) -1 214 U 4 (#89bb93) -1 215 R 9 (#469ac0) -1 216 U 10 (#1bee63) -1 217 L 6 (#0bd950) -1 218 D 4 (#2e0b41) -1 219 L 14 (#1e8690) -1 220 U 4 (#4f1003) -1 221 L 5 (#4de430) -1 222 U 4 (#4f1001) -1 223 L 8 (#3cbf60) -1 224 U 11 (#2e0b43) -1 225 L 9 (#038de0) -1 226 U 8 (#156883) -1 227 R 4 (#149080) -1 228 U 3 (#64d193) -1 229 R 10 (#12e500) -1 230 U 5 (#608833) -1 231 L 8 (#46ec10) -1 232 U 3 (#56ecc3) -1 233 L 2 (#1f7430) -1 234 U 11 (#49b923) -1 235 L 7 (#1f7432) -1 236 U 6 (#1de083) -1 237 L 3 (#66b490) -1 238 U 4 (#16e561) -1 239 L 14 (#40c420) -1 240 U 3 (#5ec471) -1 241 R 7 (#40c422) -1 242 U 11 (#48dc91) -1 243 R 3 (#1c26f0) -1 244 U 6 (#2e4273) -1 245 R 2 (#3f5c80) -1 246 U 5 (#634373) -1 247 R 10 (#4b6580) -1 248 U 2 (#46bd43) -1 249 R 12 (#7d0f50) -1 250 U 7 (#3a3233) -1 251 R 5 (#1034d0) -1 252 D 13 (#3208f3) -1 253 L 8 (#081450) -1 254 D 4 (#6079d1) -1 255 L 12 (#3eb490) -1 256 U 4 (#2cbf81) -1 257 L 4 (#754540) -1 258 D 8 (#4d48e1) -1 259 R 8 (#346ce0) -1 260 D 9 (#56bf41) -1 261 R 11 (#68b710) -1 262 U 9 (#320161) -1 263 R 5 (#489950) -1 264 D 7 (#620d21) -1 265 R 7 (#546180) -1 266 D 6 (#301f93) -1 267 R 4 (#663820) -1 268 D 10 (#2fa3d3) -1 269 R 7 (#2131a0) -1 270 D 2 (#59e5d3) -1 271 R 9 (#4a92e0) -1 272 D 8 (#464c61) -1 273 R 11 (#4a90b2) -1 274 D 3 (#39d451) -1 275 L 9 (#4a90b0) -1 276 D 2 (#27c3b1) -1 277 L 6 (#24b1f0) -1 278 D 7 (#11c4d1) -1 279 L 5 (#3563c0) -1 280 D 7 (#620d23) -1 281 R 8 (#2118e0) -1 282 D 2 (#6392e1) -1 283 R 12 (#43f1d2) -1 284 D 3 (#3d4f21) -1 285 R 6 (#246e22) -1 286 U 15 (#29db11) -1 287 R 6 (#6edaa0) -1 288 U 12 (#484b61) -1 289 L 6 (#6edaa2) -1 290 U 8 (#493501) -1 291 R 7 (#5d18a2) -1 292 U 3 (#4a17b1) -1 293 L 9 (#1f9eb2) -1 294 U 4 (#4fe283) -1 295 L 7 (#7217e2) -1 296 U 4 (#4fe281) -1 297 R 7 (#2867c2) -1 298 U 8 (#46de21) -1 299 R 4 (#5961e2) -1 300 D 8 (#394411) -1 301 R 5 (#326882) -1 302 U 7 (#414e51) -1 303 R 10 (#33a9a2) -1 304 U 9 (#08dc51) -1 305 R 11 (#483f12) -1 306 U 5 (#376f01) -1 307 R 4 (#50bac0) -1 308 U 8 (#6e8c21) -1 309 R 10 (#167092) -1 310 U 8 (#404293) -1 311 R 7 (#953a82) -1 312 U 12 (#404291) -1 313 L 7 (#5c7582) -1 314 U 3 (#326d61) -1 315 R 10 (#7960c0) -1 316 D 11 (#66a8c1) -1 317 R 12 (#75f300) -1 318 D 2 (#66a8c3) -1 319 L 12 (#18ccd0) -1 320 D 10 (#2231e1) -1 321 R 9 (#8f76a0) -1 322 D 5 (#585591) -1 323 L 11 (#384890) -1 324 D 7 (#22c7b1) -1 325 L 7 (#8a1050) -1 326 D 5 (#096291) -1 327 L 4 (#66e550) -1 328 D 10 (#216c01) -1 329 L 9 (#6cf190) -1 330 D 10 (#7683c1) -1 331 L 9 (#05ecc0) -1 332 U 10 (#459413) -1 333 L 7 (#1a43a0) -1 334 D 2 (#557593) -1 335 L 2 (#47fe80) -1 336 D 13 (#4db093) -1 337 R 4 (#3af720) -1 338 D 5 (#06b261) -1 339 R 6 (#7e1f60) -1 340 D 4 (#709101) -1 341 R 7 (#7e1f62) -1 342 D 2 (#2bbbd1) -1 343 R 5 (#2050d0) -1 344 U 14 (#8e50b1) -1 345 R 5 (#55efb0) -1 346 U 6 (#147081) -1 347 R 6 (#137320) -1 348 D 4 (#1047d1) -1 349 R 5 (#33a880) -1 350 D 6 (#8f2f93) -1 351 L 12 (#186b70) -1 352 D 4 (#860693) -1 353 R 12 (#08ae40) -1 354 D 6 (#101663) -1 355 R 7 (#597790) -1 356 D 4 (#2ac7f3) -1 357 L 3 (#18cb10) -1 358 D 4 (#43a413) -1 359 L 7 (#18cb12) -1 360 U 4 (#3d18d3) -1 361 L 6 (#3f9040) -1 362 D 7 (#448fb1) -1 363 R 6 (#6ae4d0) -1 364 D 4 (#2ade11) -1 365 R 10 (#6ae4d2) -1 366 D 4 (#3c1711) -1 367 R 4 (#2a27c0) -1 368 D 3 (#30bbb3) -1 369 R 8 (#84bff0) -1 370 U 9 (#1c12d1) -1 371 R 11 (#0c24a0) -1 372 U 6 (#626c31) -1 373 R 3 (#618320) -1 374 U 9 (#380fe1) -1 375 R 14 (#462210) -1 376 U 3 (#0cb7b1) -1 377 R 5 (#3fbcf2) -1 378 U 7 (#855e61) -1 379 L 6 (#36b5e2) -1 380 U 4 (#855e63) -1 381 L 9 (#3d5702) -1 382 U 3 (#2573a1) -1 383 L 7 (#3c2f20) -1 384 U 9 (#60cb91) -1 385 R 7 (#311920) -1 386 D 3 (#45c451) -1 387 R 8 (#4067f0) -1 388 U 12 (#4c5b81) -1 389 R 9 (#973f00) -1 390 D 12 (#016101) -1 391 R 3 (#696210) -1 392 D 10 (#3dd841) -1 393 R 5 (#58ad20) -1 394 U 5 (#33ca01) -1 395 R 14 (#0356a2) -1 396 D 5 (#55c131) -1 397 R 6 (#0356a0) -1 398 D 2 (#2eec71) -1 399 R 7 (#58ad22) -1 400 D 9 (#73b831) -1 401 L 11 (#696212) -1 402 D 12 (#562f41) -1 403 L 3 (#0fb450) -1 404 D 5 (#2306a1) -1 405 L 4 (#90ab20) -1 406 U 15 (#151451) -1 407 L 7 (#13bcd0) -1 408 U 2 (#357ed1) -1 409 L 7 (#11a1c2) -1 410 D 12 (#51acd1) -1 411 L 11 (#7e5122) -1 412 D 4 (#651b41) -1 413 L 9 (#4e5bd2) -1 414 D 13 (#79eca1) -1 415 L 4 (#326342) -1 416 D 4 (#7f54e1) -1 417 L 6 (#303812) -1 418 D 7 (#1f1641) -1 419 L 11 (#557572) -1 420 D 6 (#64b501) -1 421 L 9 (#3dbc92) -1 422 U 3 (#628813) -1 423 L 5 (#40df92) -1 424 U 10 (#41f863) -1 425 L 5 (#308632) -1 426 D 5 (#1f97d3) -1 427 L 12 (#116cb0) -1 428 D 6 (#7a90c3) -1 429 R 12 (#116cb2) -1 430 D 9 (#47fba3) -1 431 R 9 (#8a7e22) -1 432 D 6 (#592b83) -1 433 R 13 (#1577e2) -1 434 D 7 (#162c53) -1 435 L 10 (#59e022) -1 436 D 11 (#73c3e1) -1 437 R 10 (#08ac70) -1 438 D 3 (#7c67b1) -1 439 R 11 (#0e45f2) -1 440 D 4 (#604fc3) -1 441 R 7 (#31bd92) -1 442 D 7 (#3bd893) -1 443 L 3 (#5e6ec2) -1 444 D 10 (#5852b3) -1 445 R 7 (#18f192) -1 446 D 5 (#1b1f41) -1 447 R 9 (#7624c2) -1 448 U 5 (#35a501) -1 449 R 5 (#3c8190) -1 450 D 12 (#5d1861) -1 451 L 8 (#3c8192) -1 452 D 5 (#469e61) -1 453 L 7 (#303d42) -1 454 U 5 (#7595c1) -1 455 L 6 (#6d6c80) -1 456 D 4 (#4a7691) -1 457 L 12 (#2c9180) -1 458 D 4 (#981bf3) -1 459 L 14 (#3b5170) -1 460 D 3 (#981bf1) -1 461 R 7 (#3dc980) -1 462 D 5 (#4a7693) -1 463 R 12 (#4aace0) -1 464 D 7 (#726771) -1 465 L 14 (#08ac72) -1 466 D 5 (#0660b1) -1 467 L 5 (#7e4992) -1 468 D 6 (#177301) -1 469 L 4 (#32bea2) -1 470 D 11 (#23a031) -1 471 L 8 (#6f00b2) -1 472 D 6 (#23a033) -1 473 L 14 (#1f58f2) -1 474 U 6 (#49ae81) -1 475 L 7 (#4f02b0) -1 476 U 7 (#592bf1) -1 477 L 6 (#561ba0) -1 478 U 6 (#0b3711) -1 479 L 2 (#4ddd40) -1 480 U 8 (#6fe7c3) -1 481 L 11 (#4cf840) -1 482 U 5 (#012ca3) -1 483 R 4 (#18bc90) -1 484 U 6 (#012ca1) -1 485 R 9 (#4e18e0) -1 486 U 8 (#6fe7c1) -1 487 R 10 (#09a1e0) -1 488 D 5 (#79e5e1) -1 489 R 4 (#531062) -1 490 U 5 (#0840f3) -1 491 R 10 (#26a220) -1 492 D 8 (#3d1503) -1 493 R 5 (#0407b2) -1 494 U 6 (#241033) -1 495 R 6 (#0407b0) -1 496 U 6 (#4cf003) -1 497 L 6 (#26a222) -1 498 U 6 (#151513) -1 499 L 6 (#63a0b2) -1 500 U 10 (#5984e1) -1 501 L 4 (#169992) -1 502 U 5 (#063cb3) -1 503 L 9 (#67a882) -1 504 U 6 (#063cb1) -1 505 L 7 (#33c942) -1 506 D 14 (#41bc51) -1 507 L 5 (#1d7ca0) -1 508 D 3 (#08e773) -1 509 L 5 (#838e70) -1 510 D 4 (#08e771) -1 511 L 6 (#110040) -1 512 U 7 (#302a01) -1 513 R 5 (#549bc2) -1 514 U 7 (#898301) -1 515 L 5 (#5f4dd0) -1 516 U 3 (#180e51) -1 517 L 3 (#235670) -1 518 D 8 (#44d421) -1 519 L 10 (#7a58a0) -1 520 D 8 (#44d423) -1 521 L 5 (#330430) -1 522 D 4 (#0a3701) -1 523 L 9 (#840820) -1 524 D 11 (#0dc433) -1 525 L 2 (#1e1620) -1 526 D 4 (#092f53) -1 527 L 4 (#0b85b2) -1 528 D 4 (#848813) -1 529 L 10 (#0b85b0) -1 530 D 11 (#0e2ed3) -1 531 L 7 (#13c660) -1 532 D 7 (#58b303) -1 533 L 3 (#523600) -1 534 D 11 (#1587b1) -1 535 L 6 (#23c730) -1 536 D 5 (#6fb511) -1 537 L 6 (#23c732) -1 538 D 10 (#19e711) -1 539 L 10 (#3ed9a0) -1 540 D 6 (#633991) -1 541 L 5 (#845760) -1 542 D 4 (#11a581) -1 543 L 8 (#79ed52) -1 544 D 6 (#13eaa1) -1 545 L 6 (#0cc702) -1 546 D 9 (#5933b1) -1 547 L 10 (#501220) -1 548 D 8 (#18b601) -1 549 R 10 (#24abb0) -1 550 D 7 (#659331) -1 551 R 4 (#0f5f80) -1 552 D 4 (#0ca3f1) -1 553 R 10 (#841d52) -1 554 D 6 (#026d01) -1 555 L 7 (#0cc700) -1 556 D 14 (#1e2f71) -1 557 L 7 (#247a02) -1 558 U 14 (#703553) -1 559 L 7 (#5d2812) -1 560 D 7 (#105e43) -1 561 L 8 (#327d12) -1 562 U 9 (#1cc023) -1 563 L 6 (#45f0c2) -1 564 D 11 (#5e68b3) -1 565 L 9 (#786dd0) -1 566 D 14 (#1ceb83) -1 567 R 9 (#75c2b2) -1 568 D 9 (#150751) -1 569 L 5 (#4f6762) -1 570 D 5 (#267841) -1 571 L 8 (#250ed2) -1 572 U 3 (#6b17c1) -1 573 L 10 (#583a82) -1 574 U 3 (#3bef71) -1 575 L 5 (#68e0f2) -1 576 U 11 (#4fdf61) -1 577 L 12 (#485b32) -1 578 U 4 (#0dfe11) -1 579 R 4 (#614b92) -1 580 U 6 (#8b2c33) -1 581 R 10 (#58dab2) -1 582 D 6 (#349073) -1 583 R 3 (#5d7782) -1 584 U 4 (#248903) -1 585 R 10 (#19ee82) -1 586 U 6 (#6c1543) -1 587 L 6 (#6a8212) -1 588 U 8 (#2c7ee3) -1 589 L 5 (#22ab82) -1 590 U 3 (#8a9d43) -1 591 L 11 (#217212) -1 592 U 4 (#385233) -1 593 L 2 (#10d002) -1 594 U 9 (#4d36b1) -1 595 L 9 (#19ace2) -1 596 U 5 (#6f27d1) -1 597 L 4 (#7d9e82) -1 598 U 11 (#241d03) -1 599 L 9 (#0e0cc2) -1 600 U 5 (#1e5093) -1 601 L 4 (#8a9a32) -1 602 U 6 (#414ef3) -1 603 R 12 (#8a9a30) -1 604 U 2 (#38a203) -1 605 L 12 (#3456f2) -1 606 U 3 (#156dd3) -1 607 L 3 (#267ac2) -1 608 U 10 (#3b5203) -1 609 L 2 (#4912d2) -1 610 U 5 (#750db3) -1 611 L 11 (#4912d0) -1 612 U 8 (#15f963) -1 613 L 3 (#5897d2) -1 614 U 3 (#401cc3) -1 615 L 9 (#32ffc2) -1 616 U 7 (#78bde3) -1 617 L 6 (#3fc702) -1 618 D 6 (#4fd523) -1 619 L 12 (#5be3d2) -1 620 D 2 (#401483) -1 621 L 3 (#4eb542) -1 622 D 13 (#0cf9c3) -1 623 L 3 (#4b3d42) -1 624 U 14 (#6716d3) -1 625 L 6 (#12d372) -1 626 U 7 (#69f8a3) -1 627 L 9 (#7210b2) -1 628 D 7 (#1740b3) -1 629 L 5 (#083fe2) -1 630 U 9 (#515bc3)
diff --git a/2023/18/solution.rs b/2023/18/solution.rs
@@ -0,0 +1,72 @@ -1 1 #[path = "../lib.rs"] -1 2 mod lib; -1 3 -1 4 enum Dir { -1 5 Left, -1 6 Right, -1 7 Up, -1 8 Down, -1 9 } -1 10 -1 11 fn parse_input() -> (Vec<(Dir, i64)>, Vec<(Dir, i64)>) { -1 12 let mut v1 = vec![]; -1 13 let mut v2 = vec![]; -1 14 -1 15 for line in lib::iter_input() { -1 16 let (d, tail) = line.split_once(' ').unwrap(); -1 17 let dir1 = match d { -1 18 "L" => Dir::Left, -1 19 "R" => Dir::Right, -1 20 "U" => Dir::Up, -1 21 "D" => Dir::Down, -1 22 _ => unreachable!(), -1 23 }; -1 24 let (n, c) = tail.split_once(' ').unwrap(); -1 25 let count1 = n.parse().unwrap(); -1 26 v1.push((dir1, count1)); -1 27 -1 28 let count2 = i64::from_str_radix(&c[2..7], 16).unwrap(); -1 29 let dir2 = match c.bytes().nth(7).unwrap() { -1 30 b'0' => Dir::Right, -1 31 b'1' => Dir::Down, -1 32 b'2' => Dir::Left, -1 33 b'3' => Dir::Up, -1 34 _ => unreachable!(), -1 35 }; -1 36 v2.push((dir2, count2)); -1 37 } -1 38 -1 39 return (v1, v2); -1 40 } -1 41 -1 42 fn count(border: &Vec<(Dir, i64)>) -> i64 { -1 43 let mut x = 0; -1 44 let mut sum = 0; -1 45 let mut edge = 0; -1 46 for (dir, k) in border.iter() { -1 47 match dir { -1 48 Dir::Left => { -1 49 x -= k; -1 50 } -1 51 Dir::Right => { -1 52 x += k; -1 53 edge += k; -1 54 } -1 55 Dir::Up => { -1 56 sum += k * x; -1 57 } -1 58 Dir::Down => { -1 59 sum -= k * x; -1 60 edge += k; -1 61 } -1 62 }; -1 63 } -1 64 return sum.abs() + edge + 1; -1 65 } -1 66 -1 67 fn main() { -1 68 let (v1, v2) = parse_input(); -1 69 -1 70 println!("part1: {}", count(&v1)); -1 71 println!("part2: {}", count(&v2)); -1 72 }
diff --git a/2023/18/test.txt b/2023/18/test.txt
@@ -0,0 +1,14 @@ -1 1 R 6 (#70c710) -1 2 D 5 (#0dc571) -1 3 L 2 (#5713f0) -1 4 D 2 (#d2c081) -1 5 R 2 (#59c680) -1 6 D 2 (#411b91) -1 7 L 5 (#8ceee2) -1 8 U 2 (#caa173) -1 9 L 1 (#1b58a2) -1 10 U 2 (#caa171) -1 11 R 2 (#7807d2) -1 12 U 3 (#a77fa3) -1 13 L 2 (#015232) -1 14 U 2 (#7a21e3)