diff options
author | HJ <thechairman@thechairman.info> | 2021-12-12 16:04:25 -0500 |
---|---|---|
committer | HJ <thechairman@thechairman.info> | 2021-12-12 16:04:25 -0500 |
commit | 86501cf1748971a08e9a2f4e5b4413a273f33535 (patch) | |
tree | ec591791212d82fcc4472b82379b43ebd7f2254b | |
parent | 8dd39d0db3c4a35686aef55eda2f97a08b4cc448 (diff) | |
download | gleam_aoc-86501cf1748971a08e9a2f4e5b4413a273f33535.tar.gz gleam_aoc-86501cf1748971a08e9a2f4e5b4413a273f33535.zip |
day 12 done
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | 2021/day-12/day-12.rkt | 52 | ||||
-rw-r--r-- | cache/7e86ac68/2015/day/6/input | 300 | ||||
-rw-r--r-- | jj-aoc.rkt | 2 |
4 files changed, 54 insertions, 301 deletions
@@ -1,4 +1,5 @@ .elixir_ls/* .cache/* +compiled/* *.bak input
\ No newline at end of file diff --git a/2021/day-12/day-12.rkt b/2021/day-12/day-12.rkt new file mode 100644 index 0000000..0b1f414 --- /dev/null +++ b/2021/day-12/day-12.rkt @@ -0,0 +1,52 @@ +#lang racket +(require "../../jj-aoc.rkt" + threading) + +(define path-pairs + (for/list ([l (in-lines (open-day 12 2021))]) + (match (string-split l "-") + [(list start end) (cons start end)]))) + +(define edges-hash (make-hash)) + +(for ([pair (in-list path-pairs)]) + (match-define (cons start end) pair) + (hash-update! edges-hash + start + (curry cons end) + '()) + (hash-update! edges-hash + end + (curry cons start) + '())) + +;; part 1 +(define (backtracking-allowed? next prevs) + (and (equal? (string-downcase next) next) + (member next prevs))) + +(define (look-for-next-cave + [path-list '("start")] + #:two-visits? [visit-used-up? #t]) + (define current-cave (car path-list)) + (cond + [(equal? current-cave "end") (list path-list)] + [else + (~>> (for/list ([next-path (in-list (hash-ref edges-hash current-cave null))] + #:unless (equal? next-path "start") + #:when (not (and (backtracking-allowed? next-path path-list) + visit-used-up?))) + (look-for-next-cave + (cons next-path path-list) + #:two-visits? (or (backtracking-allowed? next-path path-list) + visit-used-up?))) + (apply append))])) + +(~> (look-for-next-cave) + length + time) + +;; part 2 +(~> (look-for-next-cave #:two-visits? #f) + length + time)
\ No newline at end of file diff --git a/cache/7e86ac68/2015/day/6/input b/cache/7e86ac68/2015/day/6/input deleted file mode 100644 index df10465..0000000 --- a/cache/7e86ac68/2015/day/6/input +++ /dev/null @@ -1,300 +0,0 @@ -turn on 489,959 through 759,964 -turn off 820,516 through 871,914 -turn off 427,423 through 929,502 -turn on 774,14 through 977,877 -turn on 410,146 through 864,337 -turn on 931,331 through 939,812 -turn off 756,53 through 923,339 -turn off 313,787 through 545,979 -turn off 12,823 through 102,934 -toggle 756,965 through 812,992 -turn off 743,684 through 789,958 -toggle 120,314 through 745,489 -toggle 692,845 through 866,994 -turn off 587,176 through 850,273 -turn off 674,321 through 793,388 -toggle 749,672 through 973,965 -turn on 943,30 through 990,907 -turn on 296,50 through 729,664 -turn on 212,957 through 490,987 -toggle 171,31 through 688,88 -turn off 991,989 through 994,998 -turn off 913,943 through 958,953 -turn off 278,258 through 367,386 -toggle 275,796 through 493,971 -turn off 70,873 through 798,923 -toggle 258,985 through 663,998 -turn on 601,259 through 831,486 -turn off 914,94 through 941,102 -turn off 558,161 through 994,647 -turn on 119,662 through 760,838 -toggle 378,775 through 526,852 -turn off 384,670 through 674,972 -turn off 249,41 through 270,936 -turn on 614,742 through 769,780 -turn on 427,70 through 575,441 -turn on 410,478 through 985,753 -turn off 619,46 through 931,342 -turn on 284,55 through 768,922 -turn off 40,592 through 728,685 -turn on 825,291 through 956,950 -turn on 147,843 through 592,909 -turn off 218,675 through 972,911 -toggle 249,291 through 350,960 -turn off 556,80 through 967,675 -toggle 609,148 through 968,279 -toggle 217,605 through 961,862 -toggle 407,177 through 548,910 -toggle 400,936 through 599,938 -turn off 721,101 through 925,455 -turn on 268,631 through 735,814 -toggle 549,969 through 612,991 -toggle 553,268 through 689,432 -turn off 817,668 through 889,897 -toggle 801,544 through 858,556 -toggle 615,729 through 832,951 -turn off 427,477 through 958,948 -turn on 164,49 through 852,946 -turn on 542,449 through 774,776 -turn off 923,196 through 980,446 -toggle 90,310 through 718,846 -turn off 657,215 through 744,252 -turn off 800,239 through 811,712 -turn on 502,90 through 619,760 -toggle 649,512 through 862,844 -turn off 334,903 through 823,935 -turn off 630,233 through 839,445 -turn on 713,67 through 839,865 -turn on 932,50 through 982,411 -turn off 480,729 through 984,910 -turn on 100,219 through 796,395 -turn on 758,108 through 850,950 -turn off 427,276 through 439,938 -turn on 178,284 through 670,536 -toggle 540,27 through 625,102 -turn off 906,722 through 936,948 -toggle 345,418 through 859,627 -toggle 175,775 through 580,781 -toggle 863,28 through 929,735 -turn off 824,858 through 905,973 -toggle 752,312 through 863,425 -turn on 985,716 through 988,852 -turn off 68,504 through 763,745 -toggle 76,209 through 810,720 -turn off 657,607 through 676,664 -toggle 596,869 through 896,921 -turn off 915,411 through 968,945 -turn off 368,39 through 902,986 -turn on 11,549 through 393,597 -turn off 842,893 through 976,911 -toggle 274,106 through 581,329 -toggle 406,403 through 780,950 -toggle 408,988 through 500,994 -toggle 217,73 through 826,951 -turn on 917,872 through 961,911 -toggle 394,34 through 510,572 -toggle 424,603 through 583,626 -toggle 106,159 through 755,738 -turn off 244,610 through 472,709 -turn on 350,265 through 884,690 -turn on 688,184 through 928,280 -toggle 279,443 through 720,797 -turn off 615,493 through 888,610 -toggle 118,413 through 736,632 -turn on 798,782 through 829,813 -turn off 250,934 through 442,972 -turn on 68,503 through 400,949 -toggle 297,482 through 313,871 -toggle 710,3 through 839,859 -turn on 125,300 through 546,888 -toggle 482,39 through 584,159 -turn off 536,89 through 765,962 -turn on 530,518 through 843,676 -turn on 994,467 through 994,676 -turn on 623,628 through 744,927 -toggle 704,912 through 837,983 -turn on 154,364 through 517,412 -toggle 344,409 through 780,524 -turn off 578,740 through 725,879 -turn on 251,933 through 632,957 -turn on 827,705 through 971,789 -toggle 191,282 through 470,929 -toggle 324,525 through 446,867 -toggle 534,343 through 874,971 -toggle 550,650 through 633,980 -toggle 837,404 through 881,915 -toggle 338,881 through 845,905 -turn on 469,462 through 750,696 -turn on 741,703 through 892,870 -turn off 570,215 through 733,562 -turn on 445,576 through 870,775 -turn on 466,747 through 554,878 -turn off 820,453 through 868,712 -turn off 892,706 through 938,792 -turn off 300,238 through 894,746 -turn off 306,44 through 457,444 -turn off 912,569 through 967,963 -toggle 109,756 through 297,867 -turn on 37,546 through 41,951 -turn on 321,637 through 790,910 -toggle 66,50 through 579,301 -toggle 933,221 through 933,791 -turn on 486,676 through 878,797 -turn on 417,231 through 556,317 -toggle 904,468 through 981,873 -turn on 417,675 through 749,712 -turn on 692,371 through 821,842 -toggle 324,73 through 830,543 -turn on 912,490 through 977,757 -turn off 634,872 through 902,949 -toggle 266,779 through 870,798 -turn on 772,982 through 990,996 -turn off 607,46 through 798,559 -turn on 295,602 through 963,987 -turn on 657,86 through 944,742 -turn off 334,639 through 456,821 -turn off 997,667 through 997,670 -turn off 725,832 through 951,945 -turn off 30,120 through 952,984 -turn on 860,965 through 917,976 -toggle 471,997 through 840,998 -turn off 319,307 through 928,504 -toggle 823,631 through 940,908 -toggle 969,984 through 981,993 -turn off 691,319 through 865,954 -toggle 911,926 through 938,929 -turn on 953,937 through 968,991 -toggle 914,643 through 975,840 -turn on 266,982 through 436,996 -turn off 101,896 through 321,932 -turn off 193,852 through 751,885 -turn off 576,532 through 863,684 -turn on 761,456 through 940,783 -turn on 20,290 through 398,933 -turn off 435,335 through 644,652 -turn on 830,569 through 905,770 -turn off 630,517 through 905,654 -turn on 664,53 through 886,976 -toggle 275,416 through 408,719 -turn on 370,621 through 515,793 -turn on 483,373 through 654,749 -turn on 656,786 through 847,928 -turn off 532,752 through 945,974 -toggle 301,150 through 880,792 -turn off 951,488 through 958,952 -turn on 207,729 through 882,828 -toggle 694,532 through 973,961 -toggle 676,639 through 891,802 -turn off 653,6 through 905,519 -toggle 391,109 through 418,312 -turn on 877,423 through 957,932 -turn on 340,145 through 563,522 -turn off 978,467 through 988,895 -turn off 396,418 through 420,885 -turn off 31,308 through 816,316 -turn on 107,675 through 758,824 -turn on 61,82 through 789,876 -turn on 750,743 through 754,760 -toggle 88,733 through 736,968 -turn off 754,349 through 849,897 -toggle 157,50 through 975,781 -turn off 230,231 through 865,842 -turn off 516,317 through 630,329 -turn off 697,820 through 829,903 -turn on 218,250 through 271,732 -toggle 56,167 through 404,431 -toggle 626,891 through 680,927 -toggle 370,207 through 791,514 -toggle 860,74 through 949,888 -turn on 416,527 through 616,541 -turn off 745,449 through 786,908 -turn on 485,554 through 689,689 -turn on 586,62 through 693,141 -toggle 506,759 through 768,829 -turn on 473,109 through 929,166 -turn on 760,617 through 773,789 -toggle 595,683 through 618,789 -turn off 210,775 through 825,972 -toggle 12,426 through 179,982 -turn on 774,539 through 778,786 -turn on 102,498 through 121,807 -turn off 706,897 through 834,965 -turn off 678,529 through 824,627 -turn on 7,765 through 615,870 -turn off 730,872 through 974,943 -turn off 595,626 through 836,711 -turn off 215,424 through 841,959 -toggle 341,780 through 861,813 -toggle 507,503 through 568,822 -turn on 252,603 through 349,655 -toggle 93,521 through 154,834 -turn on 565,682 through 951,954 -turn on 544,318 through 703,418 -toggle 756,953 through 891,964 -turn on 531,123 through 856,991 -turn on 148,315 through 776,559 -turn off 925,835 through 963,971 -turn on 895,944 through 967,964 -turn off 102,527 through 650,747 -toggle 626,105 through 738,720 -turn off 160,75 through 384,922 -toggle 813,724 through 903,941 -turn on 207,107 through 982,849 -toggle 750,505 through 961,697 -toggle 105,410 through 885,819 -turn on 226,104 through 298,283 -turn off 224,604 through 508,762 -turn on 477,368 through 523,506 -turn off 477,901 through 627,936 -turn off 887,131 through 889,670 -turn on 896,994 through 938,999 -toggle 401,580 through 493,728 -toggle 987,184 through 991,205 -turn on 821,643 through 882,674 -toggle 784,940 through 968,959 -turn off 251,293 through 274,632 -turn off 339,840 through 341,844 -turn off 675,351 through 675,836 -toggle 918,857 through 944,886 -toggle 70,253 through 918,736 -turn off 612,604 through 772,680 -turn off 277,40 through 828,348 -toggle 692,139 through 698,880 -toggle 124,446 through 883,453 -toggle 969,932 through 990,945 -toggle 855,692 through 993,693 -toggle 722,472 through 887,899 -toggle 978,149 through 985,442 -toggle 837,540 through 916,889 -turn off 612,2 through 835,82 -toggle 560,767 through 878,856 -turn on 461,734 through 524,991 -toggle 206,824 through 976,912 -turn on 826,610 through 879,892 -turn on 577,699 through 956,933 -turn off 9,250 through 50,529 -turn off 77,657 through 817,677 -turn on 68,419 through 86,426 -turn on 991,720 through 992,784 -turn on 668,20 through 935,470 -turn off 133,418 through 613,458 -turn off 487,286 through 540,328 -toggle 247,874 through 840,955 -toggle 301,808 through 754,970 -turn off 34,194 through 578,203 -turn off 451,49 through 492,921 -turn on 907,256 through 912,737 -turn off 479,305 through 702,587 -turn on 545,583 through 732,749 -toggle 11,16 through 725,868 -turn on 965,343 through 986,908 -turn on 674,953 through 820,965 -toggle 398,147 through 504,583 -turn off 778,194 through 898,298 -turn on 179,140 through 350,852 -turn off 241,118 through 530,832 -turn off 41,447 through 932,737 -turn off 820,663 through 832,982 -turn on 550,460 through 964,782 -turn on 31,760 through 655,892 -toggle 628,958 through 811,992 @@ -3,4 +3,4 @@ (provide open-day) (define (open-day n [year 2021]) - (open-aoc-input (find-session) year n #:cache (string->path "./cache")))
\ No newline at end of file + (open-aoc-input (find-session) year n #:cache (string->path "../../cache")))
\ No newline at end of file |