Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for The Angles of a Triangle by Kacper_Kapela
"""
W tym zadaniu mamy policzyć wszystkie kąty danego trójkąta.
Dodatkowo każdy argument(bok) musi być uporządkowany rosnąco.
Dodatkowo jeżeli te trzy boki nie tworzą trójkąta to mamy wypisać wszedzie 0.
"""
"""
1. Pobieram moduły arccosinus i stopnie aby:
a) Zamienić funkcje cosinus na arccosinus
b) przeliczyć radiany na stopnie
2. Tworzę funkcję opartą na twierdzeniu cosinusów ,która będzie mi przeliczać boki na kąty
a) Zwraca ona zaokrągloną liczbę w stopniach. W środku tej funkcji znajduje się wzór na twierdzenie cosinusów niezbędny do przeliczenia tych kątow.
b) Używam tutaj funkcji arccos aby odrazu zamienic ten cosinus na "radiany"
c) Ktore sa przeliczane odrazu na stopnie i zaokraglane
3. W funkcji głownej tworze warunek na istnienie trojkątów. Jeśli nie istnieje trojkat zwracam zera
4. Zwracam mój wynik dla poszczególnych kątów (w zadaniu miały być one posrtowane stad funkcja sorted)
"""
from math import acos, degrees
def kąty(a, b, c):
return round(degrees(acos((a**2 + b**2 - c**2) / (2*a*b))))
def checkio(a, b, c):
if a + b <= c or a + c <= b or b + c <= a:
return [0, 0, 0]
return sorted([kąty(a,b,c), kąty(a,c,b), kąty(c,b,a)])
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert checkio(4, 4, 4) == [60, 60, 60], "All sides are equal"
assert checkio(3, 4, 5) == [37, 53, 90], "Egyptian triangle"
assert checkio(2, 2, 5) == [0, 0, 0], "It's can not be a triangle"
Dec. 20, 2015