Tenim un mercat ambulant i volem distribuïr el nostre producte a n
pobles utilitzant una variació de l’algorisme del veí més proper.
Per fer-ho, disposem d’una graella bidimensional de 50x50 unitats de longitud, entre les quals hi ha distribuïdes n+1
coordenades que
es troben emmagatzemades en una llista de valors enters com la següent:
coord = | ⎡ ⎣ | x1,y1,x2,y2,x3,y3,x4,y4,..,..,xn,yn,x_ref,y_ref, | ⎤ ⎦ |
Volem crear una llista distancies
que guardi totes les distàncies (valors reals amb 2 decimals) des de la coordenada de referència x_ref
, y_ref
(que es troben a la última i penúltima posició de la llista respectivament) fins a la resta de coordenades dels diferents pobles, ordenades de major a menor distància.
Per obtenir la distància euclidiana entre dues coordenades
(x1,y1) i (x2,y2) |
la distància entre elles (d, valor real) es pot calcular de la següent manera:
d = | √ |
| (1) |
NOTA: Per arrodonir un número real a un número de decimals específic,
podem utilitzar la funció: round(num_real,número_de_decimals)
.
Per exemple, per fer l’arrodoniment a 2 decimals, si valor = 4.35342135
, llavors round(valor,2)
retornarà 4.35
.
La pràctica consisteix en dos exercicis (Part 1 i Part2) que son independents
PART 1
Cal crear la funció ordre_distancies
, que rebrà una llista amb totes
les coordenades, en la forma abans descrita, i retornarà una nova llista amb les distàncies (valors reals arrodonits a 2 decimals) ordenades de major a menor, sempre respecte a la coordenada de referència (últimes dues posicions de la llista donada).
Observació
Només cal que enviïs el fitxer solution.py
amb la funció ordre_distancies
(i les funcions auxiliars que hagis fet) que et demanem i prou.
El fitxer main.py
et pot servir per a fer la teva solució,
però no cal que n’enviïs el contingut.
Entrada
llista de coordenades (valors enters) com la següent:
⎡ ⎣ | x1,y1,x2,y2,x3,y3,x4,y4,...,...,xn,yn,x_ref,y_ref | ⎤ ⎦ |
Sortida Llista amb les n distàncies ordenades de major a menor (valors reals arrodonits a 2 decimals), obtingudes des de cada coordenada donada fins a la coordenada de referència.
Input
15 15 35 35 10 10 45 45 50 50 0 0
Output
[70.71, 63.64, 49.5, 21.21, 14.14]
Input
25 16 25 37 50 25 5 10 45 11
Output
[48.08, 44.72, 35.34, 18.6]