This commit is contained in:
2024-12-08 20:36:25 +01:00
parent 4939af7277
commit 689cd30393

View File

@@ -1,51 +0,0 @@
import sys
import re
from collections import defaultdict, Counter, deque
#import pyperclip as pc
def pr(s):
print(s)
# pc.copy(s)
sys.setrecursionlimit(10**6)
infile = sys.argv[1] if len(sys.argv)>=2 else '/home/bandeira/git.bandeira/aoc/2024/day08/input.day08'
p1 = 0
p2 = 0
D = open(infile).read().strip()
G = D.split('\n')
R = len(G)
C = len(G[0])
P = defaultdict(list)
for r in range(R):
for c in range(C):
if G[r][c] != '.':
P[G[r][c]].append((r,c))
A1 = set()
A2 = set()
for r in range(R):
for c in range(C):
for k,vs in P.items():
for (r1,c1) in vs:
for (r2,c2) in vs:
if (r1,c1) != (r2,c2):
d1 = abs(r-r1)+abs(c-c1)
d2 = abs(r-r2)+abs(c-c2)
dr1 = r-r1
dr2 = r-r2
dc1 = c-c1
dc2 = c-c2
# To check if (r,c) (r1,c1) (r2,c2) are all on a line, check if (r,c)-(r1,c1) has the same slope as (r,c)-(r2,c2)
# dr1/dc1 == dr2/dc2
if (d1==2*d2 or d1*2==d2) and (dr1*dc2 == dc1*dr2):
A1.add((r,c))
if (dr1*dc2 == dc1*dr2):
#print(f'{r4=} {c=} {r1=} {c1=} {r2=} {c2=} {k=} {dr1=} {dr2=} {dc1=} {dc2=}')
A2.add((r,c))
p1 = len(A1)
p2 = len(A2)
pr(p1)
pr(p2)