day 11, 1 is also 2-1
This commit is contained in:
parent
3142bc1ebb
commit
a6692bc780
|
@ -0,0 +1,33 @@
|
||||||
|
import sys
|
||||||
|
from itertools import product as Prod
|
||||||
|
|
||||||
|
I = sys.stdin.read().splitlines() # for codon type inference
|
||||||
|
L = [list(l) for l in I]
|
||||||
|
H = len(L)
|
||||||
|
W = len(L[0])
|
||||||
|
RD = {y for y in range(W) if "".join(L[y]).find("#")==-1}
|
||||||
|
CD = {x for x in range(H) if all(L[y][x] == '.' for y in range(W))}
|
||||||
|
|
||||||
|
G = [(x,y)
|
||||||
|
for y in range(W)
|
||||||
|
for x in range(H)
|
||||||
|
if L[y][x] == '#']
|
||||||
|
|
||||||
|
# expantion factor, 2 for part 1, 1E6 for part 2
|
||||||
|
X = int(float(sys.argv[1])) # float to parse scientific form, int for codon
|
||||||
|
|
||||||
|
def exp(a:int,b:int,S:set[int]) -> int:
|
||||||
|
if a > b:
|
||||||
|
b, a = a, b
|
||||||
|
return sum(1 for s in S if a<s<b)
|
||||||
|
|
||||||
|
S = 0
|
||||||
|
for i in range(len(G)):
|
||||||
|
for j in range(i+1,len(G)):
|
||||||
|
x1,y1 = G[i]
|
||||||
|
x2,y2 = G[j]
|
||||||
|
ex = exp(x1,x2,CD)
|
||||||
|
ey = exp(y1,y2,RD)
|
||||||
|
d = abs(x2-x1)+abs(y2-y1)+(X-1)*(ex+ey)
|
||||||
|
S += d
|
||||||
|
print(int(S))
|
Loading…
Reference in New Issue