Copyright | Exercitium (12-05-14) |
---|---|
License | GPL-3 |
Maintainer | JoseA.Alonso@gmail.com |
Safe Haskell | Safe |
Language | Haskell2010 |
Ordenada_ciclicamente
Description
Ordenada cíclicamente
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.
Definir la función
ordenadaCiclicamente :: Ord a => [a] -> Int
tal que (ordenadaCiclicamente xs) es el índice (empezando en 1) a partir del cual está ordenada, si el la lista está ordenado cíclicamente y 0 en caso contrario. Por ejemplo,
>>>
ordenadaCiclicamente [1,2,3,4]
1>>>
ordenadaCiclicamente [5,8,2,3]
3>>>
ordenadaCiclicamente [4,6,7,5,4,3]
0>>>
ordenadaCiclicamente [1,0,1,2]
0>>>
ordenadaCiclicamente [0,2,0]
3>>>
ordenadaCiclicamente "cdeab"
4
- ordenadaCiclicamente :: Ord a => [a] -> Int
- ordenada :: Ord a => [a] -> Bool
- ordenadaCiclicamente2 :: Ord a => [a] -> Int
- siguienteCiclo :: [a] -> [a]
- listaOrdenadaCicliamente :: Gen [Int]
- prop_equiv_ordenadaCiclicamente1 :: Property
- prop_equiv_ordenadaCiclicamente2 :: [Int] -> Bool
Documentation
ordenadaCiclicamente :: Ord a => [a] -> Int Source #
1ª definición (por comprensión).
ordenada :: Ord a => [a] -> Bool Source #
(ordenada xs) se verifica si la lista xs está ordenada crecientemente. Por ejemplo,
>>>
ordenada "acd"
True>>>
ordenada "acdb"
False
ordenadaCiclicamente2 :: Ord a => [a] -> Int Source #
2ª definición (por recursión)
siguienteCiclo :: [a] -> [a] Source #
(siguienteCiclo xs) es la lista obtenida añadiendo el primer elemento de xs al final del resto de xs. Por ejemplo,
>>>
siguienteCiclo [3,2,5]
[2,5,3]
listaOrdenadaCicliamente :: Gen [Int] Source #
Generador de listas ordenadas cíclicamente.
> sample listaOrdenadaCicliamente [] [0,0] [-4,4] [2,4,-3] [2,6,8,-7,-1,1] [3,-1] [-11,-9,-5,-4,0,0,2] [-10,8] [-9,-7,-1,5,-13,-9] [-7,3,17,-15] []
prop_equiv_ordenadaCiclicamente1 :: Property Source #
Comprobación de la equivalencia de las definiciones de
ordenadaCiclicamente
sobre listas ordenadas cíclicamente.
>>>
quickCheck prop_equiv_ordenadaCiclicamente1
+++ OK, passed 100 tests.
prop_equiv_ordenadaCiclicamente2 :: [Int] -> Bool Source #
Comprobación de la equivalencia de las definiciones de
ordenadaCiclicamente
.
>>>
quickCheck prop_equiv_ordenadaCiclicamente2
+++ OK, passed 100 tests.