2. Magatzems

Una empresa guarda la informació dels seus magatzems en una llista de llistes on cada subllista representa un magatzem i està formada per strings. El primer indica el codi del magatzem, el segon, la zona a on està ubicat i, la resta, és un nombre variable de codis de producte disponibles al magatzem. Els dos primers caràcters de cada codi de producte indiquen el tipus.

Per exemple, la llista

['mag5','zona3','TM3','TX34']

representa al magatzem de codi mag5 que està ubicat a la zona anomenada zona3 i a on hi ha disponibles dos productes, el TM3 i el TX34 que són dels tipus TM i TX respectivament.

Desa les dues funcions següents al fitxer magatzems.py.

  1. Dissenya la funció disponible que donada una llista amb la informació d’un sol magatzem i un string que indica un tipus de producte, retorna la zona a on està ubicat el magatzem si el tipus de producte donat està disponible o un string buit en cas contrari.

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

    
    >>> r = disponible(['mag5','zona1','TX23X','TS2','TSZ42'],'TX')
    >>> r
    'zona1'
    >>> r = disponible(['mag5','zona1','TX23','TS2','TSZ42'],'PH')
    >>> r
    ''
    
    

    Disposeu de tests al fitxer test-disponible.txt.

  2. Dissenya la funció zones_disp que donats una llista de llistes de magatzems com la descrita anteriorment i un string que indica un tipus de producte, retorna una nova llista amb les zones a on hi ha algun magatzem amb disponibilitat d’algun producte del tipus donat. La llista estarà ordenada pel nom de la zona ascendentment i no contindrà repetits.

    Si no hi ha cap magatzem amb el tipus de producte donat, la funció retornarà la llista buida. Aquesta funció ha de cridar a la funció anterior disponible.

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

    
    >>> lm = [['mag5','zona3','TX23X','TS2','TSZ42'],['mag8','zona1','TM3','TX34'],
    ... ['mag2','zona1','TX52','TS5','TP35'],['mag12','zona12','TM3','TH6'],
    ... ['mag4','zona1','PN23A','UH32','TH2']]
    
    >>> r = zones_disp(lm,'TX')
    >>> r
    ['zona1', 'zona3']
    >>> r = zones_disp(lm,'TH')
    >>> r
    ['zona1', 'zona12']
    >>> r = zones_disp(lm,'AP')
    >>> r
    []
    
    

    Disposeu de tests al fitxer test-zones-disp.txt.