1
+ from numpy .core .fromnumeric import diagonal
1
2
from hydrothermal_venture import VentMap , np , Path
2
3
from hydrothermal_venture import puzzle_1 , puzzle_2
3
4
import pytest
@@ -60,6 +61,35 @@ def endstate_map():
60
61
[2 , 2 , 2 , 1 , 1 , 1 , 0 , 0 , 0 , 0 ]])
61
62
62
63
64
+ @pytest .fixture
65
+ def diagonal_mark ():
66
+ return ([5 , 5 , 8 , 2 ],
67
+ np .array ([[0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
68
+ [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
69
+ [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 ],
70
+ [0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 ],
71
+ [0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 ],
72
+ [0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 ],
73
+ [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
74
+ [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
75
+ [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
76
+ [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]]))
77
+
78
+
79
+ @pytest .fixture
80
+ def endstate_diagonal_map ():
81
+ return np .array ([[1 , 0 , 1 , 0 , 0 , 0 , 0 , 1 , 1 , 0 ],
82
+ [0 , 1 , 1 , 1 , 0 , 0 , 0 , 2 , 0 , 0 ],
83
+ [0 , 0 , 2 , 0 , 1 , 0 , 1 , 1 , 1 , 0 ],
84
+ [0 , 0 , 0 , 1 , 0 , 2 , 0 , 2 , 0 , 0 ],
85
+ [0 , 1 , 1 , 2 , 3 , 1 , 3 , 2 , 1 , 1 ],
86
+ [0 , 0 , 0 , 1 , 0 , 2 , 0 , 0 , 0 , 0 ],
87
+ [0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 ],
88
+ [0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 ],
89
+ [1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 ],
90
+ [2 , 2 , 2 , 1 , 1 , 1 , 0 , 0 , 0 , 0 ]])
91
+
92
+
63
93
@pytest .mark .parametrize (("line, line_mark" ), [
64
94
([0 , 9 , 5 , 9 ], line2_mark ), ([2 , 2 , 2 , 1 ], line1_mark )
65
95
])
@@ -80,7 +110,22 @@ def test_ventmap_calculate_overlap(vent_map, endstate_map):
80
110
81
111
def test_puzzle_1 ():
82
112
assert puzzle_1 (Path (__file__ ).parent / "puzzle_1_test_input.txt" ) == 5
83
- #
84
- #
113
+
114
+
115
+ def test_ventmap_diagonal_mark (vent_map , diagonal_mark ):
116
+ endpoints , endstate = diagonal_mark
117
+ vent_map .mark_line (endpoints = endpoints , diagonal = True )
118
+ assert np .equal (vent_map .map , endstate ).all ()
119
+
120
+
121
+ def test_ventmap_diagonal_mark_all_lines (vent_map , list_of_lines , endstate_diagonal_map ):
122
+ vent_map .mark_all_lines (endpoints_list = list_of_lines , diagonal = True )
123
+ assert np .equal (vent_map .map , endstate_diagonal_map ).all ()
124
+
125
+
126
+ def test_puzzle_2 ():
127
+ assert puzzle_2 (Path (__file__ ).parent / "puzzle_1_test_input.txt" ) == 12
128
+
129
+ #
85
130
# def test_puzzle_2():
86
131
# assert puzzle_2(Path(__file__).parent / "puzzle_1_test_input.txt") == 1924
0 commit comments