42 lines
779 B
Python
42 lines
779 B
Python
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) |