Создайте класс Point
, определите для него конструктор,
метод __str__
, необходимые арифметические операции.
У класса Point
два поля: x
и y
.
Программа получает на вход число N, далее координаты N точек. Выведите координаты точки, наиболее удаленной от начала координат.
Реализация класса должна содержать конструктор,
метод __str__
для вывода точки,
метод dist
, который возвращает расстояние от начала координат до точки.
Ввод | Вывод |
---|---|
2 |
2 3 |
Выведите координаты центра масс данного множества точек (учтите, что это —два действительных числа).
Для создания точки определите конструктор, который мог бы
принимать на вход как два числа, так и строку. Таким образом,
точку можно будет создавать как вызовом Point(x, y)
,
так и Point(input())
.
Определите операции сложения точек, умножения точки на число, деления точки на число.
Ввод | Вывод |
---|---|
2 |
1.5 2.5 |
Выведите диаметр данного множества – максимальное расстояние между двумя данными точками.
Для этого удобно определить операцию разности двух точек, возвращающую разность двух радиус-векторов, затем вызывать метод, вычисляющий длину данного радиус-вектора.
Ввод | Вывод |
---|---|
3 |
1.4142135623731 |
Определите для точек операцию сравнения __lt__
, сравнивающую
точки по значению расстояния от начала координат. Отсортируйте данные
точки в порядке возрастания расстояния от начала координат.
Ввод | Вывод |
---|---|
3 |
0 0 |
Среди данных точек найдите три точки, образующие треугольник с наибольшим периметром. Выведите данный периметр.
Для нахождения периметра треугольника напишите отдельную функцию Perimeter(A, B, C)
.
Ввод | Вывод |
---|---|
4 |
3.41421356237309 |
Среди данных точек найдите три точки, образующие треугольник с наибольшей площадью. Выведите данную площадь.
Для нахождения площади треугольника напишите отдельную функцию Area(A, B, C)
.
Ввод | Вывод |
---|---|
4 |
0.5 |
Класс Fraction
должен иметь два поля: числитель a
и
знаменатель b
. Оба поля должны быть типа int
.
Для класса Fraction
определите конструктор, который может
принимать следующие виды параметров:
Fraction
.
int
.
int
.
str
, содержащий два целых числа, записанных
либо через пробел, либо через дробную черту или одно целое число.
У каждой дроби существует единственное каноническое представление.
Каноническое представление: это такое представление \(\frac{a}{b}\), что
\(b>0\), \( (a, b) = 1\). Класс должен иметь метод reduce
,
который приводит дробь к каноническому представлению. После каждой операции
с дробями (в том числе и в конструкторе) необходимо вызывать метод reduce
для сокращения дроби.
Необходимо определить метод __str__
, который выводит
a/b
в каноническом представлении, если же дробь является целым
числом, то просто значение этого числа.
Каждая строка входного файла содержит либо два числа, записанных через пробел или
дробную черту, либо одно число. Необходимо считать это число в строку и вызвать
конструктор для считанной строки, получив объект класса Fraction
.
После этого нужно вывести данный объект функцией print
Ввод | Вывод |
---|---|
1 2 |
1/2 |
Напомним, что от вас требовалось реализовать конструктор класса Fraction
, который принимает на вход
разные варанты параметров. В этой задаче проверяется реализация всех этих четырех форм конструктора.
В этой и следующих задачах на проверку нужно сдать только реализацию класса Fraction
.
Ввод | Вывод |
---|---|
a = Fraction() |
0 |
Определите методы __lt__
, __le__
, __gt__
, __ge__
,
__eq__
, __ne__
. В качестве параметра other
может выступать объект
одного из трех типов: int
, float
, Fraction
.
Тестирование проводится, как в предыдущей задаче.
Определите методы умножения __mul__
, __rmul__
, __imul__
так, чтобы
можно было:
int
(результатом является дробь), а также int
и дроби.
float
(результатом является float
), а также
float
и дроби.
Fraction
на Fraction
или int
.
Методы типа __imul__
, то есть переопределяющие
операторы присваивания (*=
) должны возвращать self
.
Определите методы деления __truediv__
,
__rtruediv__
, __itruediv__
.
Определите операции возведения в степень __pow__
, __rpow__
так, чтобы можно было
возводить дроби в степень типа int
, float
,
Fraction
, числа типа int
и float
в степень Fraction
. Операция возведения Fraction ** int
возвращает Fraction
, во всех остальных случаях возвращается
float
.
Определите операцию __ipow__
для возведения дроби в целочисленную степень.
Определите операции __add__
, __iadd__
, __radd__
.
Определите операции __sub__
, __isub__
, __rsub__
.
Определите операции __pos__
, __neg__
, __abs__
.
Определите операции __int__
(должна округлять вниз до ближайшего целого),
__float__
, __round__
(должна возвращать значение типа float
,
можно использовать функцию round
для величины типа float
).