Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Similar Triangles by liw_80
from typing import List, Tuple
Coords = List[Tuple[int, int]]
def similar_triangles(coords_1: Coords, coords_2: Coords) -> bool:
a_1 = ((coords_1[0][0] - coords_1[1][0]) ** 2 + (coords_1[0][1] - coords_1[1][1]) ** 2) ** 0.5
b_1 = ((coords_1[0][0] - coords_1[2][0]) ** 2 + (coords_1[0][1] - coords_1[2][1]) ** 2) ** 0.5
c_1 = ((coords_1[2][0] - coords_1[1][0]) ** 2 + (coords_1[2][1] - coords_1[1][1]) ** 2) ** 0.5
a_2 = ((coords_2[0][0] - coords_2[1][0]) ** 2 + (coords_2[0][1] - coords_2[1][1]) ** 2) ** 0.5
b_2 = ((coords_2[0][0] - coords_2[2][0]) ** 2 + (coords_2[0][1] - coords_2[2][1]) ** 2) ** 0.5
c_2 = ((coords_2[2][0] - coords_2[1][0]) ** 2 + (coords_2[2][1] - coords_2[1][1]) ** 2) ** 0.5
length_1 = sorted([a_1, b_1, c_1])
length_2 = sorted([a_2, b_2, c_2])
return length_1[0] / length_2[0] == length_1[1] / length_2[1] == length_1[2] / length_2[2]
if __name__ == '__main__':
print("Example:")
print(similar_triangles([(0, 0), (1, 2), (2, 0)], [(3, 0), (4, 2), (5, 0)]))
# These "asserts" are used for self-checking and not for an auto-testing
assert similar_triangles([(0, 0), (1, 2), (2, 0)], [(3, 0), (4, 2), (5, 0)]) is True, 'basic'
assert similar_triangles([(0, 0), (1, 2), (2, 0)], [(3, 0), (4, 3), (5, 0)]) is False, 'different #1'
assert similar_triangles([(0, 0), (1, 2), (2, 0)], [(2, 0), (4, 4), (6, 0)]) is True, 'scaling'
assert similar_triangles([(0, 0), (0, 3), (2, 0)], [(3, 0), (5, 3), (5, 0)]) is True, 'reflection'
assert similar_triangles([(1, 0), (1, 2), (2, 0)], [(3, 0), (5, 4), (5, 0)]) is True, 'scaling and reflection'
assert similar_triangles([(1, 0), (1, 3), (2, 0)], [(3, 0), (5, 5), (5, 0)]) is False, 'different #2'
print("Coding complete? Click 'Check' to earn cool rewards!")
April 26, 2020