Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Speedy category for Similar Triangles by Nina_Belova
def similar_triangles(c1, c2) -> bool:
# The list of two arrays of the squares of the lengths of the sides of the triangles:
s = [[(c[k-1][0] - c[k][0]) ** 2 + (c[k-1][1] - c[k][1]) ** 2 for k in range(3)] for c in (c1, c2)]
# If the triangles are similar, then the ratio of the corresponding sides are equal:
return len(set(sorted(s[0])[i] / sorted(s[1])[i] for i in range(3))) == 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!")
July 20, 2020
Comments: