package datascience

import "math"

// MinMaxScale escala los valores al rango [0, 1] usando min-max normalización.
// Si min == max, retorna un slice de ceros.
func MinMaxScale(data []float64) []float64 {
	n := len(data)
	if n == 0 {
		return []float64{}
	}

	minVal := math.Inf(1)
	maxVal := math.Inf(-1)
	for _, v := range data {
		if v < minVal {
			minVal = v
		}
		if v > maxVal {
			maxVal = v
		}
	}

	rang := maxVal - minVal
	result := make([]float64, n)
	if rang == 0 {
		return result
	}
	for i, v := range data {
		result[i] = (v - minVal) / rang
	}
	return result
}
