#!/usr/bin/env python import numpy as np from scipy.ndimage import convolve with open('day20.txt') as data: algo, image = data.read().split('\n\n') algo = np.array(list(algo)) algo = (algo == '#').astype(int) image = np.stack(list(map(list, image.strip().split('\n')))) image = (image == '#').astype(int) image = np.pad(image, (100, 100)) weights = 2 ** np.arange(9).reshape(3,3) # part 1 for i in range(50): image = algo[convolve(image, weights)] if i == 1: print(image.sum()) print(image.sum())