Compare commits

...

3 Commits

  1. 27
      2021/day4/4.py
  2. 41
      2021/day5/5.py
  3. 27
      2021/day5/5a.py

@ -6,28 +6,23 @@ for s in range(2, len(lines),6):
winsOn = [-1] * len(boards)
# i should really make an attempt to optimize this
for b in range(0, len(boards)):
for i in range(0, 5):
latest = 0
latestH = 0
latestV = 0
for j in range(0, 5):
if boards[b][i][j] not in draw:
if boards[b][i][j] not in draw or boards[b][j][i] not in draw:
break
drawIndex = draw.index(boards[b][i][j])
if drawIndex > latest:
latest = drawIndex
if winsOn[b] == -1 or winsOn[b] > latest:
winsOn[b] = latest
latest = 0
for j in range(0, 5):
if boards[b][j][i] not in draw:
break
if drawIndex > latestH:
latestH = drawIndex
drawIndex = draw.index(boards[b][j][i])
if drawIndex > latest:
latest = drawIndex
if winsOn[b] > latest :
winsOn[b] = latest
if drawIndex > latestV:
latestV = drawIndex
if winsOn[b] == -1 or winsOn[b] > latestH:
winsOn[b] = latestH
if winsOn[b] == -1 or winsOn[b] > latestV:
winsOn[b] = latestV
summa = 0
summaLose = 0

@ -0,0 +1,41 @@
lines = []
for l in open("input.txt", 'r').read().splitlines():
p = l.split(" -> ")
q = []
q.append(p[0].split(","))
q.append(p[1].split(","))
lines.append([[int(q[0][0]),int(q[0][1])],[int(q[1][0]), int(q[1][1])]])
grid = [[0 for i in range(1000)] for j in range(1000)]
gridAll = [[0 for i in range(1000)] for j in range(1000)]
overlaps = 0
overlapsAll = 0
for l in lines:
xDir = 0
yDir = 0
if l[0][0] > l[1][0]:
xDir = -1
if l[0][0] < l[1][0]:
xDir = 1
if l[0][1] > l[1][1]:
yDir = -1
if l[0][1] < l[1][1]:
yDir = 1
if xDir == 0:
for i in range(l[0][1],l[1][1]+yDir,yDir):
grid[l[0][0]][i] += 1
if grid[l[0][0]][i] == 2:
overlaps += 1
if yDir == 0:
for i in range(l[0][0],l[1][0]+xDir,xDir):
grid[i][l[0][1]] += 1
if grid[i][l[0][1]] == 2:
overlaps += 1
for i in range(0, max([abs(l[1][0]-l[0][0]),abs(l[1][1]-l[0][1])])+1):
gridAll[l[0][0]+i*xDir][l[0][1]+i*yDir] += 1
if gridAll[l[0][0]+i*xDir][l[0][1]+i*yDir] == 2:
overlapsAll += 1
print(overlaps)
print(overlapsAll)

@ -1,27 +0,0 @@
lines = []
for l in open("input.txt", 'r').read().splitlines():
p = l.split(" -> ")
q = []
q.append(p[0].split(","))
q.append(p[1].split(","))
lines.append([[int(q[0][0]),int(q[0][1])],[int(q[1][0]), int(q[1][1])]])
grid = [[0 for i in range(1000)] for j in range(1000)]
for l in lines:
if l[0][0] == l[1][0]:
if l[0][1] > l[1][1]:
l = (l[1],l[0])
for i in range(l[0][1], l[1][1]+1):
grid[l[0][0]][i] += 1
if l[0][1] == l[1][1]:
if l[0][0] > l[1][0]:
l = (l[1],l[0])
for i in range(l[0][0], l[1][0]+1):
grid[i][l[0][1]] += 1
overlaps=0
for m in grid:
for n in m:
if n > 1:
overlaps += 1
print(overlaps)
Loading…
Cancel
Save