Compare commits
2 commits
5a8d17a4e7
...
b0821bc945
Author | SHA1 | Date | |
---|---|---|---|
b0821bc945 | |||
3d52da6074 |
4 changed files with 951 additions and 0 deletions
7
2021/data/day13.expected
Normal file
7
2021/data/day13.expected
Normal file
|
@ -0,0 +1,7 @@
|
|||
704
|
||||
#..#..##...##....##.###..####.#..#..##.
|
||||
#..#.#..#.#..#....#.#..#.#....#..#.#..#
|
||||
####.#....#..#....#.###..###..####.#...
|
||||
#..#.#.##.####....#.#..#.#....#..#.#...
|
||||
#..#.#..#.#..#.#..#.#..#.#....#..#.#..#
|
||||
#..#..###.#..#..##..###..####.#..#..##.
|
852
2021/data/day13.input
Normal file
852
2021/data/day13.input
Normal file
|
@ -0,0 +1,852 @@
|
|||
43,593
|
||||
1139,385
|
||||
1178,51
|
||||
216,679
|
||||
743,185
|
||||
1241,250
|
||||
197,60
|
||||
479,700
|
||||
565,845
|
||||
1022,330
|
||||
744,714
|
||||
440,535
|
||||
137,81
|
||||
35,766
|
||||
482,249
|
||||
1120,280
|
||||
484,98
|
||||
301,823
|
||||
928,616
|
||||
601,7
|
||||
60,835
|
||||
1092,371
|
||||
1033,584
|
||||
1079,833
|
||||
44,665
|
||||
469,777
|
||||
915,526
|
||||
759,290
|
||||
843,891
|
||||
1225,464
|
||||
326,831
|
||||
723,333
|
||||
1099,362
|
||||
962,285
|
||||
1069,474
|
||||
315,731
|
||||
716,506
|
||||
741,430
|
||||
1228,320
|
||||
1099,878
|
||||
485,522
|
||||
328,333
|
||||
1289,432
|
||||
1173,506
|
||||
395,526
|
||||
47,625
|
||||
1155,273
|
||||
114,856
|
||||
914,826
|
||||
1263,849
|
||||
1294,693
|
||||
607,289
|
||||
1225,138
|
||||
25,519
|
||||
1051,564
|
||||
738,747
|
||||
67,493
|
||||
1178,619
|
||||
984,828
|
||||
21,100
|
||||
1086,241
|
||||
644,563
|
||||
164,287
|
||||
738,131
|
||||
1116,312
|
||||
21,796
|
||||
423,66
|
||||
395,816
|
||||
846,614
|
||||
823,63
|
||||
249,542
|
||||
858,162
|
||||
1273,448
|
||||
684,623
|
||||
139,443
|
||||
184,388
|
||||
977,71
|
||||
499,621
|
||||
810,133
|
||||
1169,346
|
||||
249,791
|
||||
47,772
|
||||
1170,128
|
||||
530,162
|
||||
594,387
|
||||
972,752
|
||||
1309,752
|
||||
26,707
|
||||
211,362
|
||||
821,640
|
||||
502,722
|
||||
872,63
|
||||
93,82
|
||||
895,709
|
||||
1113,445
|
||||
567,338
|
||||
592,448
|
||||
567,556
|
||||
552,277
|
||||
815,735
|
||||
10,470
|
||||
400,120
|
||||
807,835
|
||||
1289,602
|
||||
470,442
|
||||
167,562
|
||||
1094,735
|
||||
848,467
|
||||
1275,568
|
||||
1009,868
|
||||
264,829
|
||||
907,95
|
||||
894,714
|
||||
807,59
|
||||
768,199
|
||||
470,218
|
||||
141,346
|
||||
644,22
|
||||
85,430
|
||||
693,670
|
||||
489,640
|
||||
748,555
|
||||
535,560
|
||||
1056,597
|
||||
617,266
|
||||
445,149
|
||||
751,269
|
||||
535,782
|
||||
1046,494
|
||||
372,677
|
||||
62,848
|
||||
1111,291
|
||||
1048,313
|
||||
1069,868
|
||||
480,387
|
||||
487,640
|
||||
1151,463
|
||||
725,194
|
||||
1031,528
|
||||
139,675
|
||||
994,304
|
||||
223,604
|
||||
823,679
|
||||
383,793
|
||||
313,189
|
||||
463,357
|
||||
952,275
|
||||
38,477
|
||||
127,155
|
||||
1156,245
|
||||
1277,371
|
||||
572,315
|
||||
279,810
|
||||
908,322
|
||||
436,397
|
||||
594,835
|
||||
1031,93
|
||||
1173,813
|
||||
733,327
|
||||
982,828
|
||||
495,640
|
||||
703,737
|
||||
1017,299
|
||||
390,0
|
||||
99,327
|
||||
1084,458
|
||||
202,732
|
||||
551,604
|
||||
259,816
|
||||
85,464
|
||||
1083,525
|
||||
301,26
|
||||
822,352
|
||||
703,157
|
||||
539,434
|
||||
550,194
|
||||
868,710
|
||||
197,893
|
||||
758,586
|
||||
736,176
|
||||
633,889
|
||||
115,460
|
||||
256,80
|
||||
651,672
|
||||
1064,409
|
||||
872,7
|
||||
669,745
|
||||
231,604
|
||||
88,628
|
||||
759,604
|
||||
1287,694
|
||||
171,826
|
||||
1222,852
|
||||
1250,836
|
||||
1092,54
|
||||
85,196
|
||||
388,205
|
||||
907,543
|
||||
326,561
|
||||
264,381
|
||||
775,560
|
||||
1069,71
|
||||
60,836
|
||||
277,584
|
||||
375,801
|
||||
117,813
|
||||
1181,673
|
||||
1150,128
|
||||
54,278
|
||||
718,446
|
||||
577,327
|
||||
1004,733
|
||||
1084,794
|
||||
909,497
|
||||
975,807
|
||||
561,171
|
||||
244,819
|
||||
505,441
|
||||
393,64
|
||||
502,172
|
||||
517,872
|
||||
268,28
|
||||
1113,210
|
||||
141,490
|
||||
185,826
|
||||
301,250
|
||||
354,654
|
||||
234,471
|
||||
403,95
|
||||
438,887
|
||||
693,166
|
||||
189,709
|
||||
1243,493
|
||||
87,543
|
||||
1086,777
|
||||
338,752
|
||||
49,584
|
||||
574,148
|
||||
1039,607
|
||||
1051,116
|
||||
569,375
|
||||
254,326
|
||||
554,212
|
||||
1255,271
|
||||
1042,866
|
||||
30,119
|
||||
218,632
|
||||
674,372
|
||||
10,582
|
||||
596,194
|
||||
194,582
|
||||
880,450
|
||||
587,828
|
||||
723,666
|
||||
109,290
|
||||
85,711
|
||||
915,116
|
||||
259,564
|
||||
259,609
|
||||
189,721
|
||||
383,607
|
||||
666,22
|
||||
326,828
|
||||
164,152
|
||||
709,362
|
||||
755,145
|
||||
108,483
|
||||
657,640
|
||||
716,507
|
||||
1,752
|
||||
1272,788
|
||||
664,46
|
||||
316,470
|
||||
882,458
|
||||
693,266
|
||||
1089,326
|
||||
1121,519
|
||||
1120,483
|
||||
499,68
|
||||
547,719
|
||||
1066,355
|
||||
1014,757
|
||||
971,163
|
||||
868,856
|
||||
161,702
|
||||
75,2
|
||||
566,516
|
||||
1178,760
|
||||
266,651
|
||||
1099,464
|
||||
863,201
|
||||
224,53
|
||||
1113,1
|
||||
811,273
|
||||
177,453
|
||||
775,245
|
||||
1297,694
|
||||
764,408
|
||||
137,813
|
||||
716,429
|
||||
908,469
|
||||
1225,127
|
||||
1031,794
|
||||
428,458
|
||||
925,305
|
||||
581,721
|
||||
306,733
|
||||
1258,854
|
||||
241,138
|
||||
1181,834
|
||||
987,3
|
||||
796,94
|
||||
218,497
|
||||
100,682
|
||||
1180,122
|
||||
184,218
|
||||
1218,23
|
||||
569,16
|
||||
1250,725
|
||||
1202,49
|
||||
736,829
|
||||
1059,674
|
||||
684,735
|
||||
428,346
|
||||
1195,434
|
||||
1064,485
|
||||
430,450
|
||||
224,761
|
||||
749,364
|
||||
711,549
|
||||
276,7
|
||||
403,367
|
||||
855,291
|
||||
375,541
|
||||
85,586
|
||||
353,644
|
||||
467,667
|
||||
50,617
|
||||
1225,308
|
||||
751,161
|
||||
751,340
|
||||
703,289
|
||||
422,457
|
||||
442,710
|
||||
85,127
|
||||
1307,670
|
||||
1079,526
|
||||
639,820
|
||||
1217,171
|
||||
378,613
|
||||
952,585
|
||||
731,450
|
||||
402,693
|
||||
847,357
|
||||
195,696
|
||||
25,362
|
||||
1274,460
|
||||
160,766
|
||||
231,302
|
||||
1084,548
|
||||
927,773
|
||||
1280,438
|
||||
487,679
|
||||
261,88
|
||||
1054,80
|
||||
129,221
|
||||
1171,107
|
||||
1195,12
|
||||
920,0
|
||||
851,248
|
||||
828,649
|
||||
1307,137
|
||||
710,168
|
||||
50,56
|
||||
555,749
|
||||
345,712
|
||||
266,329
|
||||
830,611
|
||||
296,760
|
||||
633,432
|
||||
232,457
|
||||
184,429
|
||||
611,749
|
||||
37,224
|
||||
402,469
|
||||
666,779
|
||||
1217,364
|
||||
423,340
|
||||
296,7
|
||||
443,878
|
||||
378,10
|
||||
1139,509
|
||||
1228,635
|
||||
629,698
|
||||
539,205
|
||||
910,297
|
||||
500,133
|
||||
684,271
|
||||
703,605
|
||||
21,453
|
||||
1110,476
|
||||
841,68
|
||||
351,648
|
||||
1252,780
|
||||
234,646
|
||||
780,641
|
||||
308,715
|
||||
416,180
|
||||
957,250
|
||||
935,532
|
||||
761,863
|
||||
401,397
|
||||
1252,642
|
||||
827,826
|
||||
874,262
|
||||
244,406
|
||||
572,579
|
||||
338,53
|
||||
58,642
|
||||
1307,56
|
||||
771,84
|
||||
465,501
|
||||
1151,675
|
||||
1151,735
|
||||
981,752
|
||||
1222,714
|
||||
218,845
|
||||
1088,707
|
||||
249,775
|
||||
54,341
|
||||
423,246
|
||||
1161,246
|
||||
1181,508
|
||||
644,116
|
||||
58,114
|
||||
160,128
|
||||
843,667
|
||||
872,831
|
||||
202,477
|
||||
909,397
|
||||
1292,522
|
||||
33,371
|
||||
669,200
|
||||
1265,409
|
||||
529,672
|
||||
395,337
|
||||
512,282
|
||||
331,786
|
||||
1048,581
|
||||
1161,453
|
||||
261,64
|
||||
587,333
|
||||
443,654
|
||||
703,177
|
||||
1156,645
|
||||
1289,100
|
||||
692,434
|
||||
141,565
|
||||
517,282
|
||||
436,840
|
||||
679,648
|
||||
825,372
|
||||
174,75
|
||||
249,352
|
||||
438,7
|
||||
3,670
|
||||
169,522
|
||||
331,108
|
||||
766,231
|
||||
1014,585
|
||||
1133,453
|
||||
965,40
|
||||
887,246
|
||||
1289,292
|
||||
716,835
|
||||
421,619
|
||||
1263,772
|
||||
226,794
|
||||
500,649
|
||||
962,609
|
||||
1079,66
|
||||
731,255
|
||||
1156,494
|
||||
677,100
|
||||
175,700
|
||||
423,648
|
||||
10,115
|
||||
1014,887
|
||||
577,343
|
||||
218,859
|
||||
60,59
|
||||
760,114
|
||||
93,364
|
||||
607,177
|
||||
224,241
|
||||
800,746
|
||||
1126,218
|
||||
617,670
|
||||
1210,100
|
||||
358,119
|
||||
159,159
|
||||
932,247
|
||||
1201,290
|
||||
115,834
|
||||
10,779
|
||||
1274,12
|
||||
1250,506
|
||||
259,285
|
||||
428,436
|
||||
565,497
|
||||
333,708
|
||||
979,672
|
||||
587,66
|
||||
1221,815
|
||||
289,448
|
||||
1290,733
|
||||
130,772
|
||||
503,835
|
||||
1300,331
|
||||
792,56
|
||||
604,455
|
||||
259,330
|
||||
749,723
|
||||
191,761
|
||||
1094,511
|
||||
189,185
|
||||
1043,154
|
||||
474,469
|
||||
793,612
|
||||
246,298
|
||||
383,569
|
||||
276,199
|
||||
537,37
|
||||
467,227
|
||||
795,219
|
||||
1273,180
|
||||
1091,793
|
||||
907,479
|
||||
1280,775
|
||||
917,830
|
||||
495,431
|
||||
868,184
|
||||
1235,450
|
||||
1309,142
|
||||
157,820
|
||||
402,322
|
||||
3,137
|
||||
470,429
|
||||
167,780
|
||||
1195,882
|
||||
1069,250
|
||||
775,782
|
||||
1256,616
|
||||
428,100
|
||||
333,71
|
||||
663,845
|
||||
797,100
|
||||
604,838
|
||||
390,381
|
||||
738,579
|
||||
174,584
|
||||
88,42
|
||||
768,23
|
||||
1222,266
|
||||
1169,789
|
||||
887,648
|
||||
681,196
|
||||
325,388
|
||||
238,378
|
||||
316,106
|
||||
43,693
|
||||
551,154
|
||||
984,63
|
||||
1260,617
|
||||
430,138
|
||||
671,820
|
||||
918,357
|
||||
1094,383
|
||||
1069,756
|
||||
75,639
|
||||
599,246
|
||||
856,476
|
||||
117,81
|
||||
546,75
|
||||
1292,346
|
||||
1059,220
|
||||
8,400
|
||||
1225,644
|
||||
279,93
|
||||
979,338
|
||||
626,719
|
||||
1203,623
|
||||
594,220
|
||||
1248,848
|
||||
325,864
|
||||
995,163
|
||||
874,840
|
||||
1049,88
|
||||
954,175
|
||||
282,217
|
||||
132,51
|
||||
269,358
|
||||
1180,72
|
||||
10,563
|
||||
821,254
|
||||
872,511
|
||||
137,282
|
||||
820,717
|
||||
296,134
|
||||
1078,457
|
||||
634,733
|
||||
21,546
|
||||
1121,424
|
||||
26,614
|
||||
599,648
|
||||
1133,441
|
||||
110,131
|
||||
604,199
|
||||
1094,215
|
||||
565,602
|
||||
490,717
|
||||
748,198
|
||||
132,843
|
||||
279,528
|
||||
874,54
|
||||
257,17
|
||||
254,597
|
||||
666,312
|
||||
552,418
|
||||
518,56
|
||||
1223,351
|
||||
273,532
|
||||
1302,400
|
||||
858,865
|
||||
1001,854
|
||||
483,826
|
||||
82,717
|
||||
1181,221
|
||||
792,35
|
||||
592,446
|
||||
1130,469
|
||||
741,308
|
||||
649,260
|
||||
552,308
|
||||
100,100
|
||||
706,838
|
||||
211,464
|
||||
1051,816
|
||||
60,58
|
||||
234,198
|
||||
880,756
|
||||
927,325
|
||||
115,434
|
||||
487,791
|
||||
971,507
|
||||
1136,584
|
||||
736,746
|
||||
341,109
|
||||
845,424
|
||||
1069,519
|
||||
985,416
|
||||
599,394
|
||||
845,173
|
||||
708,406
|
||||
915,330
|
||||
1151,159
|
||||
393,382
|
||||
1052,826
|
||||
279,308
|
||||
633,348
|
||||
1042,28
|
||||
952,619
|
||||
36,882
|
||||
306,218
|
||||
565,815
|
||||
308,179
|
||||
1235,703
|
||||
241,519
|
||||
624,887
|
||||
306,161
|
||||
1248,46
|
||||
907,220
|
||||
47,810
|
||||
917,64
|
||||
895,556
|
||||
489,254
|
||||
132,275
|
||||
530,641
|
||||
887,340
|
||||
1149,192
|
||||
100,222
|
||||
656,635
|
||||
515,443
|
||||
47,177
|
||||
216,831
|
||||
910,597
|
||||
594,28
|
||||
1004,161
|
||||
691,128
|
||||
555,567
|
||||
815,667
|
||||
947,570
|
||||
50,166
|
||||
703,625
|
||||
882,100
|
||||
1066,406
|
||||
629,196
|
||||
1307,222
|
||||
542,23
|
||||
1284,614
|
||||
681,532
|
||||
744,516
|
||||
1178,582
|
||||
729,721
|
||||
979,891
|
||||
987,168
|
||||
1123,3
|
||||
438,35
|
||||
1143,562
|
||||
1136,620
|
||||
518,635
|
||||
867,878
|
||||
1056,326
|
||||
1222,42
|
||||
1223,543
|
||||
684,719
|
||||
301,644
|
||||
1141,522
|
||||
975,87
|
||||
288,564
|
||||
231,66
|
||||
517,43
|
||||
1146,152
|
||||
1034,393
|
||||
117,37
|
||||
585,250
|
||||
218,840
|
||||
751,609
|
||||
706,473
|
||||
686,327
|
||||
99,637
|
||||
1310,738
|
||||
361,660
|
||||
853,834
|
||||
1146,287
|
||||
1031,756
|
||||
189,173
|
||||
760,259
|
||||
470,836
|
||||
495,735
|
||||
995,387
|
||||
53,7
|
||||
897,644
|
||||
1169,565
|
||||
915,609
|
||||
241,71
|
||||
922,243
|
||||
3,56
|
||||
644,115
|
||||
756,212
|
||||
841,117
|
||||
1071,108
|
||||
927,121
|
||||
758,418
|
||||
1061,119
|
||||
577,256
|
||||
607,756
|
||||
913,877
|
||||
413,263
|
||||
1284,240
|
||||
440,507
|
||||
378,647
|
||||
331,215
|
||||
743,338
|
||||
132,619
|
||||
887,514
|
||||
18,148
|
||||
353,810
|
||||
805,246
|
||||
1077,619
|
||||
1284,707
|
||||
773,81
|
||||
279,756
|
||||
1051,778
|
||||
1086,620
|
||||
36,12
|
||||
452,865
|
||||
512,612
|
||||
87,351
|
||||
865,633
|
||||
761,568
|
||||
600,553
|
||||
1161,694
|
||||
433,886
|
||||
810,693
|
||||
1072,516
|
||||
971,731
|
||||
915,816
|
||||
82,635
|
||||
1158,143
|
||||
438,63
|
||||
1235,655
|
||||
1300,470
|
||||
1228,574
|
||||
390,894
|
||||
331,891
|
||||
1051,557
|
||||
1126,465
|
||||
136,56
|
||||
677,5
|
||||
62,46
|
||||
189,823
|
||||
189,424
|
||||
502,303
|
||||
216,859
|
||||
1014,134
|
||||
607,737
|
||||
69,17
|
||||
915,557
|
||||
107,719
|
||||
1171,675
|
||||
569,308
|
||||
304,707
|
||||
539,834
|
||||
510,298
|
||||
405,352
|
||||
1125,826
|
||||
544,231
|
||||
1019,772
|
||||
574,381
|
||||
88,714
|
||||
1169,548
|
||||
830,283
|
||||
231,609
|
||||
249,750
|
||||
874,397
|
||||
601,362
|
||||
599,500
|
||||
154,245
|
||||
|
||||
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
|
9
2021/day13/day13_rs/Cargo.toml
Normal file
9
2021/day13/day13_rs/Cargo.toml
Normal file
|
@ -0,0 +1,9 @@
|
|||
[package]
|
||||
name = "day13_rs"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
nom = "7.1.0"
|
83
2021/day13/day13_rs/src/main.rs
Normal file
83
2021/day13/day13_rs/src/main.rs
Normal file
|
@ -0,0 +1,83 @@
|
|||
#![warn(clippy::pedantic)]
|
||||
use std::collections::HashSet;
|
||||
use std::io::{stdin, Read};
|
||||
|
||||
use nom::bytes::complete::tag;
|
||||
use nom::character::complete::{anychar, newline, u32};
|
||||
use nom::combinator::{map, map_opt};
|
||||
use nom::multi::many1;
|
||||
use nom::sequence::{preceded, separated_pair, terminated};
|
||||
|
||||
type Input<'a> = &'a str;
|
||||
type IResult<'a, T> = nom::IResult<Input<'a>, T>;
|
||||
|
||||
type Point = (usize, usize);
|
||||
|
||||
fn point(i: Input) -> IResult<Point> {
|
||||
separated_pair(map(u32, |i| i as usize), tag(","), map(u32, |i| i as usize))(i)
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
|
||||
enum Fold {
|
||||
X(usize),
|
||||
Y(usize),
|
||||
}
|
||||
|
||||
fn fold(i: Input) -> IResult<Fold> {
|
||||
map_opt(
|
||||
preceded(
|
||||
tag("fold along "),
|
||||
separated_pair(anychar, tag("="), map(u32, |i| i as usize)),
|
||||
),
|
||||
|(dimension, position)| match dimension {
|
||||
'x' => Some(Fold::X(position)),
|
||||
'y' => Some(Fold::Y(position)),
|
||||
_ => None,
|
||||
},
|
||||
)(i)
|
||||
}
|
||||
|
||||
fn input(i: Input) -> IResult<(Vec<Point>, Vec<Fold>)> {
|
||||
separated_pair(
|
||||
many1(terminated(point, newline)),
|
||||
newline,
|
||||
many1(terminated(fold, newline)),
|
||||
)(i)
|
||||
}
|
||||
|
||||
fn do_fold(points: impl Iterator<Item = Point>, fold: Fold) -> HashSet<Point> {
|
||||
let transform = |x, n| if x < n { x } else { n - (x - n) };
|
||||
points
|
||||
.map(|(x, y)| match fold {
|
||||
Fold::X(n) => (transform(x, n), y),
|
||||
Fold::Y(n) => (x, transform(y, n)),
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut data = String::new();
|
||||
stdin().lock().read_to_string(&mut data).unwrap();
|
||||
let (points, folds) = input(&data).unwrap().1;
|
||||
|
||||
let mut points: HashSet<_> = points.into_iter().collect();
|
||||
let mut folds = folds.into_iter();
|
||||
|
||||
points = do_fold(points.into_iter(), folds.next().unwrap());
|
||||
println!("{}", points.len());
|
||||
|
||||
for fold in folds {
|
||||
points = do_fold(points.into_iter(), fold);
|
||||
}
|
||||
|
||||
for row in 0..=points.iter().map(|&(_, y)| y).max().unwrap() {
|
||||
for col in 0..=points.iter().map(|&(x, _)| x).max().unwrap() {
|
||||
if points.contains(&(col, row)) {
|
||||
print!("#");
|
||||
} else {
|
||||
print!(".");
|
||||
}
|
||||
}
|
||||
println!();
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue