Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

17 Zeilen
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)))