35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
|
from typing import List
|
|||
|
import math
|
|||
|
|
|||
|
|
|||
|
def checkio(a: int, b: int, c: int) -> List[int]:
|
|||
|
"""
|
|||
|
α = arccos[(b² + c² − a²) ÷ 2bc]
|
|||
|
β = arccos[(a² + c² − b²) ÷ 2ac]
|
|||
|
γ = arccos[(a² + b² − c²) ÷ 2ab]
|
|||
|
"""
|
|||
|
try:
|
|||
|
alpha = round(math.degrees(math.acos((b ** 2 + c ** 2 - a ** 2) / (2 * b * c))))
|
|||
|
beta = round(math.degrees(math.acos((a ** 2 + c ** 2 - b ** 2) / (2 * a * c))))
|
|||
|
gamma = round(math.degrees(math.acos((a ** 2 + b ** 2 - c ** 2) / (2 * a * b))))
|
|||
|
angles = [alpha, beta, gamma]
|
|||
|
angles.sort()
|
|||
|
if angles[0] == 0:
|
|||
|
return [0, 0, 0]
|
|||
|
|
|||
|
return angles
|
|||
|
except ValueError:
|
|||
|
return [0, 0, 0]
|
|||
|
|
|||
|
|
|||
|
# These "asserts" using only for self-checking and not necessary for auto-testing
|
|||
|
if __name__ == '__main__':
|
|||
|
print("Example:")
|
|||
|
print(checkio(4, 4, 4))
|
|||
|
|
|||
|
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"
|
|||
|
assert checkio(10, 20, 30) == [0, 0, 0], "It's can not be a triangle"
|
|||
|
print("Coding complete? Click 'Check' to earn cool rewards!")
|