solve day 13
This commit is contained in:
parent
1e43c1d1b2
commit
0ed2beea43
789
data/day_13.txt
Normal file
789
data/day_13.txt
Normal file
@ -0,0 +1,789 @@
|
||||
103,224
|
||||
624,491
|
||||
808,688
|
||||
1076,130
|
||||
700,26
|
||||
55,794
|
||||
119,724
|
||||
773,809
|
||||
875,33
|
||||
922,135
|
||||
509,260
|
||||
801,176
|
||||
1143,85
|
||||
619,526
|
||||
1250,138
|
||||
753,431
|
||||
1260,654
|
||||
276,457
|
||||
637,718
|
||||
1183,115
|
||||
284,137
|
||||
539,757
|
||||
279,85
|
||||
1128,474
|
||||
406,469
|
||||
1086,170
|
||||
927,673
|
||||
310,702
|
||||
35,796
|
||||
268,892
|
||||
202,249
|
||||
820,878
|
||||
992,121
|
||||
339,649
|
||||
1275,796
|
||||
1113,290
|
||||
336,616
|
||||
522,471
|
||||
755,764
|
||||
631,204
|
||||
241,393
|
||||
455,546
|
||||
1165,176
|
||||
304,276
|
||||
855,859
|
||||
582,380
|
||||
437,9
|
||||
944,400
|
||||
199,770
|
||||
124,473
|
||||
522,423
|
||||
167,85
|
||||
606,493
|
||||
1158,688
|
||||
1186,473
|
||||
981,54
|
||||
790,507
|
||||
704,493
|
||||
788,362
|
||||
971,201
|
||||
512,889
|
||||
758,810
|
||||
1101,770
|
||||
325,840
|
||||
734,873
|
||||
725,586
|
||||
416,105
|
||||
1183,365
|
||||
1233,725
|
||||
698,256
|
||||
418,112
|
||||
520,507
|
||||
276,773
|
||||
634,185
|
||||
483,693
|
||||
612,256
|
||||
651,603
|
||||
1225,53
|
||||
1268,759
|
||||
35,339
|
||||
311,474
|
||||
984,592
|
||||
1237,770
|
||||
1093,129
|
||||
755,639
|
||||
671,278
|
||||
788,471
|
||||
430,810
|
||||
693,231
|
||||
281,227
|
||||
454,178
|
||||
1,54
|
||||
1290,499
|
||||
619,407
|
||||
1081,575
|
||||
1252,266
|
||||
1186,421
|
||||
698,638
|
||||
1218,561
|
||||
954,763
|
||||
692,402
|
||||
923,532
|
||||
281,631
|
||||
222,777
|
||||
1047,316
|
||||
1109,215
|
||||
513,824
|
||||
771,645
|
||||
802,640
|
||||
769,471
|
||||
42,256
|
||||
619,80
|
||||
913,425
|
||||
340,68
|
||||
397,833
|
||||
539,137
|
||||
1136,654
|
||||
515,18
|
||||
507,247
|
||||
1274,402
|
||||
970,364
|
||||
913,362
|
||||
328,410
|
||||
775,404
|
||||
164,16
|
||||
356,763
|
||||
545,353
|
||||
790,506
|
||||
780,46
|
||||
378,569
|
||||
276,437
|
||||
878,777
|
||||
159,613
|
||||
313,137
|
||||
377,418
|
||||
134,22
|
||||
483,14
|
||||
1207,670
|
||||
1238,738
|
||||
528,268
|
||||
913,761
|
||||
1009,501
|
||||
1217,805
|
||||
865,361
|
||||
460,801
|
||||
358,715
|
||||
857,775
|
||||
552,842
|
||||
771,197
|
||||
627,40
|
||||
765,577
|
||||
1071,704
|
||||
862,638
|
||||
811,686
|
||||
219,413
|
||||
904,425
|
||||
728,738
|
||||
1020,588
|
||||
1240,225
|
||||
619,78
|
||||
611,180
|
||||
610,474
|
||||
388,135
|
||||
957,582
|
||||
194,43
|
||||
1027,842
|
||||
917,864
|
||||
537,770
|
||||
831,26
|
||||
1240,669
|
||||
1034,582
|
||||
1210,49
|
||||
1036,282
|
||||
1217,537
|
||||
271,100
|
||||
537,691
|
||||
584,290
|
||||
224,618
|
||||
1111,546
|
||||
610,26
|
||||
726,221
|
||||
1053,509
|
||||
1295,278
|
||||
1094,859
|
||||
725,245
|
||||
552,52
|
||||
981,168
|
||||
448,190
|
||||
905,64
|
||||
700,126
|
||||
132,179
|
||||
930,648
|
||||
692,189
|
||||
659,291
|
||||
1027,852
|
||||
984,78
|
||||
318,121
|
||||
1026,757
|
||||
889,385
|
||||
184,596
|
||||
746,50
|
||||
850,93
|
||||
233,173
|
||||
234,130
|
||||
201,679
|
||||
290,588
|
||||
510,0
|
||||
284,869
|
||||
939,628
|
||||
147,303
|
||||
1265,78
|
||||
445,361
|
||||
763,477
|
||||
1250,586
|
||||
1178,715
|
||||
282,196
|
||||
1290,617
|
||||
719,191
|
||||
460,93
|
||||
932,325
|
||||
529,343
|
||||
112,829
|
||||
967,567
|
||||
43,714
|
||||
545,541
|
||||
541,423
|
||||
612,759
|
||||
1262,196
|
||||
473,522
|
||||
878,117
|
||||
512,596
|
||||
182,446
|
||||
783,529
|
||||
797,70
|
||||
768,65
|
||||
477,270
|
||||
552,810
|
||||
373,227
|
||||
502,682
|
||||
378,121
|
||||
430,724
|
||||
592,565
|
||||
180,254
|
||||
145,718
|
||||
184,298
|
||||
748,354
|
||||
127,147
|
||||
845,400
|
||||
951,485
|
||||
393,260
|
||||
898,357
|
||||
480,667
|
||||
541,871
|
||||
507,199
|
||||
1267,714
|
||||
407,406
|
||||
288,494
|
||||
152,654
|
||||
827,14
|
||||
1028,698
|
||||
1000,192
|
||||
549,169
|
||||
490,211
|
||||
1111,592
|
||||
535,404
|
||||
26,854
|
||||
372,126
|
||||
455,859
|
||||
236,340
|
||||
716,808
|
||||
387,532
|
||||
1101,361
|
||||
857,119
|
||||
999,420
|
||||
276,878
|
||||
373,417
|
||||
923,670
|
||||
92,729
|
||||
179,703
|
||||
619,555
|
||||
455,348
|
||||
668,266
|
||||
674,217
|
||||
1139,880
|
||||
442,530
|
||||
1042,2
|
||||
594,586
|
||||
890,354
|
||||
13,757
|
||||
698,759
|
||||
268,677
|
||||
1125,276
|
||||
314,826
|
||||
1210,889
|
||||
207,42
|
||||
691,78
|
||||
241,277
|
||||
42,638
|
||||
176,82
|
||||
445,891
|
||||
315,649
|
||||
1081,95
|
||||
880,810
|
||||
782,268
|
||||
472,229
|
||||
2,826
|
||||
769,23
|
||||
974,616
|
||||
898,537
|
||||
102,674
|
||||
604,374
|
||||
415,480
|
||||
1154,453
|
||||
1110,14
|
||||
798,695
|
||||
562,333
|
||||
336,809
|
||||
254,508
|
||||
412,313
|
||||
271,221
|
||||
763,171
|
||||
883,255
|
||||
992,773
|
||||
999,327
|
||||
818,36
|
||||
1081,215
|
||||
974,278
|
||||
1274,588
|
||||
808,234
|
||||
373,477
|
||||
43,42
|
||||
552,674
|
||||
609,816
|
||||
440,486
|
||||
1081,679
|
||||
105,723
|
||||
281,667
|
||||
865,96
|
||||
574,442
|
||||
290,140
|
||||
1289,294
|
||||
338,682
|
||||
299,264
|
||||
1268,638
|
||||
1154,5
|
||||
42,759
|
||||
999,474
|
||||
502,688
|
||||
35,787
|
||||
452,400
|
||||
1116,679
|
||||
571,684
|
||||
420,781
|
||||
1056,396
|
||||
1309,467
|
||||
1238,193
|
||||
1287,204
|
||||
448,638
|
||||
418,844
|
||||
832,82
|
||||
1053,385
|
||||
1290,395
|
||||
1101,768
|
||||
1027,42
|
||||
1146,858
|
||||
768,787
|
||||
716,674
|
||||
765,541
|
||||
504,82
|
||||
512,471
|
||||
1206,565
|
||||
691,80
|
||||
391,764
|
||||
1208,514
|
||||
1,427
|
||||
23,690
|
||||
994,212
|
||||
837,522
|
||||
1265,750
|
||||
209,320
|
||||
952,715
|
||||
999,687
|
||||
329,726
|
||||
1233,85
|
||||
126,626
|
||||
117,462
|
||||
803,143
|
||||
652,712
|
||||
142,298
|
||||
582,50
|
||||
370,309
|
||||
20,838
|
||||
903,488
|
||||
380,515
|
||||
681,536
|
||||
1128,446
|
||||
291,75
|
||||
502,206
|
||||
70,673
|
||||
233,721
|
||||
127,81
|
||||
99,255
|
||||
765,765
|
||||
102,871
|
||||
388,51
|
||||
612,135
|
||||
763,723
|
||||
387,425
|
||||
639,278
|
||||
1191,180
|
||||
728,514
|
||||
607,869
|
||||
199,302
|
||||
699,282
|
||||
420,354
|
||||
823,64
|
||||
527,747
|
||||
405,64
|
||||
564,50
|
||||
35,526
|
||||
524,334
|
||||
913,61
|
||||
542,667
|
||||
582,722
|
||||
492,36
|
||||
765,353
|
||||
1074,340
|
||||
840,450
|
||||
875,400
|
||||
937,477
|
||||
2,264
|
||||
1146,260
|
||||
1027,714
|
||||
1101,320
|
||||
182,474
|
||||
801,767
|
||||
1260,381
|
||||
72,253
|
||||
195,73
|
||||
390,497
|
||||
1056,508
|
||||
107,275
|
||||
753,504
|
||||
699,180
|
||||
890,540
|
||||
894,105
|
||||
509,270
|
||||
530,249
|
||||
378,94
|
||||
50,65
|
||||
870,486
|
||||
1029,667
|
||||
728,840
|
||||
974,809
|
||||
803,751
|
||||
92,354
|
||||
749,509
|
||||
1198,206
|
||||
144,0
|
||||
290,208
|
||||
1195,249
|
||||
470,647
|
||||
1233,809
|
||||
801,270
|
||||
874,793
|
||||
903,406
|
||||
310,192
|
||||
1109,551
|
||||
806,812
|
||||
1069,841
|
||||
1161,158
|
||||
1044,311
|
||||
1168,23
|
||||
542,227
|
||||
1268,361
|
||||
1166,446
|
||||
421,385
|
||||
782,432
|
||||
478,82
|
||||
1034,885
|
||||
1154,217
|
||||
216,859
|
||||
677,497
|
||||
372,660
|
||||
806,82
|
||||
612,704
|
||||
483,201
|
||||
820,260
|
||||
933,418
|
||||
873,885
|
||||
744,789
|
||||
147,143
|
||||
594,220
|
||||
45,144
|
||||
1268,135
|
||||
699,119
|
||||
383,221
|
||||
27,854
|
||||
328,352
|
||||
499,880
|
||||
1298,75
|
||||
437,317
|
||||
102,52
|
||||
1184,432
|
||||
996,826
|
||||
448,25
|
||||
1211,764
|
||||
987,165
|
||||
913,133
|
||||
35,595
|
||||
271,436
|
||||
1036,155
|
||||
1255,624
|
||||
1287,690
|
||||
1298,714
|
||||
492,688
|
||||
827,693
|
||||
1129,521
|
||||
1028,196
|
||||
1176,388
|
||||
654,190
|
||||
967,106
|
||||
340,364
|
||||
201,215
|
||||
59,670
|
||||
495,606
|
||||
768,227
|
||||
576,873
|
||||
746,844
|
||||
618,82
|
||||
1238,253
|
||||
387,84
|
||||
50,325
|
||||
631,690
|
||||
705,418
|
||||
937,711
|
||||
1207,152
|
||||
152,682
|
||||
768,829
|
||||
528,686
|
||||
716,220
|
||||
1183,141
|
||||
277,866
|
||||
35,487
|
||||
44,749
|
||||
798,889
|
||||
705,476
|
||||
326,816
|
||||
1251,224
|
||||
1310,381
|
||||
1109,343
|
||||
1211,255
|
||||
60,138
|
||||
1081,103
|
||||
659,603
|
||||
214,65
|
||||
835,703
|
||||
1290,838
|
||||
534,645
|
||||
539,249
|
||||
1074,50
|
||||
406,425
|
||||
209,768
|
||||
652,182
|
||||
512,838
|
||||
316,212
|
||||
820,16
|
||||
35,147
|
||||
985,691
|
||||
604,65
|
||||
407,488
|
||||
811,880
|
||||
1193,432
|
||||
937,675
|
||||
344,416
|
||||
400,325
|
||||
1145,168
|
||||
868,530
|
||||
769,871
|
||||
1298,404
|
||||
134,388
|
||||
1039,436
|
||||
1033,812
|
||||
681,393
|
||||
517,337
|
||||
582,844
|
||||
725,201
|
||||
1012,187
|
||||
480,675
|
||||
654,704
|
||||
1275,144
|
||||
115,249
|
||||
12,588
|
||||
1028,644
|
||||
306,220
|
||||
326,592
|
||||
671,431
|
||||
97,431
|
||||
1146,16
|
||||
380,648
|
||||
955,686
|
||||
604,325
|
||||
119,842
|
||||
1086,618
|
||||
1309,54
|
||||
562,540
|
||||
1146,464
|
||||
996,523
|
||||
311,327
|
||||
758,471
|
||||
92,281
|
||||
671,655
|
||||
550,565
|
||||
125,103
|
||||
699,404
|
||||
228,752
|
||||
1298,371
|
||||
576,649
|
||||
552,380
|
||||
1260,513
|
||||
821,427
|
||||
783,141
|
||||
0,78
|
||||
683,40
|
||||
806,826
|
||||
552,276
|
||||
371,567
|
||||
431,0
|
||||
267,532
|
||||
1086,808
|
||||
336,278
|
||||
372,234
|
||||
530,46
|
||||
58,628
|
||||
12,371
|
||||
855,546
|
||||
282,644
|
||||
938,660
|
||||
1176,22
|
||||
995,649
|
||||
49,476
|
||||
1238,514
|
||||
1279,485
|
||||
539,697
|
||||
50,513
|
||||
1190,256
|
||||
490,235
|
||||
430,84
|
||||
18,217
|
||||
453,215
|
||||
1103,42
|
||||
274,164
|
||||
242,537
|
||||
884,752
|
||||
550,329
|
||||
855,299
|
||||
100,845
|
||||
328,526
|
||||
910,514
|
||||
933,476
|
||||
100,49
|
||||
2,378
|
||||
301,501
|
||||
1298,180
|
||||
939,842
|
||||
470,298
|
||||
35,528
|
||||
746,498
|
||||
156,453
|
||||
857,439
|
||||
564,554
|
||||
144,777
|
||||
1165,718
|
||||
840,695
|
||||
546,793
|
||||
749,385
|
||||
576,201
|
||||
529,103
|
||||
835,751
|
||||
1266,26
|
||||
1093,577
|
||||
207,852
|
||||
1297,757
|
||||
933,866
|
||||
841,724
|
||||
1201,129
|
||||
199,859
|
||||
1074,560
|
||||
335,649
|
||||
271,794
|
||||
1125,724
|
||||
838,229
|
||||
1183,779
|
||||
782,686
|
||||
413,393
|
||||
765,129
|
||||
77,725
|
||||
1146,430
|
||||
59,224
|
||||
870,107
|
||||
656,704
|
||||
164,270
|
||||
865,320
|
||||
181,521
|
||||
1063,40
|
||||
229,95
|
||||
142,392
|
||||
987,515
|
||||
838,644
|
||||
276,9
|
||||
103,670
|
||||
790,58
|
||||
174,240
|
||||
1298,819
|
||||
1131,703
|
||||
435,861
|
||||
1308,712
|
||||
782,626
|
||||
806,147
|
||||
523,261
|
||||
979,379
|
||||
1026,137
|
||||
591,191
|
||||
726,540
|
||||
92,561
|
||||
400,392
|
||||
1309,427
|
||||
728,380
|
||||
937,417
|
||||
171,880
|
||||
1308,182
|
||||
1218,540
|
||||
311,119
|
||||
104,565
|
||||
201,343
|
||||
266,583
|
||||
363,371
|
||||
397,89
|
||||
119,714
|
||||
919,130
|
||||
142,502
|
||||
773,691
|
||||
995,245
|
||||
1265,816
|
||||
748,540
|
||||
1185,103
|
||||
1072,789
|
||||
185,170
|
||||
1020,754
|
||||
946,626
|
||||
677,600
|
||||
93,805
|
||||
1081,791
|
||||
633,294
|
||||
512,840
|
||||
728,50
|
||||
771,137
|
||||
520,506
|
||||
897,393
|
||||
1154,565
|
||||
541,471
|
||||
1297,137
|
||||
967,474
|
||||
499,208
|
||||
639,879
|
||||
318,269
|
||||
629,281
|
||||
975,649
|
||||
490,260
|
||||
545,577
|
||||
156,5
|
||||
383,669
|
||||
913,532
|
||||
119,164
|
||||
162,688
|
||||
1092,793
|
||||
|
||||
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
|
66
src/day_13.jl
Normal file
66
src/day_13.jl
Normal file
@ -0,0 +1,66 @@
|
||||
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
|
||||
import .Aoc: @aoc
|
||||
using Pipe: @pipe
|
||||
|
||||
function fold(grid, dir, at)
|
||||
if dir == "x"
|
||||
new = grid[:, 1:at]
|
||||
rest = reverse(grid[:, at+2:end], dims=2)
|
||||
else
|
||||
new = grid[1:at, :]
|
||||
rest = reverse(grid[at+2:end, :], dims=1)
|
||||
end
|
||||
lnewx, lnewy = (length(new[1, :]), length(new[:, 1]))
|
||||
lrestx, lresty = (length(rest[1, :]), length(rest[:, 1]))
|
||||
for y in 1:lresty, x in 1:lrestx
|
||||
new[lnewy-lresty+y, lnewx-lrestx+x] = new[lnewy-lresty+y, lnewx-lrestx+x] || rest[y,x]
|
||||
end
|
||||
return new
|
||||
end
|
||||
|
||||
function prep_input(input)
|
||||
folds = []
|
||||
holes = []
|
||||
for l in input
|
||||
if l == ""; continue; end
|
||||
m = match(r"(\d+),(\d+)",l)
|
||||
if m == nothing
|
||||
c = match(r"(\w)=(\d+)", l).captures
|
||||
push!(folds, [c[1], parse(Int, c[2])])
|
||||
else
|
||||
c = match(r"(\d+),(\d+)", l).captures
|
||||
push!(holes, [parse(Int, c[1]), parse(Int, c[2])])
|
||||
end
|
||||
end
|
||||
max_x = maximum(map(x-> x[1], holes))
|
||||
max_y = maximum(map(x-> x[2], holes))
|
||||
grid = falses((max_y+1, max_x+1))
|
||||
for (x,y) in holes
|
||||
grid[y+1,x+1] = true
|
||||
end
|
||||
return (grid, folds)
|
||||
end
|
||||
|
||||
function print_grid(grid)
|
||||
for y in 1:length(grid[:,1])
|
||||
for x in 1:length(grid[1,:])
|
||||
print(".#"[grid[y,x]+1])
|
||||
end
|
||||
println("")
|
||||
end
|
||||
end
|
||||
|
||||
function p1(input::Vector{String})
|
||||
grid, folds = prep_input(input)
|
||||
return sum(fold(grid, folds[1][1], folds[1][2]))
|
||||
end
|
||||
|
||||
function p2(input::Vector{String})
|
||||
grid, folds = prep_input(input)
|
||||
for (dir, at) in folds
|
||||
grid = fold(grid, dir, at)
|
||||
end
|
||||
print_grid(grid)
|
||||
end
|
||||
|
||||
@aoc(2021, 13)
|
Loading…
x
Reference in New Issue
Block a user