import logging import sys # Logger setup logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) stream_handler = logging.StreamHandler() logger.addHandler(stream_handler) def main(): with open("input.txt", "r") as input: matrix = getMatrixFromString(input) output = getRollsFewerThan(matrix, 4) logger.info("Output: " + str(output)) def getMatrixFromString(data): output = [] for line in data: line = line.strip() line_output = [] for i in range(len(line)): char = line[i] if char == "@": line_output.append(True) elif char == ".": line_output.append(False) else: logger.error("Unexpected char: " + char) output.append(line_output) return output def getRollsFewerThan(matrix, n): output = 0 for i in range(len(matrix)): for j in range(len(matrix[i])): if not matrix[i][j]: continue adj = 0 # Si on est a la première ligne if(i == 0): # Si on est a la première colonne if(j == 0): if(matrix[i][j + 1]): adj += 1 if(matrix[i + 1][j]): adj += 1 if(matrix[i + 1][j + 1]): adj += 1 # Si on est a la dernière colonne elif(j == (len(matrix[i]) - 1)): if(matrix[i][j - 1]): adj += 1 if(matrix[i + 1][j - 1]): adj += 1 if(matrix[i + 1][j]): adj += 1 else: if(matrix[i][j - 1]): adj += 1 if(matrix[i][j + 1]): adj += 1 if(matrix[i + 1][j - 1]): adj += 1 if(matrix[i + 1][j]): adj += 1 if(matrix[i + 1][j + 1]): adj += 1 # Si on est a la dernière ligne elif(i == (len(matrix) - 1)): # Si on est a la première colonne if(j == 0): if(matrix[i - 1][j]): adj += 1 if(matrix[i - 1][j + 1]): adj += 1 if(matrix[i][j + 1]): adj += 1 # Si on est a la dernière colonne elif(j == (len(matrix[i]) - 1)): if(matrix[i - 1][j - 1]): adj += 1 if(matrix[i - 1][j]): adj += 1 if(matrix[i][j - 1]): adj += 1 else: if(matrix[i - 1][j - 1]): adj += 1 if(matrix[i - 1][j]): adj += 1 if(matrix[i - 1][j + 1]): adj += 1 if(matrix[i][j - 1]): adj += 1 if(matrix[i][j + 1]): adj += 1 else: # Si on est a la première colonne if(j == 0): if(matrix[i - 1][j]): adj += 1 if(matrix[i - 1][j + 1]): adj += 1 if(matrix[i][j + 1]): adj += 1 if(matrix[i + 1][j]): adj += 1 if(matrix[i + 1][j + 1]): adj += 1 # Si on est a la dernière colonne elif(j == (len(matrix[i]) - 1)): if(matrix[i - 1][j - 1]): adj += 1 if(matrix[i - 1][j]): adj += 1 if(matrix[i][j - 1]): adj += 1 if(matrix[i + 1][j - 1]): adj += 1 if(matrix[i + 1][j]): adj += 1 else: if(matrix[i - 1][j - 1]): adj += 1 if(matrix[i - 1][j]): adj += 1 if(matrix[i - 1][j + 1]): adj += 1 if(matrix[i][j - 1]): adj += 1 if(matrix[i][j + 1]): adj += 1 if(matrix[i + 1][j - 1]): adj += 1 if(matrix[i + 1][j]): adj += 1 if(matrix[i + 1][j + 1]): adj += 1 print("adj[" + str(i) + "][" + str(j) + "]=" + str(adj)) if(adj < n): print("Found one at [" + str(i) + "][" + str(j) + "]") output += 1 return output if __name__ == "__main__": main()