3. Pneumàtics

El codi d’un pneumàtic consta de quatre parts, separades per un espai en blanc, de les quals la darrera indica la data de fabricació del pneumàtic. Aquesta data consta de quatre dígits a on els dos primers són el número de setmana i els dos següents l’any. Per exemple, al codi

DOT CP7R P1X0 3112

la data està representada per 3112 i representa la setmana 31 i l’any 2012.

Un fabricant disposa d’una llista de codis de pneumàtics representats com a strings que vol mantenir ordenada per data de fabricació, d’antics a més nous, i necessita verificar si la llista està correctament ordenada.

Dissenya les funcions següents i desa-les al fitxer pneumatics.py.

  1. Dissenya la funció extreu_data que donat un string que representa el codi d’un neumàtic retorna dos enters amb el número de setmana i l’any de fabricació.

    Els següents doctests mostren exemples del que ha de fer la funció:

    >>> s, a = extreu_data('DOT CP7R P1X0 1112')
    >>> s
    11
    >>> a
    12
    

    Disposes de més tests al fitxer test-extreu-data.txt.

  2. Dissenya la funció mal_ordenat que, donada una llista de strings que representen codis de pneumàtics, retorna, una nova llista amb els codis de pneumàtic mal ordenats, és a dir, que estiguin fabricats a una data anterior a la del pneumàtic immediatament anterior en la llista. Si tots els neumàtics estan ben ordenats, la funció retornarà una llista buida. Els codis de la nova llista estaran al mateix ordre que a la llista donada.

    Aquesta funció ha de cridar a la funció anterior.

    Els següents doctests mostren exemples del que ha de fer la funció:

    >>> lpneu = ['DOT CP7R P1X0 1112','DOT CP7R P1X0 2312','DOT CP7R P1X0 2512',
    ... 'DOT CP7R P1X0 2112','DOT CP7R P1X0 1112']
    
    >>> mal_ordenat(lpneu)
    ['DOT CP7R P1X0 2112', 'DOT CP7R P1X0 1112']
    
    >>> lpneu = ['DOT CP7R P1X0 1112','DOT CP7R P1X0 2312','DOT CP7R P1X0 2512','DOT CP7R P1X0 3112','DOT CP7R P1X0 0113']
    
    >>> mal_ordenat(lpneu)
    []
    

    Disposes de més tests al fitxer test-mal-ordenat.txt.

Solució

Disposes de solucions al fitxer pneumatics.py.