use 2d array
This commit is contained in:
@@ -12,12 +12,12 @@ def pw(line):
|
|||||||
|
|
||||||
def p1():
|
def p1():
|
||||||
inp = get_input(pw)
|
inp = get_input(pw)
|
||||||
grid = {}
|
|
||||||
width = len(inp[0])
|
width = len(inp[0])
|
||||||
height = len(inp)
|
height = len(inp)
|
||||||
|
grid = [['' for y in x] for x in inp]
|
||||||
for y, sample in enumerate(inp):
|
for y, sample in enumerate(inp):
|
||||||
for x, o in enumerate(sample):
|
for x, o in enumerate(sample):
|
||||||
grid[(x,y)] = o
|
grid[y][x] = o
|
||||||
|
|
||||||
changed = True
|
changed = True
|
||||||
adj = [(-1, 0), (0, -1), (1, 0), (0, 1), (1,-1), (1,1), (-1, 1), (-1, -1)]
|
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
|
count = 0
|
||||||
for ax, ay in adj:
|
for ax, ay in adj:
|
||||||
try:
|
try:
|
||||||
if grid[(x+ax, y+ay)] == '#':
|
if grid[y+ay][x+ax] == '#':
|
||||||
count += 1
|
count += 1
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
if count == 0 and grid[(x,y)] == 'L':
|
if count == 0 and grid[y][x] == 'L':
|
||||||
newgrid[(x,y)] = '#'
|
newgrid[y][x] = '#'
|
||||||
changed = True
|
changed = True
|
||||||
ccnt += 1
|
ccnt += 1
|
||||||
if count >= 4 and grid[(x,y)] == '#':
|
if count >= 4 and grid[y][x] == '#':
|
||||||
newgrid[(x,y)] = 'L'
|
newgrid[y][x] = 'L'
|
||||||
changed = True
|
changed = True
|
||||||
ccnt += 1
|
ccnt += 1
|
||||||
grid = newgrid
|
grid = newgrid
|
||||||
|
|
||||||
|
|
||||||
count = 0
|
count = 0
|
||||||
if draw():
|
|
||||||
for y in range(height):
|
for y in range(height):
|
||||||
for x in range(width):
|
for x in range(width):
|
||||||
print(grid[(x,y)], end='')
|
if draw():
|
||||||
if grid[(x,y)] == '#':
|
print(grid[y][x], end='')
|
||||||
|
if grid[y][x] == '#':
|
||||||
count += 1
|
count += 1
|
||||||
|
if draw():
|
||||||
print()
|
print()
|
||||||
print(count)
|
print(count)
|
||||||
|
|
||||||
@@ -59,12 +60,12 @@ def p1():
|
|||||||
|
|
||||||
|
|
||||||
def p2(inp):
|
def p2(inp):
|
||||||
grid = {}
|
|
||||||
width = len(inp[0])
|
width = len(inp[0])
|
||||||
height = len(inp)
|
height = len(inp)
|
||||||
|
grid = [['' for y in x] for x in inp]
|
||||||
for y, sample in enumerate(inp):
|
for y, sample in enumerate(inp):
|
||||||
for x, o in enumerate(sample):
|
for x, o in enumerate(sample):
|
||||||
grid[(x,y)] = o
|
grid[y][x] = o
|
||||||
|
|
||||||
changed = True
|
changed = True
|
||||||
adj = [(-1, 0), (0, -1), (1, 0), (0, 1), (1,-1), (1,1), (-1, 1), (-1, -1)]
|
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
|
changed = False
|
||||||
for y in range(height):
|
for y in range(height):
|
||||||
for x in range(width):
|
for x in range(width):
|
||||||
if grid[(x,y)] == '.':
|
if grid[y][x] == '.':
|
||||||
continue
|
continue
|
||||||
count = 0
|
count = 0
|
||||||
for ax, ay in adj:
|
for ax, ay in adj:
|
||||||
@@ -82,7 +83,7 @@ def p2(inp):
|
|||||||
ay1 = ay
|
ay1 = ay
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
if grid[(x+ax, y+ay)] == '.':
|
if grid[y+ay][x+ax] == '.':
|
||||||
ax += ax1
|
ax += ax1
|
||||||
ay += ay1
|
ay += ay1
|
||||||
else:
|
else:
|
||||||
@@ -90,28 +91,29 @@ def p2(inp):
|
|||||||
except:
|
except:
|
||||||
break
|
break
|
||||||
try:
|
try:
|
||||||
if grid[(x+ax, y+ay)] == '#':
|
if grid[y+ay][x+ax] == '#':
|
||||||
count += 1
|
count += 1
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
if count == 0 and grid[(x,y)] == 'L':
|
if count == 0 and grid[y][x] == 'L':
|
||||||
newgrid[(x,y)] = '#'
|
newgrid[y][x] = '#'
|
||||||
changed = True
|
changed = True
|
||||||
ccnt += 1
|
ccnt += 1
|
||||||
if count >= 5 and grid[(x,y)] == '#':
|
if count >= 5 and grid[y][x] == '#':
|
||||||
newgrid[(x,y)] = 'L'
|
newgrid[y][x] = 'L'
|
||||||
changed = True
|
changed = True
|
||||||
ccnt += 1
|
ccnt += 1
|
||||||
grid = newgrid
|
grid = newgrid
|
||||||
|
|
||||||
|
|
||||||
count = 0
|
count = 0
|
||||||
if draw():
|
|
||||||
for y in range(height):
|
for y in range(height):
|
||||||
for x in range(width):
|
for x in range(width):
|
||||||
print(grid[(x,y)], end='')
|
if draw():
|
||||||
if grid[(x,y)] == '#':
|
print(grid[y][x], end='')
|
||||||
|
if grid[y][x] == '#':
|
||||||
count += 1
|
count += 1
|
||||||
|
if draw():
|
||||||
print()
|
print()
|
||||||
print(count)
|
print(count)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user