Tenim un mercat ambulant i volem distribuïr el nostre producte a n pobles utilitzant una
aproximació de l’algorisme del veí més proper. Per fer-ho, disposem d’una graella
bidimensional de 100x100 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:
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 primera i segona posicio de
la llista respectivament) fins a la resta de coordenades dels diferents pobles, ordenades de menor a
major distància.
Per calcular la distància euclidiana entre dues coordenades
la distància entre elles (d, valor real) es pot calcular de la següent manera: \begin {equation} \\d = \sqrt {(x_2-x_1)^2 + (y_2-y_1)^2} \end {equation}
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 menor a major, sempre respecte a la coordenada de referència (primeres
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:
Sortida Llista amb les n distàncies ordenades de menor a major (valors reals arrodonits a 2 decimals), obtingudes des de cada coordenada donada fins a la coordenada de referència.
Jose Antonio Roman
© Jutge.org, 2006–2024
Input
0 0 100 100 80 80 20 20 70 70 30 30
Output
0 0 100 100 80 80 20 20 70 70 30 30 [28.28, 42.43, 98.99, 113.14, 141.42]
Input
24 15 25 16 25 87 55 75 5 70
Output
24 15 25 16 25 87 55 75 5 70 [1.41, 58.19, 67.54, 72.01]