Triángulo de Pascal binario
Los triángulos binarios de Pascal se formas a partir de una lista de ceros y unos usando las reglas del triángulo de Pascal, donde cada uno de los números es suma módulo dos de los dos situados en diagonal por encima suyo. Por ejemplo, los triángulos binarios de Pascal correspondientes a [1,0,1,1,1] y [1,0,1,1,0] son
1 0 1 1 1 1 0 1 1 0 1 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 0 0 1
Sus finales, desde el extremo inferior al extremos superior derecho, son [0,1,0,0,1] y [1,0,1,1,0], respectivamente.
Una lista es Pascal capicúa si es igual a los finales de su triángulo binario de Pascal. Por ejemplo, [1,0,1,1,0] es Pascal capicúa.
Definir las funciones
trianguloPascalBinario :: [Int] -> [[Int]] pascalCapicuas :: Int -> [[Int]] nPascalCapicuas :: Int -> Integer
tales que
- (trianguloPascalBinario xs) es el triágulo binario de Pascal correspondiente a la lista xs. Por ejemplo,
λ> trianguloPascalBinario [1,0,1,1,1] [[1,0,1,1,1],[1,1,0,0],[0,1,0],[1,1],[0]] λ> trianguloPascalBinario [1,0,1,1,0] [[1,0,1,1,0],[1,1,0,1],[0,1,1],[1,0],[1]]
- (pascalCapicuas n) es la lista de listas de Pascal capicúas de n elementos. Por ejemplo,
λ> pascalCapicuas 2 [[0,0],[1,0]] λ> pascalCapicuas 3 [[0,0,0],[0,1,0],[1,0,0],[1,1,0]] λ> pascalCapicuas 4 [[0,0,0,0],[0,1,1,0],[1,0,0,0],[1,1,1,0]]
- (nPascalCapicuas n) es el número de listas de Pascal capicúas de n elementos. Por ejemplo,
λ> nPascalCapicuas 2 2 λ> nPascalCapicuas 3 4 λ> nPascalCapicuas 4 4 λ> nPascalCapicuas 400 1606938044258990275541962092341162602522202993782792835301376 λ> length (show (nPascalCapicuas (10^5))) 15052 λ> length (show (nPascalCapicuas (10^6))) 150515 λ> length (show (nPascalCapicuas (10^7))) 1505150







