From 3a96aff0a398640ebc59c4f756ee61a5fb196a5a Mon Sep 17 00:00:00 2001 From: Matthias Bilger Date: Fri, 11 Dec 2020 08:15:36 +0100 Subject: [PATCH] use 2d array --- day11/module.py | 58 +++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/day11/module.py b/day11/module.py index 7e95b08..7cb02c6 100644 --- a/day11/module.py +++ b/day11/module.py @@ -12,12 +12,12 @@ def pw(line): def p1(): inp = get_input(pw) - grid = {} width = len(inp[0]) height = len(inp) + grid = [['' for y in x] for x in inp] for y, sample in enumerate(inp): for x, o in enumerate(sample): - grid[(x,y)] = o + grid[y][x] = o changed = True adj = [(-1, 0), (0, -1), (1, 0), (0, 1), (1,-1), (1,1), (-1, 1), (-1, -1)] @@ -30,28 +30,29 @@ def p1(): count = 0 for ax, ay in adj: try: - if grid[(x+ax, y+ay)] == '#': + if grid[y+ay][x+ax] == '#': count += 1 except: pass - if count == 0 and grid[(x,y)] == 'L': - newgrid[(x,y)] = '#' + if count == 0 and grid[y][x] == 'L': + newgrid[y][x] = '#' changed = True ccnt += 1 - if count >= 4 and grid[(x,y)] == '#': - newgrid[(x,y)] = 'L' + if count >= 4 and grid[y][x] == '#': + newgrid[y][x] = 'L' changed = True ccnt += 1 grid = newgrid count = 0 - if draw(): - for y in range(height): - for x in range(width): - print(grid[(x,y)], end='') - if grid[(x,y)] == '#': - count += 1 + for y in range(height): + for x in range(width): + if draw(): + print(grid[y][x], end='') + if grid[y][x] == '#': + count += 1 + if draw(): print() print(count) @@ -59,12 +60,12 @@ def p1(): def p2(inp): - grid = {} width = len(inp[0]) height = len(inp) + grid = [['' for y in x] for x in inp] for y, sample in enumerate(inp): for x, o in enumerate(sample): - grid[(x,y)] = o + grid[y][x] = o changed = True adj = [(-1, 0), (0, -1), (1, 0), (0, 1), (1,-1), (1,1), (-1, 1), (-1, -1)] @@ -74,7 +75,7 @@ def p2(inp): changed = False for y in range(height): for x in range(width): - if grid[(x,y)] == '.': + if grid[y][x] == '.': continue count = 0 for ax, ay in adj: @@ -82,7 +83,7 @@ def p2(inp): ay1 = ay while True: try: - if grid[(x+ax, y+ay)] == '.': + if grid[y+ay][x+ax] == '.': ax += ax1 ay += ay1 else: @@ -90,28 +91,29 @@ def p2(inp): except: break try: - if grid[(x+ax, y+ay)] == '#': + if grid[y+ay][x+ax] == '#': count += 1 except: pass - if count == 0 and grid[(x,y)] == 'L': - newgrid[(x,y)] = '#' + if count == 0 and grid[y][x] == 'L': + newgrid[y][x] = '#' changed = True ccnt += 1 - if count >= 5 and grid[(x,y)] == '#': - newgrid[(x,y)] = 'L' + if count >= 5 and grid[y][x] == '#': + newgrid[y][x] = 'L' changed = True ccnt += 1 grid = newgrid count = 0 - if draw(): - for y in range(height): - for x in range(width): - print(grid[(x,y)], end='') - if grid[(x,y)] == '#': - count += 1 + for y in range(height): + for x in range(width): + if draw(): + print(grid[y][x], end='') + if grid[y][x] == '#': + count += 1 + if draw(): print() print(count)