Rutas
/
Haskell
Haskell
/
Ejercicios
/
Triángulo de Pascal
Triángulo de Pascal

Triángulo de Pascal

Media

Introducción

Con el buen tiempo que hace, no te apetece nada pasar una hora en un aula. Molesto, entras en el aula y te fijas en una figura triangular curiosamente satisfactoria en la pizarra. Mientras esperas a que llegue tu profesor de matemáticas, no puedes evitar fijarte en algunos patrones del triángulo: los valores de los extremos son todos unos, cada fila siguiente tiene un valor más que la anterior y el triángulo es simétrico. ¡Qué raro!

Poco después de que te sientes, tu profesor entra en el aula y te explica que este triángulo es el famoso triángulo de Pascal.

A lo largo de la hora siguiente, tu profesor te revela algunas cosas asombrosas que esconde este triángulo:

  • Se puede usar para calcular de cuántas formas puedes elegir K elementos de entre N valores.
  • Contiene la sucesión de Fibonacci.
  • Si coloreas los números pares e impares de forma distinta, obtienes un bonito patrón llamado triángulo de Sierpiński.

El profesor te pide a ti y a tus compañeros que busquéis otros usos, ¡y te asegura que hay muchísimos más! En ese momento, suena el timbre del colegio. Te das cuenta de que durante la última hora has estado completamente absorto aprendiendo sobre el triángulo de Pascal. Coges el portátil de la mochila rápidamente y sales fuera, listo para disfrutar tanto del sol como de las maravillas del triángulo de Pascal.

Instrucciones

Tu tarea es generar las primeras N filas del triángulo de Pascal.

El triángulo de Pascal es un array triangular de números enteros positivos.

En el triángulo de Pascal, el número de valores de una fila es igual al número de esa fila (que empieza en uno). Por lo tanto, la primera fila tiene un valor, la segunda fila tiene dos valores, y así sucesivamente.

La primera fila (la más alta) tiene un único valor: 1. Los valores de las filas siguientes se calculan sumando los números que están directamente a la derecha y a la izquierda de la posición actual en la fila anterior.

Si la fila anterior no tiene un valor a la izquierda o a la derecha de la posición actual (lo que solo ocurre en las posiciones más a la izquierda y más a la derecha), trata el valor de esa posición como cero (lo que equivale a «ignorarlo» en la suma).

Ejemplo

Vamos a ver las primeras 5 filas del triángulo de Pascal:

    1
   1 1
  1 2 1
 1 3 3 1
1 4 6 4 1

La fila más alta tiene un valor, que es 1.

Los valores más a la izquierda y más a la derecha solo tienen una posición precedente que considerar, que es la posición a su derecha y a su izquierda, respectivamente. Como el valor más alto es 1, se deduce que todos los valores más a la izquierda y más a la derecha también son 1.

Los demás valores tienen dos posiciones que considerar. Por ejemplo, el valor central de la quinta fila (1 4 6 4 1) es 6, ya que los valores a su izquierda y a su derecha en la fila anterior son 3 y 3:

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Haskell Exercism

¿Listo para empezar Triángulo de Pascal?

Regístrate en Exercism para aprender y dominar Haskell con 107 ejercicios y mentoría humana real, todo gratis.