#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Nov 27 17:15:49 2021

@author: ojacques
"""

def optimal_number_of_clusters(wcss):
    x0, y0 = 2, wcss[0]  #P0
    x1, y1 = 20, wcss[len(wcss)-1] #P2

    distances = []
    for i in range(len(wcss)):
        x = i+2        #primeiro x é com 2 clusters
        y = wcss[i]    #primeiro y é com wcss[0]
        numerator = abs((y1-y0)*x - (x1-x0)*y + x1*y0 - y1*x0)
        denominator = sqrt((y1 - y0)**2 + (x1 - x0)**2)
        distances.append(numerator/denominator)
    
    return distances.index(max(distances)) + 2