add: 2024/day06/part1
This commit is contained in:
parent
3c535c8036
commit
2d7ab5e287
42
2024/day06/part1.py
Normal file
42
2024/day06/part1.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
import math
|
||||||
|
|
||||||
|
text: str
|
||||||
|
|
||||||
|
with open("input.txt") as f:
|
||||||
|
text = f.read()
|
||||||
|
|
||||||
|
total: int = 0
|
||||||
|
|
||||||
|
lines = text.split("\n")
|
||||||
|
lines = [list(line) for line in lines]
|
||||||
|
|
||||||
|
x_max: int = len(lines[0])
|
||||||
|
y_max: int = len(lines)
|
||||||
|
|
||||||
|
spawn_index: int = text.index('^')
|
||||||
|
|
||||||
|
x: int = spawn_index % (x_max + 1)
|
||||||
|
y: int = spawn_index // (x_max + 1)
|
||||||
|
|
||||||
|
angle: int = math.pi * 3 / 2
|
||||||
|
|
||||||
|
while True:
|
||||||
|
new_x: int = round(x + math.cos(angle))
|
||||||
|
new_y: int = round(y + math.sin(angle))
|
||||||
|
|
||||||
|
if (not (x_max > new_x >= 0 and y_max > new_y >= 0)):
|
||||||
|
break
|
||||||
|
|
||||||
|
if (lines[new_y][new_x] == "#"):
|
||||||
|
angle += math.pi / 2
|
||||||
|
continue
|
||||||
|
|
||||||
|
x = new_x
|
||||||
|
y = new_y
|
||||||
|
if (lines[y][x] == '.'):
|
||||||
|
lines[y][x] = "X"
|
||||||
|
total += 1
|
||||||
|
|
||||||
|
print("\n".join(["".join(line) for line in lines]))
|
||||||
|
|
||||||
|
print(total + 1)
|
Loading…
Reference in New Issue
Block a user