data=open("input10.txt","r").read().strip().split("\n")data=[list(row)forrowindata]defcount_adj_visible(row,col,prev,part1=False):s=0forrinc,colincin[(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)]:r=rowc=colwhileTrue:r=r+rincc=c+colincif(r<0orr>=len(prev))or(c<0orc>=len(prev[row])orprev[r][c]=="L"):breakif(prev[r][c]=="#"):s+=1breakif(part1):breakreturnsdefsolve(table,part1=False):table=[row.copy()forrowintable]whileTrue:prev=[row.copy()forrowintable]forrowinrange(len(table)):forcolinrange(len(table[row])):if(table[row][col]!="."):n=count_adj_visible(row,col,prev,part1)if(n==0andprev[row][col]=="L"):table[row][col]="#"if(n>=(4ifpart1else5)andprev[row][col]=="#"):table[row][col]="L"if(prev==table):breakreturn"\n".join(["".join(row)forrowintable]).count("#")print("part 1 ans =",solve(data,part1=True))print("part 2 ans =",solve(data))
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
python solution for both part 1 and 2