This commit is contained in:
2020-12-12 13:05:10 +01:00
parent 074ddf2583
commit d858de5d4a
2 changed files with 188 additions and 0 deletions

90
day11/day11.py Normal file
View File

@@ -0,0 +1,90 @@
import copy
width = 0
height = 0
def nextSeat(x, y, grid):
if grid[x][y] == '.':
return '.'
occupied = 0
forbidden = [-1, height, width]
xs = [a for a in [x - 1, x, x + 1] if a not in forbidden]
ys = [a for a in [y - 1, y, y + 1] if a not in forbidden]
for xz in xs:
for yz in ys:
if x is xz and y is yz:
continue
if grid[xz][yz] == '#':
occupied += 1
if grid[x][y] == 'L' and occupied == 0:
return '#'
elif grid[x][y] == '#' and occupied >= 4:
return 'L'
else:
return grid[x][y]
def nextRound(grid):
next_grid = copy.deepcopy(grid)
for x in range(0, width):
for y in range(0, height):
next_grid[x][y] = nextSeat(x, y, grid)
return next_grid, grid
def countSeats(grid1):
count = 0
for x in range(0, width):
for y in range(0, height):
if grid1[x][y] == '#':
count += 1
return count
def equals(grid1, grid2):
for x in range(0, width):
for y in range(0, height):
if grid1[x][y] != grid2[x][y]:
return False
return True
def part1():
file = open("input.txt")
lines = file.readlines()
grid = []
for line in lines:
row = []
for spot in line.strip():
row.append(spot)
grid.append(row)
global width, height
width = len(grid[0])
height = len(grid)
while True:
grid, oldGrid = nextRound(grid)
if equals(grid, oldGrid):
seats = countSeats(grid)
break
print(f"Part 1: {seats}")
def part2():
file = open("input.txt")
if __name__ == "__main__":
part1()
part2()

98
day11/input.txt Normal file
View File

@@ -0,0 +1,98 @@
LLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLL.LLLLLL.LLLLLLLL.LLLLL.LLLLLLLL..LLLLLLLLL
LLLLLLLLL.LLLL.LLLLL.L.LLLLLLL.LLLLLLLLL.LLLLLL.L.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL
LLLLLLLLL..LLL.LLLLL.LLLLLLLLL.LLLLLLLL..LLLLLLLL..LLLLL.LLLLL.LLLLLLLLLLLLLLLLLLL.LLL.L.LLLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLL...LLLLL.LLLLLLLLL.L
LLLLLLLLL.LLLLLLLLLL.LLLLLLL.L.LLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.L.LLL.L.LLLL.LLLL
LLLLLLLLLLLLLLLLLLLLLLLLLLL.LL.LLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLL.LLL..LLLLLL.LLLLLLL.LLLLLLLLL
LLLLLLLLLLLLLLLLLLLL.LLL.LLLLL.LLLLLLLLL.LLLL.LLLLLL..L..LLLLLLLLLLLL.LL.LLLLLLLLLLLLLLL.LLLLLL.LL
L....L.....L..L...................L.....L..L..L..L...LL....LL....L...........L.L.L..LL.L..LL..L...
LLLLLLLLL.LL.L.LLLLL.LLLLLLLLLLLLLLLLL.L.LLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLL..LLLLLL.LLLLLLLLL
LLLLLL.LL.LLLL.LLLLL.LLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLL.LLLLLL.LLLLL.LL..LLLLLLLLLLLLLL.LL.LLLLLL
LLLLLLL.L.L.LLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLLLLLL.LLLLLLLLLL..LLLLLLLLLLLLLLL..LL.LLLL.
LLLL.LLLL.LLLL.LLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLL.LL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL
L..L........L....LL.......L.......L.L..LLL.LL..L.LL.L..L.LLL..L.....L.L.......LLLL..........L.L...
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL
LLLLLLL.L.LLLLLLLLLL.LLL.LLLLL.LLLLLLLLL.LLLLLLLL.LLLLL.LLL.LLL.LLL.LLLL.LLLLLLLLLL.LLL..LLL.LLLLL
LLLLLLLLLLLLLL.LLLLL.L.LLLLLLL.LLLLLLLLL.LL.LLLLLLLLLLLL.LLLLLL.LLL.LLLL.LLLLLL..LLLLLLLLLLLLLLLLL
LLLLLLL.LLLLLL.LLLLL.LLLLL.LLLLLLLL.LLLL.LLLLLLLL.LLLLLL.LLLL.L.LLLLLLL..LLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLL.L
LL.L.LL.L.LLLLLL.LLLLLLL..LLLL.LLLLLLLLL.LLLLLLLL.LL.LLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL
LLLLLLLLLLLLLL.LLLLLLLLL.LLLLL.LLLLLLL.L.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LL.LLLLL.LLLLLLLLL
LLLLLLLLL.LLLL.L.LLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LL.LLLLLLL.L.LLLLLLL
LLLLLLLLLLLLLL.LLL.L.LLLLLLLLL.LLLLLLLLL.LLLLLLL..LLL.LL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL
L.LLL..L.L..LL.LL......L..LLLL.L..LL...L......LL.LL.LL.L.LLL.L..........L....L..L..L....L....L..LL
.LLLLLLLL..LLL.LL.L..LLLLLLLLL..LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.L.LLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.L.LLLLLLL.LLL.LLL.L.LLLLLLLLLLLLLLLLLLLLLL.LL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLL.LLLLLLL.LLLLLLLLLLLLLLL.LLLLL.LLL.LL.LLLLL.LLLLLL.LLLLLL.LL.LLLLL.LLLLLLL..LLLLLL..LLLLL.LL
LLLLLLLLL.LLLL..LLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLL..L
LLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLL.LLLLLLLL..LLLLLL.LLLLLLL.LL.LLLLLL
LLLLLL.LL.LLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLL..L.LLLL.LL.LLLLL.LLLLLLL.LLLLLLL.LLLLLLLLL
.......L........LL.L...L......L...LL.....LL..LLL..L........LLLL.LL.LLLLL...L.LLL.LL..LL.LL...L....
LLLLLLLLL.LLLL..LLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLL.LL.LLLLLL.LLLLLLLL.L.LLLLL.LLLLLLL.LLLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLL
LLLLL.LLL.L.LLLLLLLL.LLLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL..LLLLLL.LLLLL.LLLLLLLLLLL
L.LLLLLLL.L.LLLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLL..LLL.LLLLLLLLLLLLLLL.LLLLLLLL.
.LLLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLLLL.LL.LLLLLLLL.LLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL
...LL..L..L....L.....L...L.............LL....LLLL.L....L....L.....LL..LL.L....LLL.L..LLL.L.LL...LL
LLLLLL.LL..LLL.LLLLLL.LLL.LLL..LL.LLLLLLLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLL.LLLLL.L.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLL
LLLLLLLLL.LLLL.LL.LL.LLLLLLLLLLLLLLLLLLL.LLLLLLL.LL.LLL..LL.LLL.LLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL
LLLLLLL.L.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLL
LLLLLLLLL.L.LL.LLLLL.LLLLLLLLL.LLLLLLLLL..LLLLLL.LLLLLLL.LLLLLL.LLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLL
..LL..L.LLLL..L....L.....LLL...LL....L...LL...LLLL......L.........LLLL...LLLL.L..L..LL.L.LL....L..
.LLLLL.L..LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.L.LLLLLL.LLLLLLLLLLLLL.L.LLLLLLL.LLLLLLL.LLLLLLLLL
.L.LL.LLL.LLLL.LLLLL.LLLLLLLLL.LL.LLLLLL.LLLLLLL...LLLLL.LLLLLL..LLLLLLL.LLLLLLL.LLLLLLL.L.LLLLLLL
LLLLLLLLL.L..L.LL.LL.LLLLLLLLLLLLLLLLLLL.LLLLLL.L.LLLLLLLLLLLLL.LLLLL.LLLLLLLLLL.LLLLLLL.LLLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLL.LLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLL..L.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.L
LLLLLLLLLLLLL.LLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL
LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLL..LLLLL..LLLLLLLLL
LLLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLLLL.LLLLLLL.LLLLLLLLL
LLLLLLLLL.LLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LL.LLLLLLLLLLLLLL.LLLLLLLL.LLLL.LLLLLLL.LLLLLLLLLLLLLLLLL
.......L.L.....LLLLL.L.L.L.L...L.L..L...L.......L....L....L.......L..LL........L..LL..L...........
LLL.LLLLL.LLLL.LLLLLLLLL..LLLLLLLLLLLLLLLLLLLLLL..LL.LLL.LLLLLL.L..LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL
LLLLL.LLL.LL.L.LLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLL.LLL.LLLLLLLLLLLL.LLL.LLLLLLLLLLLLL
LL.LLLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLL.LLLL.LLLLLLLLL.L.LLLLLLLLLLLLL.LLLL.L.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLLLLLLLLLL.LL.LL.LLLLLLLLL..LLL.LLLL.LLLLLLLL.LLLLLL.LLLLLLLLLLL.LLLLLLL.LLL.LLLLLLLLL.LLLLLLL
.L..LLL........L.LLL.L....L...LL....LLL.L.L.......LLL....LL..L.....LL.LLL.L.LLL..LL.L...L...L..LLL
LLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL
.LLLLLLLLLLLLL.LLLLL.LLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLLLLLLLLL.L.LLLLLLL.LL.LLLL.LLLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL..LLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL
LL.LLLLLL.LLLL.LLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLL..LLLLLL.LLLLL.LL.L.LLLLLLLLLLLLL.LLLLLLLLL
......L....L.........L.LL..L.....LL.L.LL.....L....L..L..............L...L.LL.LL..LL........L..L..L
LLLLLLLLL.L.LL.LLLLL..LLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLL..LLLLL.L.LLLLLL.LLLLLLL.LL.LLLL.LLLLLLLLL
LLLLLLLLL.LLLL.LL.LL.LLLLLLLLL.LLLLLLLLL.LL.LLL.LLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLL.L
LLLLLLL.L.LLLL..LLLLLLLLLL.LLL.LLLLLLLLL..L.LLLLL.LLLLLLLLLLLLL.LLLLLLL..L.LLLLL.LLLLLLL.LLLLLLLLL
LLLLLL.LL.LLLL.LLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.L
...LLL........L..L...L.L.LL.LL.....L...L......LL.L..LLLL....LL....L.L.L..L.L.L...L...L.L........L.
LLLLLLLLL.LLLL..LLLL.LLLLLLLLL.LLLLLL.LL.LLL.LLLL.LLLLLL.LLLLLL.L.LLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLL
LLLLLLLLLL.LLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLL.LLL..LL.LLLLLLLLLL..LLLLLLL.LLLL.LL.LLLLLL...LL.LLLLL
LL.LLLLLL.LLLLLLLLLL.LLLLLLL.L.LLLLLLLLL..LLLLLLL.LLLLLL.LLLLLL.LLLL.L.L.LLLLL.LLL.LLLLL.LLLLLLLLL
LLL.LLLLLLLLLL.LLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLL...LLLLL.LLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLL
....L.LL.L......L....LL...L.L.L...L..L........L.L.L......LL...L.....LL..L......LL..........L..L...
LLLLLLLLL..LLLLLLLLLLLLLLLLLLLLLLLL..LLL.LLLLLLLL.LLLLL..LLLLLL.LLLLLLLL.LLLL.LL.LLLLLLL.LLLLLLLLL
LLL.LLLLL.LLLL.LL.LL.LLLLLLLL.LLLLLLLLLL.LLL.L.LL.LL.LLL.LLLLLL.LLLLLLLL.LLLLLLL.L.LLLL..LLLLLLLLL
LLLLLLLLL.LLLL..LLLL.LLLLLLLLL.LLLLLLLLL.LL.LLLLLLLLLLL..LLLLLLLLLLLLLLL.LLLLLL..LLLLLLL.LLLLLLLLL
LLLLLLL.L.LLLL.LL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL..LLLLLL..L.LL.LL.LLLLLLL.LLLL.LL.L.LLLLLLL
........LL....L.L.LL.L..L.....L...L..L.LL...LLLL.L.....L...L...L..L...L...L.L...LL..L.L.L....LLL..
LLLLLLLLL.LLLLLLLL.LLLLLLLLLLL..LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLL.LLL.LLLLL.L.LLLLLLLLL
LLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLL.L.L.LL.L.LLLLLLLLLLLLLLL.L.LLLLLL.LLLLLLL.LLLLLLLL.LLLLLLLL
LLLLL.LLLLLLL..LLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL...LLLL.LLLLLL.LLLLLLLL..LLLLLL.LLLLLLLLLLLLLLLLL
LLLL.LLLL.LLLL.LLL.L.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLL.LLLL.LL.L
LLLLLLL...LLLL.LLLLL.LLL.LLLLL.LLLLLLLLL.LLLLLL.L.LLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLL.LLLLLLLLL.LLL
LLLLLLL.LLLLLL.LLLLL.LLLLL.LLLLLLLLLLLL.LL.LLLLLL.LLL.LLLLLLLLL..LLLL..LLLLL.LLL.LL.LLLL.LLLLLLLLL
LLLLLLLLLLLLLL.LL.LL.LLLLLLLLL.LLLLLLLLL.LLLLLL.L.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.L
L.L.....L......LL....L.L...L..LL..LLLL.L.L....L.L.LL..LL....LL.LL...L..LL..LLL.LLL.L..L..L........
LLLLLLLLL.LLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.L.LLLL.LLLLLLLLLL
LLLLLLLLL.LLLL.LLL.LLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLL.L
LLLLLLLLL.LLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL
LLLLLLLLL.LLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLLLLLLLLLL.LLLLL.LL.LLLLLL.LLLLLLLLL.LLL.LLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL
LLL.LLLLLLLLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLL.L.LLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLL.LL.LLLLLL
LLLLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLLLLLLL.L.LLLLL.LLLLLLL.LLLLLL..LLLLLLLLLLLLLLLLLLLLLLL.LLLLL...L
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLL..LLLLLLLLLLLLLLL.LL.LLLLLLLLLLLL.LLLLLLLLL
LLLLLLLLLLLLLLLLLLLL.LLL.LLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLL..LLLL.LL.LL.LLLL.LLLLL.L.LLLLLLLLL
LL.LLLLLL.LLLL.LLLLL.LLLLLLL.L..LLLLLLLL.LLLL..LLLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL
LLLLLLLLL.LLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.L.LLLLL.LLLLLLLLL
.LLL.LLLL.LLLL.L.LLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LL.LLL.LLLLLLLL.LLLLLLL.LLLLLLL..LLLLLLLL
LLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL