import Test.QuickCheck
-- 1ª solución
sumaFilaTrianguloImpares1 :: Integer -> Integer
sumaFilaTrianguloImpares1 n =
sum [n^2-n+1, n^2-n+3 .. n^2+n-1]
-- 2ª solución
sumaFilaTrianguloImpares2 :: Integer -> Integer
sumaFilaTrianguloImpares2 = (^3)
-- Equivalencia
-- ============
-- La propiedad es
prop_sumaFilaTrianguloImpares :: Integer -> Property
prop_sumaFilaTrianguloImpares n =
n > 0 ==> sumaFilaTrianguloImpares1 n == sumaFilaTrianguloImpares2 n
-- La comprobación es
-- λ> quickCheck prop_sumaFilaTrianguloImpares
-- +++ OK, passed 100 tests.
-- Comparación de eficiencia
-- =========================
-- La comparación es
-- λ> length (show (sumaFilaTrianguloImpares1 (10^7)))
-- 22
-- (2.91 secs, 2,167,239,232 bytes)
-- λ> length (show (sumaFilaTrianguloImpares2 (10^7)))
-- 22
-- (0.01 secs, 102,584 bytes)