Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def distance(ps):
- (x1, y1), (x2, y2) = ps
- return (x1 - x2)**2 + (y1 - y2)**2
- def side_squares(*ps):
- return list(map(distance, zip(ps, ps[1:] + ps[:1])))
- def is_line(*ps):
- (x1, y1), (x2, y2), (x3, y3) = ps
- return x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2) == 0
- def solution(*ps):
- different_points = len(set(ps))
- if different_points == 1:
- return 'точка'
- if different_points == 2 or is_line(*ps):
- return 'отрезок'
- sides = sorted(side_squares(*ps))
- different_sides = len(set(sides))
- if different_sides == 1:
- return 'равносторонний треугольник'
- if different_sides == 2:
- res = 'равнобедренный '
- else:
- res = ''
- a, b, c = sides
- if a + b == c:
- res = f'{res}прямоугольный'
- elif a + b > c:
- res = f'{res}остроугольный'
- else:
- res = f'{res}тупоугольный'
- return f'{res} треугольник'
- def test():
- assert solution((0, 0), (0, 0), (0, 0)) == 'точка'
- assert solution((0, 0), (1, 0), (0, 0)) == 'отрезок'
- assert solution((0, 0), (1, 0), (-1, 0)) == 'отрезок'
- assert solution((0, 0), (1, 0), (0, 1)) == 'равнобедренный прямоугольный треугольник'
- assert solution((0, 0), (1, 0), (0, 2)) == 'прямоугольный треугольник'
- assert solution((0, 0), (1, 0), (-1, 1)) == 'тупоугольный треугольник'
- assert solution((1, 0), (-2, 0), (-1, 5)) == 'остроугольный треугольник'
- assert solution((-2, 0), (2, 0), (0, 1)) == 'равнобедренный тупоугольный треугольник'
- assert solution((-2, 0), (2, 0), (0, 5)) == 'равнобедренный остроугольный треугольник'
- if __name__ == '__main__':
- test()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement