<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def triangulate(points):
 """ Connects an input list of xy tuples with lines forming a set of smallest possible Delauney triangles between them. Arguments: - **points**: A list of xy or xyz point tuples to triangulate. Returns: - A list of triangle polygons. If the input coordinate points contained a third z value then the output triangles will also have these z values. """

    # Remove duplicate xy points bc that would make delauney fail, and must remember z (if any) for retrieving originals from index results
    seen = set() 
    uniqpoints = [ p for p in points if str( p[:2] ) not in seen and not seen.add( str( p[:2] ) )]
    classpoints = [_Point(*point[:2]) for point in uniqpoints]

    # Compute Delauney
    triangle_ids = tesselator.computeDelaunayTriangulation(classpoints)

    # Get vertices from result indexes
    triangles = [[uniqpoints[i] for i in triangle] for triangle in triangle_ids]
    
    return triangles