Métriques a l'Eixample ======================= Una **mètrica** o **funció distància** és una funció que defineix una distància entre cada parell d'elements d'un conjunt. Per exemple, la distància euclidiana, o mètrica euclidiana, és la distància ordinària entre dos punts que es mesuraria amb un regle. Donats dos punts en el pla, el punt :math:`p` amb coordinades cartesianes :math:`(p_1, p_2)`, i el punt :math:`q` amb coordenades :math:`(q_1, q_2)`, definim dos mètriques per calcular :math:`d(p,q)`, la distància entre :math:`p` i :math:`q`: * la `mètrica del taxista `_ o **distància de Manhattan**, també coneguda com distància rectilínia, que es calcula amb la fòrmula .. math:: d(p,q) = |p_1 − q_1| + |p_2 − q_2| * la `distància de Txebixov `_, també coneguda com distància de l'escaquer, ja que en els escacs, representa el nombre mínim de moviments que necessita un rei per anar d'una casella a una altra i que es calcula amb la fòrmula .. math:: d(p,q) = max\left\{|p_1 − q_1|, |p_2 − q_2|\right\}. #. Dissenya la funció *dist_manh* que donades les coordenades *p1*, *p2* d'un punt `p`, i les coordenades *q1*, *q2* d'un punt `q`, retorna la distància de Manhattan entre els punts `p` i `q` (ha de ser un valor de tipus :class:`float`). Desa la funció al fitxer ``metriques.py``. La funció ha de passar el següent doctest: .. literalinclude:: metriques1.txt :language: python3 :lines: 3-8 .. note:: Pots descarregar el fitxer amb tests :download:`metriques1.txt ` #. Dissenya la funció *dist_txeb* que donades les coordenades *p1*, *p2* d'un punt `p`, i les coordenades *q1*, *q2* d'un punt `q`, retorna la distància de Txebixov entre els punts `p` i `q` (ha de ser un valor de tipus :class:`float`). Desa la funció al fitxer ``metriques.py``. La funció ha de passar el següent doctest: .. literalinclude:: metriques2.txt :language: python3 :lines: 3-8 .. note:: Pots descarregar el fitxer amb tests :download:`metriques2.txt ` #. Dissenya la funció *cost_despl* que donades les coordenades *p1*, *p2* d'un punt `p`, les coordenades *q1*, *q2* d'un punt `q`, una funció *dist* que calcula la distància entre dos punts, i el preu d'un desplaçament unitari *preuUnitat*, retorna un :class:`float` amb el preu corresponent al desplaçament des del punt *p* fins al punt *q* fent servir la funció de distancia *dist*. Desa la funció al fitxer ``metriques.py``. La funció ha de passar el següent doctest: .. literalinclude:: metriques3.txt :language: python3 :lines: 3-10 .. note:: Pots descarregar el fitxer amb tests :download:`metriques3.txt ` .. rubric:: Solucions Disposeu de solucions al fitxer :download:`metriques.py `.