Luke 8, Advent of Code:
SPOILER ALERT! Vis spoiler
Mistenker at denne koden ikke akkurat er effektiv, men den fungerer. Brukte numpy, og transponerte bare matrisen for å "rulle" kolonnene.
Resultat:
Kode:
Kode
import numpy as np
def print_screen(screen):
print '\n'.join(''.join('#' if i == 1 else ' ' for i in row) for row in screen)
def roll_row(screen, row, n):
screen[row] = np.roll(screen[row], n)
def roll_col(screen, col, n):
tmp = np.transpose(screen)
tmp[col] = np.roll(tmp[col], n)
screen = np.transpose(tmp)
def rect(screen, x, y):
screen[0:y, 0:x] = 1
def day_8():
screen = np.zeros((6, 50), dtype=np.int)
with open('8.txt') as ifile:
for instruction in ifile:
words = instruction.strip().split(' ')
if 'rect' in instruction:
rect(screen, *map(int, words[1].split('x')))
else:
n = int(words[2][2:])
x = int(words[-1])
if words[1] == 'row':
roll_row(screen, n, x)
else:
roll_col(screen, n, x)
print_screen(screen)
print '\nPixels lit: {}'.format(sum(sum(screen)))
if __name__ == '__main__':
day_8()