Programa de Python para imprimir la array de Aitken

Dado un número n. La tarea es imprimir la array de Aikten hasta n.

Ejemplos:

Input: 5
Output:
[1]
[1, 2]
[2, 3, 5]
[5, 7, 10, 15]
[15, 20, 27, 37, 52]


Input: 7
Output:
[1]
[1, 2]
[2, 3, 5]
[5, 7, 10, 15]
[15, 20, 27, 37, 52]
[52, 67, 87, 114, 151, 203]
[203, 255, 322, 409, 523, 674, 877]

Para imprimirlo primero seguimos los siguientes pasos:

  • Escribimos 1 en la primera fila.
  • A continuación, llenamos el valor más a la izquierda de cada fila con el valor más a la derecha de la fila anterior.
  • Los siguientes elementos de cada fila se llenan con la regla simple, es decir, cada elemento de una fila en particular es la suma de los valores a la izquierda de esa fila con los valores de la fila superior en la misma posición.
    Para una mejor comprensión, consideremos la tercera fila del ejemplo anterior que consta de los elementos 2, 3, 5. El valor más a la izquierda de esta fila es el valor más a la derecha de la fila anterior, es decir, 2. El siguiente valor 3 es la suma del valor a la izquierda si esa fila (2) y el valor en la misma posición de la fila anterior (1). Del mismo modo, 5 es la suma de 3 y 2.

A continuación se muestra la implementación.

# Python program to print
# Aitken's array
  
  
from queue import Queue
from functools import reduce, lru_cache
  
  
# for dynamic programming
# Recursive function to print the 
# Aitken's array.
@lru_cache()
def rec(n):
      
    # Base case
    if n == 1:
        print([1])
        return [1]
      
    array =  [rec(n-1)[-1]]
      
    for k in range(n-1):
        array.append(array[k] + rec(n-1)[k])
  
    print(array)
  
    return array
  
# Driver's code 
rec(7)

Producción:

[1]
[1, 2]
[2, 3, 5]
[5, 7, 10, 15]
[15, 20, 27, 37, 52]
[52, 67, 87, 114, 151, 203]
[203, 255, 322, 409, 523, 674, 877]

Publicación traducida automáticamente

Artículo escrito por VisheshMangla1 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 *