My Advent of Code solutions in Python. kevinyap.ca/2019/12/going-fast-in-advent-of-code/
advent-of-code python
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 49 lines 1.1 kB view raw
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)