Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- data = np.genfromtxt('input', dtype='str', delimiter='Z') #delimiter = 'Z' is just my way of making sure it keeps lines together and doesn't decide to split them for no reason
- enchancement = data[0]
- image_str = data[1:]
- image = np.zeros([4+len(image_str),4+len(image_str[0])])
- for i in range(len(image_str)):
- image[2+i,2:-2] = [int(n) for n in image_str[i]]
- def get_enhanced(image, enchancement):
- ret = 0*image
- for i in range(ret.shape[0]):
- for j in range(ret.shape[1]):
- ret[i,j] = int(enchancement[int(image[i,j])])
- return ret
- def get_rolled(image):
- ret = 0
- ret += 2**8 * np.roll(image,(1,1),axis=(0,1))
- ret += 2**7 * np.roll(image,(1,0),axis=(0,1))
- ret += 2**6 * np.roll(image,(1,-1),axis=(0,1))
- ret += 2**5 * np.roll(image,(0,1),axis=(0,1))
- ret += 2**4 * np.roll(image,(0,0),axis=(0,1))
- ret += 2**3 * np.roll(image,(0,-1),axis=(0,1))
- ret += 2**2 * np.roll(image,(-1,1),axis=(0,1))
- ret += 2**1 * np.roll(image,(-1,0),axis=(0,1))
- ret += 2**0 * np.roll(image,(-1,-1),axis=(0,1))
- return ret
- def enhance(image, enchancement):
- if image[0,0] == 0:
- new_image = np.ones([image.shape[0]+4,image.shape[1]+4])
- else:
- new_image = np.zeros([image.shape[0]+4,image.shape[1]+4])
- new_image[2:-2,2:-2] = get_rolled(image)
- new_image[2:-2,2:-2] = get_enhanced(new_image[2:-2,2:-2],enchancement)
- return new_image
- #part1
- image = enhance(image, enchancement)
- image = enhance(image, enchancement)
- print(np.sum(image))
- #part2
- for i in range(48):
- image = enhance(image, enchancement)
- print(np.sum(image))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement