day13
parent
5deb958ffa
commit
956f7839a4
@ -0,0 +1,52 @@
|
||||
#lang racket
|
||||
|
||||
(define (map-map f lst) ; map . map
|
||||
(map (λ (x) (map (λ (y) (f y)) x)) lst))
|
||||
|
||||
(define data
|
||||
(let* ([input (file->lines "day13.txt")]
|
||||
[point-lines (filter (λ (l) (string-contains? l ",")) input)]
|
||||
[points (map-map string->number (map (λ (p) (string-split p ",")) point-lines))] ; e.g. '(6 10)
|
||||
[fold-lines (filter (λ (l) (string-contains? l "fold")) input)]
|
||||
[folds (map (λ (l) (let* ([matches (regexp-match #rx"(.)=(.+)" l)]) ; e.g. '("y" 7)
|
||||
(list (second matches) (string->number (third matches))))) fold-lines)])
|
||||
(list points folds)))
|
||||
|
||||
(define points (first data))
|
||||
(define folds (second data))
|
||||
|
||||
(define (draw points)
|
||||
(let* ([width (apply max (map first points))] [height (apply max (map second points))])
|
||||
(for-each (λ (row) (begin
|
||||
(for-each (λ (col) (printf "~a" (if (member (list col row) points) "#" "."))) (range 0 (+ 1 width)))
|
||||
(printf "~n"))) (range 0 (+ 1 height)))))
|
||||
|
||||
(define (move-point point dir loc)
|
||||
(let* ([which (if (equal? "x" dir) first second)] ; which coordinate to change. x -> fold left -> change the first digit, etc.
|
||||
[diff (* 2 (- (which point) loc))] ; calculate the amount the point should move left/up
|
||||
[diffX (if (equal? "x" dir) (λ (x) (- x diff)) identity)]
|
||||
[diffY (if (equal? "y" dir) (λ (x) (- x diff)) identity)])
|
||||
(if (< (which point) loc) ; if it is below the fold
|
||||
point ; just return it
|
||||
(list (diffX (first point)) (diffY (second point)))))) ; otherwise, move the point
|
||||
|
||||
(define (fold points f) ; should have picked a different name..
|
||||
(let* ([direction (first f)]
|
||||
[location (second f)]
|
||||
[new-points (map (λ (point) (move-point point direction location)) points)])
|
||||
(remove-duplicates new-points)))
|
||||
|
||||
(define part1
|
||||
(let* ([first-fold (first folds)]
|
||||
[next (fold points first-fold)])
|
||||
(length next)))
|
||||
|
||||
part1
|
||||
|
||||
; PART 2
|
||||
|
||||
(define part2
|
||||
(draw
|
||||
(foldl (λ (f sheet) (fold sheet f)) points folds)))
|
||||
|
||||
part2
|
@ -0,0 +1,21 @@
|
||||
6,10
|
||||
0,14
|
||||
9,10
|
||||
0,3
|
||||
10,4
|
||||
4,11
|
||||
6,0
|
||||
6,12
|
||||
4,1
|
||||
0,13
|
||||
10,12
|
||||
3,4
|
||||
3,0
|
||||
8,4
|
||||
1,10
|
||||
2,14
|
||||
8,10
|
||||
9,0
|
||||
|
||||
fold along y=7
|
||||
fold along x=5
|
@ -0,0 +1,840 @@
|
||||
602,683
|
||||
1297,593
|
||||
1118,603
|
||||
534,850
|
||||
221,383
|
||||
524,835
|
||||
735,194
|
||||
117,872
|
||||
1233,648
|
||||
1160,509
|
||||
278,558
|
||||
20,697
|
||||
622,675
|
||||
60,217
|
||||
120,460
|
||||
296,505
|
||||
206,29
|
||||
20,131
|
||||
73,791
|
||||
1014,535
|
||||
708,473
|
||||
1042,371
|
||||
1243,672
|
||||
1197,798
|
||||
1218,586
|
||||
62,885
|
||||
48,843
|
||||
880,170
|
||||
788,729
|
||||
816,401
|
||||
969,47
|
||||
1119,567
|
||||
335,721
|
||||
160,45
|
||||
718,120
|
||||
666,427
|
||||
295,815
|
||||
850,109
|
||||
1208,618
|
||||
388,427
|
||||
177,481
|
||||
149,481
|
||||
676,197
|
||||
216,708
|
||||
646,696
|
||||
206,546
|
||||
641,749
|
||||
242,353
|
||||
1250,421
|
||||
520,568
|
||||
234,614
|
||||
1218,308
|
||||
817,579
|
||||
934,586
|
||||
84,737
|
||||
244,676
|
||||
1208,564
|
||||
1220,409
|
||||
473,665
|
||||
426,740
|
||||
1118,792
|
||||
928,201
|
||||
1061,213
|
||||
577,200
|
||||
862,641
|
||||
892,492
|
||||
150,201
|
||||
898,322
|
||||
641,847
|
||||
848,703
|
||||
392,329
|
||||
1266,341
|
||||
228,712
|
||||
494,493
|
||||
838,271
|
||||
1148,778
|
||||
1146,86
|
||||
493,91
|
||||
1126,105
|
||||
576,551
|
||||
234,651
|
||||
838,267
|
||||
561,502
|
||||
606,801
|
||||
1062,521
|
||||
1074,402
|
||||
166,45
|
||||
460,480
|
||||
1308,103
|
||||
1067,476
|
||||
1250,116
|
||||
15,592
|
||||
865,358
|
||||
979,121
|
||||
1014,743
|
||||
848,102
|
||||
1198,311
|
||||
120,253
|
||||
358,599
|
||||
316,299
|
||||
520,326
|
||||
1116,148
|
||||
1160,201
|
||||
880,778
|
||||
736,295
|
||||
335,173
|
||||
438,809
|
||||
1178,544
|
||||
74,565
|
||||
902,659
|
||||
831,859
|
||||
564,185
|
||||
776,44
|
||||
376,275
|
||||
125,812
|
||||
922,330
|
||||
130,205
|
||||
671,317
|
||||
92,308
|
||||
295,303
|
||||
771,744
|
||||
492,534
|
||||
380,840
|
||||
902,683
|
||||
65,86
|
||||
887,448
|
||||
1032,765
|
||||
120,641
|
||||
488,339
|
||||
1293,23
|
||||
733,470
|
||||
952,595
|
||||
909,831
|
||||
99,642
|
||||
166,555
|
||||
922,841
|
||||
1118,352
|
||||
191,719
|
||||
401,735
|
||||
652,791
|
||||
131,255
|
||||
18,827
|
||||
1000,488
|
||||
1178,527
|
||||
850,480
|
||||
474,712
|
||||
232,562
|
||||
294,185
|
||||
539,744
|
||||
395,105
|
||||
776,64
|
||||
231,253
|
||||
1292,382
|
||||
954,408
|
||||
488,401
|
||||
382,649
|
||||
842,427
|
||||
634,131
|
||||
150,649
|
||||
1302,827
|
||||
462,792
|
||||
1148,116
|
||||
262,742
|
||||
716,217
|
||||
729,159
|
||||
425,366
|
||||
463,175
|
||||
1044,427
|
||||
1228,703
|
||||
668,61
|
||||
1294,854
|
||||
1062,373
|
||||
79,194
|
||||
296,702
|
||||
659,243
|
||||
773,872
|
||||
806,833
|
||||
671,302
|
||||
686,299
|
||||
480,722
|
||||
88,75
|
||||
92,243
|
||||
882,607
|
||||
850,253
|
||||
1012,856
|
||||
1032,250
|
||||
410,71
|
||||
142,789
|
||||
1262,597
|
||||
647,397
|
||||
622,877
|
||||
160,712
|
||||
646,205
|
||||
1108,885
|
||||
582,575
|
||||
771,150
|
||||
624,299
|
||||
411,726
|
||||
132,445
|
||||
505,861
|
||||
376,558
|
||||
974,56
|
||||
132,320
|
||||
877,635
|
||||
624,254
|
||||
629,689
|
||||
746,402
|
||||
1114,129
|
||||
815,848
|
||||
298,67
|
||||
1056,716
|
||||
356,255
|
||||
356,827
|
||||
624,147
|
||||
216,123
|
||||
142,341
|
||||
900,218
|
||||
910,709
|
||||
1168,789
|
||||
954,827
|
||||
818,330
|
||||
492,360
|
||||
629,17
|
||||
664,319
|
||||
602,435
|
||||
196,241
|
||||
974,491
|
||||
970,285
|
||||
350,75
|
||||
1299,894
|
||||
1285,205
|
||||
884,488
|
||||
72,166
|
||||
1168,322
|
||||
370,178
|
||||
1280,819
|
||||
1220,485
|
||||
321,844
|
||||
95,357
|
||||
90,485
|
||||
77,470
|
||||
8,67
|
||||
298,603
|
||||
934,308
|
||||
644,369
|
||||
192,191
|
||||
248,359
|
||||
575,334
|
||||
298,291
|
||||
62,120
|
||||
100,288
|
||||
903,642
|
||||
147,543
|
||||
898,775
|
||||
1178,599
|
||||
719,476
|
||||
1062,7
|
||||
1118,827
|
||||
1118,219
|
||||
708,883
|
||||
401,831
|
||||
1295,78
|
||||
917,178
|
||||
472,715
|
||||
885,528
|
||||
102,134
|
||||
1116,752
|
||||
3,46
|
||||
1118,675
|
||||
1081,156
|
||||
22,371
|
||||
184,789
|
||||
1015,591
|
||||
644,427
|
||||
417,343
|
||||
1307,46
|
||||
755,866
|
||||
954,255
|
||||
325,159
|
||||
151,213
|
||||
32,877
|
||||
1210,288
|
||||
1119,623
|
||||
82,683
|
||||
60,778
|
||||
989,50
|
||||
348,322
|
||||
708,683
|
||||
278,765
|
||||
336,295
|
||||
733,694
|
||||
560,292
|
||||
564,402
|
||||
1049,758
|
||||
1094,771
|
||||
412,322
|
||||
1044,521
|
||||
900,659
|
||||
1245,30
|
||||
1290,770
|
||||
509,247
|
||||
576,103
|
||||
686,75
|
||||
705,574
|
||||
110,339
|
||||
934,619
|
||||
676,763
|
||||
294,644
|
||||
192,827
|
||||
124,457
|
||||
231,701
|
||||
1076,243
|
||||
102,842
|
||||
192,281
|
||||
1193,134
|
||||
788,165
|
||||
736,31
|
||||
1084,607
|
||||
1114,241
|
||||
1009,205
|
||||
1094,533
|
||||
336,765
|
||||
102,564
|
||||
458,241
|
||||
838,715
|
||||
214,815
|
||||
684,774
|
||||
175,859
|
||||
676,131
|
||||
838,579
|
||||
406,821
|
||||
249,213
|
||||
855,806
|
||||
848,227
|
||||
1222,75
|
||||
1116,253
|
||||
214,729
|
||||
32,628
|
||||
1168,372
|
||||
295,79
|
||||
393,30
|
||||
1114,404
|
||||
1033,320
|
||||
1245,86
|
||||
734,343
|
||||
1216,292
|
||||
602,473
|
||||
807,651
|
||||
520,165
|
||||
1140,397
|
||||
151,651
|
||||
504,649
|
||||
1213,366
|
||||
918,565
|
||||
263,777
|
||||
600,693
|
||||
326,723
|
||||
336,129
|
||||
571,642
|
||||
1232,723
|
||||
130,59
|
||||
783,582
|
||||
107,757
|
||||
1057,894
|
||||
1218,651
|
||||
1250,217
|
||||
167,885
|
||||
1033,126
|
||||
562,19
|
||||
191,175
|
||||
848,542
|
||||
181,199
|
||||
1280,864
|
||||
769,684
|
||||
1193,872
|
||||
1098,653
|
||||
1198,79
|
||||
1159,651
|
||||
562,586
|
||||
458,404
|
||||
1168,329
|
||||
248,439
|
||||
624,523
|
||||
1200,339
|
||||
406,535
|
||||
544,85
|
||||
584,301
|
||||
435,842
|
||||
571,54
|
||||
512,372
|
||||
651,243
|
||||
1034,600
|
||||
132,747
|
||||
756,158
|
||||
771,879
|
||||
537,648
|
||||
922,229
|
||||
227,700
|
||||
676,770
|
||||
1180,689
|
||||
769,798
|
||||
1068,289
|
||||
310,488
|
||||
130,891
|
||||
1047,441
|
||||
401,63
|
||||
1089,383
|
||||
952,702
|
||||
749,392
|
||||
134,326
|
||||
410,676
|
||||
1101,694
|
||||
18,830
|
||||
594,105
|
||||
440,815
|
||||
82,703
|
||||
460,871
|
||||
1176,326
|
||||
758,564
|
||||
818,116
|
||||
160,849
|
||||
807,203
|
||||
102,276
|
||||
221,831
|
||||
1145,222
|
||||
8,632
|
||||
965,871
|
||||
1175,175
|
||||
577,718
|
||||
60,116
|
||||
1036,449
|
||||
790,568
|
||||
52,446
|
||||
1012,603
|
||||
1089,259
|
||||
766,533
|
||||
1048,742
|
||||
602,11
|
||||
880,676
|
||||
716,116
|
||||
569,437
|
||||
94,12
|
||||
975,173
|
||||
102,341
|
||||
509,329
|
||||
360,560
|
||||
718,774
|
||||
142,249
|
||||
329,735
|
||||
12,61
|
||||
316,859
|
||||
84,775
|
||||
838,495
|
||||
43,117
|
||||
492,116
|
||||
592,774
|
||||
787,527
|
||||
488,567
|
||||
534,460
|
||||
932,294
|
||||
606,93
|
||||
227,553
|
||||
602,448
|
||||
458,852
|
||||
248,887
|
||||
1250,373
|
||||
602,813
|
||||
1233,669
|
||||
524,675
|
||||
1232,171
|
||||
1096,135
|
||||
328,310
|
||||
917,30
|
||||
1278,266
|
||||
20,763
|
||||
644,817
|
||||
1278,877
|
||||
1036,445
|
||||
462,227
|
||||
1226,775
|
||||
594,169
|
||||
1036,813
|
||||
472,271
|
||||
433,259
|
||||
918,329
|
||||
962,315
|
||||
840,789
|
||||
595,35
|
||||
1280,613
|
||||
194,253
|
||||
962,572
|
||||
733,1
|
||||
1175,551
|
||||
726,301
|
||||
52,11
|
||||
1295,592
|
||||
885,156
|
||||
214,135
|
||||
1144,45
|
||||
676,579
|
||||
552,217
|
||||
639,86
|
||||
716,677
|
||||
458,42
|
||||
294,485
|
||||
425,290
|
||||
594,725
|
||||
1068,353
|
||||
728,575
|
||||
719,418
|
||||
1302,487
|
||||
974,151
|
||||
527,582
|
||||
987,121
|
||||
333,498
|
||||
212,138
|
||||
1064,843
|
||||
1226,723
|
||||
900,823
|
||||
209,200
|
||||
969,369
|
||||
1116,673
|
||||
175,707
|
||||
32,516
|
||||
1268,121
|
||||
880,249
|
||||
1133,145
|
||||
875,894
|
||||
1150,45
|
||||
1077,726
|
||||
1091,757
|
||||
1238,268
|
||||
221,187
|
||||
571,28
|
||||
77,225
|
||||
219,620
|
||||
1086,329
|
||||
102,330
|
||||
984,275
|
||||
156,721
|
||||
95,607
|
||||
1232,383
|
||||
728,709
|
||||
271,506
|
||||
160,182
|
||||
97,696
|
||||
296,432
|
||||
167,9
|
||||
224,106
|
||||
1128,579
|
||||
740,801
|
||||
974,743
|
||||
1101,200
|
||||
196,490
|
||||
705,350
|
||||
818,267
|
||||
209,694
|
||||
1292,399
|
||||
837,665
|
||||
1303,845
|
||||
107,836
|
||||
428,793
|
||||
733,893
|
||||
440,576
|
||||
323,773
|
||||
162,778
|
||||
734,882
|
||||
296,417
|
||||
1150,182
|
||||
1280,371
|
||||
268,523
|
||||
1211,252
|
||||
472,267
|
||||
1213,528
|
||||
786,891
|
||||
629,205
|
||||
985,159
|
||||
428,607
|
||||
852,490
|
||||
82,647
|
||||
231,0
|
||||
25,689
|
||||
459,703
|
||||
1208,330
|
||||
28,588
|
||||
1057,103
|
||||
199,88
|
||||
430,170
|
||||
395,789
|
||||
805,861
|
||||
62,437
|
||||
788,126
|
||||
130,577
|
||||
338,747
|
||||
904,551
|
||||
733,718
|
||||
816,600
|
||||
195,703
|
||||
974,407
|
||||
356,603
|
||||
1193,806
|
||||
602,367
|
||||
674,67
|
||||
1262,51
|
||||
1203,757
|
||||
773,22
|
||||
887,446
|
||||
1044,467
|
||||
2,551
|
||||
591,453
|
||||
102,106
|
||||
581,287
|
||||
723,131
|
||||
651,651
|
||||
716,105
|
||||
242,373
|
||||
308,719
|
||||
1208,665
|
||||
1036,459
|
||||
710,649
|
||||
664,696
|
||||
1076,84
|
||||
1216,602
|
||||
1178,449
|
||||
828,408
|
||||
54,245
|
||||
554,549
|
||||
10,525
|
||||
728,319
|
||||
734,103
|
||||
30,96
|
||||
1228,683
|
||||
960,75
|
||||
768,583
|
||||
1144,339
|
||||
331,121
|
||||
298,186
|
||||
1160,833
|
||||
472,623
|
||||
341,47
|
||||
624,371
|
||||
433,635
|
||||
1066,683
|
||||
1042,523
|
||||
1298,61
|
||||
90,492
|
||||
1039,670
|
||||
626,120
|
||||
1278,516
|
||||
112,79
|
||||
54,201
|
||||
410,659
|
||||
996,285
|
||||
524,219
|
||||
60,617
|
||||
1086,149
|
||||
830,620
|
||||
534,512
|
||||
805,33
|
||||
1290,197
|
||||
410,218
|
||||
1196,821
|
||||
129,15
|
||||
430,676
|
||||
986,847
|
||||
1303,49
|
||||
1210,345
|
||||
1154,397
|
||||
1067,418
|
||||
321,50
|
||||
740,871
|
||||
1268,684
|
||||
816,787
|
||||
534,64
|
||||
750,292
|
||||
412,775
|
||||
376,308
|
||||
301,205
|
||||
482,486
|
||||
1079,253
|
||||
1104,796
|
||||
534,253
|
||||
1159,691
|
||||
151,233
|
||||
740,775
|
||||
1126,789
|
||||
535,588
|
||||
296,295
|
||||
1258,473
|
||||
192,352
|
||||
410,255
|
||||
336,39
|
||||
1220,709
|
||||
1079,894
|
||||
1111,88
|
||||
473,199
|
||||
1056,166
|
||||
166,742
|
||||
494,271
|
||||
1248,550
|
||||
1089,187
|
||||
1054,476
|
||||
1208,553
|
||||
1215,565
|
||||
1044,564
|
||||
160,555
|
||||
132,893
|
||||
681,877
|
||||
831,187
|
||||
577,1
|
||||
8,262
|
||||
398,749
|
||||
892,402
|
||||
1082,182
|
||||
1156,498
|
||||
984,723
|
||||
318,151
|
||||
423,448
|
||||
391,441
|
||||
806,385
|
||||
1133,481
|
||||
298,197
|
||||
594,217
|
||||
1292,64
|
||||
418,492
|
||||
1238,136
|
||||
1226,23
|
||||
1215,537
|
||||
147,95
|
||||
1237,791
|
||||
1036,670
|
||||
684,421
|
||||
1280,23
|
||||
266,521
|
||||
1091,274
|
||||
589,86
|
||||
1208,394
|
||||
1119,719
|
||||
78,723
|
||||
135,343
|
||||
1261,126
|
||||
80,683
|
||||
940,268
|
||||
65,850
|
||||
234,691
|
||||
400,716
|
||||
1048,210
|
||||
32,334
|
||||
927,388
|
||||
821,222
|
||||
758,106
|
||||
196,129
|
||||
1135,651
|
||||
890,467
|
||||
93,392
|
||||
1158,620
|
||||
8,39
|
||||
715,35
|
||||
806,201
|
||||
97,366
|
||||
997,847
|
||||
438,634
|
||||
246,683
|
||||
102,394
|
||||
60,169
|
||||
10,77
|
||||
1082,712
|
||||
488,493
|
||||
370,268
|
||||
156,397
|
||||
1218,728
|
||||
30,595
|
||||
77,246
|
||||
107,137
|
||||
904,535
|
||||
987,773
|
||||
344,406
|
||||
1308,551
|
||||
324,847
|
||||
348,315
|
||||
1118,281
|
||||
1278,334
|
||||
658,103
|
||||
426,236
|
||||
462,165
|
||||
426,658
|
||||
659,46
|
||||
1168,645
|
||||
972,77
|
||||
406,73
|
||||
42,684
|
||||
1014,505
|
||||
226,607
|
||||
8,407
|
||||
728,185
|
||||
313,847
|
||||
1178,893
|
||||
1166,399
|
||||
848,729
|
||||
452,9
|
||||
542,352
|
||||
1280,595
|
||||
524,689
|
||||
105,259
|
||||
1068,745
|
||||
1081,80
|
||||
639,368
|
||||
756,233
|
||||
639,317
|
||||
92,586
|
||||
1116,221
|
||||
112,718
|
||||
624,747
|
||||
1233,1
|
||||
1215,607
|
||||
1039,388
|
||||
382,245
|
||||
1295,86
|
||||
582,185
|
||||
952,599
|
||||
440,191
|
||||
458,689
|
||||
62,550
|
||||
186,467
|
||||
1084,287
|
||||
1245,416
|
||||
790,820
|
||||
|
||||
fold along x=655
|
||||
fold along y=447
|
||||
fold along x=327
|
||||
fold along y=223
|
||||
fold along x=163
|
||||
fold along y=111
|
||||
fold along x=81
|
||||
fold along y=55
|
||||
fold along x=40
|
||||
fold along y=27
|
||||
fold along y=13
|
||||
fold along y=6
|
Loading…
Reference in New Issue