Oceanografia ============= #. Un equip d’investigadors en oceanografia està analitzant mostres de sensors submarins que mesuren variacions d’intensitat de corrents marins mitjançant dos instruments diferents. Cada instrument retorna una *llista de mostres* amb valors enters que poden ser positius o negatius segons la direcció del flux. Dissenya la funció ``integra_mostres(l1, l2, soroll, saturacio)`` que, donades dues llistes de mostres *l1* i *l2* i dos valors enters que indiquen el *llindar de soroll* i el *límit de saturació*, retorna una llista amb els *valors integrats*. El valor integrat inicial es calcula aplicant la fórmula següent a cada parella de valors a i b situats a la mateixa posició de les dues llistes: .. math:: \lvert a+b\rvert - \frac{\lvert a-b\rvert}{2} on la divisió és entera, és a dir, es pren només la part entera del resultat. Després, s’ajusten els valors obtinguts d'aquesta manera: * Si el valor absolut és inferior al llindar de soroll, pren el valor 0. * Si el valor supera el límit de saturació, pren el valor del límit. Els següents doctests mostren exemples del que ha de fer la funció: .. literalinclude:: test-integra-mostres.txt :language: python3 :lines: 3-10 Disposes de més tests al fitxer :download:`test-integra-mostres.txt` Desa la funció al fitxer :file:`oceano.py` #. Cada jornada es registren diverses *sèries de mostres* en diferents punts d’observació marina. Aquestes sèries es guarden en una *llista de sèries*, on cada element és una llista de mostres corresponent a un punt d’observació. Per exemple: .. code-block:: python lseries = [[4, -2, 9], [1, 0, 2], [-5, 3, 6]] Dissenya la funció ``processa_series(lseries, lpatro, ll, llindar_soroll, limit_saturacio)`` que, donada una llista de sèries *lseries*, una llista de mostres de patró *lpatro* i els valors enters *ll*, *llindar_soroll* i *limit_saturacio*, retorna una llista de tuples amb els valors integrats de cada llista de sèrie amb el patró. La llista retornada només ha d’incloure les tuples corresponents a les sèries on la diferència entre el valor màxim i el mínim de la integració sigui superior al llindar *ll*. Els següents doctests mostren exemples del que ha de fer la funció: .. literalinclude:: test-processa-series.txt :language: python3 :lines: 3-11 Disposes de més tests al fitxer :download:`test-processa-series.txt` Desa la funció al fitxer :file:`oceano.py` #. Dissenya la funció ``ordena_valors_integrats(llista_tuples)`` que, donada una llista amb el format que retorna la funció ``processa_series``, **modifica** la llista de manera que estigui ordenada de forma ascendent segons l’energia mitjana integrada de cada tupla, és a dir, la mitjana dels quadrats dels valors que formen cada tupla. Els següents doctests mostren exemples del que ha de fer la funció: .. literalinclude:: test-ordena.txt :language: python3 :lines: 3-6 Disposes de més tests al fitxer :download:`test-ordena.txt` Desa la funció al fitxer :file:`oceano.py` Disposes de solucions al fitxer :download:`oceano.py`.