Exercitium
Definir la sucesión
tal que sus elementos son los números enteros comenzando en el 0 e intercalando los positivos y los negativos. Por ejemplo,
|
ghci> take 23 enteros [0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7,8,-8,9,-9,10,-10,11,-11] |
Comprobar con QuickCheck que el n-ésimo término de la sucesión es (1-(2n+1)(-1)^n)/4.
Nota. En la comprobación usar
|
quickCheckWith (stdArgs {maxSize=7}) prop_enteros |
Soluciones
|
import Test.QuickCheck enteros :: [Int] enteros = 0 : concat [[n,-n] | n <- [1..]] -- La propiedad es prop_enteros :: Int -> Property prop_enteros n = n >= 0 ==> enteros !! n == (1-(2*n+1)*(-1)^n) `div` 4 -- La comprobación es -- ghci> quickCheckWith (stdArgs {maxSize=7}) prop_enteros -- +++ OK, passed 100 tests. |
Se puede imprimir o compartir con