Kaynağa Gözat

🐝

master
Roderic Day 2 yıl önce
ebeveyn
işleme
1633d8d9ce
1 değiştirilmiş dosya ile 33 ekleme ve 0 silme
  1. +33
    -0
      y2022/p15.py

+ 33
- 0
y2022/p15.py Dosyayı Görüntüle

@@ -0,0 +1,33 @@
import collections
import re

text = open(0).read()
grid = {}
match = {}
for x, y, a, b in [[int(n) for n in re.findall(r'-?\d+', ln)] for ln in text.splitlines()]:
match[complex(x, y)] = complex(a, b)

goal = 2000000
bop = 4000000
seen = set()
count = collections.Counter()
for aa, bb in match.items():
diff = bb - aa
reach = int(abs(diff.real) + abs(diff.imag))
dist = int(abs(aa.imag - goal))
if reach > dist:
df = reach - dist
seen |= set(range(int(aa.real - df), int(aa.real + df)))

for rot in [1j ** i for i in range(4)]:
for dx in range(reach):
dy = reach - dx
edgy = aa + complex(dx, dy) * rot
for dot in [rot, rot * 1j]:
bip = edgy + dot
if 0 <= bip.real <= bop and 0 <= bip.imag <= bop:
count[bip] += 1

print(len(seen))
fin = count.most_common()[0][0]
print(fin, int(fin.real * bop + fin.imag))

Yükleniyor…
İptal
Kaydet