My Advent of Code solutions in Python.
kevinyap.ca/2019/12/going-fast-in-advent-of-code/
advent-of-code
python
1# -*- coding: utf-8 -*-
2# import sys
3# import time
4import fileinput
5
6from utils import parse_line
7
8WIDTH = 50
9HEIGHT = 6
10SCREEN = [[False for _ in range(WIDTH)] for _ in range(HEIGHT)]
11
12# Make space for animated output
13# print '\n' * HEIGHT
14
15for line in fileinput.input():
16 if line.startswith('rect'):
17 a, b = parse_line(r'rect (\d+)x(\d+)', line)
18
19 for y in range(b):
20 for x in range(a):
21 SCREEN[y][x] = True
22
23 else:
24 rc, n, offset = parse_line(r'rotate (\w+) .=(\d+) by (\d+)', line)
25
26 if rc == 'row':
27 temp = SCREEN[n][:]
28 for i, x in enumerate(temp):
29 SCREEN[n][(offset+i) % WIDTH] = x
30
31 else:
32 temp = [row[n] for row in SCREEN]
33 for i, x in enumerate(temp):
34 SCREEN[(offset+i) % HEIGHT][n] = x
35
36
37 # sys.stdout.write('\033[F' * HEIGHT)
38
39 # for row in SCREEN:
40 # print ''.join('█' if x else ' ' for x in row)
41
42 # time.sleep(0.02)
43
44
45print ''
46for row in SCREEN:
47 print ''.join('█' if x else ' ' for x in row)
48
49print "\nNumber of lit pixels: %i" % sum(sum(row) for row in SCREEN)