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!")
|