2. Proves estables (2,5 punts)

Disposem d’una llista de llistes amb els resultats de diverses proves de mesura. Cada subllista conté les mesures obtingudes en una prova en format numèric i ordenades de forma ascendent.

Definim la mitjana dels valors centrals respecte de n com la mitjana calculada descartant els n valors més petits i els n valors més grans.

Una prova es considera estable donats n i una diferència màxima difm si el valor absolut de la diferència (sense arrodonir) entre la mitjana i la mitjana dels valors centrals respecte de n és més petita o igual que difm.

Dissenya la funció proves_estables que donada una llista de proves, un enter n i una diferència màxima difm, retorna una nova llista de tuples on cada tupla correspon a una prova estable i conté:

  • la posició de la subllista dins de dades;

  • la mitjana dels valors centrals respecte de n, arrodonida a un decimal;

  • la diferència entre la mitjana i la mitjana dels valors centrals respecte de n, arrodonida a un decimal.

Si cap prova és estable, la funció retornarà una llista buida.

Es pot suposar que \(n>0\) i que totes les subllistes tenen més de \(2*n\) elements.

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

>>> dades1 = [
...     [7.5, 8.2, 9.8, 9.9, 10.0, 10.1, 13.5, 14],
...     [9.0, 9.2, 9.5, 9.6, 9.7, 9.8, 10.0, 10.1],
...     [4.0, 5.0, 9.5, 9.6, 9.7, 9.8, 20.0, 22],
...     [8.0, 9.5, 9.7, 9.8, 10.0, 11.0]
... ]

>>> proves_estables(dades1, 2, 0.5)
[(0, 9.9, 0.4), (1, 9.7, 0.0), (3, 9.8, 0.1)]

>>> proves_estables(dades1, 2, 0.03)
[]

Desa la funció al fitxer proves.py.

Disposes de més tests al fitxer test-proves-estables.txt

Disposes de solucions al fitxer proves.py.