day 14, 1E9 is not more than 1E3
This commit is contained in:
parent
a59c3c697c
commit
032f0c4caa
|
@ -0,0 +1,30 @@
|
|||
import sys
|
||||
|
||||
# load ptf flat
|
||||
G = [list(l) for l in sys.stdin.read().splitlines()]
|
||||
W = len(G[0])
|
||||
H = len(G)
|
||||
print(W,H)
|
||||
|
||||
# move far north each com
|
||||
for x in range(W):
|
||||
for y in range(H):
|
||||
print(f'{x=},{y=} = {G[y][x]}')
|
||||
if G[y][x] == "O":
|
||||
for j in range(y-1,0-1,-1):
|
||||
print(f'{j=}')
|
||||
if G[j][x] == '.': # can go north
|
||||
print(f'north, {j=}')
|
||||
G[j][x] = "O"
|
||||
G[j+1][x] = "."
|
||||
else:
|
||||
break
|
||||
|
||||
S = 0
|
||||
for y,row in enumerate(G):
|
||||
print(''.join(row))
|
||||
S += (H-y)*row.count('O')
|
||||
print(S)
|
||||
|
||||
# compute
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
import sys
|
||||
|
||||
I = sys.stdin.read().splitlines()
|
||||
G = [list(l) for l in I]
|
||||
W = len(G[0])
|
||||
H = len(G)
|
||||
|
||||
def north():
|
||||
for x in range(W):
|
||||
for y in range(H):
|
||||
if G[y][x] == "O":
|
||||
for j in range(y-1,0-1,-1):
|
||||
if G[j][x] == '.':
|
||||
G[j][x] = "O"
|
||||
G[j+1][x] = "."
|
||||
else:
|
||||
break
|
||||
|
||||
def south():
|
||||
for x in range(W):
|
||||
for y in range(H-1,0-1,-1):
|
||||
if G[y][x] == "O":
|
||||
for j in range(y+1,W,1):
|
||||
if G[j][x] == '.':
|
||||
G[j][x] = "O"
|
||||
G[j-1][x] = "."
|
||||
else:
|
||||
break
|
||||
|
||||
def east():
|
||||
for y in range(H):
|
||||
for x in range(W-1,0-1,-1):
|
||||
if G[y][x] == "O":
|
||||
for i in range(x+1,H,1):
|
||||
if G[y][i] == '.':
|
||||
G[y][i] = "O"
|
||||
G[y][i-1] = "."
|
||||
else:
|
||||
break
|
||||
|
||||
|
||||
def west():
|
||||
for y in range(H):
|
||||
for x in range(W):
|
||||
if G[y][x] == "O":
|
||||
for i in range(x-1,0-1,-1):
|
||||
if G[y][i] == '.':
|
||||
G[y][i] = "O"
|
||||
G[y][i+1] = "."
|
||||
else:
|
||||
break
|
||||
|
||||
for _ in range(1_000):
|
||||
north()
|
||||
west()
|
||||
south()
|
||||
east()
|
||||
|
||||
print(sum((H-y)*row.count('O') for y,row in enumerate(G)))
|
Loading…
Reference in New Issue