Day 13
This commit is contained in:
parent
1bf6e92261
commit
7b313769db
|
@ -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
|
|
@ -0,0 +1,155 @@
|
|||
use std::collections::HashSet;
|
||||
use std::fmt::{Debug, Formatter};
|
||||
|
||||
pub fn day13() {
|
||||
// let input = r#"
|
||||
// 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
|
||||
// "#;
|
||||
let input = include_str!("../input/day13.txt");
|
||||
|
||||
let (grid, folds) = parse(input);
|
||||
println!("{}x{}", grid.width, grid.height);
|
||||
// dbg!(&grid);
|
||||
// dbg!(&folds);
|
||||
// dbg!(grid.fold(&folds[0]));
|
||||
// dbg!(grid.fold(&folds[0]).fold(&folds[1]));
|
||||
|
||||
let grid_after_one_fold = grid.fold(&folds[0]);
|
||||
// println!(
|
||||
// "{}x{}",
|
||||
// grid_after_one_fold.width, grid_after_one_fold.height
|
||||
// );
|
||||
// // dbg!(&grid_after_one_fold);
|
||||
println!("dots visible: {}", grid_after_one_fold.dots_visible());
|
||||
|
||||
dbg!(folds.iter().fold(grid, |g, f| g.fold(f)));
|
||||
}
|
||||
|
||||
fn parse(input: &str) -> (Grid, Vec<Fold>) {
|
||||
let (grid, folds) = input.trim().split_once("\n\n").unwrap();
|
||||
let folds = folds
|
||||
.lines()
|
||||
.map(|l| {
|
||||
let (s, n) = l.trim().split_once("=").unwrap();
|
||||
let coord = n.parse::<usize>().unwrap();
|
||||
match s.chars().last() {
|
||||
Some('x') => Fold::X(coord),
|
||||
Some('y') => Fold::Y(coord),
|
||||
_ => panic!(),
|
||||
}
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let points = grid
|
||||
.lines()
|
||||
.map(|l| {
|
||||
let (x, y) = l.trim().split_once(",").unwrap();
|
||||
let x = x.parse::<usize>().unwrap();
|
||||
let y = y.parse::<usize>().unwrap();
|
||||
(x, y)
|
||||
})
|
||||
.collect::<HashSet<_>>();
|
||||
let width = points.iter().map(|(x, _)| x).max().unwrap() + 1;
|
||||
let height = points.iter().map(|(_, y)| y).max().unwrap() + 1;
|
||||
|
||||
(
|
||||
Grid {
|
||||
width,
|
||||
height,
|
||||
points,
|
||||
},
|
||||
folds,
|
||||
)
|
||||
}
|
||||
|
||||
struct Grid {
|
||||
width: usize,
|
||||
height: usize,
|
||||
points: HashSet<(usize, usize)>,
|
||||
}
|
||||
|
||||
impl Debug for Grid {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{}x{}\n", self.width, self.height).expect("write");
|
||||
for y in 0..self.height {
|
||||
for x in 0..self.width {
|
||||
if self.points.contains(&(x, y)) {
|
||||
write!(f, "#").expect("write");
|
||||
} else {
|
||||
write!(f, ".").expect("write");
|
||||
}
|
||||
}
|
||||
write!(f, "\n").expect("write");
|
||||
}
|
||||
write!(f, "\n")
|
||||
}
|
||||
}
|
||||
|
||||
impl Grid {
|
||||
fn fold(&self, fold: &Fold) -> Grid {
|
||||
match fold {
|
||||
Fold::X(n) => {
|
||||
assert!(self.width % 2 == 1);
|
||||
let new_points = self
|
||||
.points
|
||||
.iter()
|
||||
.map(|&(x, y)| {
|
||||
let new_x = if x > *n { n - (x - n) } else { x };
|
||||
(new_x, y)
|
||||
})
|
||||
.collect::<HashSet<_>>();
|
||||
Grid {
|
||||
width: *n,
|
||||
height: self.height,
|
||||
points: new_points,
|
||||
}
|
||||
}
|
||||
Fold::Y(n) => {
|
||||
assert!(self.height % 2 == 1);
|
||||
let new_points = self
|
||||
.points
|
||||
.iter()
|
||||
.map(|&(x, y)| {
|
||||
let new_y = if y > *n { n - (y - n) } else { y };
|
||||
(x, new_y)
|
||||
})
|
||||
.collect::<HashSet<_>>();
|
||||
Grid {
|
||||
width: self.width,
|
||||
height: *n,
|
||||
points: new_points,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn dots_visible(&self) -> usize {
|
||||
self.points.len()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
enum Fold {
|
||||
X(usize),
|
||||
Y(usize),
|
||||
}
|
|
@ -11,7 +11,8 @@ mod day09;
|
|||
mod day10;
|
||||
mod day11;
|
||||
mod day12;
|
||||
mod day13;
|
||||
|
||||
fn main() {
|
||||
day12::day12();
|
||||
day13::day13();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue