day 9 short
This commit is contained in:
		
							
								
								
									
										16
									
								
								d09/d09_1.py
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								d09/d09_1.py
									
									
									
									
									
								
							@@ -3,23 +3,9 @@ L = list(map(lambda s: [9]+list(map(int, s))+[9] ,sys.stdin.read().splitlines())
 | 
			
		||||
W = len(L[0])
 | 
			
		||||
L = [[9]*W] + L + [[9]*W]
 | 
			
		||||
H = len(L)
 | 
			
		||||
 | 
			
		||||
def printgrid():
 | 
			
		||||
	for row in L:
 | 
			
		||||
		print("".join(map(str,row)))
 | 
			
		||||
 | 
			
		||||
printgrid()
 | 
			
		||||
S = 0
 | 
			
		||||
for x in range(1,H-1):
 | 
			
		||||
	for y in range(1,W-1):
 | 
			
		||||
		p = L[x][y]
 | 
			
		||||
		n = L[x-1][y]
 | 
			
		||||
		s = L[x+1][y]
 | 
			
		||||
		e = L[x][y-1]
 | 
			
		||||
		w = L[x][y+1]
 | 
			
		||||
		islow =all([p<n,p<s,p<e,p<w])
 | 
			
		||||
		print(x,y,p,n,s,e,w)
 | 
			
		||||
		if islow:
 | 
			
		||||
			print(x,y,p, "is low")
 | 
			
		||||
			S+= p+1
 | 
			
		||||
		S += (p+1) * all(p<L[x+i][y+j] for (i,j) in [(0,1),(1,0),(-1,0),(0,-1)])
 | 
			
		||||
print(S)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								d09/d09_2.py
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								d09/d09_2.py
									
									
									
									
									
								
							@@ -6,33 +6,20 @@ H = len(L)
 | 
			
		||||
def printgrid():
 | 
			
		||||
	for row in L:
 | 
			
		||||
		print("".join(map(str,row)))
 | 
			
		||||
def neigh(x,y,C=0,V=set()):
 | 
			
		||||
def neigh(x,y,W:set):
 | 
			
		||||
	p = L[x][y]
 | 
			
		||||
	if p<9:
 | 
			
		||||
		V.add((x,y))
 | 
			
		||||
		C+=1
 | 
			
		||||
		#print(' '*C, x,y,"p="+str(p), C)
 | 
			
		||||
		W.add((x,y))
 | 
			
		||||
		for (i,j) in [(0,1),(1,0),(-1,0),(0,-1)]:
 | 
			
		||||
			if L[x+i][y+j]>p and (x+i,y+j) not in V:
 | 
			
		||||
				C=neigh(x+i,y+j,C,V)
 | 
			
		||||
		return C
 | 
			
		||||
	else:
 | 
			
		||||
		#print(' '*C, x,y,"p="+str(p), C)
 | 
			
		||||
		return C
 | 
			
		||||
printgrid()
 | 
			
		||||
			if L[x+i][y+j]>p and (x+i,y+j) not in W:
 | 
			
		||||
				neigh(x+i,y+j,W)
 | 
			
		||||
#printgrid()
 | 
			
		||||
S = []
 | 
			
		||||
for x in range(1,H-1):
 | 
			
		||||
	for y in range(1,W-1):
 | 
			
		||||
		p = L[x][y]
 | 
			
		||||
		n = L[x-1][y]
 | 
			
		||||
		s = L[x+1][y]
 | 
			
		||||
		e = L[x][y-1]
 | 
			
		||||
		w = L[x][y+1]
 | 
			
		||||
		islow =all([p<n,p<s,p<e,p<w])
 | 
			
		||||
		#print(x,y,p,n,s,e,w)
 | 
			
		||||
		if islow:
 | 
			
		||||
			print(x,y,p, "is low")
 | 
			
		||||
			S.append(neigh(x,y))
 | 
			
		||||
print(S)
 | 
			
		||||
S = sorted(S)
 | 
			
		||||
print(S[-1]*S[-2]*S[-3])
 | 
			
		||||
		V = set()
 | 
			
		||||
		neigh(x,y,V)
 | 
			
		||||
		S.append(len(V))
 | 
			
		||||
		#print(V)
 | 
			
		||||
#print(S)
 | 
			
		||||
print(sorted(S)[-3:])
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								d09/topgm.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								d09/topgm.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
print("""P2
 | 
			
		||||
100 100
 | 
			
		||||
9""")
 | 
			
		||||
import sys
 | 
			
		||||
for l in sys.stdin.read().splitlines():
 | 
			
		||||
	for c in l:
 | 
			
		||||
		print(9-int(c))
 | 
			
		||||
		Reference in New Issue
	
	Block a user