advent24-llm / day08 /solution_gemini-1.5-pro.py
jerpint's picture
Add solution files
a4da721
raw
history blame
1.65 kB
def solve():
with open("./input.txt", "r") as f:
grid = [list(line.strip()) for line in f]
rows = len(grid)
cols = len(grid[0])
def part1():
antinodes = set()
for r1 in range(rows):
for c1 in range(cols):
freq = grid[r1][c1]
for r2 in range(rows):
for c2 in range(cols):
if grid[r2][c2] == freq and (r1, c1) != (r2, c2):
dr = r2 - r1
dc = c2 - c1
r3 = r2 + dr
c3 = c2 + dc
if 0 <= r3 < rows and 0 <= c3 < cols:
antinodes.add((r3, c3))
r3 = r1 - dr
c3 = c1 - dc
if 0 <= r3 < rows and 0 <= c3 < cols:
antinodes.add((r3, c3))
return len(antinodes)
def part2():
antinodes = set()
for r1 in range(rows):
for c1 in range(cols):
freq = grid[r1][c1]
for r2 in range(rows):
for c2 in range(cols):
if grid[r2][c2] == freq and (r1, c1) != (r2, c2):
for r3 in range(rows):
for c3 in range(cols):
if (r3*(c2-c1) - c3*(r2-r1)) == (r1*(c2-c1) - c1*(r2-r1)):
antinodes.add((r3,c3))
return len(antinodes)
print(part1())
print(part2())
solve()