Programa Python para imprimir el Triángulo de Pascal

El triángulo de Pascal es un patrón del triángulo que se basa en nCr , a continuación se muestra la representación pictórica del triángulo de Pascal.

Ejemplo:

Input: N = 5
Output:
      1
     1 1
    1 2 1
   1 3 3 1
  1 4 6 4 1

Método 1: usando la fórmula nCr , es decir, n!/(nr)!r!

Después de usar la fórmula nCr, la representación pictórica se convierte en:

          0C0
       1C0   1C1
    2C0   2C1   2C2
 3C0   3C1   3C2    3C3

Algoritmo:

  • Tome un número de filas para imprimir, supongamos que es n
  • Realice la iteración exterior i de 0 a n veces para imprimir las filas.
  • Haga una iteración interna para j de 0 a (N – 1).
  • Imprima un solo espacio en blanco ” “.
  • Cierre el bucle interno (bucle j) // es necesario para el espacio a la izquierda.
  • Haga una iteración interna para j de 0 a i.
  • Imprima nCr de i y j.
  • Cierra el bucle interior.
  • Imprime el carácter de nueva línea (\n) después de cada iteración interna.

Implementación:

Python3

# Print Pascal's Triangle in Python
from math import factorial
 
# input n
n = 5
for i in range(n):
    for j in range(n-i+1):
 
        # for left spacing
        print(end=" ")
 
    for j in range(i+1):
 
        # nCr = n!/((n-r)!*r!)
        print(factorial(i)//(factorial(j)*factorial(i-j)), end=" ")
 
    # for new line
    print()

Producción:

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

Complejidad temporal: O(N 2 )

Método 2: podemos optimizar el código anterior mediante el siguiente concepto de coeficiente binomial, la i-ésima entrada en una línea numérica es el coeficiente binomial C (línea, i) y todas las líneas comienzan con el valor 1. La idea es calcular C(línea, i) usando C(línea, i-1) .

C(line, i) = C(line, i-1) * (line - i + 1) / i

Implementaciones:

Python3

# Print Pascal's Triangle in Python
 
# input n
n = 5
 
for i in range(1, n+1):
    for j in range(0, n-i+1):
        print(' ', end='')
 
    # first element is always 1
    C = 1
    for j in range(1, i+1):
 
        # first value in a line is always 1
        print(' ', C, sep='', end='')
 
        # using Binomial Coefficient
        C = C * (i - j) // j
    print()

Producción:

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

Complejidad temporal: O(N 2 )

Método 3: Este es el enfoque más optimizado para imprimir el triángulo de Pascal, este enfoque se basa en potencias de 11.

11**0 = 1
11**1 = 11
11**2 = 121
11**3 = 1331

Implementación:

Python3

# Print Pascal's Triangle in Python
 
# input n
n = 5
 
# iterarte upto n
for i in range(n):
    # adjust space
    print(' '*(n-i), end='')
 
    # compute power of 11
    print(' '.join(map(str, str(11**i))))

Producción:

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

Complejidad de tiempo: O(N)

Sin embargo, este enfoque es aplicable hasta n=5 solamente.

Publicación traducida automáticamente

Artículo escrito por pradiptamukherjee y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *