advent24-llm / day14 /solution_gemini-1.5-pro.py
jerpint's picture
Add solution files
a4da721
def parse_input(file):
robots = []
with open(file, 'r') as f:
for line in f:
parts = line.strip().split()
p_str = parts[0][2:-1].split(',')
v_str = parts[1][2:-1].split(',')
robots.append(
((int(p_str[0]), int(p_str[1])), (int(v_str[0]), int(v_str[1])))
)
return robots
def simulate(robots, seconds, width, height):
positions = []
for (px, py), (vx, vy) in robots:
new_x = (px + vx * seconds) % width
new_y = (py + vy * seconds) % height
positions.append((new_x, new_y))
return positions
def calculate_safety_factor(positions, width, height):
quadrants = [0] * 4
for x, y in positions:
if x < width // 2 and y < height // 2:
quadrants[0] += 1
elif x > width // 2 and y < height // 2:
quadrants[1] += 1
elif x < width // 2 and y > height // 2:
quadrants[2] += 1
elif x > width // 2 and y > height // 2:
quadrants[3] += 1
return quadrants[0] * quadrants[1] * quadrants[2] * quadrants[3]
def find_easter_egg(robots, width, height):
seconds = 0
while True:
positions = simulate(robots, seconds, width, height)
min_x = min(p[0] for p in positions)
max_x = max(p[0] for p in positions)
min_y = min(p[1] for p in positions)
max_y = max(p[1] for p in positions)
if (max_x - min_x) * (max_y - min_y) < 1000: # Adjust threshold as needed
return seconds
seconds += 1
file = "./input.txt"
robots = parse_input(file)
width = 101
height = 103
positions_after_100 = simulate(robots, 100, width, height)
safety_factor = calculate_safety_factor(positions_after_100, width, height)
print(safety_factor)
easter_egg_time = find_easter_egg(robots, width, height)
print(easter_egg_time)