32 lines
		
	
	
		
			761 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			761 B
		
	
	
	
		
			Python
		
	
	
	
	
	
import sys
 | 
						|
from itertools import product as Prod
 | 
						|
 | 
						|
L = [list(l) for l in sys.stdin.read().splitlines()]
 | 
						|
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] == '#']    
 | 
						|
 | 
						|
X = float(sys.argv[1])  # expantion factor, 2 for part 1, 1E6 for part 2
 | 
						|
 | 
						|
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))
 |