Корчагина Анна Вячеславовна, 517 TrianglesCmp 5928
Саргсян Тачат 321 TrianglesCmp 5997
f1import mathf1import math
22
3class Triangle:3class Triangle:
44
5    def __init__(self, a, b, c):5    def __init__(self, a, b, c):
6        self.a = float(a)6        self.a = float(a)
7        self.b = float(b)7        self.b = float(b)
8        self.c = float(c)8        self.c = float(c)
9        sides = [self.a, self.b, self.c]9        sides = [self.a, self.b, self.c]
10        sides.sort()10        sides.sort()
11        self._is_empty = not (all((side > 0 for side in sides)) and side11        self._is_empty = not (all((side > 0 for side in sides)) and side
>s[0] + sides[1] > sides[2])>s[0] + sides[1] > sides[2])
1212
13    def __bool__(self):13    def __bool__(self):
14        return not self._is_empty14        return not self._is_empty
1515
16    def __abs__(self):16    def __abs__(self):
17        if self._is_empty:17        if self._is_empty:
18            return 0.018            return 0.0
19        p = (self.a + self.b + self.c) / 219        p = (self.a + self.b + self.c) / 2
20        return math.sqrt(p * (p - self.a) * (p - self.b) * (p - self.c))20        return math.sqrt(p * (p - self.a) * (p - self.b) * (p - self.c))
2121
22    def __eq__(self, other):22    def __eq__(self, other):
23        if not isinstance(other, Triangle):23        if not isinstance(other, Triangle):
24            return NotImplemented24            return NotImplemented
25        self_sides = sorted([self.a, self.b, self.c])25        self_sides = sorted([self.a, self.b, self.c])
26        other_sides = sorted([other.a, other.b, other.c])26        other_sides = sorted([other.a, other.b, other.c])
27        return math.isclose(self_sides[0], other_sides[0]) and math.iscl27        return math.isclose(self_sides[0], other_sides[0]) and math.iscl
>ose(self_sides[1], other_sides[1]) and math.isclose(self_sides[2], other>ose(self_sides[1], other_sides[1]) and math.isclose(self_sides[2], other
>_sides[2])>_sides[2])
2828
29    def __lt__(self, other):29    def __lt__(self, other):
30        if not isinstance(other, Triangle):30        if not isinstance(other, Triangle):
31            return NotImplemented31            return NotImplemented
32        return abs(self) < abs(other)32        return abs(self) < abs(other)
3333
34    def __le__(self, other):34    def __le__(self, other):
35        if not isinstance(other, Triangle):35        if not isinstance(other, Triangle):
36            return NotImplemented36            return NotImplemented
37        return abs(self) <= abs(other)37        return abs(self) <= abs(other)
3838
39    def __gt__(self, other):39    def __gt__(self, other):
40        if not isinstance(other, Triangle):40        if not isinstance(other, Triangle):
41            return NotImplemented41            return NotImplemented
42        return abs(self) > abs(other)42        return abs(self) > abs(other)
4343
44    def __ge__(self, other):44    def __ge__(self, other):
45        if not isinstance(other, Triangle):45        if not isinstance(other, Triangle):
46            return NotImplemented46            return NotImplemented
47        return abs(self) >= abs(other)47        return abs(self) >= abs(other)
4848
49    def __str__(self):49    def __str__(self):
t50        return f'{self.a:.1f}:{self.b:.1f}:{self.c:.1f}'t50        return f'{self.a}:{self.b}:{self.c}'
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op