Triangle de Tartaglia

Avís

Per a resoldre aquest exercici no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements d’un iterador.

Ens proposen que apliquem el següent mètode per generar el triangle de Tartaglia :

  1. Dissenyeu la funció genenadora següent i deseu-la al mòdul tartaglia (fitxer tartaglia.py):

    tartaglia.crea_linia(iterlin)

    Donat un iterador, iterlin sobre la seqüència dels nombres enters corresponents a una determinada fila del triangle de Tartaglia (a partir de la segona fila), genera un altre iterador sobre la seqüència dels nombres enters corresponents a la fila següent a la donada. Exemples:

    >>> from tartaglia import *
    
    >>> a = crea_linia(iter([1, 4, 6, 4, 1]))
    >>> next(a)
    1
    >>> next(a)
    5
    >>> for x in a:
    ...    print(x, end = '/')
    10/10/5/1/
    
    >>> a = crea_linia(iter([1, 1]))
    >>> for x in a:
    ...    print(x, end = '/')
    1/2/1/
    
    >>> a = crea_linia(iter([1,7,21,35,35,21,7,1,]))
    >>> for x in a:
    ...    print(x, end = '/')
    1/8/28/56/70/56/28/8/1/
    
    

Disposeu de jocs de prova en el fitxer test-linia.txt.

  1. Dissenyeu la funció generadora següent i deseu-la al mòdul tartaglia (fitxer tartaglia.py):

    tartaglia.triangle_tartaglia(n)

    Donat un enter, n, genera un iterador sobre una seqüència d’iteradors corresponents a les files consecutives del triangle de Tartaglia fins a la fila n. Aquesta funció ha de cridar la funció crea_linia(). Exemples:

    >>> from tartaglia import *
    
    >>> t1 = triangle_tartaglia(1)
    >>> for subit in t1:
    ...    for e in subit:
    ...        print(e, end = '/')
    ...    print('/')
    1//
    
    >>> t2 = triangle_tartaglia(2)
    >>> for subit in t2:
    ...    for e in subit:
    ...        print(e, end = '/')
    ...    print('/')
    1//
    1/1//
    
    >>> t3 = triangle_tartaglia(4)
    >>> for subit in t3:
    ...    for e in subit:
    ...        print(e, end = '/')
    ...    print('/')
    1//
    1/1//
    1/2/1//
    1/3/3/1//
    
    

Disposeu de jocs de prova en el fitxer test-tartaglia.txt.

Disposeu de més jocs de prova de totes dues funcions en el fitxer test-tartaglia2.txt.

Solució

Disposeu d’una solució al fitxer tartaglia.py.