day 11, 1 is also 2-1
This commit is contained in:
		
							
								
								
									
										27
									
								
								d11/run.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								d11/run.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
import sys
 | 
			
		||||
from itertools import combinations as Comb
 | 
			
		||||
 | 
			
		||||
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 all(L[y][x] == '.' for x in range(H))]
 | 
			
		||||
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:list[int]) -> int:
 | 
			
		||||
    if a > b:
 | 
			
		||||
        b, a = a, b
 | 
			
		||||
    return sum(1 for s in S if a<s<b)
 | 
			
		||||
 | 
			
		||||
S = 0
 | 
			
		||||
for (x1,y1),(x2,y2) in Comb(G,2):
 | 
			
		||||
    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))
 | 
			
		||||
		Reference in New Issue
	
	Block a user