Soluzione Minimi Locali
21 Feb 2017
Soluzione Minimi Locali
def local_min(vec)
# Per prima cosa controlliamo gli input
raise ArgumentError, "vec deve essere un Array" unless vec.is_a? Array
vec.each do |i|
raise ArgumentError, "vec deve contenere Numeric" unless i.is_a? Numeric
end
# Costruiamo l'hash da ritornare e l'indice del minimo
r = {}
idx = 0
# Iteriamo dall'inizio + 1 dell'Array fino alla fine - 1, dove
# possiamo veramente valutare la posizione dei minimi
for i in 1...(vec.size - 1)
if vec[i] < vec[i-1] and vec[i] < vec[i+1] # condizione di minimo
idx += 1
r[idx] = vec[(i-1)..(i+1)]
end
end
# Ritorniamo il risultato
return r
end