+2
-2
python/assignments/sep30/level1/numberOfBricks.py
+2
-2
python/assignments/sep30/level1/numberOfBricks.py
+7
-7
python/assignments/sep30/level1/triangleArea.py
+7
-7
python/assignments/sep30/level1/triangleArea.py
···
1
-
import math
1
+
from math import sqrt
2
2
def almostEqual(x, y):
3
3
return (abs(x - y) < 10**-9)
4
4
5
5
def triangleArea(a, b, c):
6
6
semiperimeter = .5 * (a + b + c)
7
-
return math.sqrt(semiperimeter * (semiperimeter - a) * (semiperimeter - b) * (semiperimeter - c))
7
+
return sqrt(semiperimeter * (semiperimeter - a) * (semiperimeter - b) * (semiperimeter - c))
8
8
9
9
10
10
print('Testing triangleArea()...', end='')
···
13
13
assert(almostEqual(triangleArea(7, 25, 24), 84))
14
14
assert(almostEqual(triangleArea(8, 15, 17), 60))
15
15
assert(almostEqual(triangleArea(0, 0, 0), 0))
16
-
assert(almostEqual(triangleArea(1, 1, 1), math.sqrt(3)/4))
17
-
assert(almostEqual(triangleArea(5, 5, 5), 25*math.sqrt(3)/4))
18
-
assert(almostEqual(triangleArea(12, 12, 12), 144*math.sqrt(3)/4))
19
-
assert(almostEqual(triangleArea(7, 12, 18), math.sqrt(11063)/4))
20
-
assert(almostEqual(triangleArea(9.1, 11.7, 3), 7*math.sqrt(3026)/50))
16
+
assert(almostEqual(triangleArea(1, 1, 1), sqrt(3)/4))
17
+
assert(almostEqual(triangleArea(5, 5, 5), 25*sqrt(3)/4))
18
+
assert(almostEqual(triangleArea(12, 12, 12), 144*sqrt(3)/4))
19
+
assert(almostEqual(triangleArea(7, 12, 18), sqrt(11063)/4))
20
+
assert(almostEqual(triangleArea(9.1, 11.7, 3), 7*sqrt(3026)/50))
21
21
print('Passed!')
+18
python/assignments/sep30/level3/numberOfSteps.py
+18
python/assignments/sep30/level3/numberOfSteps.py
···
1
+
from math import sqrt,ceil
2
+
3
+
def numberOfSteps(bricks: int):
4
+
return ceil((-1 + sqrt(1+8*bricks))/2)
5
+
6
+
print('Testing numberOfSteps()...', end='')
7
+
assert(numberOfSteps(0) == 0)
8
+
assert(numberOfSteps(1) == 1)
9
+
assert(numberOfSteps(2) == 2)
10
+
assert(numberOfSteps(3) == 2)
11
+
assert(numberOfSteps(4) == 3)
12
+
assert(numberOfSteps(6) == 3)
13
+
assert(numberOfSteps(7) == 4)
14
+
assert(numberOfSteps(10) == 4)
15
+
assert(numberOfSteps(11) == 5)
16
+
assert(numberOfSteps(55) == 10)
17
+
assert(numberOfSteps(56) == 11)
18
+
print('Passed!')
+25
python/assignments/sep30/level3/rectanglesOverlap.py
+25
python/assignments/sep30/level3/rectanglesOverlap.py
···
1
+
def rectanglesOverlap(ax1:int, ay1:int, aw:float, ah:float, bx1:int, by1:int, bw:float, bh:float):
2
+
ax2 = ax1 + aw
3
+
ay2 = ay1 + ah
4
+
bx2 = bx1 + bw
5
+
by2 = by1 + bh
6
+
return (ax1 <= bx2 and ax2 >= bx1) and (ay1 <= by2 and ay2 >= by1)
7
+
8
+
print('Testing rectanglesOverlap()...', end='')
9
+
# Intersect at right of rectangle 1
10
+
assert(rectanglesOverlap(1,1,5,1,6,1,2,2) == True)
11
+
# Intersect at top of rectangle 1
12
+
assert(rectanglesOverlap(1,4,5,3,1,5,8,3) == True)
13
+
# Intersect at left of rectangle 1
14
+
assert(rectanglesOverlap(1,5,6,6,-4,7,5,3) == True)
15
+
# Intersect at bottom of rectanagle 1
16
+
assert(rectanglesOverlap(10,10,3,3,9,7,3,3) == True)
17
+
# Partially overlapping rectangles
18
+
assert(rectanglesOverlap(1,7,3,6,3,4,2,5) == True)
19
+
# Don't intersect
20
+
assert(rectanglesOverlap(1,4,3,3,10,10,5,5) == False)
21
+
# Don't intersect, but x-coordinates overlap
22
+
assert(rectanglesOverlap(1,4,30,3,10,10,5,5) == False)
23
+
# Don't intersect, but y-coordinates overlap
24
+
assert(rectanglesOverlap(1,4,3,15,10,10,5,5) == False)
25
+
print('Passed!')
+25
python/assignments/sep30/level3/triangeAreaByCoordinates.py
+25
python/assignments/sep30/level3/triangeAreaByCoordinates.py
···
1
+
from math import sqrt
2
+
3
+
def almostEqual(x: float, y: float):
4
+
return (abs(x - y) < 10**-9)
5
+
6
+
def distance(a: tuple[int, int], b: tuple[int, int]):
7
+
return sqrt((b[0]-a[0])**2 + (b[1]-a[1])**2)
8
+
9
+
def triangleArea(a: float, b: float, c: float):
10
+
semiperimeter = .5 * (a + b + c)
11
+
return sqrt(semiperimeter * (semiperimeter - a) * (semiperimeter - b) * (semiperimeter - c))
12
+
13
+
def triangleAreaByCoordinates(x1, y1, x2, y2, x3, y3):
14
+
A = distance((x1, y1), (x2, y2))
15
+
B = distance((x2, y2), (x3, y3))
16
+
C = distance((x3, y3), (x1, y1))
17
+
return triangleArea(A, B, C)
18
+
19
+
print('Testing triangleAreaByCoordinates()...', end='')
20
+
assert(almostEqual(triangleAreaByCoordinates(10, 11, 14, 11, 12, 13), 4))
21
+
assert(isinstance(triangleAreaByCoordinates(10, 11, 14, 11, 12, 13), float))
22
+
assert(almostEqual(triangleAreaByCoordinates(2, 4.0, 2, 7, 6.0, 7), 6))
23
+
assert(almostEqual(triangleAreaByCoordinates(0, 0, 12.0, 0, 12, 5), 30))
24
+
assert(almostEqual(triangleAreaByCoordinates(0, 0, 0, 1, 1, 1), 0.5))
25
+
print('Passed!')