if __name__ == "__main__":
    rng = np.random.default_rng(0)
    true_centers = np.array([[0, 0], [5, 5], [0, 5]])
    X = np.vstack([
        rng.normal(loc=c, scale=0.6, size=(80, 2)) for c in true_centers
    ])

    print("k | inertia | silhouette")
    for k in range(2, 6):
        centroids, assignments = kmeans(X, k, seed=1)
        inert = inertia(X, centroids, assignments)
        sil = silhouette_score(X, assignments)
        print(f"{k} | {inert:8.2f} | {sil:.3f}")
