07_ips.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env python3
  2. import sys
  3. from collections import deque
  4. def sequences(ip, length):
  5. buf = deque()
  6. in_brackets = False
  7. for char in ip:
  8. if char in '[]':
  9. in_brackets = char == '['
  10. buf.clear()
  11. else:
  12. buf.append(char)
  13. if len(buf) == length:
  14. yield ''.join(buf), in_brackets
  15. buf.popleft()
  16. def supports_tls(ip):
  17. has_abba = False
  18. for (a, b, c, d), in_brackets in sequences(ip, 4):
  19. if a != b and a == d and b == c:
  20. if in_brackets:
  21. return False
  22. has_abba = True
  23. return has_abba
  24. def supports_ssl(ip):
  25. brack = set()
  26. nobrack = set()
  27. for (a, b, c), in_brackets in sequences(ip, 3):
  28. if a != b and a == c:
  29. if b + a in (nobrack if in_brackets else brack):
  30. return True
  31. (brack if in_brackets else nobrack).add(a + b)
  32. return False
  33. ips = [line.rstrip() for line in sys.stdin]
  34. print(sum(int(supports_tls(ip)) for ip in ips))
  35. print(sum(int(supports_ssl(ip)) for ip in ips))