Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

17 lines
657B

  1. import itertools
  2. def star_dist(a, b, N):
  3. (xa, xb), (ya, yb) = map(sorted, zip(a, b))
  4. sx = sum(xa < x < xb for x in xs)
  5. sy = sum(ya < y < yb for y in ys)
  6. return (xb - xa) + (yb - ya) + (N - 1) * (sx + sy)
  7. text = open(0).read()
  8. ys = {i for i, ln in enumerate(text.splitlines()) if set(ln) == {'.'}}
  9. xs = {i for i, ln in enumerate(zip(*text.splitlines())) if set(ln) == {'.'}}
  10. stars = {(x, y) for y, row in enumerate(text.splitlines()) for x, val in enumerate(row) if val == '#'}
  11. print(sum(star_dist(a, b, 2) for a, b in itertools.combinations(stars, 2)))
  12. print(sum(star_dist(a, b, 1_000_000) for a, b in itertools.combinations(stars, 2)))