#!/bin/python3 import sys,time,re from pprint import pprint sys.path.insert(0, '../../') from fred import list2int,get_re,nprint,lprint,grid_valid,loadFile,subTuples,addTuples,toGrid,get_value_in_direction start_time = time.time() input_f = 'test' part = 1 ######################################### # # # Part 1 # # # ######################################### def findAntinodes(grid:list,pos:set,current_node:set): print('Found',current_node,'at',pos) antinodes = [] for row in range(pos[0],len(grid)): for col in range(0,len(grid[1])): print(row,col) if get_value_in_direction(grid,(row,col)) == current_node and (row,col) != pos: print('Matched with',(row,col)) s = subTuples((row,col-1),pos) a = addTuples(s,(row,col+1)) if grid_valid(s[0],s[1],grid): print('Antinode at',s) antinodes.append(s) if grid_valid(a[0],a[1],grid): print('Antinode at',a) antinodes.append(a) return antinodes if part == 1: grid = toGrid(input_f) nprint(grid) size = (len(grid),len(grid[0])) antinodes = [] for row in range(0,size[0]): for col in range(0,size[1]): current_node = get_value_in_direction(grid,(row,col)) if current_node != '.': antinodes += findAntinodes(grid,(row,col),current_node) print(antinodes) for idx, i in enumerate(grid): for jdx, j in enumerate(i): if (idx, jdx) in antinodes: print('#', end=' ') # Print sign else: print(grid[idx][jdx], end=' ') # Regular grid element print() ######################################### # # # Part 2 # # # ######################################### if part == 2: exit() print("--- %s seconds ---" % (time.time() - start_time))