Exercitium1-0.1.0.0: Problemas de Exercitium (Volumen 1)

CopyrightExercitium (12-05-14)
LicenseGPL-3
MaintainerJoseA.Alonso@gmail.com
Safe HaskellSafe
LanguageHaskell2010

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

Synopsis

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.