Solve 2021/day13
parent
145a1a1ba0
commit
f2821aac4c
@ -0,0 +1,7 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day13"
|
||||||
|
version = "0.1.0"
|
@ -0,0 +1,8 @@
|
|||||||
|
[package]
|
||||||
|
name = "day13"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
@ -0,0 +1,169 @@
|
|||||||
|
https://adventofcode.com/2021/day/13
|
||||||
|
|
||||||
|
## \--- Day 13: Transparent Origami ---
|
||||||
|
|
||||||
|
You reach another volcanically active part of the cave. It would be nice if
|
||||||
|
you could do some kind of thermal imaging so you could tell ahead of time
|
||||||
|
which caves are too hot to safely enter.
|
||||||
|
|
||||||
|
Fortunately, the submarine seems to be equipped with a thermal camera! When
|
||||||
|
you activate it, you are greeted with:
|
||||||
|
|
||||||
|
[code]
|
||||||
|
|
||||||
|
Congratulations on your purchase! To activate this infrared thermal imaging
|
||||||
|
camera system, please enter the code found on page 1 of the manual.
|
||||||
|
|
||||||
|
[/code]
|
||||||
|
|
||||||
|
Apparently, the Elves have never used this feature. To your surprise, you
|
||||||
|
manage to find the manual; as you go to open it, page 1 falls out. It's a
|
||||||
|
large sheet of [transparent
|
||||||
|
paper](https://en.wikipedia.org/wiki/Transparency_\(projection\))! The
|
||||||
|
transparent paper is marked with random dots and includes instructions on how
|
||||||
|
to fold it up (your puzzle input). For example:
|
||||||
|
|
||||||
|
[code]
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
[/code]
|
||||||
|
|
||||||
|
The first section is a list of dots on the transparent paper. `0,0` represents
|
||||||
|
the top-left coordinate. The first value, `x`, increases to the right. The
|
||||||
|
second value, `y`, increases downward. So, the coordinate `3,0` is to the
|
||||||
|
right of `0,0`, and the coordinate `0,7` is below `0,0`. The coordinates in
|
||||||
|
this example form the following pattern, where `#` is a dot on the paper and
|
||||||
|
`.` is an empty, unmarked position:
|
||||||
|
|
||||||
|
[code]
|
||||||
|
|
||||||
|
...#..#..#.
|
||||||
|
....#......
|
||||||
|
...........
|
||||||
|
#..........
|
||||||
|
...#....#.#
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
.#....#.##.
|
||||||
|
....#......
|
||||||
|
......#...#
|
||||||
|
#..........
|
||||||
|
#.#........
|
||||||
|
|
||||||
|
[/code]
|
||||||
|
|
||||||
|
Then, there is a list of _fold instructions_. Each instruction indicates a
|
||||||
|
line on the transparent paper and wants you to fold the paper _up_ (for
|
||||||
|
horizontal `y=...` lines) or _left_ (for vertical `x=...` lines). In this
|
||||||
|
example, the first fold instruction is `fold along y=7`, which designates the
|
||||||
|
line formed by all of the positions where `y` is `7` (marked here with `-`):
|
||||||
|
|
||||||
|
[code]
|
||||||
|
|
||||||
|
...#..#..#.
|
||||||
|
....#......
|
||||||
|
...........
|
||||||
|
#..........
|
||||||
|
...#....#.#
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
-----------
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
.#....#.##.
|
||||||
|
....#......
|
||||||
|
......#...#
|
||||||
|
#..........
|
||||||
|
#.#........
|
||||||
|
|
||||||
|
[/code]
|
||||||
|
|
||||||
|
Because this is a horizontal line, fold the bottom half _up_. Some of the dots
|
||||||
|
might end up overlapping after the fold is complete, but dots will never
|
||||||
|
appear exactly on a fold line. The result of doing this fold looks like this:
|
||||||
|
|
||||||
|
[code]
|
||||||
|
|
||||||
|
#.##..#..#.
|
||||||
|
#...#......
|
||||||
|
......#...#
|
||||||
|
#...#......
|
||||||
|
.#.#..#.###
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
|
||||||
|
[/code]
|
||||||
|
|
||||||
|
Now, only `17` dots are visible.
|
||||||
|
|
||||||
|
Notice, for example, the two dots in the bottom left corner before the
|
||||||
|
transparent paper is folded; after the fold is complete, those dots appear in
|
||||||
|
the top left corner (at `0,0` and `0,1`). Because the paper is transparent,
|
||||||
|
the dot just below them in the result (at `0,3`) remains visible, as it can be
|
||||||
|
seen through the transparent paper.
|
||||||
|
|
||||||
|
Also notice that some dots can end up _overlapping_ ; in this case, the dots
|
||||||
|
merge together and become a single dot.
|
||||||
|
|
||||||
|
The second fold instruction is `fold along x=5`, which indicates this line:
|
||||||
|
|
||||||
|
[code]
|
||||||
|
|
||||||
|
#.##.|#..#.
|
||||||
|
#...#|.....
|
||||||
|
.....|#...#
|
||||||
|
#...#|.....
|
||||||
|
.#.#.|#.###
|
||||||
|
.....|.....
|
||||||
|
.....|.....
|
||||||
|
|
||||||
|
[/code]
|
||||||
|
|
||||||
|
Because this is a vertical line, fold _left_ :
|
||||||
|
|
||||||
|
[code]
|
||||||
|
|
||||||
|
#####
|
||||||
|
#...#
|
||||||
|
#...#
|
||||||
|
#...#
|
||||||
|
#####
|
||||||
|
.....
|
||||||
|
.....
|
||||||
|
|
||||||
|
[/code]
|
||||||
|
|
||||||
|
The instructions made a square!
|
||||||
|
|
||||||
|
The transparent paper is pretty big, so for now, focus on just completing the
|
||||||
|
first fold. After the first fold in the example above, `_17_` dots are visible
|
||||||
|
- dots that end up overlapping after the fold is completed count as a single
|
||||||
|
dot.
|
||||||
|
|
||||||
|
_How many dots are visible after completing just the first fold instruction on
|
||||||
|
your transparent paper?_
|
||||||
|
|
@ -0,0 +1,2 @@
|
|||||||
|
Congratulations on your purchase! To activate this infrared thermal imaging
|
||||||
|
camera system, please enter the code found on page 1 of the manual.
|
@ -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,15 @@
|
|||||||
|
...#..#..#.
|
||||||
|
....#......
|
||||||
|
...........
|
||||||
|
#..........
|
||||||
|
...#....#.#
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
.#....#.##.
|
||||||
|
....#......
|
||||||
|
......#...#
|
||||||
|
#..........
|
||||||
|
#.#........
|
@ -0,0 +1,15 @@
|
|||||||
|
...#..#..#.
|
||||||
|
....#......
|
||||||
|
...........
|
||||||
|
#..........
|
||||||
|
...#....#.#
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
-----------
|
||||||
|
...........
|
||||||
|
...........
|
||||||
|
.#....#.##.
|
||||||
|
....#......
|
||||||
|
......#...#
|
||||||
|
#..........
|
||||||
|
#.#........
|
@ -0,0 +1,7 @@
|
|||||||
|
#.##..#..#.
|
||||||
|
#...#......
|
||||||
|
......#...#
|
||||||
|
#...#......
|
||||||
|
.#.#..#.###
|
||||||
|
...........
|
||||||
|
...........
|
@ -0,0 +1,7 @@
|
|||||||
|
#.##.|#..#.
|
||||||
|
#...#|.....
|
||||||
|
.....|#...#
|
||||||
|
#...#|.....
|
||||||
|
.#.#.|#.###
|
||||||
|
.....|.....
|
||||||
|
.....|.....
|
@ -0,0 +1,7 @@
|
|||||||
|
#####
|
||||||
|
#...#
|
||||||
|
#...#
|
||||||
|
#...#
|
||||||
|
#####
|
||||||
|
.....
|
||||||
|
.....
|
@ -0,0 +1,812 @@
|
|||||||
|
726,774
|
||||||
|
246,695
|
||||||
|
579,249
|
||||||
|
691,724
|
||||||
|
246,820
|
||||||
|
738,887
|
||||||
|
1088,75
|
||||||
|
264,887
|
||||||
|
704,775
|
||||||
|
907,625
|
||||||
|
676,117
|
||||||
|
507,658
|
||||||
|
1009,24
|
||||||
|
547,735
|
||||||
|
157,126
|
||||||
|
599,113
|
||||||
|
445,226
|
||||||
|
363,691
|
||||||
|
918,794
|
||||||
|
927,113
|
||||||
|
999,400
|
||||||
|
443,305
|
||||||
|
654,729
|
||||||
|
408,767
|
||||||
|
1066,863
|
||||||
|
1148,473
|
||||||
|
321,35
|
||||||
|
1093,803
|
||||||
|
1044,718
|
||||||
|
202,889
|
||||||
|
262,164
|
||||||
|
378,541
|
||||||
|
619,662
|
||||||
|
1034,849
|
||||||
|
432,595
|
||||||
|
1145,656
|
||||||
|
1295,668
|
||||||
|
1125,705
|
||||||
|
1161,529
|
||||||
|
759,619
|
||||||
|
1170,147
|
||||||
|
688,742
|
||||||
|
328,729
|
||||||
|
718,439
|
||||||
|
935,701
|
||||||
|
246,647
|
||||||
|
594,110
|
||||||
|
845,495
|
||||||
|
160,189
|
||||||
|
1225,315
|
||||||
|
580,486
|
||||||
|
469,481
|
||||||
|
440,401
|
||||||
|
584,774
|
||||||
|
897,719
|
||||||
|
1007,516
|
||||||
|
547,159
|
||||||
|
112,117
|
||||||
|
982,645
|
||||||
|
62,439
|
||||||
|
192,441
|
||||||
|
631,211
|
||||||
|
654,16
|
||||||
|
113,698
|
||||||
|
378,865
|
||||||
|
373,19
|
||||||
|
441,777
|
||||||
|
390,7
|
||||||
|
1263,312
|
||||||
|
1121,610
|
||||||
|
509,582
|
||||||
|
893,352
|
||||||
|
44,131
|
||||||
|
1092,19
|
||||||
|
592,719
|
||||||
|
918,100
|
||||||
|
326,820
|
||||||
|
62,719
|
||||||
|
520,889
|
||||||
|
718,103
|
||||||
|
571,579
|
||||||
|
1165,267
|
||||||
|
1208,334
|
||||||
|
525,415
|
||||||
|
268,588
|
||||||
|
769,464
|
||||||
|
596,716
|
||||||
|
734,436
|
||||||
|
1283,747
|
||||||
|
35,457
|
||||||
|
982,94
|
||||||
|
1235,849
|
||||||
|
932,752
|
||||||
|
1265,243
|
||||||
|
262,752
|
||||||
|
99,704
|
||||||
|
547,732
|
||||||
|
1096,829
|
||||||
|
791,329
|
||||||
|
1222,320
|
||||||
|
199,568
|
||||||
|
671,494
|
||||||
|
1079,93
|
||||||
|
569,315
|
||||||
|
129,415
|
||||||
|
868,878
|
||||||
|
788,803
|
||||||
|
1175,889
|
||||||
|
965,676
|
||||||
|
904,660
|
||||||
|
552,560
|
||||||
|
619,484
|
||||||
|
507,236
|
||||||
|
566,768
|
||||||
|
1215,30
|
||||||
|
45,410
|
||||||
|
885,441
|
||||||
|
478,336
|
||||||
|
945,397
|
||||||
|
596,306
|
||||||
|
1145,686
|
||||||
|
189,495
|
||||||
|
1153,126
|
||||||
|
79,444
|
||||||
|
719,403
|
||||||
|
903,91
|
||||||
|
27,105
|
||||||
|
441,329
|
||||||
|
768,565
|
||||||
|
671,400
|
||||||
|
507,205
|
||||||
|
224,390
|
||||||
|
867,753
|
||||||
|
425,441
|
||||||
|
1123,67
|
||||||
|
833,14
|
||||||
|
793,278
|
||||||
|
1237,724
|
||||||
|
238,808
|
||||||
|
1099,32
|
||||||
|
411,243
|
||||||
|
1,574
|
||||||
|
726,120
|
||||||
|
862,441
|
||||||
|
212,94
|
||||||
|
80,199
|
||||||
|
1047,312
|
||||||
|
164,389
|
||||||
|
440,773
|
||||||
|
185,189
|
||||||
|
412,114
|
||||||
|
537,792
|
||||||
|
403,697
|
||||||
|
1208,768
|
||||||
|
408,527
|
||||||
|
1135,831
|
||||||
|
746,826
|
||||||
|
1064,110
|
||||||
|
15,226
|
||||||
|
102,574
|
||||||
|
1001,442
|
||||||
|
769,16
|
||||||
|
1236,408
|
||||||
|
440,121
|
||||||
|
1309,131
|
||||||
|
771,473
|
||||||
|
1064,527
|
||||||
|
189,284
|
||||||
|
427,704
|
||||||
|
276,865
|
||||||
|
986,593
|
||||||
|
1009,870
|
||||||
|
745,276
|
||||||
|
965,291
|
||||||
|
1190,5
|
||||||
|
1084,768
|
||||||
|
313,750
|
||||||
|
976,544
|
||||||
|
1222,658
|
||||||
|
223,619
|
||||||
|
718,791
|
||||||
|
976,574
|
||||||
|
705,822
|
||||||
|
785,863
|
||||||
|
388,390
|
||||||
|
1235,716
|
||||||
|
579,645
|
||||||
|
90,378
|
||||||
|
497,849
|
||||||
|
1308,145
|
||||||
|
658,301
|
||||||
|
648,94
|
||||||
|
1150,189
|
||||||
|
231,129
|
||||||
|
408,639
|
||||||
|
390,119
|
||||||
|
132,556
|
||||||
|
639,220
|
||||||
|
885,453
|
||||||
|
413,651
|
||||||
|
639,68
|
||||||
|
177,544
|
||||||
|
552,782
|
||||||
|
239,130
|
||||||
|
867,645
|
||||||
|
187,67
|
||||||
|
1163,494
|
||||||
|
1227,19
|
||||||
|
249,658
|
||||||
|
132,270
|
||||||
|
740,82
|
||||||
|
73,206
|
||||||
|
1166,525
|
||||||
|
262,506
|
||||||
|
1092,875
|
||||||
|
923,509
|
||||||
|
967,400
|
||||||
|
813,849
|
||||||
|
734,364
|
||||||
|
604,541
|
||||||
|
566,758
|
||||||
|
90,852
|
||||||
|
190,831
|
||||||
|
1047,65
|
||||||
|
313,144
|
||||||
|
542,157
|
||||||
|
720,304
|
||||||
|
129,863
|
||||||
|
1280,149
|
||||||
|
448,441
|
||||||
|
947,484
|
||||||
|
1048,506
|
||||||
|
408,863
|
||||||
|
657,803
|
||||||
|
480,834
|
||||||
|
201,369
|
||||||
|
489,208
|
||||||
|
1275,36
|
||||||
|
1064,784
|
||||||
|
781,845
|
||||||
|
1071,152
|
||||||
|
1251,61
|
||||||
|
455,500
|
||||||
|
564,68
|
||||||
|
758,798
|
||||||
|
922,390
|
||||||
|
443,421
|
||||||
|
505,792
|
||||||
|
60,784
|
||||||
|
1059,645
|
||||||
|
741,315
|
||||||
|
89,164
|
||||||
|
142,637
|
||||||
|
348,705
|
||||||
|
763,735
|
||||||
|
165,686
|
||||||
|
711,781
|
||||||
|
1220,852
|
||||||
|
455,120
|
||||||
|
1205,859
|
||||||
|
1208,413
|
||||||
|
1098,240
|
||||||
|
33,505
|
||||||
|
821,208
|
||||||
|
35,289
|
||||||
|
1251,833
|
||||||
|
1131,226
|
||||||
|
745,730
|
||||||
|
75,625
|
||||||
|
905,75
|
||||||
|
738,7
|
||||||
|
1223,316
|
||||||
|
923,395
|
||||||
|
7,884
|
||||||
|
1153,299
|
||||||
|
552,96
|
||||||
|
1047,134
|
||||||
|
642,266
|
||||||
|
537,698
|
||||||
|
1211,190
|
||||||
|
959,235
|
||||||
|
1235,625
|
||||||
|
711,614
|
||||||
|
510,798
|
||||||
|
73,306
|
||||||
|
47,582
|
||||||
|
657,875
|
||||||
|
468,75
|
||||||
|
638,346
|
||||||
|
144,525
|
||||||
|
612,665
|
||||||
|
917,57
|
||||||
|
1235,402
|
||||||
|
211,249
|
||||||
|
831,63
|
||||||
|
1197,250
|
||||||
|
493,686
|
||||||
|
887,801
|
||||||
|
85,315
|
||||||
|
263,65
|
||||||
|
924,306
|
||||||
|
140,595
|
||||||
|
997,141
|
||||||
|
657,173
|
||||||
|
579,850
|
||||||
|
489,686
|
||||||
|
448,5
|
||||||
|
572,7
|
||||||
|
1248,103
|
||||||
|
445,674
|
||||||
|
711,113
|
||||||
|
1232,884
|
||||||
|
1121,278
|
||||||
|
845,732
|
||||||
|
786,630
|
||||||
|
114,712
|
||||||
|
691,662
|
||||||
|
140,147
|
||||||
|
1088,299
|
||||||
|
408,191
|
||||||
|
897,691
|
||||||
|
92,662
|
||||||
|
904,754
|
||||||
|
1309,621
|
||||||
|
102,768
|
||||||
|
7,10
|
||||||
|
33,429
|
||||||
|
903,803
|
||||||
|
2,749
|
||||||
|
1083,704
|
||||||
|
157,819
|
||||||
|
325,91
|
||||||
|
830,386
|
||||||
|
763,284
|
||||||
|
175,63
|
||||||
|
902,199
|
||||||
|
887,129
|
||||||
|
1285,297
|
||||||
|
1287,683
|
||||||
|
590,304
|
||||||
|
714,716
|
||||||
|
6,686
|
||||||
|
1136,834
|
||||||
|
452,889
|
||||||
|
653,315
|
||||||
|
135,145
|
||||||
|
683,329
|
||||||
|
251,473
|
||||||
|
1110,455
|
||||||
|
959,516
|
||||||
|
1091,838
|
||||||
|
407,220
|
||||||
|
654,800
|
||||||
|
549,239
|
||||||
|
765,355
|
||||||
|
113,250
|
||||||
|
771,93
|
||||||
|
194,270
|
||||||
|
864,803
|
||||||
|
517,417
|
||||||
|
345,291
|
||||||
|
253,724
|
||||||
|
365,145
|
||||||
|
522,624
|
||||||
|
692,495
|
||||||
|
830,834
|
||||||
|
1021,301
|
||||||
|
825,595
|
||||||
|
145,890
|
||||||
|
1125,481
|
||||||
|
48,119
|
||||||
|
82,7
|
||||||
|
965,666
|
||||||
|
540,630
|
||||||
|
542,121
|
||||||
|
731,290
|
||||||
|
85,763
|
||||||
|
957,297
|
||||||
|
1277,617
|
||||||
|
1089,239
|
||||||
|
619,612
|
||||||
|
62,175
|
||||||
|
427,190
|
||||||
|
401,724
|
||||||
|
1133,798
|
||||||
|
475,882
|
||||||
|
1062,140
|
||||||
|
246,784
|
||||||
|
1001,515
|
||||||
|
244,31
|
||||||
|
759,171
|
||||||
|
1246,282
|
||||||
|
249,236
|
||||||
|
919,816
|
||||||
|
907,25
|
||||||
|
755,403
|
||||||
|
557,725
|
||||||
|
15,332
|
||||||
|
840,861
|
||||||
|
1031,760
|
||||||
|
965,218
|
||||||
|
813,45
|
||||||
|
440,829
|
||||||
|
885,457
|
||||||
|
45,243
|
||||||
|
351,435
|
||||||
|
191,565
|
||||||
|
984,820
|
||||||
|
715,275
|
||||||
|
689,641
|
||||||
|
289,845
|
||||||
|
575,892
|
||||||
|
605,822
|
||||||
|
1136,508
|
||||||
|
137,278
|
||||||
|
870,513
|
||||||
|
59,621
|
||||||
|
79,539
|
||||||
|
89,276
|
||||||
|
1,621
|
||||||
|
753,725
|
||||||
|
1119,301
|
||||||
|
1,763
|
||||||
|
1159,539
|
||||||
|
1059,25
|
||||||
|
267,843
|
||||||
|
1072,236
|
||||||
|
1203,607
|
||||||
|
425,453
|
||||||
|
62,551
|
||||||
|
788,624
|
||||||
|
576,884
|
||||||
|
326,430
|
||||||
|
345,452
|
||||||
|
539,473
|
||||||
|
1195,337
|
||||||
|
981,432
|
||||||
|
23,683
|
||||||
|
455,394
|
||||||
|
1098,654
|
||||||
|
1118,441
|
||||||
|
1277,429
|
||||||
|
567,625
|
||||||
|
773,698
|
||||||
|
23,459
|
||||||
|
441,464
|
||||||
|
870,488
|
||||||
|
567,269
|
||||||
|
517,399
|
||||||
|
935,302
|
||||||
|
436,875
|
||||||
|
309,442
|
||||||
|
900,191
|
||||||
|
1277,277
|
||||||
|
1310,165
|
||||||
|
383,781
|
||||||
|
149,792
|
||||||
|
492,578
|
||||||
|
88,658
|
||||||
|
736,500
|
||||||
|
103,275
|
||||||
|
731,44
|
||||||
|
720,794
|
||||||
|
1278,600
|
||||||
|
981,462
|
||||||
|
1020,623
|
||||||
|
329,462
|
||||||
|
333,483
|
||||||
|
977,880
|
||||||
|
1181,863
|
||||||
|
509,890
|
||||||
|
846,831
|
||||||
|
246,527
|
||||||
|
570,754
|
||||||
|
841,481
|
||||||
|
78,884
|
||||||
|
1231,355
|
||||||
|
618,47
|
||||||
|
413,719
|
||||||
|
850,786
|
||||||
|
174,386
|
||||||
|
364,175
|
||||||
|
1193,196
|
||||||
|
162,421
|
||||||
|
221,239
|
||||||
|
373,875
|
||||||
|
718,7
|
||||||
|
1231,539
|
||||||
|
1218,662
|
||||||
|
333,868
|
||||||
|
885,9
|
||||||
|
30,149
|
||||||
|
1299,511
|
||||||
|
227,190
|
||||||
|
1197,698
|
||||||
|
1150,705
|
||||||
|
657,238
|
||||||
|
783,717
|
||||||
|
1159,383
|
||||||
|
212,688
|
||||||
|
241,719
|
||||||
|
618,495
|
||||||
|
1232,458
|
||||||
|
985,432
|
||||||
|
27,75
|
||||||
|
918,506
|
||||||
|
328,800
|
||||||
|
145,582
|
||||||
|
387,395
|
||||||
|
90,516
|
||||||
|
1019,773
|
||||||
|
334,574
|
||||||
|
1285,149
|
||||||
|
716,558
|
||||||
|
413,236
|
||||||
|
353,477
|
||||||
|
607,193
|
||||||
|
845,844
|
||||||
|
874,875
|
||||||
|
1099,648
|
||||||
|
264,63
|
||||||
|
99,491
|
||||||
|
263,312
|
||||||
|
303,67
|
||||||
|
463,565
|
||||||
|
433,239
|
||||||
|
902,527
|
||||||
|
132,355
|
||||||
|
1300,550
|
||||||
|
606,119
|
||||||
|
291,849
|
||||||
|
25,86
|
||||||
|
301,865
|
||||||
|
1046,831
|
||||||
|
805,102
|
||||||
|
408,598
|
||||||
|
1101,693
|
||||||
|
1215,864
|
||||||
|
947,691
|
||||||
|
64,730
|
||||||
|
1237,170
|
||||||
|
970,628
|
||||||
|
1136,60
|
||||||
|
947,730
|
||||||
|
334,544
|
||||||
|
1149,686
|
||||||
|
1009,198
|
||||||
|
691,282
|
||||||
|
691,457
|
||||||
|
378,142
|
||||||
|
599,614
|
||||||
|
648,320
|
||||||
|
507,400
|
||||||
|
1178,803
|
||||||
|
478,558
|
||||||
|
267,51
|
||||||
|
279,701
|
||||||
|
965,452
|
||||||
|
691,232
|
||||||
|
401,170
|
||||||
|
219,838
|
||||||
|
1292,413
|
||||||
|
296,373
|
||||||
|
246,127
|
||||||
|
446,91
|
||||||
|
894,86
|
||||||
|
115,480
|
||||||
|
1287,155
|
||||||
|
433,655
|
||||||
|
263,134
|
||||||
|
87,630
|
||||||
|
965,403
|
||||||
|
107,623
|
||||||
|
189,610
|
||||||
|
330,749
|
||||||
|
1121,271
|
||||||
|
965,603
|
||||||
|
135,749
|
||||||
|
1059,473
|
||||||
|
328,165
|
||||||
|
27,147
|
||||||
|
443,134
|
||||||
|
1210,320
|
||||||
|
1211,470
|
||||||
|
415,824
|
||||||
|
835,882
|
||||||
|
405,819
|
||||||
|
957,870
|
||||||
|
493,721
|
||||||
|
1246,164
|
||||||
|
935,591
|
||||||
|
895,824
|
||||||
|
264,455
|
||||||
|
99,470
|
||||||
|
408,296
|
||||||
|
803,400
|
||||||
|
1084,126
|
||||||
|
1135,63
|
||||||
|
835,46
|
||||||
|
830,60
|
||||||
|
653,721
|
||||||
|
1104,453
|
||||||
|
525,863
|
||||||
|
102,334
|
||||||
|
1235,45
|
||||||
|
870,121
|
||||||
|
375,591
|
||||||
|
60,336
|
||||||
|
348,880
|
||||||
|
895,600
|
||||||
|
517,477
|
||||||
|
427,526
|
||||||
|
100,551
|
||||||
|
37,301
|
||||||
|
477,880
|
||||||
|
0,94
|
||||||
|
383,390
|
||||||
|
266,718
|
||||||
|
212,240
|
||||||
|
634,329
|
||||||
|
291,493
|
||||||
|
976,320
|
||||||
|
751,30
|
||||||
|
1119,593
|
||||||
|
443,753
|
||||||
|
1099,645
|
||||||
|
79,450
|
||||||
|
189,278
|
||||||
|
358,745
|
||||||
|
870,355
|
||||||
|
1064,820
|
||||||
|
353,597
|
||||||
|
770,630
|
||||||
|
157,75
|
||||||
|
22,371
|
||||||
|
214,493
|
||||||
|
465,726
|
||||||
|
1205,655
|
||||||
|
740,469
|
||||||
|
125,49
|
||||||
|
1019,849
|
||||||
|
735,556
|
||||||
|
1148,421
|
||||||
|
832,336
|
||||||
|
803,338
|
||||||
|
848,441
|
||||||
|
946,175
|
||||||
|
301,149
|
||||||
|
115,305
|
||||||
|
528,215
|
||||||
|
6,208
|
||||||
|
6,320
|
||||||
|
691,410
|
||||||
|
238,658
|
||||||
|
16,346
|
||||||
|
735,892
|
||||||
|
689,725
|
||||||
|
661,320
|
||||||
|
1136,386
|
||||||
|
1153,810
|
||||||
|
363,730
|
||||||
|
326,464
|
||||||
|
321,819
|
||||||
|
885,885
|
||||||
|
1048,388
|
||||||
|
425,9
|
||||||
|
127,809
|
||||||
|
656,16
|
||||||
|
599,280
|
||||||
|
74,408
|
||||||
|
387,509
|
||||||
|
73,724
|
||||||
|
293,877
|
||||||
|
557,687
|
||||||
|
656,878
|
||||||
|
1304,320
|
||||||
|
1034,865
|
||||||
|
704,119
|
||||||
|
126,663
|
||||||
|
141,656
|
||||||
|
914,859
|
||||||
|
1230,647
|
||||||
|
340,266
|
||||||
|
33,501
|
||||||
|
1262,352
|
||||||
|
505,344
|
||||||
|
1283,105
|
||||||
|
1198,289
|
||||||
|
855,500
|
||||||
|
574,871
|
||||||
|
540,598
|
||||||
|
465,844
|
||||||
|
1210,343
|
||||||
|
825,96
|
||||||
|
290,623
|
||||||
|
174,508
|
||||||
|
132,539
|
||||||
|
867,93
|
||||||
|
1101,201
|
||||||
|
392,142
|
||||||
|
472,126
|
||||||
|
552,320
|
||||||
|
631,739
|
||||||
|
867,473
|
||||||
|
763,758
|
||||||
|
467,67
|
||||||
|
251,269
|
||||||
|
1273,301
|
||||||
|
619,282
|
||||||
|
1148,130
|
||||||
|
801,4
|
||||||
|
566,136
|
||||||
|
1098,94
|
||||||
|
1274,47
|
||||||
|
333,411
|
||||||
|
401,82
|
||||||
|
48,352
|
||||||
|
1230,522
|
||||||
|
907,269
|
||||||
|
870,829
|
||||||
|
631,683
|
||||||
|
406,660
|
||||||
|
440,488
|
||||||
|
800,798
|
||||||
|
244,765
|
||||||
|
657,768
|
||||||
|
662,94
|
||||||
|
33,465
|
||||||
|
785,415
|
||||||
|
83,450
|
||||||
|
1159,355
|
||||||
|
653,686
|
||||||
|
392,730
|
||||||
|
417,352
|
||||||
|
691,829
|
||||||
|
902,598
|
||||||
|
947,282
|
||||||
|
242,469
|
||||||
|
135,301
|
||||||
|
174,834
|
||||||
|
816,189
|
||||||
|
914,894
|
||||||
|
671,562
|
||||||
|
460,786
|
||||||
|
1079,765
|
||||||
|
125,525
|
||||||
|
213,430
|
||||||
|
480,60
|
||||||
|
1086,390
|
||||||
|
1111,809
|
||||||
|
375,302
|
||||||
|
1227,390
|
||||||
|
1072,684
|
||||||
|
343,494
|
||||||
|
443,473
|
||||||
|
904,234
|
||||||
|
485,45
|
||||||
|
1285,86
|
||||||
|
977,299
|
||||||
|
758,782
|
||||||
|
242,425
|
||||||
|
460,718
|
||||||
|
37,593
|
||||||
|
730,486
|
||||||
|
559,877
|
||||||
|
505,102
|
||||||
|
401,812
|
||||||
|
231,254
|
||||||
|
403,269
|
||||||
|
493,238
|
||||||
|
1181,479
|
||||||
|
189,29
|
||||||
|
545,355
|
||||||
|
264,439
|
||||||
|
547,60
|
||||||
|
900,695
|
||||||
|
689,393
|
||||||
|
1079,254
|
||||||
|
408,199
|
||||||
|
846,383
|
||||||
|
1223,630
|
||||||
|
1121,284
|
||||||
|
345,666
|
||||||
|
441,117
|
||||||
|
237,800
|
||||||
|
191,525
|
||||||
|
1066,255
|
||||||
|
552,768
|
||||||
|
639,494
|
||||||
|
798,705
|
||||||
|
1004,189
|
||||||
|
1169,861
|
||||||
|
686,745
|
||||||
|
1121,29
|
||||||
|
554,126
|
||||||
|
1277,465
|
||||||
|
977,432
|
||||||
|
711,399
|
||||||
|
12,628
|
||||||
|
|
||||||
|
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,81 @@
|
|||||||
|
use std::collections::HashSet;
|
||||||
|
use std::io::stdin;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut buffer = String::new();
|
||||||
|
let stdin = stdin();
|
||||||
|
|
||||||
|
stdin.read_line(&mut buffer).ok();
|
||||||
|
|
||||||
|
let mut points: Vec<(i32, i32)> = Vec::new();
|
||||||
|
let mut instructions: Vec<(char, i32)> = Vec::new();
|
||||||
|
|
||||||
|
// parse points
|
||||||
|
while !buffer.is_empty() {
|
||||||
|
// parse
|
||||||
|
let mut numbers = buffer.trim().split(',').map(|s| s.parse().unwrap());
|
||||||
|
let x = numbers.next().unwrap();
|
||||||
|
let y = numbers.next().unwrap();
|
||||||
|
points.push((x, y));
|
||||||
|
|
||||||
|
// read next
|
||||||
|
buffer.clear();
|
||||||
|
stdin.read_line(&mut buffer).ok();
|
||||||
|
|
||||||
|
if buffer == "\n" {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stdin.read_line(&mut buffer).ok();
|
||||||
|
|
||||||
|
while !buffer.is_empty() {
|
||||||
|
let instruction = buffer.trim().split(' ').nth(2).unwrap();
|
||||||
|
let mut parts = instruction.split('=');
|
||||||
|
let axis = parts.next().unwrap().chars().next().unwrap();
|
||||||
|
let line = parts.next().unwrap().parse().unwrap();
|
||||||
|
instructions.push((axis, line));
|
||||||
|
buffer.clear();
|
||||||
|
stdin.read_line(&mut buffer).ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("Points: {:?}", points);
|
||||||
|
println!("Instructions: {:?}", instructions);
|
||||||
|
|
||||||
|
let part1 = apply_instructions(&points, &instructions[..1]);
|
||||||
|
let part2 = apply_instructions(&points, &instructions);
|
||||||
|
|
||||||
|
dbg!(part1.len());
|
||||||
|
|
||||||
|
let width = *part2.iter().map(|(x, _)| x).max().unwrap() + 1;
|
||||||
|
let height = *part2.iter().map(|(_, y)| y).max().unwrap() + 1;
|
||||||
|
|
||||||
|
for y in 0..height {
|
||||||
|
for x in 0..width {
|
||||||
|
if part2.contains(&(x, y)) {
|
||||||
|
print!("#");
|
||||||
|
} else {
|
||||||
|
print!(".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println!();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn apply_instructions(points: &[(i32, i32)], instructions: &[(char, i32)]) -> HashSet<(i32, i32)> {
|
||||||
|
let mut translated_points = HashSet::new();
|
||||||
|
|
||||||
|
for point in points {
|
||||||
|
let (mut x, mut y) = *point;
|
||||||
|
for (axis, line) in instructions {
|
||||||
|
if *axis == 'x' && x > *line {
|
||||||
|
x = 2 * line - x;
|
||||||
|
} else if *axis == 'y' && y > *line {
|
||||||
|
y = 2 * line - y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translated_points.insert((x, y));
|
||||||
|
}
|
||||||
|
|
||||||
|
translated_points
|
||||||
|
}
|
Loading…
Reference in New Issue