#!/usr/bin/env python3 import sys input_file = sys.argv[1] with open(input_file) as fd: lines = [line.rstrip() for line in fd.readlines()] height = len(lines) width = len(lines[0]) word = "XMAS" directions = [ (0, 1), (1, 1), (1, 0), (1, -1), (0, -1), (-1, -1), (-1, 0), (-1, 1), ] arrows = ["➡️", "↘️", "⬇️", "↙️", "⬅️", "↖️", "⬆️", "↗️"] assert len(directions) == len(set(directions)) viz = [["."] * width for i in range(height)] count = 0 for i in range(height): for j in range(width): for direction in directions: ii = i jj = j for letter in word: if ( ii not in range(height) or jj not in range(width) or lines[ii][jj] != letter ): break ii += direction[0] jj += direction[1] else: count += 1 # d = directions.index(direction) # viz[i][j] = arrows[d] ii = i jj = j for letter in word: viz[ii][jj] = letter ii += direction[0] jj += direction[1] for line in viz: print("".join(line)) print(count)