2. 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:\[\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ó:
# el segon valor és inferior al llindar de soroll >>> integra_mostres([4, -2, 9], [3, 5, -8], 2, 10) [7, 0, -7] # el tercer valor supera el límit de saturació # el quart valor és inferior al llindar de soroll >>> integra_mostres([-5, -3, 20, -1], [-2, -8, 5, 1], 2, 10) [6, 9, 10, 0]
Disposes de més tests al fitxer
test-integra-mostres.txtDesa la funció al fitxer
oceano.pyCada 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:
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ó:
>>> lseries = [[4, -2, 9], [1, 0, 2], [-5, 3, 6]] >>> lpatro = [3, 5, -8] >>> processa_series(lseries, lpatro, 6, 2, 10) [(7, 0, -7), (-2, 7, -5)] >>> lseries = [[1, 1], [0, 0], [-1, -1]] >>> lpatro = [1, 1] >>> processa_series(lseries, lpatro, 5, 1, 10) []
Disposes de més tests al fitxer
test-processa-series.txtDesa la funció al fitxer
oceano.pyDissenya 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ó:
>>> dades = [(2, 5, 7), (-3, 3, 6), (1, -4, 5), (0, 4, 4)] >>> ordena_valors_integrats(dades) >>> dades [(0, 4, 4), (1, -4, 5), (-3, 3, 6), (2, 5, 7)]
Disposes de més tests al fitxer
test-ordena.txtDesa la funció al fitxer
oceano.py
Disposes de solucions al fitxer oceano.py.