Compare commits
49 commits
8e030c9d88
...
98f700304a
Author | SHA1 | Date | |
---|---|---|---|
Bruno BELANYI | 98f700304a | ||
Bruno BELANYI | 33ac0a0ef7 | ||
Bruno BELANYI | 2653c113c6 | ||
Bruno BELANYI | e86edd3ac5 | ||
Bruno BELANYI | 6d6e912dbd | ||
Bruno BELANYI | 3e10ae4592 | ||
Bruno BELANYI | 7c71e71c9b | ||
Bruno BELANYI | 729f00ade8 | ||
Bruno BELANYI | 9d81eec57c | ||
Bruno BELANYI | 9d869389d3 | ||
Bruno BELANYI | bb829a7c63 | ||
Bruno BELANYI | bd9ac08665 | ||
Bruno BELANYI | 3cc7725710 | ||
Bruno BELANYI | de7a1e5845 | ||
Bruno BELANYI | c4e280470c | ||
Bruno BELANYI | 51a6918e58 | ||
Bruno BELANYI | b267f9ffaf | ||
Bruno BELANYI | 98f960ad29 | ||
Bruno BELANYI | e3655069e2 | ||
Bruno BELANYI | ad92d95fd4 | ||
Bruno BELANYI | 8080b1af90 | ||
Bruno BELANYI | 2d32ff35fc | ||
Bruno BELANYI | 1ef5ea9f5a | ||
Bruno BELANYI | 9482b211a7 | ||
Bruno BELANYI | 7baac920f0 | ||
Bruno BELANYI | 07dea5a686 | ||
Bruno BELANYI | 127c13e162 | ||
Bruno BELANYI | 2c8baf5722 | ||
Bruno BELANYI | d965e869f3 | ||
Bruno BELANYI | c9aabe6500 | ||
Bruno BELANYI | db366100bf | ||
Bruno BELANYI | 1ad6c51ca4 | ||
Bruno BELANYI | 9721b7d614 | ||
Bruno BELANYI | f3ece04967 | ||
Bruno BELANYI | 634d057fd7 | ||
Bruno BELANYI | 5c76967db8 | ||
Bruno BELANYI | 943db5516d | ||
Bruno BELANYI | 648faefa84 | ||
Bruno BELANYI | 6cfd253d9a | ||
Bruno BELANYI | 56cb23a39b | ||
Bruno BELANYI | 7d72fb6974 | ||
Bruno BELANYI | 3849629175 | ||
Bruno BELANYI | d4aec63da5 | ||
Bruno BELANYI | 4f3f276f52 | ||
Bruno BELANYI | dd83d8ca96 | ||
Bruno BELANYI | d647f2776f | ||
Bruno BELANYI | 1681d65a2a | ||
Bruno BELANYI | 8592509eba | ||
Bruno BELANYI | ac3bef16fc |
|
@ -18,7 +18,7 @@ def sliding_window(iterable, n):
|
|||
|
||||
def solve(input: List[int]) -> int:
|
||||
windowed = [sum(window) for window in sliding_window(input, 3)]
|
||||
return sum(prev < cur for (prev, cur) in itertools.pairwise(windowed))
|
||||
return sum(prev < cur for (prev, cur) in zip(windowed, windowed[1:]))
|
||||
|
||||
|
||||
def main() -> None:
|
||||
|
|
|
@ -9,8 +9,8 @@ def solve(input: List[str]) -> int:
|
|||
x, y = 0, 0
|
||||
|
||||
for instruction in input:
|
||||
dir, length = instruction.split(" ")
|
||||
length = int(length)
|
||||
dir, length_ = instruction.split(" ")
|
||||
length = int(length_)
|
||||
if dir == "forward":
|
||||
x += length
|
||||
elif dir == "down":
|
||||
|
|
|
@ -9,8 +9,8 @@ def solve(input: List[str]) -> int:
|
|||
x, y, aim = 0, 0, 0
|
||||
|
||||
for instruction in input:
|
||||
dir, length = instruction.split(" ")
|
||||
length = int(length)
|
||||
dir, length_ = instruction.split(" ")
|
||||
length = int(length_)
|
||||
if dir == "forward":
|
||||
x += length
|
||||
y += length * aim
|
||||
|
|
|
@ -3,12 +3,10 @@
|
|||
import itertools
|
||||
import sys
|
||||
from collections import Counter
|
||||
from dataclasses import dataclass
|
||||
from typing import Iterable, List, Tuple
|
||||
from typing import Iterable, List, Tuple, NamedTuple
|
||||
|
||||
|
||||
@dataclass
|
||||
class Point:
|
||||
class Point(NamedTuple):
|
||||
x: int
|
||||
y: int
|
||||
|
||||
|
@ -40,12 +38,12 @@ def solve(input: List[str]) -> int:
|
|||
|
||||
if p1.x == p2.x:
|
||||
for y in inclusive_range_any_order(p1.y, p2.y):
|
||||
yield (p1.x, y)
|
||||
yield Point(p1.x, y)
|
||||
return
|
||||
|
||||
if p1.y == p2.y:
|
||||
for x in inclusive_range_any_order(p1.x, p2.x):
|
||||
yield (x, p1.y)
|
||||
yield Point(x, p1.y)
|
||||
return
|
||||
|
||||
assert False # Sanity check
|
||||
|
|
|
@ -3,12 +3,10 @@
|
|||
import itertools
|
||||
import sys
|
||||
from collections import Counter
|
||||
from dataclasses import dataclass
|
||||
from typing import Iterable, List, Tuple
|
||||
from typing import Iterable, List, Tuple, NamedTuple
|
||||
|
||||
|
||||
@dataclass
|
||||
class Point:
|
||||
class Point(NamedTuple):
|
||||
x: int
|
||||
y: int
|
||||
|
||||
|
@ -43,7 +41,7 @@ def solve(input: List[str]) -> int:
|
|||
if p1.y == p2.y:
|
||||
ys = itertools.repeat(p1.y)
|
||||
|
||||
yield from zip(xs, ys)
|
||||
yield from map(Point._make, zip(xs, ys))
|
||||
|
||||
lines = list(map(parse_line, input))
|
||||
counts = Counter(itertools.chain.from_iterable(line_to_points(l) for l in lines))
|
||||
|
|
|
@ -4,10 +4,13 @@ import itertools
|
|||
import sys
|
||||
from collections import Counter
|
||||
from dataclasses import dataclass
|
||||
from typing import Iterator, List
|
||||
from typing import Iterator, List, TypeVar
|
||||
|
||||
|
||||
def nth(iterable: Iterator[int], n: int) -> int:
|
||||
T = TypeVar("T")
|
||||
|
||||
|
||||
def nth(iterable: Iterator[T], n: int) -> T:
|
||||
return next(itertools.islice(iterable, n, None))
|
||||
|
||||
|
||||
|
|
|
@ -4,10 +4,13 @@ import itertools
|
|||
import sys
|
||||
from collections import Counter
|
||||
from dataclasses import dataclass
|
||||
from typing import Iterator, List
|
||||
from typing import Iterator, List, TypeVar
|
||||
|
||||
|
||||
def nth(iterable: Iterator[int], n: int) -> int:
|
||||
T = TypeVar("T")
|
||||
|
||||
|
||||
def nth(iterable: Iterator[T], n: int) -> T:
|
||||
return next(itertools.islice(iterable, n, None))
|
||||
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ def solve(input: List[str]) -> int:
|
|||
[set(s) for s in signals.split()], [set(o) for o in outputs.split()]
|
||||
)
|
||||
|
||||
def deduce_signals(entry: Entry) -> Dict[int, str]:
|
||||
def deduce_signals(entry: Entry) -> Dict[int, Set[str]]:
|
||||
_1, _7, _4, *signals_to_deduce, _8 = sorted(entry.signals, key=len)
|
||||
signals = {
|
||||
1: _1,
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import itertools
|
||||
import sys
|
||||
from typing import List, Optional
|
||||
from typing import List, Optional, cast
|
||||
|
||||
|
||||
def solve(input: List[str]) -> int:
|
||||
|
@ -36,7 +36,7 @@ def solve(input: List[str]) -> int:
|
|||
}
|
||||
|
||||
return sum(
|
||||
score[line[find_illegal_char(line)]]
|
||||
score[line[cast(int, find_illegal_char(line))]]
|
||||
for line in input
|
||||
if find_illegal_char(line) is not None
|
||||
)
|
||||
|
|
|
@ -28,7 +28,7 @@ def solve(input: List[str]) -> int:
|
|||
|
||||
return None
|
||||
|
||||
def complete_line(input: List[str]) -> str:
|
||||
def complete_line(input: str) -> str:
|
||||
chunks: List[str] = []
|
||||
start_to_end = {
|
||||
"(": ")",
|
||||
|
@ -45,7 +45,7 @@ def solve(input: List[str]) -> int:
|
|||
# Otherwise we must match the last open chunk
|
||||
assert start_to_end[chunks.pop()] == c # Sanity check
|
||||
|
||||
return reversed(list(start_to_end[c] for c in chunks))
|
||||
return "".join(reversed(list(start_to_end[c] for c in chunks)))
|
||||
|
||||
def score_completion(completion: str) -> int:
|
||||
char_score = {
|
||||
|
|
71
2021/d13/ex1/ex1.py
Executable file
71
2021/d13/ex1/ex1.py
Executable file
|
@ -0,0 +1,71 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import itertools
|
||||
import sys
|
||||
from copy import deepcopy
|
||||
from typing import Iterable, List, Tuple, cast
|
||||
|
||||
Paper = List[List[bool]]
|
||||
Instruction = Tuple[str, int]
|
||||
|
||||
|
||||
def solve(input: List[str]) -> int:
|
||||
def transpose(paper: Paper) -> Paper:
|
||||
return cast(Paper, list(zip(*paper)))
|
||||
|
||||
def fold_along_y(paper: Paper, y: int) -> Paper:
|
||||
assert not any(paper[y]) # Sanity check
|
||||
assert y >= len(paper) // 2 # Ensure that we can actually fold the paper
|
||||
|
||||
paper = deepcopy(paper)
|
||||
for i, j in zip(itertools.count(y, -1), range(y, len(paper))):
|
||||
paper[i] = [(dot_i or dot_j) for dot_i, dot_j in zip(paper[i], paper[j])]
|
||||
|
||||
paper = paper[:y]
|
||||
return paper
|
||||
|
||||
def fold_along_x(paper: Paper, x: int) -> Paper:
|
||||
return transpose(fold_along_y(transpose(paper), x))
|
||||
|
||||
def do_folds(paper: Paper, instructions: Iterable[Instruction]) -> Paper:
|
||||
for axis, n in instructions:
|
||||
if axis == "x":
|
||||
paper = fold_along_x(paper, n)
|
||||
elif axis == "y":
|
||||
paper = fold_along_y(paper, n)
|
||||
else:
|
||||
assert False # Sanity check
|
||||
|
||||
return paper
|
||||
|
||||
def parse() -> Tuple[Paper, List[Instruction]]:
|
||||
paper_part = itertools.takewhile(lambda s: s != "", input)
|
||||
fold_part = itertools.islice(
|
||||
itertools.dropwhile(lambda s: s != "", input), 1, None
|
||||
)
|
||||
|
||||
points = {(int(x), int(y)) for x, y in map(lambda s: s.split(","), paper_part)}
|
||||
folds = [
|
||||
(axis[-1], int(n)) for axis, n in map(lambda s: s.split("="), fold_part)
|
||||
]
|
||||
|
||||
width, height = max(p[0] for p in points), max(p[1] for p in points)
|
||||
|
||||
paper = [
|
||||
[(x, y) in points for x in range(width + 1)] for y in range(height + 1)
|
||||
]
|
||||
|
||||
return paper, folds
|
||||
|
||||
paper, instructions = parse()
|
||||
|
||||
return sum(itertools.chain.from_iterable(do_folds(paper, instructions[:1])))
|
||||
|
||||
|
||||
def main() -> None:
|
||||
input = [line.strip() for line in sys.stdin.readlines()]
|
||||
print(solve(input))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
890
2021/d13/ex1/input
Normal file
890
2021/d13/ex1/input
Normal file
|
@ -0,0 +1,890 @@
|
|||
1159,502
|
||||
291,184
|
||||
850,631
|
||||
460,631
|
||||
301,707
|
||||
768,56
|
||||
654,829
|
||||
582,466
|
||||
490,276
|
||||
261,3
|
||||
793,35
|
||||
559,453
|
||||
497,288
|
||||
594,275
|
||||
458,264
|
||||
1044,387
|
||||
654,842
|
||||
925,22
|
||||
688,72
|
||||
224,833
|
||||
1228,2
|
||||
1034,487
|
||||
420,830
|
||||
172,717
|
||||
1049,198
|
||||
669,305
|
||||
1168,49
|
||||
157,304
|
||||
90,669
|
||||
1036,1
|
||||
118,549
|
||||
1084,593
|
||||
268,61
|
||||
909,294
|
||||
467,74
|
||||
1114,632
|
||||
1066,609
|
||||
1058,602
|
||||
271,35
|
||||
474,299
|
||||
1173,35
|
||||
75,864
|
||||
470,543
|
||||
176,100
|
||||
485,736
|
||||
199,332
|
||||
23,634
|
||||
654,329
|
||||
748,526
|
||||
274,395
|
||||
378,474
|
||||
910,673
|
||||
1012,810
|
||||
383,859
|
||||
1163,5
|
||||
353,291
|
||||
741,383
|
||||
631,241
|
||||
179,436
|
||||
793,75
|
||||
495,324
|
||||
321,169
|
||||
1087,278
|
||||
1302,361
|
||||
1232,572
|
||||
417,317
|
||||
960,161
|
||||
1088,642
|
||||
1161,613
|
||||
631,653
|
||||
94,327
|
||||
244,733
|
||||
857,549
|
||||
572,220
|
||||
75,337
|
||||
259,5
|
||||
1235,192
|
||||
805,393
|
||||
126,68
|
||||
1250,723
|
||||
580,68
|
||||
397,441
|
||||
1297,165
|
||||
700,82
|
||||
1200,275
|
||||
214,56
|
||||
932,711
|
||||
676,126
|
||||
676,320
|
||||
169,388
|
||||
1049,3
|
||||
25,319
|
||||
1218,215
|
||||
179,217
|
||||
681,635
|
||||
512,574
|
||||
966,371
|
||||
1124,282
|
||||
387,444
|
||||
930,644
|
||||
179,781
|
||||
192,247
|
||||
1061,290
|
||||
500,557
|
||||
378,54
|
||||
855,159
|
||||
585,891
|
||||
358,295
|
||||
545,234
|
||||
1287,429
|
||||
425,648
|
||||
416,579
|
||||
1255,99
|
||||
59,290
|
||||
768,585
|
||||
1126,733
|
||||
253,600
|
||||
1235,332
|
||||
852,184
|
||||
223,357
|
||||
1143,585
|
||||
1096,36
|
||||
1125,194
|
||||
95,677
|
||||
885,768
|
||||
870,820
|
||||
165,527
|
||||
1201,660
|
||||
465,291
|
||||
387,702
|
||||
1041,872
|
||||
502,316
|
||||
358,814
|
||||
435,747
|
||||
1217,439
|
||||
177,113
|
||||
505,781
|
||||
850,746
|
||||
343,38
|
||||
499,530
|
||||
85,789
|
||||
1285,563
|
||||
321,541
|
||||
45,15
|
||||
1295,669
|
||||
1285,393
|
||||
363,262
|
||||
271,347
|
||||
646,809
|
||||
1143,794
|
||||
505,753
|
||||
224,201
|
||||
50,420
|
||||
2,297
|
||||
507,312
|
||||
823,100
|
||||
222,252
|
||||
1007,241
|
||||
1116,157
|
||||
274,499
|
||||
505,617
|
||||
1036,137
|
||||
987,623
|
||||
22,105
|
||||
30,239
|
||||
244,609
|
||||
835,333
|
||||
1019,184
|
||||
572,443
|
||||
134,613
|
||||
348,263
|
||||
927,35
|
||||
500,625
|
||||
421,807
|
||||
763,595
|
||||
277,838
|
||||
856,54
|
||||
1310,52
|
||||
855,287
|
||||
166,628
|
||||
1155,684
|
||||
609,327
|
||||
445,892
|
||||
1116,640
|
||||
159,346
|
||||
1116,478
|
||||
1116,849
|
||||
982,565
|
||||
1232,754
|
||||
1163,337
|
||||
0,136
|
||||
422,455
|
||||
1049,451
|
||||
857,345
|
||||
59,640
|
||||
688,822
|
||||
507,582
|
||||
351,485
|
||||
294,744
|
||||
1218,383
|
||||
751,665
|
||||
969,761
|
||||
50,165
|
||||
1253,358
|
||||
393,59
|
||||
629,331
|
||||
550,842
|
||||
30,80
|
||||
505,113
|
||||
731,30
|
||||
641,761
|
||||
513,780
|
||||
221,543
|
||||
1131,561
|
||||
1072,315
|
||||
252,602
|
||||
87,556
|
||||
1148,282
|
||||
902,61
|
||||
276,308
|
||||
35,250
|
||||
1057,600
|
||||
403,785
|
||||
113,502
|
||||
805,501
|
||||
0,86
|
||||
1028,364
|
||||
428,301
|
||||
1305,353
|
||||
616,645
|
||||
199,607
|
||||
744,68
|
||||
350,385
|
||||
412,530
|
||||
574,554
|
||||
713,806
|
||||
1193,327
|
||||
923,514
|
||||
952,743
|
||||
542,586
|
||||
890,830
|
||||
378,26
|
||||
0,394
|
||||
214,523
|
||||
335,210
|
||||
75,30
|
||||
845,282
|
||||
395,357
|
||||
1285,187
|
||||
597,806
|
||||
160,154
|
||||
589,760
|
||||
52,843
|
||||
654,117
|
||||
711,170
|
||||
137,78
|
||||
1130,595
|
||||
959,37
|
||||
1220,690
|
||||
797,252
|
||||
923,444
|
||||
1285,259
|
||||
55,99
|
||||
980,638
|
||||
641,305
|
||||
781,549
|
||||
1126,768
|
||||
184,161
|
||||
915,477
|
||||
731,702
|
||||
888,868
|
||||
537,194
|
||||
738,219
|
||||
1288,777
|
||||
982,285
|
||||
1087,357
|
||||
595,254
|
||||
1288,161
|
||||
266,21
|
||||
1310,136
|
||||
1144,745
|
||||
1111,562
|
||||
671,893
|
||||
1198,756
|
||||
1176,389
|
||||
1123,372
|
||||
748,831
|
||||
1168,400
|
||||
810,886
|
||||
805,141
|
||||
705,614
|
||||
269,760
|
||||
417,126
|
||||
1044,313
|
||||
1228,226
|
||||
1158,204
|
||||
288,645
|
||||
870,504
|
||||
266,313
|
||||
1253,470
|
||||
954,84
|
||||
134,806
|
||||
420,694
|
||||
348,711
|
||||
957,623
|
||||
1285,271
|
||||
1007,485
|
||||
428,593
|
||||
494,493
|
||||
1051,5
|
||||
274,698
|
||||
852,150
|
||||
1216,327
|
||||
559,477
|
||||
522,625
|
||||
691,644
|
||||
261,787
|
||||
823,346
|
||||
773,775
|
||||
907,254
|
||||
1288,789
|
||||
728,466
|
||||
559,665
|
||||
664,809
|
||||
833,656
|
||||
258,679
|
||||
422,474
|
||||
877,95
|
||||
1253,246
|
||||
822,709
|
||||
224,542
|
||||
154,456
|
||||
502,302
|
||||
171,231
|
||||
1253,872
|
||||
1260,824
|
||||
256,176
|
||||
372,364
|
||||
358,743
|
||||
1056,225
|
||||
1049,787
|
||||
1168,285
|
||||
679,465
|
||||
157,590
|
||||
214,820
|
||||
1051,89
|
||||
652,358
|
||||
192,80
|
||||
888,474
|
||||
679,241
|
||||
430,201
|
||||
681,53
|
||||
572,668
|
||||
626,501
|
||||
724,663
|
||||
78,98
|
||||
639,229
|
||||
591,495
|
||||
798,721
|
||||
494,857
|
||||
437,10
|
||||
1131,312
|
||||
1028,194
|
||||
72,428
|
||||
1014,151
|
||||
229,117
|
||||
1086,835
|
||||
923,892
|
||||
515,485
|
||||
485,288
|
||||
366,249
|
||||
1088,252
|
||||
745,390
|
||||
266,425
|
||||
880,649
|
||||
952,814
|
||||
656,329
|
||||
865,78
|
||||
440,504
|
||||
397,889
|
||||
706,294
|
||||
1096,56
|
||||
177,672
|
||||
900,285
|
||||
154,785
|
||||
803,582
|
||||
1126,126
|
||||
174,466
|
||||
438,171
|
||||
658,760
|
||||
57,694
|
||||
962,183
|
||||
440,820
|
||||
57,134
|
||||
1138,774
|
||||
430,733
|
||||
107,756
|
||||
1149,600
|
||||
1242,889
|
||||
997,57
|
||||
1156,886
|
||||
331,497
|
||||
947,856
|
||||
671,445
|
||||
658,358
|
||||
1118,169
|
||||
1156,456
|
||||
276,488
|
||||
873,884
|
||||
267,10
|
||||
880,61
|
||||
805,589
|
||||
944,249
|
||||
412,812
|
||||
326,394
|
||||
1265,816
|
||||
460,74
|
||||
562,526
|
||||
377,56
|
||||
552,61
|
||||
291,698
|
||||
822,194
|
||||
959,241
|
||||
656,758
|
||||
1071,332
|
||||
22,341
|
||||
565,504
|
||||
1052,679
|
||||
1091,299
|
||||
1217,639
|
||||
852,296
|
||||
1268,394
|
||||
738,883
|
||||
1238,225
|
||||
938,194
|
||||
811,124
|
||||
1039,347
|
||||
507,648
|
||||
460,737
|
||||
1019,849
|
||||
177,841
|
||||
798,270
|
||||
319,684
|
||||
915,865
|
||||
117,226
|
||||
1006,509
|
||||
274,163
|
||||
561,535
|
||||
497,606
|
||||
585,3
|
||||
185,52
|
||||
30,814
|
||||
348,183
|
||||
221,799
|
||||
395,477
|
||||
749,887
|
||||
957,603
|
||||
1014,631
|
||||
1310,842
|
||||
723,473
|
||||
214,717
|
||||
1290,768
|
||||
50,40
|
||||
1087,2
|
||||
797,556
|
||||
425,768
|
||||
1163,785
|
||||
387,514
|
||||
1302,809
|
||||
813,606
|
||||
649,786
|
||||
189,719
|
||||
343,843
|
||||
947,262
|
||||
992,439
|
||||
93,639
|
||||
261,451
|
||||
13,133
|
||||
932,837
|
||||
1153,590
|
||||
582,109
|
||||
1053,565
|
||||
922,581
|
||||
634,320
|
||||
311,856
|
||||
1176,281
|
||||
1265,368
|
||||
460,605
|
||||
1084,301
|
||||
1144,73
|
||||
341,837
|
||||
706,729
|
||||
303,485
|
||||
445,450
|
||||
960,385
|
||||
353,603
|
||||
1151,122
|
||||
160,37
|
||||
564,690
|
||||
798,574
|
||||
1049,891
|
||||
885,563
|
||||
363,710
|
||||
879,537
|
||||
840,49
|
||||
751,229
|
||||
1285,779
|
||||
868,562
|
||||
353,623
|
||||
1059,109
|
||||
269,134
|
||||
257,329
|
||||
788,711
|
||||
462,590
|
||||
74,490
|
||||
706,600
|
||||
602,753
|
||||
229,246
|
||||
602,312
|
||||
1144,628
|
||||
646,231
|
||||
1288,105
|
||||
566,826
|
||||
619,625
|
||||
440,717
|
||||
536,549
|
||||
1275,250
|
||||
477,501
|
||||
1168,721
|
||||
907,108
|
||||
708,507
|
||||
1039,547
|
||||
13,729
|
||||
93,455
|
||||
1118,647
|
||||
1161,165
|
||||
74,378
|
||||
417,518
|
||||
142,721
|
||||
967,843
|
||||
1307,436
|
||||
947,710
|
||||
699,773
|
||||
1280,814
|
||||
425,200
|
||||
1260,138
|
||||
110,395
|
||||
356,84
|
||||
1310,381
|
||||
1146,86
|
||||
522,631
|
||||
110,499
|
||||
5,353
|
||||
629,563
|
||||
1242,679
|
||||
840,319
|
||||
276,756
|
||||
134,358
|
||||
1287,689
|
||||
152,690
|
||||
1260,698
|
||||
217,682
|
||||
1034,57
|
||||
440,522
|
||||
201,773
|
||||
1193,567
|
||||
870,729
|
||||
1253,424
|
||||
301,719
|
||||
8,533
|
||||
738,443
|
||||
706,165
|
||||
475,458
|
||||
256,718
|
||||
298,875
|
||||
999,856
|
||||
894,740
|
||||
105,246
|
||||
420,679
|
||||
668,810
|
||||
1073,765
|
||||
301,603
|
||||
853,756
|
||||
763,138
|
||||
991,796
|
||||
954,19
|
||||
400,428
|
||||
1144,266
|
||||
323,497
|
||||
938,364
|
||||
708,312
|
||||
462,395
|
||||
870,74
|
||||
52,644
|
||||
982,665
|
||||
1066,40
|
||||
433,95
|
||||
421,535
|
||||
1230,788
|
||||
997,110
|
||||
1019,698
|
||||
161,600
|
||||
1094,420
|
||||
559,417
|
||||
923,702
|
||||
1022,645
|
||||
166,821
|
||||
505,841
|
||||
162,282
|
||||
773,119
|
||||
90,690
|
||||
977,786
|
||||
586,231
|
||||
223,892
|
||||
457,756
|
||||
1232,322
|
||||
512,721
|
||||
137,443
|
||||
1201,234
|
||||
979,49
|
||||
1258,283
|
||||
97,246
|
||||
422,868
|
||||
1009,187
|
||||
889,87
|
||||
251,416
|
||||
1202,492
|
||||
1302,533
|
||||
763,756
|
||||
597,424
|
||||
311,221
|
||||
313,589
|
||||
1253,134
|
||||
810,557
|
||||
1235,30
|
||||
356,19
|
||||
982,829
|
||||
1145,527
|
||||
132,30
|
||||
885,648
|
||||
654,381
|
||||
654,65
|
||||
234,816
|
||||
458,710
|
||||
1111,332
|
||||
1019,710
|
||||
331,49
|
||||
561,7
|
||||
440,281
|
||||
360,150
|
||||
261,198
|
||||
440,165
|
||||
412,59
|
||||
1131,582
|
||||
78,754
|
||||
1009,164
|
||||
587,501
|
||||
1029,773
|
||||
746,690
|
||||
50,600
|
||||
1260,756
|
||||
117,327
|
||||
257,441
|
||||
582,557
|
||||
89,481
|
||||
400,669
|
||||
216,249
|
||||
701,190
|
||||
50,196
|
||||
1302,737
|
||||
933,838
|
||||
421,87
|
||||
82,674
|
||||
80,554
|
||||
951,30
|
||||
1089,799
|
||||
1163,458
|
||||
562,816
|
||||
1141,836
|
||||
65,507
|
||||
110,691
|
||||
162,612
|
||||
189,368
|
||||
490,170
|
||||
634,520
|
||||
179,582
|
||||
656,198
|
||||
160,857
|
||||
1041,760
|
||||
549,205
|
||||
994,712
|
||||
1236,516
|
||||
1280,239
|
||||
201,121
|
||||
706,586
|
||||
1131,436
|
||||
629,501
|
||||
237,70
|
||||
1285,331
|
||||
898,82
|
||||
1230,554
|
||||
350,161
|
||||
59,254
|
||||
945,194
|
||||
1071,780
|
||||
1034,308
|
||||
878,833
|
||||
1220,669
|
||||
1049,835
|
||||
1043,10
|
||||
142,46
|
||||
403,109
|
||||
599,547
|
||||
403,640
|
||||
872,723
|
||||
351,37
|
||||
562,511
|
||||
1131,113
|
||||
462,695
|
||||
1252,315
|
||||
179,333
|
||||
842,282
|
||||
460,254
|
||||
887,665
|
||||
184,768
|
||||
529,549
|
||||
269,872
|
||||
1096,717
|
||||
117,345
|
||||
1089,95
|
||||
159,122
|
||||
475,436
|
||||
803,246
|
||||
597,312
|
||||
605,614
|
||||
751,417
|
||||
542,56
|
||||
751,453
|
||||
1015,702
|
||||
713,760
|
||||
822,681
|
||||
595,640
|
||||
895,108
|
||||
1056,18
|
||||
1220,231
|
||||
1150,717
|
||||
1173,443
|
||||
269,470
|
||||
147,5
|
||||
214,726
|
||||
667,0
|
||||
1243,537
|
||||
159,621
|
||||
349,170
|
||||
1305,338
|
||||
388,581
|
||||
611,773
|
||||
160,149
|
||||
1228,450
|
||||
550,700
|
||||
875,747
|
||||
305,668
|
||||
1173,3
|
||||
418,679
|
||||
102,833
|
||||
500,886
|
||||
1148,612
|
||||
923,436
|
||||
894,154
|
||||
813,288
|
||||
996,660
|
||||
922,469
|
||||
55,302
|
||||
902,891
|
||||
1168,718
|
||||
403,108
|
||||
490,808
|
||||
458,184
|
||||
857,247
|
||||
678,553
|
||||
662,887
|
||||
149,165
|
||||
1238,785
|
||||
805,672
|
||||
520,389
|
||||
1202,402
|
||||
1101,700
|
||||
870,372
|
||||
1193,119
|
||||
788,631
|
||||
734,572
|
||||
793,371
|
||||
661,556
|
||||
1168,848
|
||||
224,352
|
||||
505,277
|
||||
562,368
|
||||
11,0
|
||||
888,455
|
||||
1131,781
|
||||
865,892
|
||||
1006,52
|
||||
298,19
|
||||
714,385
|
||||
209,700
|
||||
803,436
|
||||
7,679
|
||||
579,702
|
||||
522,263
|
||||
1150,269
|
||||
1252,586
|
||||
160,73
|
||||
1238,428
|
||||
103,380
|
||||
1278,374
|
||||
808,578
|
||||
169,288
|
||||
495,845
|
||||
668,84
|
||||
137,451
|
||||
338,182
|
||||
850,737
|
||||
587,393
|
||||
721,555
|
||||
1275,698
|
||||
741,105
|
||||
774,866
|
||||
803,648
|
||||
1039,35
|
||||
1253,200
|
||||
1303,679
|
||||
831,278
|
||||
843,633
|
||||
421,439
|
||||
78,572
|
||||
576,572
|
||||
852,710
|
||||
259,889
|
||||
416,740
|
||||
294,150
|
||||
184,817
|
||||
678,777
|
||||
994,182
|
||||
442,562
|
||||
393,3
|
||||
885,200
|
||||
669,761
|
||||
1150,149
|
||||
1034,474
|
||||
542,585
|
||||
189,67
|
||||
820,276
|
||||
65,339
|
||||
31,416
|
||||
209,567
|
||||
502,578
|
||||
1081,648
|
||||
445,78
|
||||
1118,247
|
||||
217,458
|
||||
336,455
|
||||
1126,817
|
||||
805,753
|
||||
331,677
|
||||
25,331
|
||||
336,439
|
||||
92,158
|
||||
960,733
|
||||
137,603
|
||||
174,428
|
||||
734,140
|
||||
460,157
|
||||
43,569
|
||||
58,586
|
||||
196,632
|
||||
313,784
|
||||
199,287
|
||||
|
||||
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
|
75
2021/d13/ex2/ex2.py
Executable file
75
2021/d13/ex2/ex2.py
Executable file
|
@ -0,0 +1,75 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import itertools
|
||||
import sys
|
||||
from copy import deepcopy
|
||||
from typing import Iterable, List, Tuple, cast
|
||||
|
||||
Paper = List[List[bool]]
|
||||
Instruction = Tuple[str, int]
|
||||
|
||||
|
||||
def solve(input: List[str]) -> None:
|
||||
def transpose(paper: Paper) -> Paper:
|
||||
return cast(Paper, list(zip(*paper)))
|
||||
|
||||
def fold_along_y(paper: Paper, y: int) -> Paper:
|
||||
assert not any(paper[y]) # Sanity check
|
||||
assert y >= len(paper) // 2 # Ensure that we can actually fold the paper
|
||||
|
||||
paper = deepcopy(paper)
|
||||
for i, j in zip(itertools.count(y, -1), range(y, len(paper))):
|
||||
paper[i] = [(dot_i or dot_j) for dot_i, dot_j in zip(paper[i], paper[j])]
|
||||
|
||||
paper = paper[:y]
|
||||
return paper
|
||||
|
||||
def fold_along_x(paper: Paper, x: int) -> Paper:
|
||||
return transpose(fold_along_y(transpose(paper), x))
|
||||
|
||||
def do_folds(paper: Paper, instructions: Iterable[Instruction]) -> Paper:
|
||||
for axis, n in instructions:
|
||||
if axis == "x":
|
||||
paper = fold_along_x(paper, n)
|
||||
elif axis == "y":
|
||||
paper = fold_along_y(paper, n)
|
||||
else:
|
||||
assert False # Sanity check
|
||||
|
||||
return paper
|
||||
|
||||
def parse() -> Tuple[Paper, List[Instruction]]:
|
||||
paper_part = itertools.takewhile(lambda s: s != "", input)
|
||||
fold_part = itertools.islice(
|
||||
itertools.dropwhile(lambda s: s != "", input), 1, None
|
||||
)
|
||||
|
||||
points = {(int(x), int(y)) for x, y in map(lambda s: s.split(","), paper_part)}
|
||||
folds = [
|
||||
(axis[-1], int(n)) for axis, n in map(lambda s: s.split("="), fold_part)
|
||||
]
|
||||
|
||||
width, height = max(p[0] for p in points), max(p[1] for p in points)
|
||||
|
||||
paper = [
|
||||
[(x, y) in points for x in range(width + 1)] for y in range(height + 1)
|
||||
]
|
||||
|
||||
return paper, folds
|
||||
|
||||
def dump(paper: Paper) -> None:
|
||||
for line in paper:
|
||||
print("".join("#" if dot else "." for dot in line))
|
||||
|
||||
paper, instructions = parse()
|
||||
|
||||
dump(do_folds(paper, instructions))
|
||||
|
||||
|
||||
def main() -> None:
|
||||
input = [line.strip() for line in sys.stdin.readlines()]
|
||||
solve(input)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
890
2021/d13/ex2/input
Normal file
890
2021/d13/ex2/input
Normal file
|
@ -0,0 +1,890 @@
|
|||
1159,502
|
||||
291,184
|
||||
850,631
|
||||
460,631
|
||||
301,707
|
||||
768,56
|
||||
654,829
|
||||
582,466
|
||||
490,276
|
||||
261,3
|
||||
793,35
|
||||
559,453
|
||||
497,288
|
||||
594,275
|
||||
458,264
|
||||
1044,387
|
||||
654,842
|
||||
925,22
|
||||
688,72
|
||||
224,833
|
||||
1228,2
|
||||
1034,487
|
||||
420,830
|
||||
172,717
|
||||
1049,198
|
||||
669,305
|
||||
1168,49
|
||||
157,304
|
||||
90,669
|
||||
1036,1
|
||||
118,549
|
||||
1084,593
|
||||
268,61
|
||||
909,294
|
||||
467,74
|
||||
1114,632
|
||||
1066,609
|
||||
1058,602
|
||||
271,35
|
||||
474,299
|
||||
1173,35
|
||||
75,864
|
||||
470,543
|
||||
176,100
|
||||
485,736
|
||||
199,332
|
||||
23,634
|
||||
654,329
|
||||
748,526
|
||||
274,395
|
||||
378,474
|
||||
910,673
|
||||
1012,810
|
||||
383,859
|
||||
1163,5
|
||||
353,291
|
||||
741,383
|
||||
631,241
|
||||
179,436
|
||||
793,75
|
||||
495,324
|
||||
321,169
|
||||
1087,278
|
||||
1302,361
|
||||
1232,572
|
||||
417,317
|
||||
960,161
|
||||
1088,642
|
||||
1161,613
|
||||
631,653
|
||||
94,327
|
||||
244,733
|
||||
857,549
|
||||
572,220
|
||||
75,337
|
||||
259,5
|
||||
1235,192
|
||||
805,393
|
||||
126,68
|
||||
1250,723
|
||||
580,68
|
||||
397,441
|
||||
1297,165
|
||||
700,82
|
||||
1200,275
|
||||
214,56
|
||||
932,711
|
||||
676,126
|
||||
676,320
|
||||
169,388
|
||||
1049,3
|
||||
25,319
|
||||
1218,215
|
||||
179,217
|
||||
681,635
|
||||
512,574
|
||||
966,371
|
||||
1124,282
|
||||
387,444
|
||||
930,644
|
||||
179,781
|
||||
192,247
|
||||
1061,290
|
||||
500,557
|
||||
378,54
|
||||
855,159
|
||||
585,891
|
||||
358,295
|
||||
545,234
|
||||
1287,429
|
||||
425,648
|
||||
416,579
|
||||
1255,99
|
||||
59,290
|
||||
768,585
|
||||
1126,733
|
||||
253,600
|
||||
1235,332
|
||||
852,184
|
||||
223,357
|
||||
1143,585
|
||||
1096,36
|
||||
1125,194
|
||||
95,677
|
||||
885,768
|
||||
870,820
|
||||
165,527
|
||||
1201,660
|
||||
465,291
|
||||
387,702
|
||||
1041,872
|
||||
502,316
|
||||
358,814
|
||||
435,747
|
||||
1217,439
|
||||
177,113
|
||||
505,781
|
||||
850,746
|
||||
343,38
|
||||
499,530
|
||||
85,789
|
||||
1285,563
|
||||
321,541
|
||||
45,15
|
||||
1295,669
|
||||
1285,393
|
||||
363,262
|
||||
271,347
|
||||
646,809
|
||||
1143,794
|
||||
505,753
|
||||
224,201
|
||||
50,420
|
||||
2,297
|
||||
507,312
|
||||
823,100
|
||||
222,252
|
||||
1007,241
|
||||
1116,157
|
||||
274,499
|
||||
505,617
|
||||
1036,137
|
||||
987,623
|
||||
22,105
|
||||
30,239
|
||||
244,609
|
||||
835,333
|
||||
1019,184
|
||||
572,443
|
||||
134,613
|
||||
348,263
|
||||
927,35
|
||||
500,625
|
||||
421,807
|
||||
763,595
|
||||
277,838
|
||||
856,54
|
||||
1310,52
|
||||
855,287
|
||||
166,628
|
||||
1155,684
|
||||
609,327
|
||||
445,892
|
||||
1116,640
|
||||
159,346
|
||||
1116,478
|
||||
1116,849
|
||||
982,565
|
||||
1232,754
|
||||
1163,337
|
||||
0,136
|
||||
422,455
|
||||
1049,451
|
||||
857,345
|
||||
59,640
|
||||
688,822
|
||||
507,582
|
||||
351,485
|
||||
294,744
|
||||
1218,383
|
||||
751,665
|
||||
969,761
|
||||
50,165
|
||||
1253,358
|
||||
393,59
|
||||
629,331
|
||||
550,842
|
||||
30,80
|
||||
505,113
|
||||
731,30
|
||||
641,761
|
||||
513,780
|
||||
221,543
|
||||
1131,561
|
||||
1072,315
|
||||
252,602
|
||||
87,556
|
||||
1148,282
|
||||
902,61
|
||||
276,308
|
||||
35,250
|
||||
1057,600
|
||||
403,785
|
||||
113,502
|
||||
805,501
|
||||
0,86
|
||||
1028,364
|
||||
428,301
|
||||
1305,353
|
||||
616,645
|
||||
199,607
|
||||
744,68
|
||||
350,385
|
||||
412,530
|
||||
574,554
|
||||
713,806
|
||||
1193,327
|
||||
923,514
|
||||
952,743
|
||||
542,586
|
||||
890,830
|
||||
378,26
|
||||
0,394
|
||||
214,523
|
||||
335,210
|
||||
75,30
|
||||
845,282
|
||||
395,357
|
||||
1285,187
|
||||
597,806
|
||||
160,154
|
||||
589,760
|
||||
52,843
|
||||
654,117
|
||||
711,170
|
||||
137,78
|
||||
1130,595
|
||||
959,37
|
||||
1220,690
|
||||
797,252
|
||||
923,444
|
||||
1285,259
|
||||
55,99
|
||||
980,638
|
||||
641,305
|
||||
781,549
|
||||
1126,768
|
||||
184,161
|
||||
915,477
|
||||
731,702
|
||||
888,868
|
||||
537,194
|
||||
738,219
|
||||
1288,777
|
||||
982,285
|
||||
1087,357
|
||||
595,254
|
||||
1288,161
|
||||
266,21
|
||||
1310,136
|
||||
1144,745
|
||||
1111,562
|
||||
671,893
|
||||
1198,756
|
||||
1176,389
|
||||
1123,372
|
||||
748,831
|
||||
1168,400
|
||||
810,886
|
||||
805,141
|
||||
705,614
|
||||
269,760
|
||||
417,126
|
||||
1044,313
|
||||
1228,226
|
||||
1158,204
|
||||
288,645
|
||||
870,504
|
||||
266,313
|
||||
1253,470
|
||||
954,84
|
||||
134,806
|
||||
420,694
|
||||
348,711
|
||||
957,623
|
||||
1285,271
|
||||
1007,485
|
||||
428,593
|
||||
494,493
|
||||
1051,5
|
||||
274,698
|
||||
852,150
|
||||
1216,327
|
||||
559,477
|
||||
522,625
|
||||
691,644
|
||||
261,787
|
||||
823,346
|
||||
773,775
|
||||
907,254
|
||||
1288,789
|
||||
728,466
|
||||
559,665
|
||||
664,809
|
||||
833,656
|
||||
258,679
|
||||
422,474
|
||||
877,95
|
||||
1253,246
|
||||
822,709
|
||||
224,542
|
||||
154,456
|
||||
502,302
|
||||
171,231
|
||||
1253,872
|
||||
1260,824
|
||||
256,176
|
||||
372,364
|
||||
358,743
|
||||
1056,225
|
||||
1049,787
|
||||
1168,285
|
||||
679,465
|
||||
157,590
|
||||
214,820
|
||||
1051,89
|
||||
652,358
|
||||
192,80
|
||||
888,474
|
||||
679,241
|
||||
430,201
|
||||
681,53
|
||||
572,668
|
||||
626,501
|
||||
724,663
|
||||
78,98
|
||||
639,229
|
||||
591,495
|
||||
798,721
|
||||
494,857
|
||||
437,10
|
||||
1131,312
|
||||
1028,194
|
||||
72,428
|
||||
1014,151
|
||||
229,117
|
||||
1086,835
|
||||
923,892
|
||||
515,485
|
||||
485,288
|
||||
366,249
|
||||
1088,252
|
||||
745,390
|
||||
266,425
|
||||
880,649
|
||||
952,814
|
||||
656,329
|
||||
865,78
|
||||
440,504
|
||||
397,889
|
||||
706,294
|
||||
1096,56
|
||||
177,672
|
||||
900,285
|
||||
154,785
|
||||
803,582
|
||||
1126,126
|
||||
174,466
|
||||
438,171
|
||||
658,760
|
||||
57,694
|
||||
962,183
|
||||
440,820
|
||||
57,134
|
||||
1138,774
|
||||
430,733
|
||||
107,756
|
||||
1149,600
|
||||
1242,889
|
||||
997,57
|
||||
1156,886
|
||||
331,497
|
||||
947,856
|
||||
671,445
|
||||
658,358
|
||||
1118,169
|
||||
1156,456
|
||||
276,488
|
||||
873,884
|
||||
267,10
|
||||
880,61
|
||||
805,589
|
||||
944,249
|
||||
412,812
|
||||
326,394
|
||||
1265,816
|
||||
460,74
|
||||
562,526
|
||||
377,56
|
||||
552,61
|
||||
291,698
|
||||
822,194
|
||||
959,241
|
||||
656,758
|
||||
1071,332
|
||||
22,341
|
||||
565,504
|
||||
1052,679
|
||||
1091,299
|
||||
1217,639
|
||||
852,296
|
||||
1268,394
|
||||
738,883
|
||||
1238,225
|
||||
938,194
|
||||
811,124
|
||||
1039,347
|
||||
507,648
|
||||
460,737
|
||||
1019,849
|
||||
177,841
|
||||
798,270
|
||||
319,684
|
||||
915,865
|
||||
117,226
|
||||
1006,509
|
||||
274,163
|
||||
561,535
|
||||
497,606
|
||||
585,3
|
||||
185,52
|
||||
30,814
|
||||
348,183
|
||||
221,799
|
||||
395,477
|
||||
749,887
|
||||
957,603
|
||||
1014,631
|
||||
1310,842
|
||||
723,473
|
||||
214,717
|
||||
1290,768
|
||||
50,40
|
||||
1087,2
|
||||
797,556
|
||||
425,768
|
||||
1163,785
|
||||
387,514
|
||||
1302,809
|
||||
813,606
|
||||
649,786
|
||||
189,719
|
||||
343,843
|
||||
947,262
|
||||
992,439
|
||||
93,639
|
||||
261,451
|
||||
13,133
|
||||
932,837
|
||||
1153,590
|
||||
582,109
|
||||
1053,565
|
||||
922,581
|
||||
634,320
|
||||
311,856
|
||||
1176,281
|
||||
1265,368
|
||||
460,605
|
||||
1084,301
|
||||
1144,73
|
||||
341,837
|
||||
706,729
|
||||
303,485
|
||||
445,450
|
||||
960,385
|
||||
353,603
|
||||
1151,122
|
||||
160,37
|
||||
564,690
|
||||
798,574
|
||||
1049,891
|
||||
885,563
|
||||
363,710
|
||||
879,537
|
||||
840,49
|
||||
751,229
|
||||
1285,779
|
||||
868,562
|
||||
353,623
|
||||
1059,109
|
||||
269,134
|
||||
257,329
|
||||
788,711
|
||||
462,590
|
||||
74,490
|
||||
706,600
|
||||
602,753
|
||||
229,246
|
||||
602,312
|
||||
1144,628
|
||||
646,231
|
||||
1288,105
|
||||
566,826
|
||||
619,625
|
||||
440,717
|
||||
536,549
|
||||
1275,250
|
||||
477,501
|
||||
1168,721
|
||||
907,108
|
||||
708,507
|
||||
1039,547
|
||||
13,729
|
||||
93,455
|
||||
1118,647
|
||||
1161,165
|
||||
74,378
|
||||
417,518
|
||||
142,721
|
||||
967,843
|
||||
1307,436
|
||||
947,710
|
||||
699,773
|
||||
1280,814
|
||||
425,200
|
||||
1260,138
|
||||
110,395
|
||||
356,84
|
||||
1310,381
|
||||
1146,86
|
||||
522,631
|
||||
110,499
|
||||
5,353
|
||||
629,563
|
||||
1242,679
|
||||
840,319
|
||||
276,756
|
||||
134,358
|
||||
1287,689
|
||||
152,690
|
||||
1260,698
|
||||
217,682
|
||||
1034,57
|
||||
440,522
|
||||
201,773
|
||||
1193,567
|
||||
870,729
|
||||
1253,424
|
||||
301,719
|
||||
8,533
|
||||
738,443
|
||||
706,165
|
||||
475,458
|
||||
256,718
|
||||
298,875
|
||||
999,856
|
||||
894,740
|
||||
105,246
|
||||
420,679
|
||||
668,810
|
||||
1073,765
|
||||
301,603
|
||||
853,756
|
||||
763,138
|
||||
991,796
|
||||
954,19
|
||||
400,428
|
||||
1144,266
|
||||
323,497
|
||||
938,364
|
||||
708,312
|
||||
462,395
|
||||
870,74
|
||||
52,644
|
||||
982,665
|
||||
1066,40
|
||||
433,95
|
||||
421,535
|
||||
1230,788
|
||||
997,110
|
||||
1019,698
|
||||
161,600
|
||||
1094,420
|
||||
559,417
|
||||
923,702
|
||||
1022,645
|
||||
166,821
|
||||
505,841
|
||||
162,282
|
||||
773,119
|
||||
90,690
|
||||
977,786
|
||||
586,231
|
||||
223,892
|
||||
457,756
|
||||
1232,322
|
||||
512,721
|
||||
137,443
|
||||
1201,234
|
||||
979,49
|
||||
1258,283
|
||||
97,246
|
||||
422,868
|
||||
1009,187
|
||||
889,87
|
||||
251,416
|
||||
1202,492
|
||||
1302,533
|
||||
763,756
|
||||
597,424
|
||||
311,221
|
||||
313,589
|
||||
1253,134
|
||||
810,557
|
||||
1235,30
|
||||
356,19
|
||||
982,829
|
||||
1145,527
|
||||
132,30
|
||||
885,648
|
||||
654,381
|
||||
654,65
|
||||
234,816
|
||||
458,710
|
||||
1111,332
|
||||
1019,710
|
||||
331,49
|
||||
561,7
|
||||
440,281
|
||||
360,150
|
||||
261,198
|
||||
440,165
|
||||
412,59
|
||||
1131,582
|
||||
78,754
|
||||
1009,164
|
||||
587,501
|
||||
1029,773
|
||||
746,690
|
||||
50,600
|
||||
1260,756
|
||||
117,327
|
||||
257,441
|
||||
582,557
|
||||
89,481
|
||||
400,669
|
||||
216,249
|
||||
701,190
|
||||
50,196
|
||||
1302,737
|
||||
933,838
|
||||
421,87
|
||||
82,674
|
||||
80,554
|
||||
951,30
|
||||
1089,799
|
||||
1163,458
|
||||
562,816
|
||||
1141,836
|
||||
65,507
|
||||
110,691
|
||||
162,612
|
||||
189,368
|
||||
490,170
|
||||
634,520
|
||||
179,582
|
||||
656,198
|
||||
160,857
|
||||
1041,760
|
||||
549,205
|
||||
994,712
|
||||
1236,516
|
||||
1280,239
|
||||
201,121
|
||||
706,586
|
||||
1131,436
|
||||
629,501
|
||||
237,70
|
||||
1285,331
|
||||
898,82
|
||||
1230,554
|
||||
350,161
|
||||
59,254
|
||||
945,194
|
||||
1071,780
|
||||
1034,308
|
||||
878,833
|
||||
1220,669
|
||||
1049,835
|
||||
1043,10
|
||||
142,46
|
||||
403,109
|
||||
599,547
|
||||
403,640
|
||||
872,723
|
||||
351,37
|
||||
562,511
|
||||
1131,113
|
||||
462,695
|
||||
1252,315
|
||||
179,333
|
||||
842,282
|
||||
460,254
|
||||
887,665
|
||||
184,768
|
||||
529,549
|
||||
269,872
|
||||
1096,717
|
||||
117,345
|
||||
1089,95
|
||||
159,122
|
||||
475,436
|
||||
803,246
|
||||
597,312
|
||||
605,614
|
||||
751,417
|
||||
542,56
|
||||
751,453
|
||||
1015,702
|
||||
713,760
|
||||
822,681
|
||||
595,640
|
||||
895,108
|
||||
1056,18
|
||||
1220,231
|
||||
1150,717
|
||||
1173,443
|
||||
269,470
|
||||
147,5
|
||||
214,726
|
||||
667,0
|
||||
1243,537
|
||||
159,621
|
||||
349,170
|
||||
1305,338
|
||||
388,581
|
||||
611,773
|
||||
160,149
|
||||
1228,450
|
||||
550,700
|
||||
875,747
|
||||
305,668
|
||||
1173,3
|
||||
418,679
|
||||
102,833
|
||||
500,886
|
||||
1148,612
|
||||
923,436
|
||||
894,154
|
||||
813,288
|
||||
996,660
|
||||
922,469
|
||||
55,302
|
||||
902,891
|
||||
1168,718
|
||||
403,108
|
||||
490,808
|
||||
458,184
|
||||
857,247
|
||||
678,553
|
||||
662,887
|
||||
149,165
|
||||
1238,785
|
||||
805,672
|
||||
520,389
|
||||
1202,402
|
||||
1101,700
|
||||
870,372
|
||||
1193,119
|
||||
788,631
|
||||
734,572
|
||||
793,371
|
||||
661,556
|
||||
1168,848
|
||||
224,352
|
||||
505,277
|
||||
562,368
|
||||
11,0
|
||||
888,455
|
||||
1131,781
|
||||
865,892
|
||||
1006,52
|
||||
298,19
|
||||
714,385
|
||||
209,700
|
||||
803,436
|
||||
7,679
|
||||
579,702
|
||||
522,263
|
||||
1150,269
|
||||
1252,586
|
||||
160,73
|
||||
1238,428
|
||||
103,380
|
||||
1278,374
|
||||
808,578
|
||||
169,288
|
||||
495,845
|
||||
668,84
|
||||
137,451
|
||||
338,182
|
||||
850,737
|
||||
587,393
|
||||
721,555
|
||||
1275,698
|
||||
741,105
|
||||
774,866
|
||||
803,648
|
||||
1039,35
|
||||
1253,200
|
||||
1303,679
|
||||
831,278
|
||||
843,633
|
||||
421,439
|
||||
78,572
|
||||
576,572
|
||||
852,710
|
||||
259,889
|
||||
416,740
|
||||
294,150
|
||||
184,817
|
||||
678,777
|
||||
994,182
|
||||
442,562
|
||||
393,3
|
||||
885,200
|
||||
669,761
|
||||
1150,149
|
||||
1034,474
|
||||
542,585
|
||||
189,67
|
||||
820,276
|
||||
65,339
|
||||
31,416
|
||||
209,567
|
||||
502,578
|
||||
1081,648
|
||||
445,78
|
||||
1118,247
|
||||
217,458
|
||||
336,455
|
||||
1126,817
|
||||
805,753
|
||||
331,677
|
||||
25,331
|
||||
336,439
|
||||
92,158
|
||||
960,733
|
||||
137,603
|
||||
174,428
|
||||
734,140
|
||||
460,157
|
||||
43,569
|
||||
58,586
|
||||
196,632
|
||||
313,784
|
||||
199,287
|
||||
|
||||
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 a new issue