Advertisement
Guest User

Untitled

a guest
Mar 6th, 2021
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.94 KB | None | 0 0
  1. def distance(ps):
  2.     (x1, y1), (x2, y2) = ps
  3.     return (x1 - x2)**2 + (y1 - y2)**2
  4.  
  5. def side_squares(*ps):
  6.     return list(map(distance, zip(ps, ps[1:] + ps[:1])))
  7.  
  8. def is_line(*ps):
  9.     (x1, y1), (x2, y2), (x3, y3) = ps
  10.     return x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2) == 0
  11.  
  12. def solution(*ps):
  13.     different_points = len(set(ps))
  14.     if different_points == 1:
  15.         return 'точка'
  16.     if different_points == 2 or is_line(*ps):
  17.         return 'отрезок'
  18.     sides = sorted(side_squares(*ps))
  19.     different_sides = len(set(sides))
  20.     if different_sides == 1:
  21.         return 'равносторонний треугольник'
  22.     if different_sides == 2:
  23.         res = 'равнобедренный '
  24.     else:
  25.         res = ''
  26.     a, b, c = sides
  27.     if a + b == c:
  28.         res = f'{res}прямоугольный'
  29.     elif a + b > c:
  30.         res = f'{res}остроугольный'
  31.     else:
  32.         res = f'{res}тупоугольный'
  33.     return f'{res} треугольник'
  34.  
  35. def test():
  36.     assert solution((0, 0), (0, 0), (0, 0)) == 'точка'
  37.     assert solution((0, 0), (1, 0), (0, 0)) == 'отрезок'
  38.     assert solution((0, 0), (1, 0), (-1, 0)) == 'отрезок'
  39.     assert solution((0, 0), (1, 0), (0, 1)) == 'равнобедренный прямоугольный треугольник'
  40.     assert solution((0, 0), (1, 0), (0, 2)) == 'прямоугольный треугольник'
  41.     assert solution((0, 0), (1, 0), (-1, 1)) == 'тупоугольный треугольник'
  42.     assert solution((1, 0), (-2, 0), (-1, 5)) == 'остроугольный треугольник'
  43.     assert solution((-2, 0), (2, 0), (0, 1)) == 'равнобедренный тупоугольный треугольник'
  44.     assert solution((-2, 0), (2, 0), (0, 5)) == 'равнобедренный остроугольный треугольник'
  45.  
  46. if __name__ == '__main__':
  47.     test()
  48.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement