advent24-llm / day14 /solution_gpt-4o.py
jerpint's picture
Add solution files
a4da721
file = "input.txt"
def parse_input(file):
robots = []
with open(file, 'r') as f:
for line in f:
parts = line.strip().split()
pos = tuple(map(int, parts[0][2:].split(',')))
vel = tuple(map(int, parts[1][2:].split(',')))
robots.append((pos, vel))
return robots
def simulate_robots(robots, width, height, seconds):
positions = []
for pos, vel in robots:
x, y = pos
vx, vy = vel
# Calculate new position after 'seconds' seconds
new_x = (x + vx * seconds) % width
new_y = (y + vy * seconds) % height
positions.append((new_x, new_y))
return positions
def count_quadrants(positions, width, height):
mid_x = width // 2
mid_y = height // 2
quadrants = [0, 0, 0, 0] # Q1, Q2, Q3, Q4
for x, y in positions:
if x == mid_x or y == mid_y:
continue # Skip robots exactly on the middle lines
if x < mid_x and y < mid_y:
quadrants[0] += 1 # Q1
elif x >= mid_x and y < mid_y:
quadrants[1] += 1 # Q2
elif x < mid_x and y >= mid_y:
quadrants[2] += 1 # Q3
elif x >= mid_x and y >= mid_y:
quadrants[3] += 1 # Q4
return quadrants
def calculate_safety_factor(quadrants):
return quadrants[0] * quadrants[1] * quadrants[2] * quadrants[3]
robots = parse_input(file)
width, height = 101, 103
seconds = 100
positions_after_100_seconds = simulate_robots(robots, width, height, seconds)
quadrants = count_quadrants(positions_after_100_seconds, width, height)
safety_factor = calculate_safety_factor(quadrants)
print(safety_factor)