-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_6_2.py
More file actions
46 lines (40 loc) · 2.51 KB
/
Copy pathtest_6_2.py
File metadata and controls
46 lines (40 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""
Задание 2.
Планеты вращаются вокруг звезд по эллиптическим орбитам.
Назовем самой далекой планетой ту, орбита которой имеет
самую большую площадь. Напишите функцию
find_farthest_orbit(list_of_orbits), которая среди списка орбит
планет найдет ту, по которой вращается самая далекая
планета. Круговые орбиты не учитывайте: вы знаете, что у
вашей звезды таких планет нет, зато искусственные спутники
были были запущены на круговые орбиты. Результатом
функции должен быть кортеж, содержащий длины полуосей
эллипса орбиты самой далекой планеты. Каждая орбита
представляет из себя кортеж из пары чисел - полуосей ее
эллипса. Площадь эллипса вычисляется по формуле S = pi*a*b,
где a и b - длины полуосей эллипса. При решении задачи
используйте списочные выражения. Подсказка: проще всего
будет найти эллипс в два шага: сначала вычислить самую
большую площадь эллипса, а затем найти и сам эллипс,
имеющий такую площадь. Гарантируется, что самая далекая
планета ровно одна
Ввод:
orbits = [(1, 3), (2.5, 10), (7, 2), (6, 6), (4, 3)]
print(*find_farthest_orbit(orbits))
Вывод:
2.5 10
"""
import math
def find_farthest_orbit(list_of_orbits):
# Отфильтруем только эллиптические орбиты (a != b)
elliptical = [(a, b) for a, b in list_of_orbits if a != b]
# Вычислим площади S = π·a·b
areas = [math.pi * a * b for a, b in elliptical]
# Найдём индекс максимальной площади
max_index = areas.index(max(areas))
# Вернём полуоси орбиты с максимальной площадью
return elliptical[max_index]
# Пример использования
orbits = [(1, 3), (2.5, 10), (7, 2), (6, 6), (4, 3)]
a, b = find_farthest_orbit(orbits)
print(a, b) # Выведет: 2.5 10