mirror of
https://github.com/Crocmagnon/advent-of-code.git
synced 2024-11-24 15:38:10 +01:00
Solve day 4
This commit is contained in:
parent
4109a72a98
commit
9202b7d49b
6 changed files with 889 additions and 135 deletions
96
2021/day04_bingo.py
Normal file
96
2021/day04_bingo.py
Normal file
|
@ -0,0 +1,96 @@
|
|||
import itertools
|
||||
from typing import List, Set, TypeAlias
|
||||
|
||||
Numbers: TypeAlias = List[int]
|
||||
Grid: TypeAlias = List[Numbers]
|
||||
|
||||
|
||||
def main(filename: str, expected_part_1: int = None, expected_part_2: int = None):
|
||||
print(f"\n+ Running on {filename}")
|
||||
with open(filename) as f:
|
||||
data = f.read().strip().split("\n\n")
|
||||
|
||||
numbers, grids = parse_data(data)
|
||||
solution_part_1 = solve_part_1(numbers, grids)
|
||||
|
||||
print(f"1. Found {solution_part_1}")
|
||||
if expected_part_1:
|
||||
assert expected_part_1 == solution_part_1
|
||||
|
||||
solution_part_2 = solve_part_2(numbers, grids)
|
||||
print(f"2. Found {solution_part_2}")
|
||||
if expected_part_2:
|
||||
assert expected_part_2 == solution_part_2
|
||||
|
||||
|
||||
def parse_data(data: List[str]) -> (Numbers, List[Grid]):
|
||||
numbers: Numbers = list(map(int, data[0].split(",")))
|
||||
data = data[1:]
|
||||
grids: List[Grid] = []
|
||||
for grid in data:
|
||||
parsed_grid: Grid = []
|
||||
grid_lines = grid.split("\n")
|
||||
for line in grid_lines:
|
||||
line = list(map(int, line.split()))
|
||||
parsed_grid.append(line)
|
||||
grids.append(parsed_grid)
|
||||
return numbers, grids
|
||||
|
||||
|
||||
def solve_part_1(numbers: Numbers, grids: List[Grid]) -> int:
|
||||
seen: Set[int] = set()
|
||||
for number in numbers:
|
||||
seen.add(number)
|
||||
for grid in grids:
|
||||
if check_bingo(grid, seen):
|
||||
return sum(unseen(grid, seen)) * number
|
||||
|
||||
|
||||
def check_bingo(grid: Grid, seen: Set[int]) -> bool:
|
||||
return check_row(grid, seen) or check_column(grid, seen)
|
||||
|
||||
|
||||
def check_row(grid: Grid, seen: Set[int]) -> bool:
|
||||
for row in grid:
|
||||
if check_line(row, seen):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def check_column(grid: Grid, seen: Set[int]) -> bool:
|
||||
for i in range(len(grid[0])):
|
||||
column = [row[i] for row in grid]
|
||||
if check_line(column, seen):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def check_line(line: Numbers, seen: Set[int]) -> bool:
|
||||
for number in line:
|
||||
if number not in seen:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def unseen(grid: Grid, seen: Set[int]) -> Numbers:
|
||||
return [n for n in itertools.chain.from_iterable(grid) if n not in seen]
|
||||
|
||||
|
||||
def solve_part_2(numbers: Numbers, grids: List[Grid]) -> int:
|
||||
seen: Set[int] = set()
|
||||
score = 0
|
||||
winners: Set[int] = set()
|
||||
for number in numbers:
|
||||
seen.add(number)
|
||||
for index, grid in enumerate(grids):
|
||||
if index in winners:
|
||||
continue
|
||||
if check_bingo(grid, seen):
|
||||
score = sum(unseen(grid, seen)) * number
|
||||
winners.add(index)
|
||||
return score
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main("inputs/day04-test1", expected_part_1=4512, expected_part_2=1924)
|
||||
main("inputs/day04", expected_part_1=23177)
|
601
2021/inputs/day04
Normal file
601
2021/inputs/day04
Normal file
|
@ -0,0 +1,601 @@
|
|||
42,32,13,22,91,2,88,85,53,87,37,33,76,98,89,19,69,9,62,21,38,49,54,81,0,26,79,36,57,18,4,40,31,80,24,64,77,97,70,6,73,23,20,47,45,51,74,25,95,96,58,92,94,11,39,63,65,99,48,83,29,34,44,75,55,17,14,56,8,82,59,52,46,90,5,41,60,67,16,1,15,61,71,66,72,30,28,3,43,27,78,10,86,7,50,35,84,12,93,68
|
||||
|
||||
90 8 2 34 41
|
||||
11 67 74 71 62
|
||||
47 42 44 1 17
|
||||
21 55 12 91 6
|
||||
60 69 75 92 56
|
||||
|
||||
49 29 60 45 31
|
||||
94 51 73 33 67
|
||||
21 92 53 95 96
|
||||
2 55 52 8 87
|
||||
4 36 76 83 42
|
||||
|
||||
23 66 50 84 58
|
||||
62 98 81 76 57
|
||||
24 2 56 79 6
|
||||
55 0 16 64 38
|
||||
12 67 5 97 60
|
||||
|
||||
46 64 5 39 62
|
||||
16 82 13 77 52
|
||||
18 26 44 0 61
|
||||
25 7 43 42 50
|
||||
11 85 30 28 76
|
||||
|
||||
51 28 70 65 78
|
||||
62 88 30 36 96
|
||||
80 87 4 1 24
|
||||
63 22 41 79 34
|
||||
18 15 47 26 67
|
||||
|
||||
48 68 92 67 36
|
||||
54 50 71 98 21
|
||||
20 91 70 78 76
|
||||
87 97 44 3 93
|
||||
84 12 39 96 57
|
||||
|
||||
86 12 38 44 1
|
||||
10 87 74 53 66
|
||||
14 99 85 48 88
|
||||
59 33 76 71 31
|
||||
83 39 2 67 35
|
||||
|
||||
62 67 27 96 8
|
||||
81 23 78 33 48
|
||||
80 16 0 86 85
|
||||
26 54 29 32 89
|
||||
88 77 43 18 46
|
||||
|
||||
87 88 13 49 80
|
||||
78 19 81 56 11
|
||||
18 55 70 44 48
|
||||
31 37 24 95 28
|
||||
20 79 89 94 14
|
||||
|
||||
10 31 52 49 79
|
||||
8 72 61 27 42
|
||||
73 4 11 43 91
|
||||
37 44 58 19 97
|
||||
96 63 90 13 74
|
||||
|
||||
71 27 87 40 99
|
||||
69 29 79 64 67
|
||||
85 66 4 28 30
|
||||
23 51 16 49 45
|
||||
92 12 74 1 75
|
||||
|
||||
46 52 40 12 44
|
||||
0 73 20 86 1
|
||||
85 32 4 42 2
|
||||
21 33 56 39 9
|
||||
49 69 76 98 22
|
||||
|
||||
42 81 5 11 2
|
||||
57 50 77 8 24
|
||||
85 92 15 39 52
|
||||
37 70 36 79 67
|
||||
34 20 16 93 22
|
||||
|
||||
49 68 25 4 46
|
||||
17 57 77 59 54
|
||||
65 83 18 84 63
|
||||
36 74 61 22 71
|
||||
14 0 26 3 98
|
||||
|
||||
1 80 93 66 58
|
||||
38 9 18 60 2
|
||||
70 46 35 88 11
|
||||
95 89 85 29 26
|
||||
82 68 25 15 53
|
||||
|
||||
97 80 28 17 7
|
||||
67 46 54 95 98
|
||||
38 74 42 57 79
|
||||
63 29 36 78 6
|
||||
90 60 84 10 14
|
||||
|
||||
18 88 8 96 0
|
||||
66 56 43 47 11
|
||||
69 73 14 71 25
|
||||
27 63 31 44 94
|
||||
75 95 84 74 13
|
||||
|
||||
92 9 98 17 74
|
||||
46 7 2 51 52
|
||||
21 60 5 87 15
|
||||
86 91 65 69 54
|
||||
61 85 1 62 53
|
||||
|
||||
89 80 4 0 68
|
||||
17 87 52 86 48
|
||||
3 34 16 25 35
|
||||
13 38 49 66 50
|
||||
36 43 65 84 56
|
||||
|
||||
9 93 54 92 55
|
||||
32 2 39 96 98
|
||||
58 72 52 83 97
|
||||
12 44 27 24 20
|
||||
0 3 28 56 69
|
||||
|
||||
66 56 37 36 72
|
||||
35 49 40 43 44
|
||||
54 21 59 12 65
|
||||
74 25 22 80 98
|
||||
27 81 69 97 62
|
||||
|
||||
72 81 27 61 74
|
||||
26 50 79 13 53
|
||||
49 78 76 70 43
|
||||
51 64 99 46 67
|
||||
68 59 71 17 41
|
||||
|
||||
97 22 73 30 98
|
||||
8 54 68 47 23
|
||||
70 89 41 52 61
|
||||
81 28 58 90 3
|
||||
88 40 86 46 43
|
||||
|
||||
94 6 46 43 59
|
||||
41 28 87 31 45
|
||||
83 26 66 81 1
|
||||
76 86 15 42 8
|
||||
67 47 54 4 77
|
||||
|
||||
96 56 22 67 2
|
||||
95 47 90 54 51
|
||||
78 79 29 82 48
|
||||
61 81 77 6 24
|
||||
71 93 98 26 75
|
||||
|
||||
95 7 77 94 64
|
||||
19 79 14 24 5
|
||||
50 48 4 71 22
|
||||
35 69 89 54 2
|
||||
6 51 8 82 58
|
||||
|
||||
87 6 85 53 64
|
||||
50 43 80 61 15
|
||||
69 41 51 76 0
|
||||
78 26 37 62 16
|
||||
12 33 75 58 52
|
||||
|
||||
67 18 68 52 42
|
||||
37 30 49 31 69
|
||||
93 90 76 9 32
|
||||
60 84 73 94 17
|
||||
21 27 66 43 44
|
||||
|
||||
89 69 24 14 1
|
||||
88 33 50 2 63
|
||||
12 34 6 97 53
|
||||
28 26 55 8 32
|
||||
49 19 17 64 86
|
||||
|
||||
31 37 81 65 38
|
||||
96 18 45 19 58
|
||||
35 43 1 49 41
|
||||
46 85 92 53 15
|
||||
3 34 8 14 21
|
||||
|
||||
35 68 61 45 39
|
||||
46 99 52 55 15
|
||||
74 14 10 62 17
|
||||
8 66 98 89 91
|
||||
58 24 44 27 29
|
||||
|
||||
28 48 52 18 13
|
||||
17 35 20 11 49
|
||||
93 50 31 95 83
|
||||
27 33 79 44 80
|
||||
4 96 23 65 68
|
||||
|
||||
70 78 31 86 36
|
||||
99 38 62 95 27
|
||||
52 74 25 80 41
|
||||
30 15 47 19 21
|
||||
77 23 53 9 7
|
||||
|
||||
0 83 11 25 42
|
||||
50 64 76 67 72
|
||||
75 30 82 15 84
|
||||
58 17 87 61 33
|
||||
98 74 44 3 93
|
||||
|
||||
5 40 78 24 11
|
||||
57 17 67 60 25
|
||||
37 76 28 56 35
|
||||
66 94 2 90 47
|
||||
86 10 85 46 45
|
||||
|
||||
63 12 7 74 14
|
||||
21 31 84 51 36
|
||||
66 20 25 46 41
|
||||
15 3 18 62 45
|
||||
35 78 93 2 9
|
||||
|
||||
90 9 33 63 41
|
||||
25 73 35 97 19
|
||||
99 96 45 71 22
|
||||
84 43 29 14 88
|
||||
42 8 1 78 68
|
||||
|
||||
98 84 38 95 27
|
||||
18 32 54 12 96
|
||||
56 50 2 45 53
|
||||
14 83 59 72 70
|
||||
22 41 28 9 78
|
||||
|
||||
89 94 50 33 73
|
||||
31 47 8 35 34
|
||||
43 92 95 21 51
|
||||
68 13 53 24 38
|
||||
80 69 44 87 83
|
||||
|
||||
32 82 75 73 91
|
||||
99 10 22 58 23
|
||||
86 9 42 81 40
|
||||
71 25 3 78 54
|
||||
80 15 83 5 4
|
||||
|
||||
58 1 3 11 24
|
||||
66 51 84 44 25
|
||||
37 54 12 27 97
|
||||
38 2 39 85 83
|
||||
89 91 33 79 59
|
||||
|
||||
49 22 12 84 60
|
||||
34 29 11 92 19
|
||||
97 41 88 53 38
|
||||
26 37 8 36 67
|
||||
91 3 90 52 46
|
||||
|
||||
77 35 76 56 20
|
||||
39 94 37 3 83
|
||||
78 81 66 29 4
|
||||
82 41 38 0 73
|
||||
59 16 88 15 30
|
||||
|
||||
34 69 74 90 33
|
||||
9 47 71 94 10
|
||||
76 50 15 19 32
|
||||
49 89 31 21 92
|
||||
80 12 13 97 93
|
||||
|
||||
45 94 35 59 20
|
||||
18 46 14 36 30
|
||||
6 78 84 38 99
|
||||
5 4 90 92 63
|
||||
34 24 26 75 3
|
||||
|
||||
80 39 1 93 55
|
||||
67 71 30 44 76
|
||||
38 13 73 21 8
|
||||
11 47 46 69 29
|
||||
15 57 95 52 34
|
||||
|
||||
45 86 88 80 19
|
||||
3 5 55 36 90
|
||||
54 85 44 18 39
|
||||
57 92 42 25 77
|
||||
43 0 12 1 24
|
||||
|
||||
74 71 83 29 25
|
||||
56 12 52 33 64
|
||||
68 94 97 14 15
|
||||
7 48 24 80 5
|
||||
54 87 35 1 66
|
||||
|
||||
55 50 73 72 36
|
||||
17 80 87 68 90
|
||||
8 33 81 1 51
|
||||
67 61 71 54 95
|
||||
93 98 27 56 0
|
||||
|
||||
19 32 63 6 98
|
||||
13 38 23 28 8
|
||||
5 31 66 72 39
|
||||
99 46 2 64 14
|
||||
91 83 35 85 10
|
||||
|
||||
67 85 49 68 37
|
||||
8 36 31 81 18
|
||||
74 61 20 80 50
|
||||
34 23 42 52 39
|
||||
21 14 22 58 54
|
||||
|
||||
16 14 69 13 81
|
||||
21 96 62 7 5
|
||||
95 52 0 67 24
|
||||
6 30 65 66 86
|
||||
28 25 85 56 15
|
||||
|
||||
4 41 21 86 32
|
||||
95 23 63 28 2
|
||||
9 16 37 84 14
|
||||
92 22 71 42 5
|
||||
46 65 69 81 57
|
||||
|
||||
45 20 46 44 22
|
||||
62 93 78 58 25
|
||||
91 38 29 68 24
|
||||
21 55 71 43 26
|
||||
64 76 84 80 99
|
||||
|
||||
92 67 43 5 12
|
||||
2 64 46 15 96
|
||||
95 75 73 38 30
|
||||
10 65 20 39 26
|
||||
36 16 25 27 88
|
||||
|
||||
9 62 18 58 34
|
||||
85 80 36 2 48
|
||||
16 60 75 72 51
|
||||
39 22 32 61 54
|
||||
40 44 23 87 53
|
||||
|
||||
93 69 56 4 22
|
||||
73 51 24 53 19
|
||||
83 98 77 94 59
|
||||
52 70 15 40 48
|
||||
60 89 67 92 85
|
||||
|
||||
48 72 42 80 22
|
||||
99 49 11 77 4
|
||||
28 24 1 63 51
|
||||
85 93 62 7 78
|
||||
35 32 3 21 86
|
||||
|
||||
36 75 67 79 34
|
||||
20 8 71 6 5
|
||||
50 61 14 52 81
|
||||
26 37 0 80 77
|
||||
93 47 86 54 94
|
||||
|
||||
50 19 68 54 80
|
||||
81 12 33 87 24
|
||||
28 40 37 30 31
|
||||
41 51 15 27 97
|
||||
67 70 14 77 86
|
||||
|
||||
89 57 48 37 27
|
||||
44 46 29 63 20
|
||||
74 88 25 68 76
|
||||
18 28 91 59 58
|
||||
99 77 62 64 83
|
||||
|
||||
22 5 86 37 42
|
||||
47 69 87 34 89
|
||||
64 33 18 56 51
|
||||
30 49 11 79 17
|
||||
61 80 0 29 57
|
||||
|
||||
7 82 87 15 83
|
||||
76 43 92 1 97
|
||||
0 46 2 86 6
|
||||
48 27 29 61 67
|
||||
53 10 64 93 77
|
||||
|
||||
65 16 23 26 87
|
||||
58 5 25 97 94
|
||||
43 7 39 69 35
|
||||
62 81 56 13 28
|
||||
76 12 37 14 93
|
||||
|
||||
90 81 15 55 23
|
||||
58 40 8 56 76
|
||||
83 7 78 89 47
|
||||
65 70 13 48 42
|
||||
16 69 66 52 46
|
||||
|
||||
30 38 20 32 94
|
||||
91 96 34 23 90
|
||||
16 24 49 50 86
|
||||
65 19 56 7 66
|
||||
80 60 74 71 11
|
||||
|
||||
60 77 54 25 22
|
||||
9 61 68 6 89
|
||||
15 71 10 84 41
|
||||
1 47 8 43 63
|
||||
69 57 85 24 81
|
||||
|
||||
54 83 73 52 49
|
||||
69 96 31 57 44
|
||||
19 66 24 6 55
|
||||
91 84 20 3 27
|
||||
7 9 71 43 75
|
||||
|
||||
90 72 15 99 2
|
||||
73 56 48 28 62
|
||||
40 75 0 59 31
|
||||
43 67 44 24 77
|
||||
98 35 4 3 37
|
||||
|
||||
2 85 72 39 49
|
||||
58 25 91 69 19
|
||||
34 8 57 42 55
|
||||
80 21 51 64 30
|
||||
28 32 82 84 6
|
||||
|
||||
33 77 39 13 12
|
||||
86 21 96 82 94
|
||||
78 92 42 45 70
|
||||
31 22 60 80 67
|
||||
79 27 93 55 65
|
||||
|
||||
49 90 73 72 10
|
||||
98 89 77 88 12
|
||||
83 3 31 47 21
|
||||
65 26 93 55 53
|
||||
5 95 22 8 63
|
||||
|
||||
79 88 11 62 25
|
||||
85 14 77 4 19
|
||||
41 31 83 26 67
|
||||
46 98 74 99 2
|
||||
44 53 70 36 52
|
||||
|
||||
21 33 15 57 53
|
||||
56 91 25 69 10
|
||||
52 59 73 96 87
|
||||
65 71 14 37 2
|
||||
39 89 29 83 64
|
||||
|
||||
88 38 45 39 20
|
||||
99 72 61 96 4
|
||||
23 24 67 49 80
|
||||
77 6 65 76 18
|
||||
59 51 78 33 46
|
||||
|
||||
44 22 9 90 83
|
||||
93 50 2 54 26
|
||||
68 71 43 85 41
|
||||
38 20 6 64 24
|
||||
81 39 33 56 27
|
||||
|
||||
98 1 69 30 38
|
||||
67 52 79 31 0
|
||||
24 41 82 55 73
|
||||
33 66 64 20 7
|
||||
65 9 14 70 94
|
||||
|
||||
59 63 65 25 1
|
||||
36 85 61 82 50
|
||||
52 3 70 30 43
|
||||
79 57 31 71 76
|
||||
19 97 93 77 49
|
||||
|
||||
60 45 90 32 74
|
||||
77 64 58 44 43
|
||||
71 49 37 21 46
|
||||
50 67 1 24 15
|
||||
14 22 0 40 23
|
||||
|
||||
65 87 81 64 28
|
||||
53 80 23 76 77
|
||||
49 14 50 2 35
|
||||
85 26 88 94 30
|
||||
79 18 68 15 45
|
||||
|
||||
6 48 38 63 92
|
||||
51 45 58 4 76
|
||||
78 40 22 17 55
|
||||
79 12 66 61 5
|
||||
68 74 0 93 89
|
||||
|
||||
66 4 65 71 77
|
||||
47 35 38 83 64
|
||||
53 16 9 56 25
|
||||
92 81 55 60 33
|
||||
80 24 73 0 26
|
||||
|
||||
26 29 55 76 38
|
||||
79 52 91 84 39
|
||||
50 57 37 34 71
|
||||
33 31 68 92 24
|
||||
81 95 5 70 8
|
||||
|
||||
83 64 11 67 42
|
||||
97 29 27 4 78
|
||||
23 10 48 71 81
|
||||
80 74 86 17 36
|
||||
61 14 85 21 96
|
||||
|
||||
18 8 7 88 25
|
||||
59 5 28 57 69
|
||||
64 54 16 70 72
|
||||
13 75 71 33 2
|
||||
60 55 46 51 32
|
||||
|
||||
23 89 63 96 88
|
||||
71 66 9 53 65
|
||||
56 46 29 95 80
|
||||
44 94 90 3 5
|
||||
11 99 59 60 78
|
||||
|
||||
42 33 81 25 0
|
||||
46 66 63 82 94
|
||||
52 73 92 30 24
|
||||
59 26 50 87 45
|
||||
79 55 74 17 64
|
||||
|
||||
95 43 13 98 18
|
||||
62 12 24 88 28
|
||||
23 11 93 51 67
|
||||
71 0 44 64 96
|
||||
66 17 84 90 19
|
||||
|
||||
38 6 12 75 27
|
||||
28 73 62 50 51
|
||||
63 86 29 98 15
|
||||
46 90 4 58 96
|
||||
20 78 64 56 82
|
||||
|
||||
19 91 23 40 1
|
||||
78 57 75 43 2
|
||||
35 60 85 74 30
|
||||
80 3 63 54 32
|
||||
82 99 89 25 88
|
||||
|
||||
88 13 92 11 72
|
||||
56 6 35 55 21
|
||||
8 20 36 60 99
|
||||
1 96 57 45 12
|
||||
41 73 50 83 69
|
||||
|
||||
42 69 53 76 11
|
||||
38 74 13 14 86
|
||||
18 49 51 67 61
|
||||
26 80 47 16 78
|
||||
66 46 12 68 79
|
||||
|
||||
22 90 72 93 24
|
||||
55 29 43 28 5
|
||||
99 47 87 40 51
|
||||
81 18 70 20 36
|
||||
0 48 23 46 82
|
||||
|
||||
91 74 83 95 54
|
||||
60 56 38 37 89
|
||||
87 96 71 50 35
|
||||
5 11 42 72 3
|
||||
77 81 36 49 97
|
||||
|
||||
71 72 17 34 93
|
||||
45 81 22 67 23
|
||||
61 20 94 14 1
|
||||
85 40 15 36 88
|
||||
54 91 62 73 9
|
||||
|
||||
66 36 39 58 60
|
||||
96 8 22 49 77
|
||||
76 64 47 78 30
|
||||
50 41 12 69 15
|
||||
7 1 29 72 27
|
||||
|
||||
90 12 65 13 39
|
||||
75 70 47 36 79
|
||||
31 54 17 10 32
|
||||
76 92 55 83 40
|
||||
49 5 20 44 37
|
||||
|
||||
16 78 65 5 70
|
||||
63 72 89 93 66
|
||||
21 90 46 54 81
|
||||
7 48 88 60 11
|
||||
95 0 38 3 26
|
||||
|
||||
19 65 66 41 27
|
||||
7 18 91 52 48
|
||||
87 55 49 68 71
|
||||
85 12 4 40 1
|
||||
57 67 6 11 58
|
||||
|
||||
91 85 38 14 21
|
||||
63 93 37 76 25
|
||||
68 36 4 24 71
|
||||
43 31 60 19 95
|
||||
52 55 13 83 78
|
19
2021/inputs/day04-test1
Normal file
19
2021/inputs/day04-test1
Normal file
|
@ -0,0 +1,19 @@
|
|||
7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1
|
||||
|
||||
22 13 17 11 0
|
||||
8 2 23 4 24
|
||||
21 9 14 16 7
|
||||
6 10 3 18 5
|
||||
1 12 20 15 19
|
||||
|
||||
3 15 0 2 22
|
||||
9 18 13 17 5
|
||||
19 8 7 25 23
|
||||
20 11 10 24 4
|
||||
14 21 16 12 6
|
||||
|
||||
14 21 17 24 4
|
||||
10 16 15 9 19
|
||||
18 8 23 26 20
|
||||
22 11 13 6 5
|
||||
2 0 12 3 7
|
|
@ -1,25 +1,33 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
def main(filename: str, expected_part_1: int = None, expected_part_2: int = None):
|
||||
print(f"\n+ Running on {filename}")
|
||||
with open(filename) as f:
|
||||
data = f.read().strip().split("\n")
|
||||
|
||||
counter_part_1 = solve_part_1(data)
|
||||
data = parse_data(data)
|
||||
solution_part_1 = solve_part_1(data)
|
||||
|
||||
print(f"1. Found {counter_part_1}")
|
||||
print(f"1. Found {solution_part_1}")
|
||||
if expected_part_1:
|
||||
assert expected_part_1 == counter_part_1
|
||||
assert expected_part_1 == solution_part_1
|
||||
|
||||
counter_part_2 = solve_part_2(data)
|
||||
print(f"2. Found {counter_part_2}")
|
||||
solution_part_2 = solve_part_2(data)
|
||||
print(f"2. Found {solution_part_2}")
|
||||
if expected_part_2:
|
||||
assert expected_part_2 == counter_part_2
|
||||
assert expected_part_2 == solution_part_2
|
||||
|
||||
|
||||
def solve_part_1(data):
|
||||
def parse_data(data: List[str]):
|
||||
return data
|
||||
|
||||
|
||||
def solve_part_1(data) -> int:
|
||||
return 0
|
||||
|
||||
|
||||
def solve_part_2(data):
|
||||
def solve_part_2(data) -> int:
|
||||
return 0
|
||||
|
||||
|
||||
|
|
282
poetry.lock
generated
282
poetry.lock
generated
|
@ -1,11 +1,3 @@
|
|||
[[package]]
|
||||
name = "appdirs"
|
||||
version = "1.4.4"
|
||||
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "atomicwrites"
|
||||
version = "1.4.0"
|
||||
|
@ -16,21 +8,33 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
|||
|
||||
[[package]]
|
||||
name = "attrs"
|
||||
version = "20.3.0"
|
||||
version = "21.2.0"
|
||||
description = "Classes Without Boilerplate"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
|
||||
[package.extras]
|
||||
dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"]
|
||||
docs = ["furo", "sphinx", "zope.interface"]
|
||||
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"]
|
||||
tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"]
|
||||
dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"]
|
||||
docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
|
||||
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"]
|
||||
tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"]
|
||||
|
||||
[[package]]
|
||||
name = "backports.entry-points-selectable"
|
||||
version = "1.1.1"
|
||||
description = "Compatibility shim providing selectable entry points for older implementations"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7"
|
||||
|
||||
[package.extras]
|
||||
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
|
||||
testing = ["pytest", "pytest-flake8", "pytest-cov", "pytest-black (>=0.3.7)", "pytest-mypy", "pytest-checkdocs (>=2.4)", "pytest-enabler (>=1.0.1)"]
|
||||
|
||||
[[package]]
|
||||
name = "cfgv"
|
||||
version = "3.2.0"
|
||||
version = "3.3.1"
|
||||
description = "Validate configuration and produce human readable error messages."
|
||||
category = "dev"
|
||||
optional = false
|
||||
|
@ -44,17 +48,9 @@ category = "dev"
|
|||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
|
||||
[[package]]
|
||||
name = "decorator"
|
||||
version = "4.4.2"
|
||||
description = "Decorators for Humans"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=2.6, !=3.0.*, !=3.1.*"
|
||||
|
||||
[[package]]
|
||||
name = "distlib"
|
||||
version = "0.3.1"
|
||||
version = "0.3.3"
|
||||
description = "Distribution utilities"
|
||||
category = "dev"
|
||||
optional = false
|
||||
|
@ -74,22 +70,26 @@ pyrepl = ">=0.8.2"
|
|||
|
||||
[[package]]
|
||||
name = "filelock"
|
||||
version = "3.0.12"
|
||||
version = "3.4.0"
|
||||
description = "A platform independent file lock."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.extras]
|
||||
docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"]
|
||||
testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"]
|
||||
|
||||
[[package]]
|
||||
name = "identify"
|
||||
version = "1.5.10"
|
||||
version = "2.4.0"
|
||||
description = "File identification library for Python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
|
||||
python-versions = ">=3.6.1"
|
||||
|
||||
[package.extras]
|
||||
license = ["editdistance"]
|
||||
license = ["ukkonen"]
|
||||
|
||||
[[package]]
|
||||
name = "iniconfig"
|
||||
|
@ -101,31 +101,22 @@ python-versions = "*"
|
|||
|
||||
[[package]]
|
||||
name = "networkx"
|
||||
version = "2.5"
|
||||
version = "2.6.3"
|
||||
description = "Python package for creating and manipulating graphs and networks"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.dependencies]
|
||||
decorator = ">=4.3.0"
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.extras]
|
||||
all = ["numpy", "scipy", "pandas", "matplotlib", "pygraphviz", "pydot", "pyyaml", "lxml", "pytest"]
|
||||
gdal = ["gdal"]
|
||||
lxml = ["lxml"]
|
||||
matplotlib = ["matplotlib"]
|
||||
numpy = ["numpy"]
|
||||
pandas = ["pandas"]
|
||||
pydot = ["pydot"]
|
||||
pygraphviz = ["pygraphviz"]
|
||||
pytest = ["pytest"]
|
||||
pyyaml = ["pyyaml"]
|
||||
scipy = ["scipy"]
|
||||
default = ["numpy (>=1.19)", "scipy (>=1.5,!=1.6.1)", "matplotlib (>=3.3)", "pandas (>=1.1)"]
|
||||
developer = ["black (==21.5b1)", "pre-commit (>=2.12)"]
|
||||
doc = ["sphinx (>=4.0,<5.0)", "pydata-sphinx-theme (>=0.6,<1.0)", "sphinx-gallery (>=0.9,<1.0)", "numpydoc (>=1.1)", "pillow (>=8.2)", "nb2plots (>=0.6)", "texext (>=0.6.6)"]
|
||||
extra = ["lxml (>=4.5)", "pygraphviz (>=1.7)", "pydot (>=1.4.1)"]
|
||||
test = ["pytest (>=6.2)", "pytest-cov (>=2.12)", "codecov (>=2.1)"]
|
||||
|
||||
[[package]]
|
||||
name = "nodeenv"
|
||||
version = "1.5.0"
|
||||
version = "1.6.0"
|
||||
description = "Node.js virtual environment builder"
|
||||
category = "dev"
|
||||
optional = false
|
||||
|
@ -133,18 +124,18 @@ python-versions = "*"
|
|||
|
||||
[[package]]
|
||||
name = "packaging"
|
||||
version = "20.7"
|
||||
version = "21.3"
|
||||
description = "Core utilities for Python packages"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.dependencies]
|
||||
pyparsing = ">=2.0.2"
|
||||
pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
|
||||
|
||||
[[package]]
|
||||
name = "pdbpp"
|
||||
version = "0.10.2"
|
||||
version = "0.10.3"
|
||||
description = "pdb++, a drop-in replacement for pdb"
|
||||
category = "main"
|
||||
optional = false
|
||||
|
@ -159,20 +150,33 @@ wmctrl = "*"
|
|||
funcsigs = ["funcsigs"]
|
||||
testing = ["funcsigs", "pytest"]
|
||||
|
||||
[[package]]
|
||||
name = "platformdirs"
|
||||
version = "2.4.0"
|
||||
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.extras]
|
||||
docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"]
|
||||
test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"]
|
||||
|
||||
[[package]]
|
||||
name = "pluggy"
|
||||
version = "0.13.1"
|
||||
version = "1.0.0"
|
||||
description = "plugin and hook calling mechanisms for python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.extras]
|
||||
dev = ["pre-commit", "tox"]
|
||||
testing = ["pytest", "pytest-benchmark"]
|
||||
|
||||
[[package]]
|
||||
name = "pre-commit"
|
||||
version = "2.9.2"
|
||||
version = "2.16.0"
|
||||
description = "A framework for managing and maintaining multi-language pre-commit hooks."
|
||||
category = "dev"
|
||||
optional = false
|
||||
|
@ -188,15 +192,15 @@ virtualenv = ">=20.0.8"
|
|||
|
||||
[[package]]
|
||||
name = "py"
|
||||
version = "1.9.0"
|
||||
version = "1.11.0"
|
||||
description = "library with cross-python path, ini-parsing, io, code, log facilities"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
|
||||
[[package]]
|
||||
name = "pygments"
|
||||
version = "2.7.3"
|
||||
version = "2.10.0"
|
||||
description = "Pygments is a syntax highlighting package written in Python."
|
||||
category = "main"
|
||||
optional = false
|
||||
|
@ -204,11 +208,14 @@ python-versions = ">=3.5"
|
|||
|
||||
[[package]]
|
||||
name = "pyparsing"
|
||||
version = "2.4.7"
|
||||
version = "3.0.6"
|
||||
description = "Python parsing module"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.extras]
|
||||
diagrams = ["jinja2", "railroad-diagrams"]
|
||||
|
||||
[[package]]
|
||||
name = "pyreadline"
|
||||
|
@ -228,37 +235,36 @@ python-versions = "*"
|
|||
|
||||
[[package]]
|
||||
name = "pytest"
|
||||
version = "6.1.2"
|
||||
version = "6.2.5"
|
||||
description = "pytest: simple powerful testing with Python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.5"
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.dependencies]
|
||||
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
|
||||
attrs = ">=17.4.0"
|
||||
attrs = ">=19.2.0"
|
||||
colorama = {version = "*", markers = "sys_platform == \"win32\""}
|
||||
iniconfig = "*"
|
||||
packaging = "*"
|
||||
pluggy = ">=0.12,<1.0"
|
||||
pluggy = ">=0.12,<2.0"
|
||||
py = ">=1.8.2"
|
||||
toml = "*"
|
||||
|
||||
[package.extras]
|
||||
checkqa_mypy = ["mypy (==0.780)"]
|
||||
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
|
||||
|
||||
[[package]]
|
||||
name = "pyyaml"
|
||||
version = "5.3.1"
|
||||
version = "6.0"
|
||||
description = "YAML parser and emitter for Python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[[package]]
|
||||
name = "six"
|
||||
version = "1.15.0"
|
||||
version = "1.16.0"
|
||||
description = "Python 2 and 3 compatibility utilities"
|
||||
category = "dev"
|
||||
optional = false
|
||||
|
@ -274,25 +280,26 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
|||
|
||||
[[package]]
|
||||
name = "virtualenv"
|
||||
version = "20.2.1"
|
||||
version = "20.10.0"
|
||||
description = "Virtual Python Environment builder"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
|
||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
|
||||
|
||||
[package.dependencies]
|
||||
appdirs = ">=1.4.3,<2"
|
||||
"backports.entry-points-selectable" = ">=1.0.4"
|
||||
distlib = ">=0.3.1,<1"
|
||||
filelock = ">=3.0.0,<4"
|
||||
filelock = ">=3.2,<4"
|
||||
platformdirs = ">=2,<3"
|
||||
six = ">=1.9.0,<2"
|
||||
|
||||
[package.extras]
|
||||
docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=19.9.0rc1)"]
|
||||
testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "pytest-xdist (>=1.31.0)", "packaging (>=20.0)", "xonsh (>=0.9.16)"]
|
||||
docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"]
|
||||
testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "wmctrl"
|
||||
version = "0.3"
|
||||
version = "0.4"
|
||||
description = "A tool to programmatically control windows inside X"
|
||||
category = "main"
|
||||
optional = false
|
||||
|
@ -304,84 +311,85 @@ python-versions = "3.8"
|
|||
content-hash = "d3492eb0a2265986bb41e5d19316233006e02e29c8fd44e45535b7e2b9a52658"
|
||||
|
||||
[metadata.files]
|
||||
appdirs = [
|
||||
{file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"},
|
||||
{file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"},
|
||||
]
|
||||
atomicwrites = [
|
||||
{file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
|
||||
{file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
|
||||
]
|
||||
attrs = [
|
||||
{file = "attrs-20.3.0-py2.py3-none-any.whl", hash = "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6"},
|
||||
{file = "attrs-20.3.0.tar.gz", hash = "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"},
|
||||
{file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"},
|
||||
{file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"},
|
||||
]
|
||||
"backports.entry-points-selectable" = [
|
||||
{file = "backports.entry_points_selectable-1.1.1-py2.py3-none-any.whl", hash = "sha256:7fceed9532a7aa2bd888654a7314f864a3c16a4e710b34a58cfc0f08114c663b"},
|
||||
{file = "backports.entry_points_selectable-1.1.1.tar.gz", hash = "sha256:914b21a479fde881635f7af5adc7f6e38d6b274be32269070c53b698c60d5386"},
|
||||
]
|
||||
cfgv = [
|
||||
{file = "cfgv-3.2.0-py2.py3-none-any.whl", hash = "sha256:32e43d604bbe7896fe7c248a9c2276447dbef840feb28fe20494f62af110211d"},
|
||||
{file = "cfgv-3.2.0.tar.gz", hash = "sha256:cf22deb93d4bcf92f345a5c3cd39d3d41d6340adc60c78bbbd6588c384fda6a1"},
|
||||
{file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"},
|
||||
{file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
|
||||
]
|
||||
colorama = [
|
||||
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
|
||||
{file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
|
||||
]
|
||||
decorator = [
|
||||
{file = "decorator-4.4.2-py2.py3-none-any.whl", hash = "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760"},
|
||||
{file = "decorator-4.4.2.tar.gz", hash = "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7"},
|
||||
]
|
||||
distlib = [
|
||||
{file = "distlib-0.3.1-py2.py3-none-any.whl", hash = "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb"},
|
||||
{file = "distlib-0.3.1.zip", hash = "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1"},
|
||||
{file = "distlib-0.3.3-py2.py3-none-any.whl", hash = "sha256:c8b54e8454e5bf6237cc84c20e8264c3e991e824ef27e8f1e81049867d861e31"},
|
||||
{file = "distlib-0.3.3.zip", hash = "sha256:d982d0751ff6eaaab5e2ec8e691d949ee80eddf01a62eaa96ddb11531fe16b05"},
|
||||
]
|
||||
fancycompleter = [
|
||||
{file = "fancycompleter-0.9.1-py3-none-any.whl", hash = "sha256:dd076bca7d9d524cc7f25ec8f35ef95388ffef9ef46def4d3d25e9b044ad7080"},
|
||||
{file = "fancycompleter-0.9.1.tar.gz", hash = "sha256:09e0feb8ae242abdfd7ef2ba55069a46f011814a80fe5476be48f51b00247272"},
|
||||
]
|
||||
filelock = [
|
||||
{file = "filelock-3.0.12-py3-none-any.whl", hash = "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836"},
|
||||
{file = "filelock-3.0.12.tar.gz", hash = "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59"},
|
||||
{file = "filelock-3.4.0-py3-none-any.whl", hash = "sha256:2e139a228bcf56dd8b2274a65174d005c4a6b68540ee0bdbb92c76f43f29f7e8"},
|
||||
{file = "filelock-3.4.0.tar.gz", hash = "sha256:93d512b32a23baf4cac44ffd72ccf70732aeff7b8050fcaf6d3ec406d954baf4"},
|
||||
]
|
||||
identify = [
|
||||
{file = "identify-1.5.10-py2.py3-none-any.whl", hash = "sha256:cc86e6a9a390879dcc2976cef169dd9cc48843ed70b7380f321d1b118163c60e"},
|
||||
{file = "identify-1.5.10.tar.gz", hash = "sha256:943cd299ac7f5715fcb3f684e2fc1594c1e0f22a90d15398e5888143bd4144b5"},
|
||||
{file = "identify-2.4.0-py2.py3-none-any.whl", hash = "sha256:eba31ca80258de6bb51453084bff4a923187cd2193b9c13710f2516ab30732cc"},
|
||||
{file = "identify-2.4.0.tar.gz", hash = "sha256:a33ae873287e81651c7800ca309dc1f84679b763c9c8b30680e16fbfa82f0107"},
|
||||
]
|
||||
iniconfig = [
|
||||
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
|
||||
{file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
|
||||
]
|
||||
networkx = [
|
||||
{file = "networkx-2.5-py3-none-any.whl", hash = "sha256:8c5812e9f798d37c50570d15c4a69d5710a18d77bafc903ee9c5fba7454c616c"},
|
||||
{file = "networkx-2.5.tar.gz", hash = "sha256:7978955423fbc9639c10498878be59caf99b44dc304c2286162fd24b458c1602"},
|
||||
{file = "networkx-2.6.3-py3-none-any.whl", hash = "sha256:80b6b89c77d1dfb64a4c7854981b60aeea6360ac02c6d4e4913319e0a313abef"},
|
||||
{file = "networkx-2.6.3.tar.gz", hash = "sha256:c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51"},
|
||||
]
|
||||
nodeenv = [
|
||||
{file = "nodeenv-1.5.0-py2.py3-none-any.whl", hash = "sha256:5304d424c529c997bc888453aeaa6362d242b6b4631e90f3d4bf1b290f1c84a9"},
|
||||
{file = "nodeenv-1.5.0.tar.gz", hash = "sha256:ab45090ae383b716c4ef89e690c41ff8c2b257b85b309f01f3654df3d084bd7c"},
|
||||
{file = "nodeenv-1.6.0-py2.py3-none-any.whl", hash = "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7"},
|
||||
{file = "nodeenv-1.6.0.tar.gz", hash = "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b"},
|
||||
]
|
||||
packaging = [
|
||||
{file = "packaging-20.7-py2.py3-none-any.whl", hash = "sha256:eb41423378682dadb7166144a4926e443093863024de508ca5c9737d6bc08376"},
|
||||
{file = "packaging-20.7.tar.gz", hash = "sha256:05af3bb85d320377db281cf254ab050e1a7ebcbf5410685a9a407e18a1f81236"},
|
||||
{file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
|
||||
{file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
|
||||
]
|
||||
pdbpp = [
|
||||
{file = "pdbpp-0.10.2.tar.gz", hash = "sha256:73ff220d5006e0ecdc3e2705d8328d8aa5ac27fef95cc06f6e42cd7d22d55eb8"},
|
||||
{file = "pdbpp-0.10.3-py2.py3-none-any.whl", hash = "sha256:79580568e33eb3d6f6b462b1187f53e10cd8e4538f7d31495c9181e2cf9665d1"},
|
||||
{file = "pdbpp-0.10.3.tar.gz", hash = "sha256:d9e43f4fda388eeb365f2887f4e7b66ac09dce9b6236b76f63616530e2f669f5"},
|
||||
]
|
||||
platformdirs = [
|
||||
{file = "platformdirs-2.4.0-py3-none-any.whl", hash = "sha256:8868bbe3c3c80d42f20156f22e7131d2fb321f5bc86a2a345375c6481a67021d"},
|
||||
{file = "platformdirs-2.4.0.tar.gz", hash = "sha256:367a5e80b3d04d2428ffa76d33f124cf11e8fff2acdaa9b43d545f5c7d661ef2"},
|
||||
]
|
||||
pluggy = [
|
||||
{file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"},
|
||||
{file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
|
||||
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
|
||||
{file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
|
||||
]
|
||||
pre-commit = [
|
||||
{file = "pre_commit-2.9.2-py2.py3-none-any.whl", hash = "sha256:949b13efb7467ae27e2c8f9e83434dacf2682595124d8902554a4e18351e5781"},
|
||||
{file = "pre_commit-2.9.2.tar.gz", hash = "sha256:e31c04bc23741194a7c0b983fe512801e151a0638c6001c49f2bd034f8a664a1"},
|
||||
{file = "pre_commit-2.16.0-py2.py3-none-any.whl", hash = "sha256:758d1dc9b62c2ed8881585c254976d66eae0889919ab9b859064fc2fe3c7743e"},
|
||||
{file = "pre_commit-2.16.0.tar.gz", hash = "sha256:fe9897cac830aa7164dbd02a4e7b90cae49630451ce88464bca73db486ba9f65"},
|
||||
]
|
||||
py = [
|
||||
{file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"},
|
||||
{file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"},
|
||||
{file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
|
||||
{file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
|
||||
]
|
||||
pygments = [
|
||||
{file = "Pygments-2.7.3-py3-none-any.whl", hash = "sha256:f275b6c0909e5dafd2d6269a656aa90fa58ebf4a74f8fcf9053195d226b24a08"},
|
||||
{file = "Pygments-2.7.3.tar.gz", hash = "sha256:ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716"},
|
||||
{file = "Pygments-2.10.0-py3-none-any.whl", hash = "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380"},
|
||||
{file = "Pygments-2.10.0.tar.gz", hash = "sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6"},
|
||||
]
|
||||
pyparsing = [
|
||||
{file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
|
||||
{file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"},
|
||||
{file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"},
|
||||
{file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"},
|
||||
]
|
||||
pyreadline = [
|
||||
{file = "pyreadline-2.1.win-amd64.exe", hash = "sha256:9ce5fa65b8992dfa373bddc5b6e0864ead8f291c94fbfec05fbd5c836162e67b"},
|
||||
|
@ -392,34 +400,56 @@ pyrepl = [
|
|||
{file = "pyrepl-0.9.0.tar.gz", hash = "sha256:292570f34b5502e871bbb966d639474f2b57fbfcd3373c2d6a2f3d56e681a775"},
|
||||
]
|
||||
pytest = [
|
||||
{file = "pytest-6.1.2-py3-none-any.whl", hash = "sha256:4288fed0d9153d9646bfcdf0c0428197dba1ecb27a33bb6e031d002fa88653fe"},
|
||||
{file = "pytest-6.1.2.tar.gz", hash = "sha256:c0a7e94a8cdbc5422a51ccdad8e6f1024795939cc89159a0ae7f0b316ad3823e"},
|
||||
{file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
|
||||
{file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
|
||||
]
|
||||
pyyaml = [
|
||||
{file = "PyYAML-5.3.1-cp27-cp27m-win32.whl", hash = "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f"},
|
||||
{file = "PyYAML-5.3.1-cp27-cp27m-win_amd64.whl", hash = "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76"},
|
||||
{file = "PyYAML-5.3.1-cp35-cp35m-win32.whl", hash = "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2"},
|
||||
{file = "PyYAML-5.3.1-cp35-cp35m-win_amd64.whl", hash = "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c"},
|
||||
{file = "PyYAML-5.3.1-cp36-cp36m-win32.whl", hash = "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2"},
|
||||
{file = "PyYAML-5.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648"},
|
||||
{file = "PyYAML-5.3.1-cp37-cp37m-win32.whl", hash = "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"},
|
||||
{file = "PyYAML-5.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf"},
|
||||
{file = "PyYAML-5.3.1-cp38-cp38-win32.whl", hash = "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97"},
|
||||
{file = "PyYAML-5.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee"},
|
||||
{file = "PyYAML-5.3.1.tar.gz", hash = "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d"},
|
||||
{file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
|
||||
{file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
|
||||
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"},
|
||||
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"},
|
||||
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"},
|
||||
{file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"},
|
||||
{file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"},
|
||||
{file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"},
|
||||
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"},
|
||||
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"},
|
||||
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"},
|
||||
{file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"},
|
||||
{file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"},
|
||||
{file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"},
|
||||
{file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"},
|
||||
{file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"},
|
||||
{file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"},
|
||||
{file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"},
|
||||
{file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"},
|
||||
{file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"},
|
||||
{file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"},
|
||||
{file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"},
|
||||
{file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"},
|
||||
{file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"},
|
||||
{file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"},
|
||||
{file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"},
|
||||
{file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"},
|
||||
{file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"},
|
||||
{file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"},
|
||||
{file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"},
|
||||
{file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"},
|
||||
{file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"},
|
||||
{file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
|
||||
]
|
||||
six = [
|
||||
{file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"},
|
||||
{file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"},
|
||||
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
|
||||
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
|
||||
]
|
||||
toml = [
|
||||
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
|
||||
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
|
||||
]
|
||||
virtualenv = [
|
||||
{file = "virtualenv-20.2.1-py2.py3-none-any.whl", hash = "sha256:07cff122e9d343140366055f31be4dcd61fd598c69d11cd33a9d9c8df4546dd7"},
|
||||
{file = "virtualenv-20.2.1.tar.gz", hash = "sha256:e0aac7525e880a429764cefd3aaaff54afb5d9f25c82627563603f5d7de5a6e5"},
|
||||
{file = "virtualenv-20.10.0-py2.py3-none-any.whl", hash = "sha256:4b02e52a624336eece99c96e3ab7111f469c24ba226a53ec474e8e787b365814"},
|
||||
{file = "virtualenv-20.10.0.tar.gz", hash = "sha256:576d05b46eace16a9c348085f7d0dc8ef28713a2cabaa1cf0aea41e8f12c9218"},
|
||||
]
|
||||
wmctrl = [
|
||||
{file = "wmctrl-0.3.tar.gz", hash = "sha256:d806f65ac1554366b6e31d29d7be2e8893996c0acbb2824bbf2b1f49cf628a13"},
|
||||
{file = "wmctrl-0.4.tar.gz", hash = "sha256:66cbff72b0ca06a22ec3883ac3a4d7c41078bdae4fb7310f52951769b10e14e0"},
|
||||
]
|
||||
|
|
|
@ -6,7 +6,7 @@ authors = ["Gabriel Augendre <gabriel@augendre.info>"]
|
|||
license = "MIT"
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "3.8"
|
||||
python = "^3.10"
|
||||
networkx = "^2.5"
|
||||
pdbpp = "^0.10.2"
|
||||
|
||||
|
|
Loading…
Reference in a new issue