CMU Coding Bootcamp
1from math import sqrt
2
3
4def almostEqual(x: float, y: float) -> bool:
5 return abs(x - y) < 10**-9
6
7
8def triangleArea(a: float, b: float, c: float) -> float:
9 """Use herons formula: `sp = (a+b+c)/2` & `sqrt(sp(sp-a)(sp-b)(sp-c))` to calculate the area of a triangle using it's side lengths."""
10 semiperimeter = 0.5 * (a + b + c)
11 return sqrt(
12 semiperimeter * (semiperimeter - a) * (semiperimeter - b) * (semiperimeter - c)
13 )
14
15
16print("Testing triangleArea()...", end="")
17assert almostEqual(triangleArea(3, 4, 5), 6)
18assert almostEqual(triangleArea(15, 9, 12), 54)
19assert almostEqual(triangleArea(7, 25, 24), 84)
20assert almostEqual(triangleArea(8, 15, 17), 60)
21assert almostEqual(triangleArea(0, 0, 0), 0)
22assert almostEqual(triangleArea(1, 1, 1), sqrt(3) / 4)
23assert almostEqual(triangleArea(5, 5, 5), 25 * sqrt(3) / 4)
24assert almostEqual(triangleArea(12, 12, 12), 144 * sqrt(3) / 4)
25assert almostEqual(triangleArea(7, 12, 18), sqrt(11063) / 4)
26assert almostEqual(triangleArea(9.1, 11.7, 3), 7 * sqrt(3026) / 50)
27print("Passed!")