about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--day05500
-rw-r--r--day05.bqn6
-rw-r--r--day05.clj44
3 files changed, 550 insertions, 0 deletions
diff --git a/day05 b/day05
new file mode 100644
index 0000000..324b3b7
--- /dev/null
+++ b/day05
@@ -0,0 +1,500 @@
+260,605 -> 260,124
+308,411 -> 656,63
+570,791 -> 396,617
+622,593 -> 622,240
+944,801 -> 829,916
+310,439 -> 310,676
+448,595 -> 867,176
+293,167 -> 975,849
+375,252 -> 830,707
+679,819 -> 498,819
+58,391 -> 58,653
+674,489 -> 745,489
+296,172 -> 646,522
+63,976 -> 944,976
+471,377 -> 471,17
+172,980 -> 172,136
+942,61 -> 29,974
+238,304 -> 44,498
+961,196 -> 199,196
+219,452 -> 219,87
+40,709 -> 40,132
+657,239 -> 657,860
+95,579 -> 95,522
+740,613 -> 572,445
+71,243 -> 71,861
+313,561 -> 121,753
+775,350 -> 775,271
+872,864 -> 872,942
+677,879 -> 685,879
+456,425 -> 456,227
+719,845 -> 719,245
+543,467 -> 543,446
+254,921 -> 523,921
+792,794 -> 391,393
+247,839 -> 911,839
+645,381 -> 645,39
+297,239 -> 297,358
+106,582 -> 263,739
+269,907 -> 600,907
+41,405 -> 276,405
+765,454 -> 765,570
+587,243 -> 587,193
+945,972 -> 14,41
+896,597 -> 896,338
+564,952 -> 564,83
+533,79 -> 15,597
+367,972 -> 367,243
+280,135 -> 180,135
+140,26 -> 140,757
+646,781 -> 13,148
+245,29 -> 245,436
+482,565 -> 482,327
+608,709 -> 608,687
+379,392 -> 379,98
+400,839 -> 400,484
+531,735 -> 274,735
+771,946 -> 771,850
+724,626 -> 724,983
+359,726 -> 426,726
+665,610 -> 665,342
+119,708 -> 294,708
+398,393 -> 816,811
+810,133 -> 986,133
+640,35 -> 97,578
+376,682 -> 673,682
+394,363 -> 946,363
+755,869 -> 755,898
+252,178 -> 557,178
+798,687 -> 239,687
+171,913 -> 907,177
+432,540 -> 432,751
+127,863 -> 127,117
+618,513 -> 618,348
+908,961 -> 44,97
+944,200 -> 276,868
+388,244 -> 602,30
+686,433 -> 131,988
+413,867 -> 858,422
+873,65 -> 201,737
+66,65 -> 219,65
+354,792 -> 199,637
+198,19 -> 977,798
+372,321 -> 213,321
+938,169 -> 845,76
+798,679 -> 267,679
+833,350 -> 833,275
+764,838 -> 505,838
+590,771 -> 76,257
+89,664 -> 636,117
+955,284 -> 34,284
+152,850 -> 152,816
+772,504 -> 772,969
+527,242 -> 82,242
+699,493 -> 462,256
+592,751 -> 462,881
+61,427 -> 395,427
+144,711 -> 144,611
+483,760 -> 717,760
+616,268 -> 616,82
+542,947 -> 542,44
+396,830 -> 501,725
+589,520 -> 241,868
+397,631 -> 397,533
+87,928 -> 892,928
+789,17 -> 222,584
+639,192 -> 229,192
+617,482 -> 407,692
+197,13 -> 197,153
+786,715 -> 786,42
+634,203 -> 784,203
+370,562 -> 517,415
+726,188 -> 713,188
+859,974 -> 222,337
+584,48 -> 584,519
+28,493 -> 173,638
+252,697 -> 252,503
+810,380 -> 706,380
+367,805 -> 676,496
+266,321 -> 266,527
+327,635 -> 240,548
+108,460 -> 283,460
+309,314 -> 309,599
+653,300 -> 653,13
+327,283 -> 327,596
+597,102 -> 597,374
+646,630 -> 484,792
+215,643 -> 215,202
+227,437 -> 64,437
+768,774 -> 768,587
+703,698 -> 274,698
+849,401 -> 841,401
+235,122 -> 551,122
+446,102 -> 340,208
+749,317 -> 107,959
+94,628 -> 110,612
+25,611 -> 620,16
+989,227 -> 30,227
+894,987 -> 840,987
+24,967 -> 979,12
+659,890 -> 659,571
+255,28 -> 228,28
+598,500 -> 598,447
+804,700 -> 921,700
+45,574 -> 45,154
+112,242 -> 112,402
+77,684 -> 77,691
+975,454 -> 960,469
+24,977 -> 985,16
+924,387 -> 924,177
+815,73 -> 815,656
+687,277 -> 687,100
+273,404 -> 144,533
+511,560 -> 687,560
+248,507 -> 38,507
+671,896 -> 671,866
+750,83 -> 244,589
+408,73 -> 946,611
+627,455 -> 627,299
+48,982 -> 48,795
+371,880 -> 454,963
+766,794 -> 275,303
+199,106 -> 24,281
+461,649 -> 489,649
+966,935 -> 192,161
+675,309 -> 952,32
+389,110 -> 389,119
+182,111 -> 275,111
+10,887 -> 832,65
+643,871 -> 643,488
+282,170 -> 282,65
+11,43 -> 925,957
+19,509 -> 492,36
+80,906 -> 668,318
+582,163 -> 582,153
+556,401 -> 556,116
+853,348 -> 185,348
+989,987 -> 14,12
+209,742 -> 924,27
+970,545 -> 970,364
+195,905 -> 848,252
+86,96 -> 24,96
+142,69 -> 484,69
+984,919 -> 107,42
+406,291 -> 613,291
+859,306 -> 520,306
+563,343 -> 754,343
+434,345 -> 558,345
+498,82 -> 800,384
+641,412 -> 952,412
+614,873 -> 614,706
+956,19 -> 11,964
+486,618 -> 575,707
+32,114 -> 736,818
+699,854 -> 343,854
+645,777 -> 581,777
+607,302 -> 254,302
+495,316 -> 495,587
+47,391 -> 302,391
+901,320 -> 548,320
+112,144 -> 112,218
+780,904 -> 780,582
+814,761 -> 279,761
+15,622 -> 456,622
+986,987 -> 10,11
+13,988 -> 985,16
+413,802 -> 640,802
+118,634 -> 118,771
+34,235 -> 34,976
+154,941 -> 154,195
+115,184 -> 763,832
+381,568 -> 191,568
+460,565 -> 628,565
+217,67 -> 775,67
+375,446 -> 375,585
+593,408 -> 448,408
+564,410 -> 564,567
+921,805 -> 540,424
+794,447 -> 794,485
+892,19 -> 892,618
+811,789 -> 811,923
+36,16 -> 988,968
+431,454 -> 293,592
+598,611 -> 430,779
+760,767 -> 29,767
+347,124 -> 501,124
+851,954 -> 55,158
+698,573 -> 439,573
+78,687 -> 647,118
+181,644 -> 928,644
+393,424 -> 89,424
+210,245 -> 712,747
+654,74 -> 406,322
+29,287 -> 98,287
+307,337 -> 144,337
+696,156 -> 111,156
+86,424 -> 86,299
+148,875 -> 900,123
+918,768 -> 359,209
+826,278 -> 294,810
+572,697 -> 939,697
+984,709 -> 132,709
+311,314 -> 815,314
+713,342 -> 424,53
+220,570 -> 737,570
+335,222 -> 335,344
+483,454 -> 978,949
+32,925 -> 865,92
+936,668 -> 565,668
+520,45 -> 520,931
+920,486 -> 910,476
+787,901 -> 787,450
+613,271 -> 355,13
+859,415 -> 834,415
+144,28 -> 144,850
+121,971 -> 249,971
+458,786 -> 967,786
+282,213 -> 282,587
+925,940 -> 371,940
+100,927 -> 927,927
+979,984 -> 25,30
+583,532 -> 961,910
+986,82 -> 986,436
+382,583 -> 641,842
+973,131 -> 973,697
+558,908 -> 567,917
+807,423 -> 315,423
+49,240 -> 328,240
+723,535 -> 831,535
+714,922 -> 714,765
+303,789 -> 303,972
+85,466 -> 85,391
+306,725 -> 306,322
+398,592 -> 342,592
+689,902 -> 95,308
+421,731 -> 421,396
+12,687 -> 12,902
+412,522 -> 412,158
+535,100 -> 981,546
+198,711 -> 198,91
+287,196 -> 719,628
+350,144 -> 931,144
+497,800 -> 497,278
+68,919 -> 68,876
+199,519 -> 199,284
+796,321 -> 245,321
+827,640 -> 254,67
+674,842 -> 473,842
+11,227 -> 203,227
+295,462 -> 10,747
+869,574 -> 583,288
+427,761 -> 303,885
+593,760 -> 373,760
+415,238 -> 415,641
+694,556 -> 721,556
+127,672 -> 716,83
+698,769 -> 156,227
+325,198 -> 826,198
+64,23 -> 986,945
+338,942 -> 338,597
+41,835 -> 852,835
+497,332 -> 569,404
+166,734 -> 747,153
+623,820 -> 623,637
+49,238 -> 921,238
+958,829 -> 174,45
+485,732 -> 79,732
+413,765 -> 537,889
+340,204 -> 340,158
+986,434 -> 710,434
+104,90 -> 915,90
+332,112 -> 332,760
+731,692 -> 490,933
+258,913 -> 311,913
+271,890 -> 717,890
+451,898 -> 425,872
+722,564 -> 768,564
+316,630 -> 316,60
+712,220 -> 712,658
+532,202 -> 387,57
+794,231 -> 44,981
+587,409 -> 587,535
+907,195 -> 907,760
+233,776 -> 963,46
+267,665 -> 267,148
+303,183 -> 952,183
+908,469 -> 908,725
+518,976 -> 753,976
+845,636 -> 531,636
+774,225 -> 51,948
+914,797 -> 632,797
+853,343 -> 542,654
+174,637 -> 567,637
+193,220 -> 622,220
+90,229 -> 14,229
+284,745 -> 82,543
+795,174 -> 795,210
+524,507 -> 265,507
+371,953 -> 371,844
+906,402 -> 123,402
+192,881 -> 192,549
+519,299 -> 726,92
+986,989 -> 986,706
+774,55 -> 493,55
+702,290 -> 165,290
+200,650 -> 683,167
+367,603 -> 321,603
+193,31 -> 704,542
+630,885 -> 703,885
+330,966 -> 330,285
+960,306 -> 960,820
+281,62 -> 281,25
+12,542 -> 12,627
+669,505 -> 237,937
+237,174 -> 200,211
+66,424 -> 585,943
+92,115 -> 881,904
+559,282 -> 920,282
+67,815 -> 67,47
+199,985 -> 140,926
+70,25 -> 979,934
+694,555 -> 27,555
+622,644 -> 159,644
+582,983 -> 256,983
+230,712 -> 315,712
+976,877 -> 190,91
+680,957 -> 680,245
+257,767 -> 257,315
+943,380 -> 943,412
+320,95 -> 320,774
+843,644 -> 292,93
+416,342 -> 416,605
+302,682 -> 302,925
+79,107 -> 885,913
+18,980 -> 973,25
+379,947 -> 379,963
+11,987 -> 987,11
+634,749 -> 634,310
+875,295 -> 718,295
+818,904 -> 471,557
+963,803 -> 963,133
+640,870 -> 939,571
+54,423 -> 547,916
+880,121 -> 880,332
+671,275 -> 31,275
+820,559 -> 820,609
+45,924 -> 936,33
+233,314 -> 136,217
+680,634 -> 680,883
+780,217 -> 531,217
+477,304 -> 477,166
+904,725 -> 904,472
+307,326 -> 850,869
+875,435 -> 341,969
+714,382 -> 544,552
+981,934 -> 197,934
+621,439 -> 621,786
+414,902 -> 414,238
+821,546 -> 243,546
+313,753 -> 301,753
+510,566 -> 510,593
+38,601 -> 210,429
+344,411 -> 344,490
+653,970 -> 653,698
+32,155 -> 746,155
+814,701 -> 26,701
+928,141 -> 430,141
+890,804 -> 972,804
+374,183 -> 374,387
+821,327 -> 907,413
+180,27 -> 180,813
+848,194 -> 848,496
+905,589 -> 618,302
+633,114 -> 659,114
+546,613 -> 217,942
+191,336 -> 344,336
+265,442 -> 834,442
+801,388 -> 801,339
+399,212 -> 731,212
+649,559 -> 649,112
+783,108 -> 178,108
+113,670 -> 948,670
+524,596 -> 257,329
+371,397 -> 371,784
+344,465 -> 344,819
+307,234 -> 307,453
+984,964 -> 31,11
+466,743 -> 841,743
+185,722 -> 745,722
+845,36 -> 147,734
+77,21 -> 982,926
+415,252 -> 69,252
+420,976 -> 420,526
+104,694 -> 104,645
+806,197 -> 29,974
+278,101 -> 494,101
+598,664 -> 17,83
+175,708 -> 175,764
+888,392 -> 270,392
+141,564 -> 141,672
+507,255 -> 956,255
+519,36 -> 89,36
+662,526 -> 661,526
+642,970 -> 642,725
+684,79 -> 237,526
+352,166 -> 583,166
+335,366 -> 400,366
+568,627 -> 789,406
+115,257 -> 115,925
+803,110 -> 803,643
+694,189 -> 114,769
+441,344 -> 217,568
+207,838 -> 207,163
+832,975 -> 832,384
+340,178 -> 340,729
+251,550 -> 268,533
+324,962 -> 396,962
+649,875 -> 649,692
+87,939 -> 984,42
+947,966 -> 34,53
+368,555 -> 777,964
+24,31 -> 977,984
+168,471 -> 168,740
+689,717 -> 689,256
+836,78 -> 105,809
+538,542 -> 963,117
+247,779 -> 247,331
+198,968 -> 717,968
+85,61 -> 85,444
+410,439 -> 410,482
+678,940 -> 29,291
+893,907 -> 270,284
+355,493 -> 355,439
+89,902 -> 809,902
+73,507 -> 73,180
+686,405 -> 740,351
+939,372 -> 354,957
+774,388 -> 774,402
+424,720 -> 542,720
+495,570 -> 246,570
+583,904 -> 583,680
+816,458 -> 275,458
+206,654 -> 633,654
+70,94 -> 70,919
+826,538 -> 821,538
+837,451 -> 370,918
+421,667 -> 902,186
+415,863 -> 942,863
+13,364 -> 13,958
+181,687 -> 150,718
+265,698 -> 931,32
+10,17 -> 967,974
+507,323 -> 507,324
+429,21 -> 429,533
+843,351 -> 843,812
+380,148 -> 631,399
+313,762 -> 198,647
+814,183 -> 493,183
+923,456 -> 874,407
+857,100 -> 10,947
+893,115 -> 25,983
diff --git a/day05.bqn b/day05.bqn
new file mode 100644
index 0000000..3cb624a
--- /dev/null
+++ b/day05.bqn
@@ -0,0 +1,6 @@
+str←•Import"bqn-libs/strings.bqn"
+d ← {•BQN¨∾{"," str.Split 𝕩}¨ " -> " str.Split 𝕩}¨ •FLines"day05"
+
+Line ← {s<⊸+(<×e-s)×↕1+⌈´|(e←2↓𝕩)-(s←2↑𝕩)}
+•Out +´1=⊒∾Line¨d /˜ 0=×´˘(>d)-2⌽˘>d
+•Out +´1=⊒∾Line¨d
diff --git a/day05.clj b/day05.clj
new file mode 100644
index 0000000..6e5185b
--- /dev/null
+++ b/day05.clj
@@ -0,0 +1,44 @@
+(ns org.vuxu.aoc2021.day05
+  (:require [clojure.string :as str]))
+
+(def data
+  (->> (slurp "day05")
+       (str/split-lines)
+       (map #(str/split % #",| -> "))
+       (map (partial map parse-long))))
+
+(use 'criterium.core)
+
+(def part1
+  (->> data
+       (filter (fn [[x1 y1 x2 y2]]
+                 (or (= x1 x2) (= y1 y2))))
+       (mapcat (fn [[x1 y1 x2 y2]]
+                 (for [x (range (min x1 x2) (inc (max x1 x2)))
+                       y (range (min y1 y2) (inc (max y1 y2)))]
+                   [x y])))
+       frequencies
+       vals
+       (filter #(< 1 %))
+       count))
+;; => 5092
+
+(defn points [[x1 y1 x2 y2]]
+  (let [dx (Long/signum (- x2 x1))
+        dy (Long/signum (- y2 y1))]
+    (loop [x x1
+           y y1
+           r []]
+      (if (and (= x2 x)
+               (= y2 y))
+        (conj r [x y])
+        (recur (+ x dx) (+ y dy) (conj r [x y]))))))
+
+(def part2
+  (->> data
+       (mapcat points)
+       frequencies
+       vals
+       (filter #(< 1 %))
+       count))
+;; => 20484