with open('day4.txt') as f: l = [line.rstrip().split() for line in f] # l = [["MMMSXXMASM"], # ["MSAMXMSMSA"], # ["AMXSXMAAMM"], # ["MSAMASMSMX"], # ["XMASAMXAMM"], # ["XXAMMXXAMA"], # ["SMSMSASXSS"], # ["SAXAMASAAA"], # ["MAMMMXMMMM"], # ["MXMXAXMASX"]] print(l[1][0][1] + l[1][0][2]) def search_left(l,i,j): #horizontal backwards word = "" print(l[i][0][j]) for k in range(4): word += l[i][0][j-k] print("word", word) if word == "XMAS" : return True else : return False def search_right(l,i,j): #horizontal forward word = "" for k in range(4): word += l[i][0][j+k] print("word", word) if word == "XMAS" : return True else : return False def search_up(l,i,j): #horizontal forward word = "" for k in range(4): word += l[i-k][0][j] print("word", word) if word == "XMAS" : return True else : return False def search_down(l,i,j): #horizontal forward word = "" for k in range(4): word += l[i+k][0][j] print("word", word) if word == "XMAS" : return True else : return False def search_up_left(l,i,j): #horizontal forward word = "" for k in range(4): word += l[i-k][0][j-k] print("word", word) if word == "XMAS" : return True else : return False def search_up_right(l,i,j): #horizontal forward word = "" for k in range(4): word += l[i-k][0][j+k] print("word", word) if word == "XMAS" : return True else : return False def search_down_left(l,i,j): #horizontal forward word = "" for k in range(4): word += l[i+k][0][j-k] print("word", word) if word == "XMAS" : return True else : return False def search_down_right(l,i,j): #horizontal forward word = "" for k in range(4): word += l[i+k][0][j+k] print("word", word) if word == "XMAS" : return True else : return False def search_mas(l,i,k): diag1 = l[i-1][0][j-1] + l[i][0][j] + l[i+1][0][j+1] diag2 = l[i+1][0][j-1] + l[i][0][j] + l[i-1][0][j+1] if diag1 == "MAS" or diag1 == "SAM": if diag2 == "MAS" or diag2 == "SAM": return True else : return False if __name__=="__main__": PART1 = False cnt = 0 if PART1 : for i in range(len(l)): for j in range(len(l[i][0])): if j - 3 >= 0: xmas = search_left(l,i,j) print("XMAS left",xmas) if xmas: cnt+=1 "not working left" if j + 3 <= len(l[i][0])-1: xmas = search_right(l,i,j) print("XMAS right",xmas) if xmas: cnt+=1 "not working right" if i - 3 >= 0 : xmas = search_up(l,i,j) print("XMAS up",xmas) if xmas: cnt+=1 "not working up" if i + 3 <= len(l) - 1: xmas = search_down(l,i,j) print("XMAS down",xmas) if xmas: cnt+=1 "not working down" if j - 3 >= 0 and i - 3 >= 0 : xmas = search_up_left(l,i,j) print("XMAS up left",xmas) if xmas: cnt+=1 "not working up left" if j + 3 <= len(l[i][0])-1 and i - 3 >= 0: xmas = search_up_right(l,i,j) print("XMAS upright",xmas) if xmas: cnt+=1 "not working upright" if j - 3 >= 0 and i + 3 <= len(l)-1: xmas = search_down_left(l,i,j) print("XMAS down left",xmas) if xmas: cnt+=1 "not working down left" if j + 3 <= len(l[i][0])-1 and i + 3 <= len(l)-1: xmas = search_down_right(l,i,j) print("XMAS down right",xmas) if xmas: cnt+=1 "not working down right" else: cnt = 0 for i in range(len(l)): for j in range(len(l[i][0])): if l[i][0][j] == "A": if j - 1 >= 0 and i + 1 <= len(l)-1 and j + 1 <= len(l[i][0])-1 and i - 1 >= 0: xmas = search_mas(l,i,j) print("x-mas", xmas) if xmas : cnt += 1 print(cnt)