fork(1) download
  1. import sys
  2. from enum import Enum
  3.  
  4. class TringleSideTypes (Enum) :
  5. Invalid = 0
  6. Equilateral = 1
  7. Isosceles = 2
  8. Scalene = 3
  9.  
  10. class TringleAngleTypes (Enum) :
  11. Invalid = 0
  12. Right = 1
  13. Obtuse = 2
  14. Acute = 3
  15.  
  16. def tringleType(a, b, c) :
  17. if c<a :
  18. (a, c) = (c, a)
  19. if c<b :
  20. (c, b) = (b, c)
  21. if b<a :
  22. (b, a) = (a, b)
  23.  
  24. sideResult = TringleSideTypes.Invalid
  25. angleResult = TringleAngleTypes.Invalid
  26. if c >= a + b :
  27. return sideResult, angleResult
  28.  
  29. epsilon = abs(b) * 2*sys.float_info.epsilon
  30. if abs(a-b)<epsilon or abs(c-b)<epsilon :
  31. sideResult = TringleSideTypes.Isosceles
  32. if abs(a-c)<=epsilon :
  33. sideResult = TringleSideTypes.Equilateral
  34. angleResult = TringleAngleTypes.Acute
  35. return sideResult, angleResult
  36. else :
  37. sideResult = TringleSideTypes.Scalene
  38.  
  39. pitagoras = a*a + b*b - c*c
  40. epsilon = c*c * 6*sys.float_info.epsilon
  41. if abs(pitagoras)<=epsilon :
  42. angleResult = TringleAngleTypes.Right
  43. else :
  44. angleResult = (pitagoras>0) and TringleAngleTypes.Acute or TringleAngleTypes.Obtuse
  45.  
  46. return sideResult, angleResult
  47.  
  48. for data in sys.stdin:
  49. data = data.split()
  50. a = float(data[0])
  51. b = float(data[1])
  52. c = float(data[2])
  53. result = tringleType(a, b, c)
  54. print(a, b, c, result[0], result[1])
  55.  
Success #stdin #stdout 0.04s 10296KB
stdin
4 5 3
0.5 0.4 0.3
1.0 0.4 0.55
3.0 3.0 3.0
5 3 5
7 7 13
7 7.1 13
stdout
4.0 5.0 3.0 TringleSideTypes.Scalene TringleAngleTypes.Right
0.5 0.4 0.3 TringleSideTypes.Scalene TringleAngleTypes.Right
1.0 0.4 0.55 TringleSideTypes.Invalid TringleAngleTypes.Invalid
3.0 3.0 3.0 TringleSideTypes.Equilateral TringleAngleTypes.Acute
5.0 3.0 5.0 TringleSideTypes.Isosceles TringleAngleTypes.Acute
7.0 7.0 13.0 TringleSideTypes.Isosceles TringleAngleTypes.Obtuse
7.0 7.1 13.0 TringleSideTypes.Scalene TringleAngleTypes.Obtuse