Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Similar Triangles by lonsiera
from typing import List, Tuple
Coords = List[Tuple[int, int]]
# Find length of sides
def square_sides(coords: Coords):
side = lambda p1,p2: (p1[0]-p2[0])**2 + (p1[1]-p2[1])**2
a = side(coords[0],coords[1])
b = side(coords[0],coords[2])
c = side(coords[1],coords[2])
return sorted((a,b,c))
def similar_triangles(coords_1: Coords, coords_2: Coords) -> bool:
s1 = square_sides(coords_1)
s2 = square_sides(coords_2)
# Compare proportions of square sides
return s1[0]/s2[0] == s1[1]/s2[1] and s1[2]/s2[2] == s1[1]/s2[1]
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!")
Dec. 11, 2020