Nombres triangulars

El terme general per generar la successió de nombres triangulars és el següent:

\(x_n = \dfrac{n^2+n}{2}\)

per \(n>=1\). Per exemple, els vuit primers triangulars serien 1, 3, 6, 10, 15 ,21, 28 i 36.

  1. Dissenya la funció quants_cal_sumar que donat un enter v retorna quants nombres triangulars cal sumar per tal de que la suma arribi a v o més.

    Desa la funció al fitxer triangulars.py. Exemples:

    >>> quants_cal_sumar(20)
    4
    >>> quants_cal_sumar(80)
    7
    >>> quants_cal_sumar(1)
    1
    

    Nota

    Pots descarregar el fitxer amb tests quants_cal_sumar.txt

  2. Dissenya la funció llista_mespetits que donat un enter v retorna una llista amb els nombres triangulars més petits o iguals que v.

    Desa la funció al fitxer triangulars.py. Exemples:

    >>> llista_mespetits(11)
    [1, 3, 6, 10]
    >>> llista_mespetits(28)
    [1, 3, 6, 10, 15, 21, 28]
    >>> llista_mespetits(1)
    [1]
    

    Nota

    Pots descarregar el fitxer amb tests llista_mespetits.txt

  3. Dissenya la funció mitjana_parells que donat un enter v retorna la un float amb la mitjana dels nombres triangulars parells més petits o iguals que v.

    Desa la funció al fitxer triangulars.py. Exemples:

    >>> mitjana_parells(11)
    8.0
    >>> mitjana_parells(37)
    20.0
    

    Nota

    Pots descarregar el fitxer amb tests mitjana_parells.txt

  4. Ara considerem la successió alternada de nombres triangulars, a on els termes van canviant de signe i definida com:

    \(x_n = (-1)^n\dfrac{n^2+n}{2}\)

    per \(n>=1\). Per exemple, els vuit primers triangulars alternats serien -1, 3, -6, 10, -15 ,21, -28 i 36.

    Dissenya la funció suma_alternats que donat un enter v retorna una llista amb els primers termes de la successió anterior tals que la seva suma sigui igual o superior a v.

    Desa la funció al fitxer triangulars.py. Exemples:

    >>> suma_alternats(5)
    [-1, 3, -6, 10]
    >>> suma_alternats(20)
    [-1, 3, -6, 10, -15, 21, -28, 36]
    

    Nota

    Pots descarregar el fitxer amb tests suma_alternats.txt

  5. Dissenya la funció es_triangular que donat un nombre enter, n, indiqui si és o no triangular. Un nombre enter, n, és triangular si existeix una base, b, tal que \(\sum_{i=1}^b i = n\). La funció ha de retornar un enter corresponent a la base, b, si el nombre és triangular o bé un zero si no és triangular.

    Desa la funció al fitxer triangulars.py. Exemples:

    >>> es_triangular (15)
    5
    >>> es_triangular (27)
    0
    >>> es_triangular (66)
    11
    >>> es_triangular (44)
    0
    

    Nota

    Pots descarregar el fitxer amb tests es_triangular.txt

  6. Dissenya la funció triangulars que donat un enter, maxn, obtingui els nombres triangulars des de l’1 fins a maxn (ambdós inclosos). La funció ha de construir i retornar una llista de tuples, on cada tuple representi un nombre triangular i consti de dos elements: el nombre triangular, n, i la base corresponent, b. Aquesta funció ha de cridar a la funció anterior es_triangular.

    Desa la funció al fitxer triangulars.py. Exemples:

    >>> triangulars (10)
    [(1, 1), (3, 2), (6, 3), (10, 4)]
    >>> triangulars (50)
    [(1, 1), (3, 2), (6, 3), (10, 4), (15, 5), (21, 6), (28, 7), (36, 8), (45, 9)]
    

    Nota

    Pots descarregar el fitxer amb tests triangulars.txt

Solució

Disposes de solucions al fitxer triangulars.py.