Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

34 lines
943B

  1. import collections
  2. import re
  3. text = open(0).read()
  4. grid = {}
  5. match = {}
  6. for x, y, a, b in [[int(n) for n in re.findall(r'-?\d+', ln)] for ln in text.splitlines()]:
  7. match[complex(x, y)] = complex(a, b)
  8. goal = 2000000
  9. bop = 4000000
  10. seen = set()
  11. count = collections.Counter()
  12. for aa, bb in match.items():
  13. diff = bb - aa
  14. reach = int(abs(diff.real) + abs(diff.imag))
  15. dist = int(abs(aa.imag - goal))
  16. if reach > dist:
  17. df = reach - dist
  18. seen |= set(range(int(aa.real - df), int(aa.real + df)))
  19. for rot in [1j ** i for i in range(4)]:
  20. for dx in range(reach):
  21. dy = reach - dx
  22. edgy = aa + complex(dx, dy) * rot
  23. for dot in [rot, rot * 1j]:
  24. bip = edgy + dot
  25. if 0 <= bip.real <= bop and 0 <= bip.imag <= bop:
  26. count[bip] += 1
  27. print(len(seen))
  28. fin = count.most_common()[0][0]
  29. print(fin, int(fin.real * bop + fin.imag))