aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHJ <thechairman@thechairman.info>2021-12-12 16:04:25 -0500
committerHJ <thechairman@thechairman.info>2021-12-12 16:04:25 -0500
commit86501cf1748971a08e9a2f4e5b4413a273f33535 (patch)
treeec591791212d82fcc4472b82379b43ebd7f2254b
parent8dd39d0db3c4a35686aef55eda2f97a08b4cc448 (diff)
downloadgleam_aoc-86501cf1748971a08e9a2f4e5b4413a273f33535.tar.gz
gleam_aoc-86501cf1748971a08e9a2f4e5b4413a273f33535.zip
day 12 done
-rw-r--r--.gitignore1
-rw-r--r--2021/day-12/day-12.rkt52
-rw-r--r--cache/7e86ac68/2015/day/6/input300
-rw-r--r--jj-aoc.rkt2
4 files changed, 54 insertions, 301 deletions
diff --git a/.gitignore b/.gitignore
index a9ebf66..9a17e3f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/jj-aoc.rkt b/jj-aoc.rkt
index 62c1523..3b4bae5 100644
--- a/jj-aoc.rkt
+++ b/jj-aoc.rkt
@@ -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