day 9
This commit is contained in:
parent
b16a7975bc
commit
8d7b9d1971
3 changed files with 565 additions and 0 deletions
14
day9/1.py
Normal file
14
day9/1.py
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
with open(r'day9/input.txt', 'r') as input:
|
||||||
|
lines = list(map(lambda x: list(map(lambda y: int(y),x.split(','))),input.read().split('\n')[:-1]))
|
||||||
|
|
||||||
|
def surface(a,b):
|
||||||
|
return (abs(a[0]-b[0])+1)*(abs(a[1]-b[1])+1)
|
||||||
|
|
||||||
|
best = surface(lines[0],lines[1])
|
||||||
|
|
||||||
|
for i in range(len(lines)):
|
||||||
|
for j in range(i):
|
||||||
|
best = max(best,surface(lines[i],lines[j]))
|
||||||
|
|
||||||
|
print(best)
|
||||||
|
|
||||||
55
day9/2.py
Normal file
55
day9/2.py
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
with open(r'day9/input.txt', 'r') as input:
|
||||||
|
lines = list(map(lambda x: list(map(lambda y: int(y),x.split(','))),input.read().split('\n')[:-1]))
|
||||||
|
|
||||||
|
def surface(a,b):
|
||||||
|
return (abs(a[0]-b[0])+1)*(abs(a[1]-b[1])+1)
|
||||||
|
|
||||||
|
inner = set()
|
||||||
|
|
||||||
|
for i in range(len(lines)):
|
||||||
|
j = (i+1)%len(lines)
|
||||||
|
if lines[i][0] == lines[j][0]:
|
||||||
|
sign = 1 if lines[i][1] <= lines[j][1] else -1
|
||||||
|
for x in range(lines[i][1],lines[j][1],sign):
|
||||||
|
inner.add((lines[i][0],x))
|
||||||
|
else:
|
||||||
|
sign = 1 if lines[i][0] <= lines[j][0] else -1
|
||||||
|
for x in range(lines[i][0],lines[j][0],sign):
|
||||||
|
inner.add((x,lines[i][1]))
|
||||||
|
|
||||||
|
if lines[0][0] == lines[1][0]:
|
||||||
|
init = (lines[0][0]-1,lines[0][1]+1)
|
||||||
|
else:
|
||||||
|
init = (lines[0][0]+1,lines[0][1]+1)
|
||||||
|
|
||||||
|
print(init)
|
||||||
|
|
||||||
|
L=[init]
|
||||||
|
neigh = [[-1,0],[-1,-1],[0,-1],[1,0],[0,1],[1,1],[-1,1],[1,-1]]
|
||||||
|
while len(L):
|
||||||
|
sommet = L.pop(0)
|
||||||
|
if sommet not in inner:
|
||||||
|
inner.add(sommet)
|
||||||
|
for nei in neigh:
|
||||||
|
new = (sommet[0]+nei[0],sommet[1]+nei[1])
|
||||||
|
if new not in inner and new not in L:
|
||||||
|
L.append(new)
|
||||||
|
|
||||||
|
print("init done")
|
||||||
|
|
||||||
|
def is_inside(a,b):
|
||||||
|
for i in range(min(a[0],b[0]),max(a[0],b[0])+1):
|
||||||
|
for j in range(min(a[1],b[1]),max(a[1],b[1])+1):
|
||||||
|
if (i,j) not in inner:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
best = surface(lines[0],lines[1])
|
||||||
|
|
||||||
|
for i in range(len(lines)):
|
||||||
|
for j in range(i):
|
||||||
|
if is_inside(lines[i],lines[j]):
|
||||||
|
best = max(best,surface(lines[i],lines[j]))
|
||||||
|
|
||||||
|
print(best)
|
||||||
|
|
||||||
496
day9/input.txt
Normal file
496
day9/input.txt
Normal file
|
|
@ -0,0 +1,496 @@
|
||||||
|
98418,50192
|
||||||
|
98418,51404
|
||||||
|
97889,51404
|
||||||
|
97889,52598
|
||||||
|
97505,52598
|
||||||
|
97505,53817
|
||||||
|
97618,53817
|
||||||
|
97618,55025
|
||||||
|
97538,55025
|
||||||
|
97538,56250
|
||||||
|
97566,56250
|
||||||
|
97566,57527
|
||||||
|
97861,57527
|
||||||
|
97861,58695
|
||||||
|
97425,58695
|
||||||
|
97425,59747
|
||||||
|
96491,59747
|
||||||
|
96491,60979
|
||||||
|
96474,60979
|
||||||
|
96474,62182
|
||||||
|
96292,62182
|
||||||
|
96292,63253
|
||||||
|
95629,63253
|
||||||
|
95629,64604
|
||||||
|
95907,64604
|
||||||
|
95907,65699
|
||||||
|
95338,65699
|
||||||
|
95338,66689
|
||||||
|
94517,66689
|
||||||
|
94517,67992
|
||||||
|
94526,67992
|
||||||
|
94526,68999
|
||||||
|
93791,68999
|
||||||
|
93791,70245
|
||||||
|
93603,70245
|
||||||
|
93603,71118
|
||||||
|
92623,71118
|
||||||
|
92623,72323
|
||||||
|
92324,72323
|
||||||
|
92324,73312
|
||||||
|
91609,73312
|
||||||
|
91609,74462
|
||||||
|
91180,74462
|
||||||
|
91180,75647
|
||||||
|
90785,75647
|
||||||
|
90785,76375
|
||||||
|
89675,76375
|
||||||
|
89675,77406
|
||||||
|
89043,77406
|
||||||
|
89043,78623
|
||||||
|
88656,78623
|
||||||
|
88656,79826
|
||||||
|
88216,79826
|
||||||
|
88216,80401
|
||||||
|
86982,80401
|
||||||
|
86982,81670
|
||||||
|
86595,81670
|
||||||
|
86595,82291
|
||||||
|
85456,82291
|
||||||
|
85456,83125
|
||||||
|
84571,83125
|
||||||
|
84571,84170
|
||||||
|
83899,84170
|
||||||
|
83899,85263
|
||||||
|
83254,85263
|
||||||
|
83254,85798
|
||||||
|
82084,85798
|
||||||
|
82084,86784
|
||||||
|
81325,86784
|
||||||
|
81325,87488
|
||||||
|
80320,87488
|
||||||
|
80320,88169
|
||||||
|
79303,88169
|
||||||
|
79303,88472
|
||||||
|
78015,88472
|
||||||
|
78015,89422
|
||||||
|
77206,89422
|
||||||
|
77206,89967
|
||||||
|
76112,89967
|
||||||
|
76112,91240
|
||||||
|
75477,91240
|
||||||
|
75477,91500
|
||||||
|
74207,91500
|
||||||
|
74207,91836
|
||||||
|
73003,91836
|
||||||
|
73003,92462
|
||||||
|
71965,92462
|
||||||
|
71965,92953
|
||||||
|
70857,92953
|
||||||
|
70857,93430
|
||||||
|
69746,93430
|
||||||
|
69746,94493
|
||||||
|
68884,94493
|
||||||
|
68884,94368
|
||||||
|
67518,94368
|
||||||
|
67518,94855
|
||||||
|
66409,94855
|
||||||
|
66409,95127
|
||||||
|
65224,95127
|
||||||
|
65224,95686
|
||||||
|
64134,95686
|
||||||
|
64134,96270
|
||||||
|
63040,96270
|
||||||
|
63040,96976
|
||||||
|
61963,96976
|
||||||
|
61963,97089
|
||||||
|
60729,97089
|
||||||
|
60729,97274
|
||||||
|
59519,97274
|
||||||
|
59519,97739
|
||||||
|
58360,97739
|
||||||
|
58360,97026
|
||||||
|
57012,97026
|
||||||
|
57012,98118
|
||||||
|
55933,98118
|
||||||
|
55933,97599
|
||||||
|
54648,97599
|
||||||
|
54648,97622
|
||||||
|
53435,97622
|
||||||
|
53435,97790
|
||||||
|
52232,97790
|
||||||
|
52232,97869
|
||||||
|
51022,97869
|
||||||
|
51022,97663
|
||||||
|
49810,97663
|
||||||
|
49810,98471
|
||||||
|
48578,98471
|
||||||
|
48578,97728
|
||||||
|
47388,97728
|
||||||
|
47388,97837
|
||||||
|
46165,97837
|
||||||
|
46165,97799
|
||||||
|
44946,97799
|
||||||
|
44946,97268
|
||||||
|
43788,97268
|
||||||
|
43788,96977
|
||||||
|
42611,96977
|
||||||
|
42611,97318
|
||||||
|
41324,97318
|
||||||
|
41324,96853
|
||||||
|
40176,96853
|
||||||
|
40176,96807
|
||||||
|
38941,96807
|
||||||
|
38941,96020
|
||||||
|
37888,96020
|
||||||
|
37888,95929
|
||||||
|
36659,95929
|
||||||
|
36659,95403
|
||||||
|
35555,95403
|
||||||
|
35555,95293
|
||||||
|
34316,95293
|
||||||
|
34316,95009
|
||||||
|
33126,95009
|
||||||
|
33126,94327
|
||||||
|
32088,94327
|
||||||
|
32088,93976
|
||||||
|
30920,93976
|
||||||
|
30920,93317
|
||||||
|
29887,93317
|
||||||
|
29887,93149
|
||||||
|
28620,93149
|
||||||
|
28620,92600
|
||||||
|
27530,92600
|
||||||
|
27530,91700
|
||||||
|
26636,91700
|
||||||
|
26636,91685
|
||||||
|
25236,91685
|
||||||
|
25236,90459
|
||||||
|
24556,90459
|
||||||
|
24556,90008
|
||||||
|
23402,90008
|
||||||
|
23402,89285
|
||||||
|
22423,89285
|
||||||
|
22423,88957
|
||||||
|
21153,88957
|
||||||
|
21153,88139
|
||||||
|
20234,88139
|
||||||
|
20234,86939
|
||||||
|
19634,86939
|
||||||
|
19634,86144
|
||||||
|
18720,86144
|
||||||
|
18720,85852
|
||||||
|
17347,85852
|
||||||
|
17347,84914
|
||||||
|
16545,84914
|
||||||
|
16545,83748
|
||||||
|
15981,83748
|
||||||
|
15981,83245
|
||||||
|
14745,83245
|
||||||
|
14745,82306
|
||||||
|
13954,82306
|
||||||
|
13954,81137
|
||||||
|
13435,81137
|
||||||
|
13435,80172
|
||||||
|
12693,80172
|
||||||
|
12693,79387
|
||||||
|
11720,79387
|
||||||
|
11720,78255
|
||||||
|
11197,78255
|
||||||
|
11197,77079
|
||||||
|
10760,77079
|
||||||
|
10760,76008
|
||||||
|
10192,76008
|
||||||
|
10192,75166
|
||||||
|
9262,75166
|
||||||
|
9262,74251
|
||||||
|
8425,74251
|
||||||
|
8425,73325
|
||||||
|
7577,73325
|
||||||
|
7577,72066
|
||||||
|
7343,72066
|
||||||
|
7343,70964
|
||||||
|
6826,70964
|
||||||
|
6826,70065
|
||||||
|
5867,70065
|
||||||
|
5867,68714
|
||||||
|
5905,68714
|
||||||
|
5905,67641
|
||||||
|
5318,67641
|
||||||
|
5318,66562
|
||||||
|
4725,66562
|
||||||
|
4725,65430
|
||||||
|
4260,65430
|
||||||
|
4260,64043
|
||||||
|
4608,64043
|
||||||
|
4608,62905
|
||||||
|
4208,62905
|
||||||
|
4208,61736
|
||||||
|
3915,61736
|
||||||
|
3915,60698
|
||||||
|
3049,60698
|
||||||
|
3049,59476
|
||||||
|
2937,59476
|
||||||
|
2937,58321
|
||||||
|
2480,58321
|
||||||
|
2480,57064
|
||||||
|
2625,57064
|
||||||
|
2625,55885
|
||||||
|
2269,55885
|
||||||
|
2269,54685
|
||||||
|
2021,54685
|
||||||
|
2021,53466
|
||||||
|
1950,53466
|
||||||
|
1950,52236
|
||||||
|
2130,52236
|
||||||
|
2130,51035
|
||||||
|
1524,51035
|
||||||
|
1524,50178
|
||||||
|
94727,50178
|
||||||
|
94727,48597
|
||||||
|
2170,48597
|
||||||
|
2170,47378
|
||||||
|
2085,47378
|
||||||
|
2085,46133
|
||||||
|
1770,46133
|
||||||
|
1770,44966
|
||||||
|
2390,44966
|
||||||
|
2390,43767
|
||||||
|
2567,43767
|
||||||
|
2567,42601
|
||||||
|
2960,42601
|
||||||
|
2960,41332
|
||||||
|
2726,41332
|
||||||
|
2726,40179
|
||||||
|
3158,40179
|
||||||
|
3158,39001
|
||||||
|
3446,39001
|
||||||
|
3446,37674
|
||||||
|
3165,37674
|
||||||
|
3165,36637
|
||||||
|
3993,36637
|
||||||
|
3993,35579
|
||||||
|
4671,35579
|
||||||
|
4671,34363
|
||||||
|
4842,34363
|
||||||
|
4842,33250
|
||||||
|
5322,33250
|
||||||
|
5322,31905
|
||||||
|
5220,31905
|
||||||
|
5220,30702
|
||||||
|
5520,30702
|
||||||
|
5520,29576
|
||||||
|
6013,29576
|
||||||
|
6013,28676
|
||||||
|
6963,28676
|
||||||
|
6963,27640
|
||||||
|
7606,27640
|
||||||
|
7606,26480
|
||||||
|
8020,26480
|
||||||
|
8020,25717
|
||||||
|
9123,25717
|
||||||
|
9123,24226
|
||||||
|
9014,24226
|
||||||
|
9014,23538
|
||||||
|
10194,23538
|
||||||
|
10194,22562
|
||||||
|
10912,22562
|
||||||
|
10912,21427
|
||||||
|
11412,21427
|
||||||
|
11412,20565
|
||||||
|
12285,20565
|
||||||
|
12285,19571
|
||||||
|
12984,19571
|
||||||
|
12984,18427
|
||||||
|
13517,18427
|
||||||
|
13517,17733
|
||||||
|
14570,17733
|
||||||
|
14570,17071
|
||||||
|
15634,17071
|
||||||
|
15634,15862
|
||||||
|
16133,15862
|
||||||
|
16133,15044
|
||||||
|
17036,15044
|
||||||
|
17036,14403
|
||||||
|
18096,14403
|
||||||
|
18096,13476
|
||||||
|
18897,13476
|
||||||
|
18897,12771
|
||||||
|
19890,12771
|
||||||
|
19890,12242
|
||||||
|
21013,12242
|
||||||
|
21013,10968
|
||||||
|
21576,10968
|
||||||
|
21576,10790
|
||||||
|
22940,10790
|
||||||
|
22940,10133
|
||||||
|
23952,10133
|
||||||
|
23952,8814
|
||||||
|
24555,8814
|
||||||
|
24555,8727
|
||||||
|
25925,8727
|
||||||
|
25925,8091
|
||||||
|
26956,8091
|
||||||
|
26956,7711
|
||||||
|
28124,7711
|
||||||
|
28124,7110
|
||||||
|
29173,7110
|
||||||
|
29173,6168
|
||||||
|
30071,6168
|
||||||
|
30071,5505
|
||||||
|
31115,5505
|
||||||
|
31115,4914
|
||||||
|
32198,4914
|
||||||
|
32198,4882
|
||||||
|
33494,4882
|
||||||
|
33494,4440
|
||||||
|
34629,4440
|
||||||
|
34629,4109
|
||||||
|
35802,4109
|
||||||
|
35802,4274
|
||||||
|
37113,4274
|
||||||
|
37113,3409
|
||||||
|
38134,3409
|
||||||
|
38134,2997
|
||||||
|
39289,2997
|
||||||
|
39289,2721
|
||||||
|
40480,2721
|
||||||
|
40480,2302
|
||||||
|
41647,2302
|
||||||
|
41647,2788
|
||||||
|
42959,2788
|
||||||
|
42959,2096
|
||||||
|
44092,2096
|
||||||
|
44092,1984
|
||||||
|
45310,1984
|
||||||
|
45310,1700
|
||||||
|
46515,1700
|
||||||
|
46515,1991
|
||||||
|
47756,1991
|
||||||
|
47756,2097
|
||||||
|
48976,2097
|
||||||
|
48976,2002
|
||||||
|
50191,2002
|
||||||
|
50191,1992
|
||||||
|
51407,1992
|
||||||
|
51407,1772
|
||||||
|
52638,1772
|
||||||
|
52638,2642
|
||||||
|
53796,2642
|
||||||
|
53796,1850
|
||||||
|
55090,1850
|
||||||
|
55090,2096
|
||||||
|
56294,2096
|
||||||
|
56294,3011
|
||||||
|
57389,3011
|
||||||
|
57389,2887
|
||||||
|
58637,2887
|
||||||
|
58637,2967
|
||||||
|
59860,2967
|
||||||
|
59860,3418
|
||||||
|
61005,3418
|
||||||
|
61005,3399
|
||||||
|
62264,3399
|
||||||
|
62264,4330
|
||||||
|
63264,4330
|
||||||
|
63264,3958
|
||||||
|
64647,3958
|
||||||
|
64647,4794
|
||||||
|
65653,4794
|
||||||
|
65653,5424
|
||||||
|
66711,5424
|
||||||
|
66711,5246
|
||||||
|
68083,5246
|
||||||
|
68083,5995
|
||||||
|
69091,5995
|
||||||
|
69091,6679
|
||||||
|
70114,6679
|
||||||
|
70114,6906
|
||||||
|
71351,6906
|
||||||
|
71351,7903
|
||||||
|
72203,7903
|
||||||
|
72203,8090
|
||||||
|
73480,8090
|
||||||
|
73480,8712
|
||||||
|
74526,8712
|
||||||
|
74526,8958
|
||||||
|
75808,8958
|
||||||
|
75808,9939
|
||||||
|
76631,9939
|
||||||
|
76631,10853
|
||||||
|
77479,10853
|
||||||
|
77479,11322
|
||||||
|
78639,11322
|
||||||
|
78639,12151
|
||||||
|
79539,12151
|
||||||
|
79539,13199
|
||||||
|
80251,13199
|
||||||
|
80251,13429
|
||||||
|
81648,13429
|
||||||
|
81648,14471
|
||||||
|
82356,14471
|
||||||
|
82356,15101
|
||||||
|
83438,15101
|
||||||
|
83438,16016
|
||||||
|
84254,16016
|
||||||
|
84254,17101
|
||||||
|
84886,17101
|
||||||
|
84886,18284
|
||||||
|
85386,18284
|
||||||
|
85386,18866
|
||||||
|
86559,18866
|
||||||
|
86559,19505
|
||||||
|
87704,19505
|
||||||
|
87704,20972
|
||||||
|
87810,20972
|
||||||
|
87810,21926
|
||||||
|
88552,21926
|
||||||
|
88552,22550
|
||||||
|
89774,22550
|
||||||
|
89774,23797
|
||||||
|
90104,23797
|
||||||
|
90104,25032
|
||||||
|
90414,25032
|
||||||
|
90414,26014
|
||||||
|
91118,26014
|
||||||
|
91118,26855
|
||||||
|
92091,26855
|
||||||
|
92091,28061
|
||||||
|
92409,28061
|
||||||
|
92409,29098
|
||||||
|
93043,29098
|
||||||
|
93043,29972
|
||||||
|
94050,29972
|
||||||
|
94050,31145
|
||||||
|
94423,31145
|
||||||
|
94423,32270
|
||||||
|
94902,32270
|
||||||
|
94902,33566
|
||||||
|
94920,33566
|
||||||
|
94920,34609
|
||||||
|
95617,34609
|
||||||
|
95617,35825
|
||||||
|
95815,35825
|
||||||
|
95815,37010
|
||||||
|
96088,37010
|
||||||
|
96088,38260
|
||||||
|
96094,38260
|
||||||
|
96094,39290
|
||||||
|
97001,39290
|
||||||
|
97001,40450
|
||||||
|
97424,40450
|
||||||
|
97424,41705
|
||||||
|
97364,41705
|
||||||
|
97364,42884
|
||||||
|
97719,42884
|
||||||
|
97719,44094
|
||||||
|
97893,44094
|
||||||
|
97893,45345
|
||||||
|
97652,45345
|
||||||
|
97652,46544
|
||||||
|
97888,46544
|
||||||
|
97888,47736
|
||||||
|
98442,47736
|
||||||
|
98442,48981
|
||||||
|
97675,48981
|
||||||
|
97675,50192
|
||||||
Loading…
Add table
Add a link
Reference in a new issue