From 8bc7688e6c3b35e38838d4c8d181795710c21f86 Mon Sep 17 00:00:00 2001 From: Frederik Baerentsen Date: Fri, 15 Dec 2023 13:45:31 -0500 Subject: [PATCH] Working on 2023-12-13 p1 --- 2023/day13/part1.py | 63 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/2023/day13/part1.py b/2023/day13/part1.py index 0a3fd9d..c8bff86 100644 --- a/2023/day13/part1.py +++ b/2023/day13/part1.py @@ -3,6 +3,7 @@ import os from pprint import pprint import time import math +import numpy as np #colors from termcolor import colored @@ -21,7 +22,13 @@ def p(x,*args): print() -with open(sys.argv[1]) as file: +input_f = '' +if len(sys.argv) == 1: + input_f = 'test' +else: + input_f = sys.argv[1] + +with open(input_f) as file: for line in file: grid.append(list(line.rstrip())) @@ -35,17 +42,42 @@ def rotate_grid(grid,times): p(grid) return grid -def find_sym(grid): +def find_sym_col(grid): mirror = 0 found = False - for c,col in enumerate(grid): if c+1 < len(col) and not found: + #print('Testing columns' + str(c)) + mirror_count = 0 + for i in range(len(grid)): + #print(grid[i][c],grid[i][c+1]) + if grid[i][c] == grid[i][c+1]: + mirror_count += 1 + else: + break + if mirror_count == len(grid): + found = True + #print('mirror at ' + str(c)) + + for x in range(c,-1,-1): + if (c-x)+c+1 < len(col): + #print(x,(c-x)+c+1) + mirror = False + for y in range(len(grid)): + if grid[y][x] == grid[y][(c-x)+c+1]: + #print(grid[y][x],grid[y][(c-x)+c+1]) + mirror = c+1 + else: + return None + return mirror +def find_sym_row(grid): + mirror = 0 + found = False for r,row in enumerate(grid): if r+1 < len(grid) and not found: - print('testing ' + str(r)) + #print('testing rows' + str(r)) if grid[r] == grid[r+1]: for c in range(r,-1,-1): if (r-c)+r+1 < len(grid): @@ -57,12 +89,29 @@ def find_sym(grid): return mirror tmp = [] + + +def find_sym(grid): + p(grid) + t = find_sym_col(grid) + if t == None: + return find_sym_row(grid), 'r' + else: + return t,'c' + + +result = 0 for i in grid: if i == []: - print('new grid') - pprint(tmp) - print(find_sym(tmp)) + t = find_sym(tmp) + print(t) + input() + if t[1] == 'c': + result += t[0] + if t[1] == 'r': + result = result + (100*t[0]) tmp = [] else: tmp.append(i) +print(result)