fork download
  1. # coding: utf-8
  2.  
  3. class Section:
  4. @classmethod
  5. def init_from_str(cls, s):
  6. l, r = s.split(",")
  7. left = float(l[1:])
  8. right = float(r[:-1])
  9. left_border = l[0]
  10. right_border = r[-1]
  11.  
  12. return cls(left_border, left, right, right_border)
  13.  
  14. def __init__(self, left_border, left, right, right_border):
  15. self.left_border = left_border
  16. self.left = left
  17. self.right = right
  18. self.right_border = right_border
  19.  
  20. @property
  21. def is_empty(self):
  22. if self.left > self.right:
  23. return True
  24. elif self.left == self.right and (self.left_border == "(" or self.right_border == ")"):
  25. return True
  26. else:
  27. return False
  28.  
  29. def __or__(self, other):
  30. if self.left == other.left:
  31. left = self.left
  32. left_border = "(" if "(" in [self.left_border, other.left_border] else "["
  33. elif self.left > other.left:
  34. left = self.left
  35. left_border = self.left_border
  36. else:
  37. left = other.left
  38. left_border = other.left_border
  39.  
  40. if self.right == other.right:
  41. right = self.right
  42. right_border = ")" if ")" in [self.right_border, other.right_border] else "]"
  43. elif self.right < other.right:
  44. right = self.right
  45. right_border = self.right_border
  46. else:
  47. right = other.right
  48. right_border = other.right_border
  49.  
  50. return Section(left_border, left, right, right_border)
  51.  
  52. def __str__(self):
  53. if self.is_empty:
  54. return "{}"
  55. else:
  56. return "{}{:f},{:f}{}".format(self.left_border, self.left, self.right, self.right_border)
  57.  
  58.  
  59. while True:
  60. r1, r2 = input().split(" ")
  61. r1 = Section.init_from_str(r1)
  62. r2 = Section.init_from_str(r2)
  63. print(r1|r2)
  64.  
Runtime error #stdin #stdout #stderr 0.02s 27712KB
stdin
[1,3] [2,4]
(1,2) [1,2]
[0,100) (5,1000000000)
(-100000000,2] [1,100000000)
[1,2) [2,3)
stdout
[2.000000,3.000000]
(1.000000,2.000000)
(5.000000,100.000000)
[1.000000,2.000000]
{}
stderr
Traceback (most recent call last):
  File "./prog.py", line 60, in <module>
EOFError: EOF when reading a line