2. Més allunyat (recursivitat) (2 punts)

Avís

Per a resoldre aquest exercici no es poden fer servir iteracions (ni for ni while ), només funcions recursives.

La classe punt2D.Punt2D que ja coneixeu (vegeu classe_Punt2D) representa un punt de l’espai 2D. Està especificada a la pàgina classe_Punt2D del material de l’assignatura. Descarregueu la seva implementació d’aquesta pàgina o directament d’aquí (punt2D.py). En el mòdul puntrec (fitxer puntrec.py) implementeu la funció recursiva especificada a continuació:

puntrec.punt_mes_allunyat(llista_punts, punt)
Paràmetres:
  • llista_punts – una llista (list) no buida d’instancies de la classe Punt2D

  • punt – una instància de la classe Punt2D

Retorna:

un tuple (tuple) format per les coordenades x i y del punt de la llista més allunyat de punt. Si més d’un punt de la llista està a la mateixa distància màxima de punt, retorna les coordenades del punt d’índex més baix de la llista.

Vegeu per exemple:

>>> from punt2D import Punt2D
>>> from puntrec import punt_mes_allunyat
>>> llista = []
>>> punt = Punt2D(0, 0)
>>> llista.append(Punt2D(3, 4))
>>> punt_mes_allunyat(llista, punt)
(3, 4)
>>> llista.append(Punt2D(-3, -4))
>>> punt_mes_allunyat(llista, punt)
(3, 4)
>>> llista.append(Punt2D(-6, -4))
>>> punt_mes_allunyat(llista, punt)
(-6, -4)

Disposeu del fitxer de tests tests-puntrec.txt. No pugeu el fitxer punt2D.py a la tasca d’Atenea, només puntrec.py.