Se dice que una sucesión x(1), …, x(n) está ordenada cíclicamente si existe un índice i tal que la sucesión
x(i), x(i+1), ..., x(n), x(1), ..., x(i-1) |
está ordenada crecientemente de forma estricta.
Definir la función
ordenadaCiclicamente :: Ord a => [a] -> Maybe Int |
tal que (ordenadaCiclicamente xs)
es el índice a partir del cual está ordenada, si la lista está ordenado cíclicamente y Nothing
en caso contrario. Por ejemplo,
ordenadaCiclicamente [1,2,3,4] == Just 0 ordenadaCiclicamente [5,8,1,3] == Just 2 ordenadaCiclicamente [4,6,7,5,1,3] == Nothing ordenadaCiclicamente [1,0,3,2] == Nothing ordenadaCiclicamente [1,2,0] == Just 2 ordenadaCiclicamente "cdeab" == Just 3 |
Nota: Se supone que el argumento es una lista no vacía sin elementos repetidos.