import sys import os from pprint import pprint import time import math import numpy as np #colors from termcolor import colored grid = [] def p(x,*args): for idx,i in enumerate(x): for jdx,j in enumerate(i): if j == '#': print(colored(j,'red'),end='') #elif (idx,jdx) in steps: # print(colored(j,'green'),end='') else: print(j,end='') print() 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())) steps = [] ngrid = [] def rotate_grid(grid,times): for i in range(times): grid = list(zip(*grid[::-1])) p(grid) return 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 rows' + str(r)) if grid[r] == grid[r+1]: for c in range(r,-1,-1): if (r-c)+r+1 < len(grid): if grid[c] == grid[(r-c)+r+1]: found = True mirror = r+1 else: return None 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 == []: 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)