2024-12-09 16:50:28 -06:00

59 lines
1.7 KiB
Python

import time
start_time = time.time()
with open('puzzle.txt', 'r') as f:
lines = f.read().splitlines()
total_antinodes = 0
antenna_map = {}
for line_index, line in enumerate(lines):
for column_index, column in enumerate(list(line)):
if line_index not in antenna_map:
antenna_map[line_index] = {}
if column_index not in antenna_map[line_index]:
antenna_map[line_index][column_index] = {
'value': line[column_index],
}
antenna_coordinates = {}
for line in antenna_map:
for column in antenna_map[line]:
if antenna_map[line][column]['value'] != '.':
if not antenna_map[line][column]['value'] in antenna_coordinates:
antenna_coordinates[antenna_map[line][column]['value']] = [[line, column]]
else:
antenna_coordinates[antenna_map[line][column]['value']].append([line, column])
for antenna in antenna_coordinates:
for index_a, antenna_a_coords in enumerate(antenna_coordinates[antenna]):
a_y, a_x = antenna_a_coords
for index_b, antenna_b_coords in enumerate(
antenna_coordinates[antenna][:index_a] + antenna_coordinates[antenna][index_a + 1:]):
b_y, b_x = antenna_b_coords
try:
antenna_map[a_y + (a_y - b_y)][a_x + (a_x - b_x)]['value'] = '#'
except KeyError:
continue
map_string = ""
for line in antenna_map:
for column in antenna_map[line]:
map_string += antenna_map[line][column]['value']
if antenna_map[line][column]['value'] == '#':
total_antinodes += 1
map_string += "\n"
print(map_string)
print(total_antinodes)
print(f'Total time: {time.time() - start_time}')