|
115 | 115 | "metadata": {}, |
116 | 116 | "outputs": [], |
117 | 117 | "source": [ |
118 | | - "def is_horisontal_mirror(grid, row):\n", |
119 | | - " up = row-1\n", |
120 | | - " down = row\n", |
| 118 | + "def is_mirror_line(grid, line):\n", |
| 119 | + " up = line-1\n", |
| 120 | + " down = line\n", |
121 | 121 | " \n", |
122 | 122 | " while up >= 0 and down < len(grid):\n", |
123 | 123 | " if grid[up] != grid[down]:\n", |
124 | 124 | " return False\n", |
125 | 125 | " up -= 1\n", |
126 | 126 | " down += 1\n", |
127 | | - " return True\n", |
128 | | - "\n", |
129 | | - "def is_vertical_mirror(grid, column):\n", |
130 | | - " left = column-1\n", |
131 | | - " right = column\n", |
132 | | - " \n", |
133 | | - " while left >= 0 and right < len(grid):\n", |
134 | | - " if grid[left] != grid[right]:\n", |
135 | | - " return False\n", |
136 | | - " left -= 1\n", |
137 | | - " right += 1\n", |
138 | 127 | " return True" |
139 | 128 | ] |
140 | 129 | }, |
|
157 | 146 | "source": [ |
158 | 147 | "def find_reflection_point(grid):\n", |
159 | 148 | " for y in range(1, len(grid)):\n", |
160 | | - " if is_horisontal_mirror(grid, y):\n", |
| 149 | + " if is_mirror_line(grid, y):\n", |
161 | 150 | " return 100 * y\n", |
162 | 151 | " \n", |
163 | 152 | " transposed = list(zip(*grid))\n", |
164 | 153 | " for x in range(1, len(transposed)):\n", |
165 | | - " if is_vertical_mirror(transposed, x):\n", |
| 154 | + " if is_mirror_line(transposed, x):\n", |
166 | 155 | " return x\n", |
167 | 156 | "\n", |
168 | 157 | " return None" |
|
291 | 280 | "source": [ |
292 | 281 | "def find_reflection_point_part_2(grid, disallowed_value):\n", |
293 | 282 | " for y in range(1, len(grid)):\n", |
294 | | - " if is_horisontal_mirror(grid, y):\n", |
| 283 | + " if is_mirror_line(grid, y):\n", |
295 | 284 | " if y * 100 == disallowed_value:\n", |
296 | 285 | " continue\n", |
297 | 286 | " return 100 * y\n", |
298 | 287 | " \n", |
299 | 288 | " transposed = list(zip(*grid))\n", |
300 | 289 | " for x in range(1, len(transposed)):\n", |
301 | | - " if is_vertical_mirror(transposed, x):\n", |
| 290 | + " if is_mirror_line(transposed, x):\n", |
302 | 291 | " if x == disallowed_value:\n", |
303 | 292 | " continue\n", |
304 | 293 | " return x\n", |
|
342 | 331 | "metadata": {}, |
343 | 332 | "outputs": [ |
344 | 333 | { |
345 | | - "name": "stdout", |
346 | | - "output_type": "stream", |
347 | | - "text": [ |
348 | | - "Solution: 32312\n" |
| 334 | + "ename": "NameError", |
| 335 | + "evalue": "name 'is_horisontal_mirror' is not defined", |
| 336 | + "output_type": "error", |
| 337 | + "traceback": [ |
| 338 | + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", |
| 339 | + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", |
| 340 | + "Cell \u001b[0;32mIn[8], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m part_2 \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, grid \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(grids):\n\u001b[0;32m----> 3\u001b[0m part_2 \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[43mflip_until_found\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgrid\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreflection_points\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSolution: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpart_2\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m part_2 \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m32312\u001b[39m\n", |
| 341 | + "Cell \u001b[0;32mIn[7], line 5\u001b[0m, in \u001b[0;36mflip_until_found\u001b[0;34m(grid, disallowed_value)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;28mlen\u001b[39m(grid[y])):\n\u001b[1;32m 4\u001b[0m new_grid \u001b[38;5;241m=\u001b[39m flip(y, x, grid)\n\u001b[0;32m----> 5\u001b[0m potential_reflection_point \u001b[38;5;241m=\u001b[39m \u001b[43mfind_reflection_point_part_2\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnew_grid\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdisallowed_value\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m potential_reflection_point \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m potential_reflection_point\n", |
| 342 | + "Cell \u001b[0;32mIn[6], line 3\u001b[0m, in \u001b[0;36mfind_reflection_point_part_2\u001b[0;34m(grid, disallowed_value)\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mfind_reflection_point_part_2\u001b[39m(grid, disallowed_value):\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m y \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m1\u001b[39m, \u001b[38;5;28mlen\u001b[39m(grid)):\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[43mis_horisontal_mirror\u001b[49m(grid, y):\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m y \u001b[38;5;241m*\u001b[39m \u001b[38;5;241m100\u001b[39m \u001b[38;5;241m==\u001b[39m disallowed_value:\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m\n", |
| 343 | + "\u001b[0;31mNameError\u001b[0m: name 'is_horisontal_mirror' is not defined" |
349 | 344 | ] |
350 | 345 | } |
351 | 346 | ], |
|
0 commit comments